MRが楽しい

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

MRTKv2.xを使ってMetaQuest3向けのUnityプロジェクト作成を行う その27(シーンモデルを可視化する)

本日はMetaQuest3の技術調査枠です。
MRTKv2.xを使ってMetaQuest3向けのUnityプロジェクト作成を行う手順を記事にします。
本記事はシーンモデルを可視化する手順です。

前提条件

本記事では以下の記事で作成したパススルーを有効にした Unity プロジェクトを基に設定を行います。
bluebirdofoz.hatenablog.com

シーンモデル

シーンモデルは MetaQuest3 で利用できる現実空間のモデルです。
ユーザが手動で床、天井、壁、机などのシーンアンカーを作成することで現実空間のオブジェクトを仮想空間に取り込むことができます。
シーンモデルの構築はルームの設定を利用することで実施することができます。
developer.oculus.com
developer.oculus.com

シーンモデルを利用する

シーンモデルをアプリで利用するには以下の作業が必要になります。
・シーン内にMRUKを設定する
・OVRManagerでシーンのサポートを必須に設定する

シーン内にMRUKを設定する

初めにシーン内にMRUKコンポーネントを配置します。
以下のMRUKプレハブをHierarchyにドラッグして配置します。

Package/MetaXRUtilityKit/Core/Tools/MRUK.prefab

次にシーンモデルの見た目を設定するEffectMeshコンポーネントを追加します。
以下のEffectMeshプレハブをHierarchyにドラッグして配置します。

Package/MetaXRUtilityKit/Core/Tools/EffectMesh.prefab

これでシーンモデルが表示されるようになりますが、今回はモデルを見やすくするために幾つか設定を変更しました。

[Spawn On Start]を[All Rooms]に変更する

バイスに含まれる全てのシーンモデルが視覚化されます。
デフォルトの[Current Room Only]では現在位置に存在するシーンモデルのみが視覚化されます。

[Labels]の[GLOBAL_MESH]のチェックを外す

[GLOBAL_MESH]のチェックが有効だとメッシュ形状が細かく表示されて真っ青な見た目になります。
今回はシーンモデルを見やすくするために外しました。その他、視覚化したくない要素があれば外しておきます。

OVRManagerでシーンのサポートを必須に設定する

シーンのサポートを設定して空間情報へのアクセスを許可します。
QuestFeaturesの設定項目を開き、[Scene Support]の項目を[Required]に設定します。

更にOVR Managerコンポーネントの[Permission Requests On Startup -> Scene]にチェックを入れます。
これにより、起動時にシーンアクセスの要求が実行されて許可ダイアログが表示されるようになります。

ビルドと動作確認

これで設定は完了です。
以下の記事を参考にプロジェクトのビルドとQuest3へのデプロイを実行してください。
bluebirdofoz.hatenablog.com

MetaQuest3でデプロイしたアプリを起動します。
部屋のスキャンを未実施の場合、以下のスペース設定のダイアログが表示されるので[次へ]をタップします。

するとQuest3のセンサを利用した現実空間のスキャンが始まります。

案内に従い、部屋を歩き回り部屋の形状をスキャンしていきます。

一定の範囲を歩き回り、十分にスキャンを行うと以下の完了ダイアログが表示されるので[次へ]をタップします。

スキャンした形状から部屋の壁と認識する箇所の位置調整が求められます。
調整が完了したら[次へ]をタップします。

スキャンしたスペースを識別するための名前を選択します。
ここで選択した名前は[スペースの管理]一覧で表示されます。

これらの設定が終わると更に追加で机、ドア、窓などの設定を行うこともできます。
今回は壁と床の当たり判定が取れれば十分なのでこれで[完了]しました。

スペースの設定が完了すると、アプリが起動します。
以下の通り先ほど設定したシーンモデルが視覚化されて確認できます。