VRM - humanoid 3d avatar format for VR
  •  Import VRM model at runtime(en)
  • VRMモデルを実行時にインポートする

    Unityで実行時にモデルをインポートする方法です。

    ファイルパスからVRMを開く

    var path="sample.vrm";
    var go=VRM.VRMImporter.LoadFromPath(path);
    Debug.LogFormat("loaded {0}", go.name);

    ファイルパスから非同期にVRMを開く

    var path="sample.vrm";
    VRMImporter.LoadVrmAsync(path, go => {
        Debug.LogFormat("loaded {0}", go.name);
    });

    バイト列からVRM開く

    var path="sample.vrm";
    var bytes = File.ReadAllBytes(path);
    var go=VRMImporter.LoadFromBytes(bytes);

    バイト列から非同期にVRMを開く

    VRMImporter.LoadVrmAsync(bytes, go => {
        Debug.LogFormat("loaded {0}", go.name);
    });

    VRMから情報を取り出す

    #if UNITY_STANDALONE_WIN
                var path = FileDialogForWindows.FileDialog("open VRM", ".vrm");
    #else
                var path = Application.dataPath + "/default.vrm";
    #endif
                if (string.IsNullOrEmpty(path))
                {
                    return;
                }
    
                // Byte列を得る
                var bytes = File.ReadAllBytes(path);
    
                var context = new VRMImporterContext(path);
    
                // GLB形式をParseしてチャンクからJSONを取得しParseします
                context.ParseVrm(bytes);
    
                // metaを取得
                var meta = context.ReadMeta();
                Debug.LogFormat("meta: title:{0}", meta.Title);
    
                // もしくはこちらでパースされたGLTF全体にアクセスできます
                var vrm = context.VRM;
    
                // ParseしたJSONをもとにシーンを構築します
                if (m_loadAsync)
                {
                    // 非同期に実行する
                    var now = Time.time;
                    VRMImporter.LoadVrmAsync(context, go=> {
                        var delta = Time.time - now;
                        Debug.LogFormat("LoadVrmAsync {0:0.0} seconds", delta);
                        OnLoaded(go);
                    });
                }
                else
                {
                    // 同期的に実行する
                    VRMImporter.LoadFromBytes(context);
                    OnLoaded(context.Root);
                }

    Thumbnailを取得する(v0.37から)

    ReadMetaに引数を渡すことでThumbnailテクスチャを作成できます。

        var meta = context.ReadMeta(true); // Thumbnailテクスチャを作成する
        Texture2D thumbnail=meta.Thumbnail;
    VRM - humanoid 3d avatar format for VR