XR Plugin Management を利用した場合の MRTK 設定の注意点

従来UnityでXR開発を行う際はBuilt-in XR(以降,Legacy XR)を利用していましたが,
Unity 2019.3 から XR Plugin Management が導入され,Legacy XR は Deprecated になりました.
そのため,XR Plugin Management を用いて,XR開発を行うことが徐々に主流になるかと思います.

ただXR Plugin Management を利用した場合,MRTK 設定で変更しないといけない箇所があります.

Legacy XR

豆腐サンプルシーンを作ります.

youtu.be

よくある目の前に豆腐を表示する何の変哲もないシーンです.

XR Plugin Management

Legacy XR から XR Plugin Management に移行する

このサンプルシーンを Legacy XR から XR Plugin Management に移行します.
XR Plugin Management は Package Manager にて Install できます.
Install 後,Configurator でこんな表示がでますが,Legacy XR は untick しておきます.

f:id:xrdnk:20201024173411p:plain

XR Plugin Management から Windows Mixed Reality を Providers として追加します.

f:id:xrdnk:20201024173520p:plain

f:id:xrdnk:20201024173526p:plain

これで Legacy XR から XR Plugin Management に移行完了です.
この状態で先ほど Legacy XR で作成したサンプルシーンをビルドデプロイしてみましょう.
以下の動画のように見えてしまいました.

youtu.be

本来なら豆腐は動かないはずが,バイザーディスプレイに追従しているというか,固定されていますね.

MRTK の Profile 設定

MRTK の Profile 設定が Legacy XR を元になっているため,XR Plugin Management ではうまく動かないことが理由です.

こちらの MRTK の 公式 Document を参照ください.

microsoft.github.io

Camera,Input,Boundary,Spatial Awareness の Provider や Type を XRSDK に変更する必要があります.

上記の Document 通りに進めればよいですが,多少詳細をこちらの記事にも記します.

Camera

Camera Profile 設定を変更するために繰り返し Clone を行います.

Camera Settings Provider に 以下を追加します.

  • Microsoft.MixedReality.Toolkit.XRSDK.GenericXRSDKCameraSettings

f:id:xrdnk:20201024174325p:plain

  • Microsoft.MixedReality.Toolkit.XRSDK.WindowsMixedReality.WindowsMixedRealityCameraSettings

f:id:xrdnk:20201024174327p:plain

HoloLens 2 で利用する場合,Supported Platforms に Windows Universal が ticked されていることに注意しましょう.
脳死設定として,Everythingにするとよいかもしれません.

f:id:xrdnk:20201024174355p:plain

Display Settings の Clear Flags が Skybox 担っている場合は Depth に変更するとよいと思います.

f:id:xrdnk:20201024174434p:plain

Input

Input Profile 設定を変更するために繰り返し Clone を行います.

Input Data Provider に以下を追加します.

  • Microsoft.MixedReality.Toolkit.XRSDK.Input.XRSDKDeviceManager

f:id:xrdnk:20201024174629p:plain

  • Microsoft.MixedReality.Toolkit.XRSDK.WindowsMixedReality.WindowsMixedRealityDeviceManager

f:id:xrdnk:20201024174710p:plain

Supported Platforms に Windows Universal が ticked されているかも確認.

Boundary

Boundary System Type を Microsoft.MixedReality.Toolkit.XRSDK.XRSDKBoudarySystem にします.

f:id:xrdnk:20201024174846p:plain

Spatial Awareness

Spatial Observer に 以下を追加します.

  • Microsoft.MixedReality.Toolkit.XRSDK.GenericXRSDKSpatialMeshObserver

f:id:xrdnk:20201024175023p:plain

  • Microsoft.MixedReality.Toolkit.XRSDK.WindowsMixedReality.WindowsMixedRealitySpatialMeshObserver

f:id:xrdnk:20201024175106p:plain

同様にSupported Platforms に Windows Universal が ticked されているか確認.

f:id:xrdnk:20201024175142p:plain

Display 越しに Spatial Awareness によるメッシュ表示を消したい場合は Display Option を None にするとよいでしょう.

f:id:xrdnk:20201024175230p:plain

Rebuild

Legacy XR で Build したフォルダに上書きのようにリビルドした場合は,
設定が反映されず,そのまま豆腐が追従してしまうことがあります.
恐らくCapabilitiesの設定同様,一度クリーンして新しくビルドした方がよさげです.

動作確認

上記で改めて設定しなおし,ビルドをし直した結果が以下の動画になります.

youtu.be

豆腐がしっかり留まりました.

逐一上記のように設定しなくてもすでに,DefaultXRSDKConfigurationProfileが提供されているので,
こちらに設定すれば,XRSDK向けに使えると思います.
細かく設定したい場合は自分でカスタマイズしましょう.

f:id:xrdnk:20201024175737p:plain

最後に

XRSDK 向けの Profile 設定について説明しました.
とはいえ現在のMRTKはLegacy XR利用を想定した開発になっています.MRTKのDocumentもそんな感じ….

XRSDKだと動かないものもあります.
Unity 2020 LTS がくるまで?あるいは MRTK が XRSDK 利用前提としてDocumentが変わるまでは
MRTK HoloLens 2 の開発は Legacy XR にした方がよさげだと個人的には思っています.

かの World Locking Tools も 以下のように書かれています.

Last release before targeting Unity XR SDK Plugin system

f:id:xrdnk:20201024180225p:plain

XR Plugin Management を利用したプロジェクトに World Locking Tools を当てはめようとしたら
動かなくて再度Documentを見たら,上の注意書きを見て,なくなく XR Plugin Management をやめて
Legacy XR に回帰する作業を行って1日潰れたので,皆さんはご注意くださいますよう….