🍰
Quest Pro でURPでPassthroughを利用する
はじめに
Quest Proを使ってPassthroughを利用します。
VRテンプレートのようなBuiltin Render Pipelineだとできることは確認済みなので、URPを使ってみます。
環境
- Unity 2022.3.3f1でURPテンプレートを使用してプロジェクトを作成
- Package ManagerでVR Featuresをインストール
※実際にインストールされるのはOculus XR Plugin(4.0.0)とOpenXR Plugin(1.8.1) - Package ManagerでXR Interaction Toolkit(2.3.2)をインストール
※サンプルもいくつかインストール - Asset StoreでOculus Integration(54.1)をインストール
設定の変更
- File > Build SettingsでAndroidに切り替えてTexxture CompressionをASTCに設定
- Project Settings > Preset Managerでコントローラーの設定を入れる
※XR Interaction ToolkitのSamplesのStarter Assets配下で使いたいPresetを選んで追加していけばOK - Project Settings > XR Plug-in ManagementでPCにOpenXRを選択、AndroidはOculusを選択
- XR Plug-in ManagementのOculusのカテゴリでMulti PassをRendering Modeに選び、Target DevicesにQuest Proを選択
- 同OpenXRのカテゴリでRender ModeをMulti-passにし、Interaction ProfilesでOculus Touch Controller Profileを追加
- PlayerにてScripting BackendをIL2CPPにし、Graphics APIsからVulkanを外す
- Minimum API Levelを29に更新
- Target ArchitecturesをARM64に設定
- Project Validationをみてエラーが出ていれば解決する
プロジェクトの作成と変更
- New SceneにてStandard(URP)を作成
- Main CameraとGlobal Volumeを削除
- XR Interaction ToolkitのStarter AssetsにあるComplete XR Origin Set UpをHierarchyに追加
- Complete XR Origin Set Up下にあるMain CameraのEnvironmentのBackground TypeをSolid Colorにし、Alphaを0に設定
- **【これが肝心】**OutputのHDR RenderingをOffにする。
- パススルーを利用するためにシーンにOVR ManagerとOVR Passthrough Layerを追加
- OVR ManagerのTracking Origin TypeをFloor Levelに変更
- OVR Passthrough LayerのPlacementをUnderlayに変更する。
いまのURPではPost ProcessでAlphaを0のままにしてくれない様なのでPost Processを切る必要がある。
プロジェクトの実行
Quest Proのパススルーを利用する場合、実機を接続してPlay Modeで体験をすることはできないので、Build And Runで実行します。
ちなみに、メインカメラのHDR(High Dynamic Range)レンダリングをオフにすると、色の表現範囲が制限され、次のような機能に影響が出る可能性があるので、素直にBuiltin Render Pipelineを使ってもいいのかなと思います。
-
明るさの表現範囲:HDRをオフにすると、色の明るさの表現範囲が狭まり、シーン内の明るい部分や暗い部分のディテールが失われる可能性がある
-
ブルーム効果:HDRをオフにすると、ブルーム効果が正確に表現されなくなる可能性がある
これは、ブルーム効果が明るい部分を強調するためにHDRの広い色域を利用しているため -
トーンマッピング:HDRをオフにすると、トーンマッピングが正しく機能しなくなる可能性があります。トーンマッピングは、HDRの広い色域をLDR(Low Dynamic Range)ディスプレイに適応させる技術
Discussion