はじめに
Unityで3Dオブジェクトを読み込むためにはUnityのプロジェクトにドラッグアンドドロップでインポートする方法があると思います。今回はその方法とは別に、スクリプトから3Dオブジェクトを読み込む方法を調べてみました。
環境
MRTK 2.8.2
Unity 2020.3.27f1
手順
基本的な使い方はMixed Reality Toolkit ExamplesのDemos - Gltf
を見ていただければわかると思います。
以下のような方法でgltf
またはglb
形式の3Dモデルを読み込みGameObjectとして扱うことができます。
名前空間:Microsoft.MixedReality.Toolkit.Utilities.Gltf.Serialization
//gltfから読み込む場合 string path = "[ファイルパス]"; var gltf = await GltfUtility.ImportGltfObjectFromPathAsync(path); GameObject gltfobj = gltf.GameObjectReference; //glbから読み込む場合 byte[] glbbytearray = ~~~; //何らかの形でglb形式の3Dモデルをバイト配列で取得 var gltfObject = GltfUtility.GetGltfObjectFromGlb(glbbytearray); GameObject gltfobj = await gltfObject.ConstructAsync();
上記のどちらを使う場合でも、異なる形式の3Dモデルを読み込もうとすると例外になるので例外処理をする必要があると思います。
この方法を使えばクラウドのストレージから呼び出すなんてこともできるので応用が利きそうですね。