MRが楽しい

MRやVRについて学習したことを書き残す

KhronosGroup/UnityGLTFを使ったglbファイルの動的読み込みをHoloLens2プロジェクトで試す その2

本日は glTF の技術調査枠です。
KhronosGroup/UnityGLTFでglbファイルの読み込みを試してみます。
今回は HoloLens2 上での動作を確認します。
f:id:bluebirdofoz:20200511015633j:plain

前回記事の続きです。
bluebirdofoz.hatenablog.com

シェーダの差し替え

デフォルトの MRTK の構成を利用する場合、表示するオブジェクトはシングルパスに対応したシェーダを利用する必要があります。
今回は Mixed Reality Toolkit/Standard シェーダを利用するようにシェーダを指定することにしました。

GLTF を選択し、Inspector ビューを開きます。
GLTFComponent の ShaderOverride に Mixed Reality Toolkit/Standard シェーダをドラッグして指定します。
f:id:bluebirdofoz:20200511015706j:plain

GLTFのシェーダを利用する場合

KhronosGroup/UnityGLTF に含まれる GLTF シェーダを利用する場合は ShaderOverride の設定を行いません。
その代わり、GLTF シェーダがビルドに含まれるよう Included Shaders を指定する必要があります。

メニューから Edit -> Project Settings を開きます。
f:id:bluebirdofoz:20200511015730j:plain

Project Settings ダイアログが開くので Graphics タブを開きます。
[Always Included Shaders]の項目を開き、以下の2つのシェーダを追加で指定します。

Assets/UnityGLTF/Runtime/Shaders/PbrMetalicRouqhness.shader(GLTF/PbrMetalicRoughness)
Assets/UnityGLTF/Runtime/Shaders/PbrSpecularGlossiness.shader(GLTF/PbrSpecularGlossiness)

f:id:bluebirdofoz:20200511015744j:plain

これは KhronosGroup/UnityGLTF がシェーダを Shader.Find で捜索するため、Included Shaders に含めていないとビルドにシェーダが含まれず、読み込みに失敗するためです。

プロジェクトのビルドとHoloLens2へのインストール

これでプロジェクトの修正は完了です。
HoloLens2 向けにプロジェクトをビルドしてインストールします。
UnityプロジェクトのビルドとHoloLensへのインストール手順については以下を参照してください。
bluebirdofoz.hatenablog.com

HoloLens2での動作確認(モデル無し)

HoloLens2 上で動作確認を行います。
初回起動時は HoloLens2 上に glb ファイルがないため、モデルは表示されません。
f:id:bluebirdofoz:20200511015945j:plain

HoloLens2へのモデルのアップロード

HoloLens2 の Device Portal を開きます。
f:id:bluebirdofoz:20200511015954j:plain

指定のディレクトリにファイルをアップロードするには Sysytem -> File explorer を開きます。
f:id:bluebirdofoz:20200511020004j:plain

今回はアプリの LocalState ディレクトリを読み込み先にしたので、ディレクトリを辿って以下のフォルダパスを開きます。
・User Folders/LocalAppData/(アプリケーション名)/LocalState
f:id:bluebirdofoz:20200511020015j:plain

[ファイルを選択]からローカルPCの Duck.glb を指定し、[Upload]ボタンをクリックします。
f:id:bluebirdofoz:20200511020025j:plain

これで Duck.glb ファイルがアプリの LocalState ディレクトリ直下に配置されました。
f:id:bluebirdofoz:20200511020033j:plain

HoloLens2での動作確認(モデル有り)

アプリを再起動します。
Duck.glb の3Dモデルが表示されれば成功です。
f:id:bluebirdofoz:20200511020043j:plain