土鍋で雑多煮

UnityでXR・ゲーム開発をしています。学んだことや備忘録、趣味の記録などを書いていきます。

MENU

【MRUK最新版】MRUKで部屋の情報を取得し加工する【Quest3】

はじめに

どうも、土鍋です。

この記事はAizu Advent Calendar 2024の10日目の記事です。

一年前くらいに下の記事を書いたのですが、どうやら2024/5/16リリースのMeta XR SDK v65でだいぶ仕様が変わっていたので新しい記事を書きました。

donabenabe.hatenablog.com

Meta XR SimulatorでMR空間をシミュレーションする

プレイボタン左のボタンからSimulatorを有効化し、XR環境をシミュレーションできます。

毎回実環境でビルドしてテストするのは効率が悪いので、Synthetic Environment Serverからパススルーで見える現実空間をシミュレートできるようになります。

Tools Prefab

MRUKやそれに付随するツール群を使うことで部屋のデータにアクセスできます。

Prefab群は Packages > Meta MR Utility Kit > Core > Tools にあります。

Scene上にMRUK Prefabを追加するだけでScene API関連のものが勝手に動作します。 そのため特にこれから先の作業が必要ない場合(Raycastするなど)はこれだけで大丈夫です。

MR環境構築の具体的な内容は以下をご覧ください。

https://developers.meta.com/horizon/documentation/unity/unity-mr-utility-kit-gs?locale=ja_JP

AnchorPrefabSpawner

https://developers.meta.com/horizon/reference/mruk/v68/class_meta_x_r_m_r_utility_kit_anchor_prefab_spawner/?locale=ja_JP

AnchorPrefabSpawner Prefabを追加することで、部屋の壁や家具に対応して特定のPrefabを生成させることができるようになります。
これは前のバージョンでOVRSceneManagerとされてたものです。

Prefabs To Spawnで生成したいもののPrefabを設定できます。

デフォルトの状態そのままを実行すると下のように部屋のレイアウトに合わせてPrefabが生成されているのが確認できます。

RoomModel

RoomModel Prefabは基本的にはAnchorPrefabSpawner Prefabと一緒です。
適用されているPrefabが半透明なので現実空間が見やすいといった感じです。

Labelsを切り替えることでそのPrefabの適用先を変更できます。

EffectMesh

https://developers.meta.com/horizon/reference/mruk/v69/class_meta_x_r_m_r_utility_kit_effect_mesh

EffectMeshは特定のマテリアルやコライダーを指定したLabelに適用するものです。

GlobalMeshを可視化するにはLabelsにGlobalMeshを指定してあげることで見えるようになります。

Collidersのチャックボックスにチェックをいれるとメッシュにコライダーをつけることができます。

RoomGuardian

通常のQuestのガーディアンのように物理空間のガーディアンを表示できます。

参考

donabenabe.hatenablog.com

https://developers.meta.com/horizon/reference/mruk/v68/class_meta_x_r_m_r_utility_kit_anchor_prefab_spawner

https://developers.meta.com/horizon/reference/mruk/v69/class_meta_x_r_m_r_utility_kit_effect_mesh

https://developers.meta.com/horizon/downloads/package/meta-xr-mr-utility-kit-upm/65.0