MRTK3 × HoloLens2で空間メッシュを有効化する
お久しぶりです。いっとりうむtwoooooda.iconです。大学院生活が何かと忙しく、記事を書く習慣が抜け落ちてしまっていたので、リハビリがてら自分用の備忘録を書くことにします。
私の大学院での研究はHoloLens2を使うものです。修士一年ではMRTK2.8を使っていたので、修士二年になったタイミングの今、MRTK2系からMRTK3に乗り換えようとしているのですが、MRTK3に関してはインターネットに記事がまだあんまりありません。最近になってようやく空間メッシュとその当たり判定を有効化する方法を見つけたので備忘録としてここに記します。
1. 環境構築
基本は、宮浦 大先生神の以下の記事に従ってHoloLens2用のアプリをビルドするところまでやっておきます。なお、この記事にはない新たなモジュールを加えるとかはないはずです。
2. ARMeshManagerオブジェクトをつくる
Hierarchy欄にあるCamera Offsetオブジェクトの子に、ARMeshManagerと名付けた空のオブジェクトを作り、ARMeshManagerコンポーネントをつけます。別のオブジェクトにこのコンポーネントをつけようとすると、「XR Originの子じゃないとダメです」みたいな文句を言われるので、最初からXR Originが付いているCamera Offsetオブジェクトにつけます。
https://scrapbox.io/files/644b7f92980621001c935167.png
3. SpatialMeshオブジェクトを作成
以下の手順で、SpatialMeshオブジェクトを作ります。名前は最悪なんでもいいです。
任意の場所に空のGameObjectをつくり、SpatialMeshと名前を変える
Mesh Filter、Mesh Renderer、Mesh ColliderをAdd Componentする
MRTK_wireframeか、MRTK_WireframeBlueマテリアルをSpatialMeshにアタッチhttps://scrapbox.io/files/644b7e0cfc75c2001cadb869.png
SpatialMeshオブジェクトをProjectビューにD&DしてPrefab化する
4. ARMeshManagerにSpatialMeshオブジェクトを割り当て
ARMeshManagerコンポーネントのMesh Prefabの欄に、3. で作ったSpatialMeshを割り当て
https://scrapbox.io/files/644b827ef530f0001c4e4a30.png
以上の手順を踏めば、仮想オブジェクトとかが机とか床に衝突するようになるはずです。ワイヤーフレーム表示が不要であれば、SpatialMeshオブジェクトのMesh Rendererコンポーネントを無効化すれば消すことができます。