SimpleViewer

Runtime ローダーのサンプルです。

c89e Assets/VRM_Samples/SimpleViewer/ViewerUI.cs
 1        async void LoadModelAsync(string path, bool isVrm)
 2        {
 3            if (!File.Exists(path))
 4            {
 5                return;
 6            }
 7
 8            Debug.LogFormat("{0}", path);
 9
10            GltfData data;
11            try
12            {
13                data = new AutoGltfFileParser(path).Parse();
14            }
15            catch (Exception ex)
16            {
17                Debug.LogWarningFormat("parse error: {0}", ex);
18                return;
19            }
20
21            if (isVrm)
22            {
23                try
24                {
25                    var vrm = new VRMData(data);
26                    using (var loader = new VRMImporterContext(vrm, materialGenerator: GetVrmMaterialGenerator(m_useUrpMaterial.isOn, vrm.VrmExtension)))
27                    {
28                        await m_texts.UpdateMetaAsync(loader);
29                        var instance = await loader.LoadAsync(GetIAwaitCaller(m_useAsync.isOn));
30                        SetModel(instance);
31                    }
32                }
33                catch (NotVrm0Exception)
34                {
35                    // retry
36                    Debug.LogWarning("file extension is vrm. but not vrm ?");
37                    using (var loader = new UniGLTF.ImporterContext(data, materialGenerator: GetGltfMaterialGenerator(m_useUrpMaterial.isOn)))
38                    {
39                        var instance = await loader.LoadAsync(GetIAwaitCaller(m_useAsync.isOn));
40                        SetModel(instance);
41                    }
42                }
43            }
44            else
45            {
46                using (var loader = new UniGLTF.ImporterContext(data, materialGenerator: GetGltfMaterialGenerator(m_useUrpMaterial.isOn)))
47                {
48                    var instance = await loader.LoadAsync(GetIAwaitCaller(m_useAsync.isOn));
49                    SetModel(instance);
50                }
51            }
52        }