本日は glTF の技術調査枠です。
KhronosGroup/UnityGLTFでglbファイルの読み込みを試してみます。
今回は HoloLens2 上での動作を確認します。
前回記事の続きです。
bluebirdofoz.hatenablog.com
シェーダの差し替え
デフォルトの MRTK の構成を利用する場合、表示するオブジェクトはシングルパスに対応したシェーダを利用する必要があります。
今回は Mixed Reality Toolkit/Standard シェーダを利用するようにシェーダを指定することにしました。
GLTF を選択し、Inspector ビューを開きます。
GLTFComponent の ShaderOverride に Mixed Reality Toolkit/Standard シェーダをドラッグして指定します。
GLTFのシェーダを利用する場合
KhronosGroup/UnityGLTF に含まれる GLTF シェーダを利用する場合は ShaderOverride の設定を行いません。
その代わり、GLTF シェーダがビルドに含まれるよう Included Shaders を指定する必要があります。
メニューから Edit -> Project Settings を開きます。
Project Settings ダイアログが開くので Graphics タブを開きます。
[Always Included Shaders]の項目を開き、以下の2つのシェーダを追加で指定します。
Assets/UnityGLTF/Runtime/Shaders/PbrMetalicRouqhness.shader(GLTF/PbrMetalicRoughness) Assets/UnityGLTF/Runtime/Shaders/PbrSpecularGlossiness.shader(GLTF/PbrSpecularGlossiness)
これは KhronosGroup/UnityGLTF がシェーダを Shader.Find で捜索するため、Included Shaders に含めていないとビルドにシェーダが含まれず、読み込みに失敗するためです。
プロジェクトのビルドとHoloLens2へのインストール
これでプロジェクトの修正は完了です。
HoloLens2 向けにプロジェクトをビルドしてインストールします。
UnityプロジェクトのビルドとHoloLensへのインストール手順については以下を参照してください。
bluebirdofoz.hatenablog.com
HoloLens2での動作確認(モデル無し)
HoloLens2 上で動作確認を行います。
初回起動時は HoloLens2 上に glb ファイルがないため、モデルは表示されません。
HoloLens2へのモデルのアップロード
HoloLens2 の Device Portal を開きます。
指定のディレクトリにファイルをアップロードするには Sysytem -> File explorer を開きます。
今回はアプリの LocalState ディレクトリを読み込み先にしたので、ディレクトリを辿って以下のフォルダパスを開きます。
・User Folders/LocalAppData/(アプリケーション名)/LocalState
[ファイルを選択]からローカルPCの Duck.glb を指定し、[Upload]ボタンをクリックします。
これで Duck.glb ファイルがアプリの LocalState ディレクトリ直下に配置されました。
HoloLens2での動作確認(モデル有り)
アプリを再起動します。
Duck.glb の3Dモデルが表示されれば成功です。