From 33e730009ca79ccf05b91666c2455ac4d40246e2 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Wed, 29 Sep 2021 13:47:04 +0900 Subject: [PATCH 1/2] =?UTF-8?q?Vrm=20=E3=81=A8=E3=80=80=E3=81=9D=E3=82=8C?= =?UTF-8?q?=E4=BB=A5=E5=A4=96=E3=81=AE=20glb=20=E3=81=AE=E5=87=A6=E7=90=86?= =?UTF-8?q?=E5=88=86=E5=B2=90=E6=96=B9=E6=B3=95=E3=82=92=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/VRM/Samples/SimpleViewer/ViewerUI.cs | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/Assets/VRM/Samples/SimpleViewer/ViewerUI.cs b/Assets/VRM/Samples/SimpleViewer/ViewerUI.cs index c9c23c02e..8f1dca9ce 100644 --- a/Assets/VRM/Samples/SimpleViewer/ViewerUI.cs +++ b/Assets/VRM/Samples/SimpleViewer/ViewerUI.cs @@ -312,7 +312,7 @@ namespace VRM.SimpleViewer string[] cmds = System.Environment.GetCommandLineArgs(); if (cmds.Length > 1) { - LoadModelAsync(cmds[1]); + LoadModel(cmds[1]); } m_texts.Start(); @@ -357,14 +357,22 @@ namespace VRM.SimpleViewer return; } + LoadModel(path); + } + + void LoadModel(string path) + { var ext = Path.GetExtension(path).ToLower(); switch (ext) { case ".gltf": case ".glb": - case ".vrm": case ".zip": - LoadModelAsync(path); + LoadModelAsync(path, false); + break; + + case ".vrm": + LoadModelAsync(path, true); break; case ".bvh": @@ -397,7 +405,7 @@ namespace VRM.SimpleViewer } } - async void LoadModelAsync(string path) + async void LoadModelAsync(string path, bool isVrm) { if (!File.Exists(path)) { @@ -417,7 +425,7 @@ namespace VRM.SimpleViewer return; } - try + if (isVrm) { var vrm = new VRMData(data); using (var loader = new VRMImporterContext(vrm, materialGenerator: GetVrmMaterialGenerator(m_useUrpMaterial.isOn, vrm.VrmExtension))) @@ -427,7 +435,7 @@ namespace VRM.SimpleViewer SetModel(instance); } } - catch (NotVrm0Exception) + else { using (var loader = new UniGLTF.ImporterContext(data, materialGenerator: GetGltfMaterialGenerator(m_useUrpMaterial.isOn))) { From ccb1e61f5ef73b4a9437ff25007a8cdfb3b1ca11 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Wed, 29 Sep 2021 14:06:42 +0900 Subject: [PATCH 2/2] catch NotVrm0Exception --- Assets/VRM/Samples/SimpleViewer/ViewerUI.cs | 23 ++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/Assets/VRM/Samples/SimpleViewer/ViewerUI.cs b/Assets/VRM/Samples/SimpleViewer/ViewerUI.cs index 8f1dca9ce..3c9ade18c 100644 --- a/Assets/VRM/Samples/SimpleViewer/ViewerUI.cs +++ b/Assets/VRM/Samples/SimpleViewer/ViewerUI.cs @@ -427,12 +427,25 @@ namespace VRM.SimpleViewer if (isVrm) { - var vrm = new VRMData(data); - using (var loader = new VRMImporterContext(vrm, materialGenerator: GetVrmMaterialGenerator(m_useUrpMaterial.isOn, vrm.VrmExtension))) + try { - await m_texts.UpdateMetaAsync(loader); - var instance = await loader.LoadAsync(); - SetModel(instance); + var vrm = new VRMData(data); + using (var loader = new VRMImporterContext(vrm, materialGenerator: GetVrmMaterialGenerator(m_useUrpMaterial.isOn, vrm.VrmExtension))) + { + await m_texts.UpdateMetaAsync(loader); + var instance = await loader.LoadAsync(); + SetModel(instance); + } + } + catch (NotVrm0Exception) + { + // retry + Debug.LogWarning("file extension is vrm. but not vrm ?"); + using (var loader = new UniGLTF.ImporterContext(data, materialGenerator: GetGltfMaterialGenerator(m_useUrpMaterial.isOn))) + { + var instance = await loader.LoadAsync(); + SetModel(instance); + } } } else