takataka430’s blog

.NET系を中心に勉強したことのまとめを書きます

スクリプトから3Dモデルを読み込む【MRTK】

はじめに

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モデルを読み込もうとすると例外になるので例外処理をする必要があると思います。

この方法を使えばクラウドのストレージから呼び出すなんてこともできるので応用が利きそうですね。