MRTK(2.7.2)のExampleを試す その4 (Demos - Gltf)
今回は下記の続きです。
xr-physics-work-etc.hatenablog.com
前提
今回の前提は以下です。
Unity 2019.4.17f1
MRTK 2.7.2
準備
いつものようにPackage Managerからデモをインポートします。
Glb-Loading-Demo
このシーンは、インターネット上にあるglbモデルをUnityで取り扱えるオブジェクトとして表示するデモです。
glbまたはgltfは、JSONを用いて3Dモデルなどを表現する形式です。
標準のUnityでは動的読み込みなどできませんが、MRTKのGltf Importerを用いることで実現できます。
GltfUtility.cs
このスクリプトで、gltfまたはglb形式のモデルデータを読み込み、Scene上に表示することができます。
staticなクラスのため、基本的にスクリプト中から使用することが前提です。
主な使い方の流れは以下です。
[1] 下記メソッドの中から適したものを使用してGltfObjectを取得する。
・ GetGltfObjectFromGlb(Byte[]) glbファイルのバイト列からGltfObjectを取得する。 ・ GetGltfObjectFromJson(String) Jsonファイルの内容(文字列)からGltfObjectを取得する。 ・ ImportGltfObjectFromPathAsync(String) ファイルパスからGltfObjectを取得する。(gltf, glbファイル両対応)
[2] 取得したGltfObjectから下記メソッドをどちらか実施することで、Scene上にGltfオブジェクトを元にしたGameObjectを表示できる。
・ Construct() ・ ConstructAsync()
Rest.cs
このスクリプトは、直接Gltfのデモとして関係しているわけではないですが、初見のため取り扱っておきます。
このスクリプトに含まれるメソッドを使用することで、REST APIを用いてPOST, GETが実施できます。
staticなクラスのため、基本的にスクリプト中から使用することが前提です。
下記がよく使用されると思われるメソッドです。
- GetAsync
Getリクエストを送る場合に使用するメソッド。
引数:
query : URLを入力 headers : リクエストに使用するオプションのヘッダ (オプション) timeout : タイムアウト時間 (オプション) downloadHandler : ダウンロード時に使用するオプションのハンドラ (オプション) readResponseData : ダウンロードハンドラの使用有無 (オプション) certificateHandler : 証明書検証に使用するハンドラ (オプション) disposeCertificateHandlerOnDispose : UnityRequest破棄時に証明書検証ハンドラを破棄するか否か (オプション)
- PostAsync
POSTリクエストを送る場合に使用するメソッド。
引数:
query : URLを入力 formData : POSTするWWForm型のForm Data(※) jsonData : POSTするJsonデータ(※) bodyData : POSTするbyte列のデータ(※) headers : リクエストに使用するオプションのヘッダ (オプション) timeout : タイムアウト時間 (オプション) readResponseData : ダウンロードハンドラの使用有無 (オプション) certificateHandler : 証明書検証に使用するハンドラ (オプション) disposeCertificateHandlerOnDispose : UnityRequest破棄時に証明書検証ハンドラを破棄するか否か (オプション) (※):オーバーロードされているため、どれか1つまたは使用しない
- PutAsync
PUTリクエストを送る場合に使用するメソッド。
引数:
query : URLを入力 jsonData : PUTするJsonデータ(※) bodyData : PUTするbyte列のデータ(※) headers : リクエストに使用するオプションのヘッダ (オプション) timeout : タイムアウト時間 (オプション) readResponseData : ダウンロードハンドラの使用有無 (オプション) certificateHandler : 証明書検証に使用するハンドラ (オプション) disposeCertificateHandlerOnDispose : UnityRequest破棄時に証明書検証ハンドラを破棄するか否か (オプション) (※):オーバーロードされているため、どれか1つ使用する
- DeleteAsync
DELETEリクエストを送る場合に使用するメソッド。
引数:
query : URLを入力 headers : リクエストに使用するオプションのヘッダ (オプション) timeout : タイムアウト時間 (オプション) readResponseData : ダウンロードハンドラの使用有無 (オプション) certificateHandler : 証明書検証に使用するハンドラ (オプション) disposeCertificateHandlerOnDispose : UnityRequest破棄時に証明書検証ハンドラを破棄するか否か (オプション)
Gltf-Loading-Demo
このシーンでは、ローカルファイルからglbモデルを読み込んで表示するデモです。
デモを正しく実行するには、Asset
ディレクトリ中にStreamingAssets
ディレクトリを作成し、デモ用ディレクトリ中のModels
をコピーする必要があります。
コピーをするには、サンプルシーン中のGltfExample
オブジェクトにアタッチされている、TestGltfLoading
コンポーネントに付与されているボタンを押下すると、コピーが実施できます。
正常にファイルが配置できると、表示されている警告が消えます。
そのあと、Unity上で実行するとglbモデルから構成されたアボカドがシーン上に表示されます。
使用しているスクリプトは、先ほど紹介したGltfUtility.csのImportGltfObjectFromPathAsync
で共通しているため省略します。
キリが良いので今回はここまで。
次回はHandCoachのデモを取り扱います。