diff --git a/Assets/VRM/Samples/SimpleViewer/ViewerUI.cs b/Assets/VRM/Samples/SimpleViewer/ViewerUI.cs index c9c23c02e..3c9ade18c 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,17 +425,30 @@ 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))) + 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); + } } } - catch (NotVrm0Exception) + else { using (var loader = new UniGLTF.ImporterContext(data, materialGenerator: GetGltfMaterialGenerator(m_useUrpMaterial.isOn))) {