Closed12

Meta Quest で空間メッシュ

TakayaTakaya

公式

シーンメッシュ(廃止)
https://developers.meta.com/horizon/documentation/unreal/unreal-scene-mesh/?locale=ja_JP
MRUK 使おう
https://developers.meta.com/horizon/documentation/unity/unity-mr-utility-kit-overview

サンプル

MRUKに対応したMeta QuestのMRアプリのテンプレートプロジェクトを作った
https://qiita.com/noritsune/items/8be9d15710355aa4c149

動画

https://www.youtube.com/watch?v=32CEXcSJjzQ

https://www.youtube.com/watch?v=FepNBOXLo9Y

機能

概要
https://www.docswell.com/s/Ovjang/KYDEPE-Unity6-MetaXRSDK#p9

記事

登壇資料: Unity6とMETA XR SDKを利用する方法
https://www.docswell.com/s/Ovjang/KYDEPE-Unity6-MetaXRSDK#p9

土鍋で雑多煮
https://donabenabe.hatenablog.com/search?q=MRUK

古い情報

Global Mesh に関する情報

Meta Quest 3 の Global Mesh を試す
https://knowledge-swimmer.com/meta-quest-global-mesh
Meta Quest3 パススルー機能で現実世界と仮想空間を融合(MR化)させる方法
https://kunohe.tech/serise/2899/
Meta Quest3 パススルー機能をMeta XR SDKで開発する方法
https://kunohe.tech/serise/2770/
Meta Quest で部屋のメッシュを使う (SDK v59)
https://udasankoubou.blogspot.com/2023/11/unitymeta-quest-sdk-v59.html
MetaQuest3ではじめる、モグラ叩きMR
https://techblog.kayac.com/metaquest3-mogura-mr

TakayaTakaya

インストール手順

1) 環境構築

  1. Unity6 の最新版をインストール
  2. URP プロジェクトの新規作成
  3. プラットフォームを Android にする

2) Unity Asset Store

Meta が配布しているアセットを一通り購入する

3) Unity Package Manager

左端のタブから My Assets を選択して "Meta" で検索.
1)で登録したアセットが並ぶので、必要なものをインストール

4) インストール順番

Meta Core SDK インストール

直後にでるこれは、「送らない」

その次のこれは、「再起動」

XR Plug-in Management

  1. Project Settings > XR Plug-in Management から XR Plug-in Management 自体をインストール
  2. 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 を使いたいなら...
https://zenn.dev/link/comments/2e47774cda53eb

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にする

TakayaTakaya

"Depth API" vs "Scene API"

比較

https://developers.meta.com/horizon/documentation/unity/unity-depthapi-overview/

つまり...

https://developers.meta.com/horizon/documentation/unity/unity-xr-plugin/?locale=ja_JP

Depth API を使うには Oculus XRプラグイン が必要

具体的には

動的オクルージョンが必要なら Oculus XRプラグイン にする

具体的にはハンドトラッキングでARオブジェクトを隠したり、第三者の体でARオブジェクトを隠したり、がしたいとき

TakayaTakaya

その他の設定ファイル

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

このとおりにやる
https://developers.meta.com/horizon/documentation/unity/unity-project-configuration

TakayaTakaya

長押しセンターは無効にすべき?

https://github.com/noritsune/quest-mr-template?tab=readme-ov-file

OS側の機能によるリセンターが効かなくなりました
MRUKの仕様上、OS側の機能によるリセンターをしてしまうとシーンメッシュの位置が現実とずれてしまうためです
MRUKの設定で無効化してあります

TakayaTakaya

Quest プログラムの流れ

  1. Unity 制御下 の
    1. XR Plug-in Management が
      1. Oclus XR Plugin を稼働させて XR環境を Oculus にすると...↓
  2. Oclus コアプログラム制御下 の
    3. OVR Plugin が稼働して... ↓
  3. Quest 実機内の Meta XR Runtime の
    5. OpenXRランタイムに命令を出していく

TakayaTakaya

立って体験するアプリを作るには

https://tech.framesynthesis.co.jp/unity/metaquest/

OVRCameraRigプレハブをシーンの地面と同じ高さに配置して、OVR ManagerコンポーネントのTracking Origin TypeをFloor LevelまたはStageに変更します。

Floor Levelだとリセンターができる、Stageだとリセンターができないという違いがあります。Floor Levelにするとヘッドセットをはずしてかぶり直したときにリセンターがかかるので、ルームスケールやアリーナスケール等、立って歩きまわるアプリを開発する場合はStageにします(なお、Quest Linkでの実行ではStageにしてもヘッドセットの脱着でリセンターがかかります)。Stageでは境界線の中央がシーンの原点になります。

TakayaTakaya

境界線の限界を越えたアプリ

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
https://www.uploadvr.com/meta-only-allowing-whitelisted-quest-developers-disable-boundary-mixed-reality/

参考: https://tech.framesynthesis.co.jp/unity/metaquest/

このスクラップは2025/02/20にクローズされました