Meta Quest で空間メッシュ
公式
シーンメッシュ(廃止)
MRUK 使おうサンプル
MRUKに対応したMeta QuestのMRアプリのテンプレートプロジェクトを作った
動画
機能
概要
記事
登壇資料: Unity6とMETA XR SDKを利用する方法
土鍋で雑多煮
古い情報
Global Mesh
に関する情報
Meta Quest 3 の Global Mesh を試す
Meta Quest3 パススルー機能で現実世界と仮想空間を融合(MR化)させる方法 Meta Quest3 パススルー機能をMeta XR SDKで開発する方法 Meta Quest で部屋のメッシュを使う (SDK v59) MetaQuest3ではじめる、モグラ叩きMRインストール手順
1) 環境構築
- Unity6 の最新版をインストール
- URP プロジェクトの新規作成
- プラットフォームを Android にする
2) Unity Asset Store
Meta が配布しているアセットを一通り購入する
3) Unity Package Manager
左端のタブから My Assets を選択して "Meta" で検索.
1)で登録したアセットが並ぶので、必要なものをインストール
4) インストール順番
Meta Core SDK インストール
直後にでるこれは、「送らない」
その次のこれは、「再起動」
XR Plug-in Management
- Project Settings > XR Plug-in Management から XR Plug-in Management 自体をインストール
- PC と Android のタブで Oclusu にチェック
Meta XR Tools バー
まだ触らないよ
Meta XR Interaction SDK インストール
直後にでるこれは、「OpenXR」 を選ぶ
プロジェクトの設定
1) ターゲットデバイス
2025年の今は、Quest3系がぶなん
2) Validate
Project Setup Tool を立ち上げる
Android タブで Fix All / Apply All
OpenXR にしろと言われるこれ
↓ に書いた通りで Depth API を使いたいなら...
Ignore する
しつこく残るこいつら
この3つがプロジェクトを再起動しても残る
Use Low Overhead
→ XR Plug-in Management > Oclus の下図の場所を ON にする
→ 下述アラートのとおりであり、Plyaer Settings > Graphics API を Vulkan だけにする
Subsampled Layout should be enabled (in Oculus Settings) to improve GPU performance when foveation
is enabled.
→ XR Plug-in Management > Oclus の下図の場所を ON にする
Using HDR may significantly impact performance. It is recommended to disable HDR.
→ そのプラットフォームが使っているレンダリング設定 (初期設定では Mobile_RPAsset.asset
) の下図の場所をOFFにする
"Depth API" vs "Scene API"
比較
つまり...
Depth API を使うには Oculus XRプラグイン
が必要
具体的には
動的オクルージョンが必要なら Oculus XRプラグイン
にする
具体的にはハンドトラッキングでARオブジェクトを隠したり、第三者の体でARオブジェクトを隠したり、がしたいとき
Player Settings
hoge
その他の設定ファイル
OculusProjectConfig
Assets/Oculus/OculusProjectConfig.asset
Oculus 固有の設定 その1
OVR Manager のマスター設定みたいなもの
よって、OVR Manager が付着している Camera Rig が在るシーンに影響を与える
OculusSettings
Assets/XR/Settings/OculusSettings.asset
Oculus 固有の設定 その2
XR Plug-in Management > Oclus の内容そのもの
↓こうしておく
Mobile_RPAsset
Assets/Settings/Mobile_RPAsset.asset
厳密には Questプラットフォームに設定している URPプロファイル
HDRP をオフにして、Anti Aliasing (MSAA) を 4x にする
Player Settings
このとおりにやる
良記事
長押しセンターは無効にすべき?
OS側の機能によるリセンターが効かなくなりました
MRUKの仕様上、OS側の機能によるリセンターをしてしまうとシーンメッシュの位置が現実とずれてしまうためです
MRUKの設定で無効化してあります
Quest プログラムの流れ
- Unity 制御下 の
- XR Plug-in Management が
- Oclus XR Plugin を稼働させて XR環境を Oculus にすると...↓
- XR Plug-in Management が
- Oclus コアプログラム制御下 の
3. OVR Plugin が稼働して... ↓ - Quest 実機内の Meta XR Runtime の
5. OpenXRランタイムに命令を出していく
シェーダーストリップの機能
によると、
この最適化はビルトインレンダーパイプラインでのみ使用可能です。URPでオンにすると必要なシェーダーがコンパイルされずピンク色になってしまうので注意です。
そもそも URP のプロジェクトでは押せない
立って体験するアプリを作るには
OVRCameraRigプレハブをシーンの地面と同じ高さに配置して、OVR ManagerコンポーネントのTracking Origin TypeをFloor LevelまたはStageに変更します。
Floor Levelだとリセンターができる、Stageだとリセンターができないという違いがあります。Floor Levelにするとヘッドセットをはずしてかぶり直したときにリセンターがかかるので、ルームスケールやアリーナスケール等、立って歩きまわるアプリを開発する場合はStageにします(なお、Quest Linkでの実行ではStageにしてもヘッドセットの脱着でリセンターがかかります)。Stageでは境界線の中央がシーンの原点になります。
境界線の限界を越えたアプリ
AndroidManifest.xmlに下記を追加するとアプリ内で境界線を完全に無効にできます。アプリ起動時に警告メッセージが一回表示されます。
<uses-feature android:name="com.oculus.feature.CONTEXTUAL_BOUNDARYLESS_APP" android:required="true" />
なお、この設定をしたアプリはストアまたはApp Labに基本的にリリースできません(現在は可能になっているらしい?)。ダッシュボードにアップロードするとエラーが出るようです。ごく一部のアプリのみ特例で許可されているようです。
Meta Allowing Chosen Quest MR Apps To Disable Boundary
OVRManager と OVRSceneManager
別物
また MRUK プレファブをシーンに入れている場合、OVRSceneManager を同居させてはダメ