Example #1
0
        async void LoadModelAsync(string path, bool isVrm)
        {
            if (!File.Exists(path))
            {
                return;
            }

            Debug.LogFormat("{0}", path);

            GltfData data;

            try
            {
                data = new AutoGltfFileParser(path).Parse();
            }
            catch (Exception ex)
            {
                Debug.LogWarningFormat("parse error: {0}", ex);
                return;
            }

            if (isVrm)
            {
                try
                {
                    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(GetIAwaitCaller(m_useAsync.isOn));

                        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(GetIAwaitCaller(m_useAsync.isOn));

                        SetModel(instance);
                    }
                }
            }
            else
            {
                using (var loader = new UniGLTF.ImporterContext(data, materialGenerator: GetGltfMaterialGenerator(m_useUrpMaterial.isOn)))
                {
                    var instance = await loader.LoadAsync(GetIAwaitCaller(m_useAsync.isOn));

                    SetModel(instance);
                }
            }
        }
Example #2
0
        async void LoadModelAsync(string path)
        {
            if (!File.Exists(path))
            {
                return;
            }

            Debug.LogFormat("{0}", path);
            var ext = Path.GetExtension(path).ToLower();

            switch (ext)
            {
            case ".vrm":
            {
                var data = new GlbFileParser(path).Parse();

                using (var context = new VRMImporterContext(data))
                {
                    await m_texts.UpdateMetaAsync(context);

                    var loaded = await context.LoadAsync();

                    loaded.EnableUpdateWhenOffscreen();
                    loaded.ShowMeshes();
                    SetModel(loaded.gameObject);
                }
                break;
            }

            case ".glb":
            {
                var data = new GlbFileParser(path).Parse();

                var context = new UniGLTF.ImporterContext(data);
                var loaded  = context.Load();
                loaded.EnableUpdateWhenOffscreen();
                loaded.ShowMeshes();
                SetModel(loaded.gameObject);
                break;
            }

            case ".gltf":
            {
                var data = new GltfFileWithResourceFilesParser(path).Parse();

                var context = new UniGLTF.ImporterContext(data);
                var loaded  = context.Load();
                loaded.EnableUpdateWhenOffscreen();
                loaded.ShowMeshes();
                SetModel(loaded.gameObject);
                break;
            }

            case ".zip":
            {
                var data = new ZipArchivedGltfFileParser(path).Parse();

                var context = new UniGLTF.ImporterContext(data);
                var loaded  = context.Load();
                loaded.EnableUpdateWhenOffscreen();
                loaded.ShowMeshes();
                SetModel(loaded.gameObject);
                break;
            }

            default:
                Debug.LogWarningFormat("unknown file type: {0}", path);
                break;
            }
        }
Example #3
0
        async void LoadModelAsync(string path)
        {
            if (!File.Exists(path))
            {
                return;
            }

            Debug.LogFormat("{0}", path);
            var ext = Path.GetExtension(path).ToLower();

            switch (ext)
            {
            case ".vrm":
            {
                var file = File.ReadAllBytes(path);

                var parser = new GltfParser();
                parser.ParseGlb(file);

                using (var context = new VRMImporterContext(parser))
                {
                    await m_texts.UpdateMetaAsync(context);

                    await context.LoadAsync();

                    context.EnableUpdateWhenOffscreen();
                    context.ShowMeshes();
                    context.DisposeOnGameObjectDestroyed();
                    SetModel(context.Root);
                }
                break;
            }

            case ".glb":
            {
                var file   = File.ReadAllBytes(path);
                var parser = new GltfParser();
                parser.ParseGlb(file);

                var context = new UniGLTF.ImporterContext(parser);
                context.Load();
                context.EnableUpdateWhenOffscreen();
                context.ShowMeshes();
                context.DisposeOnGameObjectDestroyed();
                SetModel(context.Root);
                break;
            }

            case ".gltf":
            case ".zip":
            {
                var parser = new GltfParser();
                parser.ParsePath(path);

                var context = new UniGLTF.ImporterContext(parser);
                context.Load();
                context.EnableUpdateWhenOffscreen();
                context.ShowMeshes();
                context.DisposeOnGameObjectDestroyed();
                SetModel(context.Root);
                break;
            }

            default:
                Debug.LogWarningFormat("unknown file type: {0}", path);
                break;
            }
        }