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 }