MRが楽しい

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

MetaQuestProでMRTKを使ってアプリの背景にパススルー(複合現実)を設定する

本日は MetaQuestPro の技術調査枠です。
MetaQuestProでMRTKを使ってアプリの背景にパススルー(複合現実)を設定する手順を記事にします。

前提条件

以下の記事で作成した MRTK のハンドインタラクションのサンプルシーンのプロジェクトでパススルーを有効にしてみます。
bluebirdofoz.hatenablog.com

パススルーの利用には OpenXR バックエンドが必要なようです。
このため上記記事の 3.Oculus Integration のインポートの手順にて手順通り[Use OpenXR]を選択している必要があります。

パススルーを利用する

パススルーを利用するには以下の作業が必要になります。
・OVRManager コンポーネントでパススルーの機能を有効化する
・OVRCameraRig オブジェクトにパススルーレイヤーのコンポーネントを設定する
・メインカメラの背景に透明色を設定する

これらの設定は全て MRTK のプロファイルで管理します。

パススルー用プロファイルの作成

最初にパススルー用のカスタムプロファイルを作成します。
シーン内の[MixedRealityToolkit]オブジェクトを選択してプロファイルの情報を Inspector に表示します。

[Copy & Customize]をクリックして現在のプロファイルをベースに新規プロファイルを作成します。
これでプロファイルが編集可能になります。

[Input]タグを開き、InputSystem 設定のプロファイルを[Clone]して編集可能にします。

更に[Input Data Providers]パネル内の[XR SDK Oculus Device Manager]を開きます。
こちらのプロファイルも[Clone]して編集可能にします。

一見 Clone しなくても[XR SDK Oculus Device Manager]の設定が編集可能に見えますが、Clone を行わないと編集内容が保存されません。

パススルー用CameraRigの作成

パススルー用の CameraRig オブジェクトを作成します。
[OvrCameraRigPrefab]からデフォルトで参照されている[MRTK-Quest_OVRCamearRig]を開きます。

MRTK を FeatureTool を使ってインポートしている場合、これらのファイルは Packages 配下にインポートされているため直接編集はできません。
Assets 配下にフォルダを作成し、そちらにファイルをドラッグして MRTK-Quest_OVRCamearRig のコピーを作成します。

コピーした OVRCamearRig ファイルを選択して Inspector ビューを開きます。
Assets 配下にコピーしたことで編集が可能になっているのでパススルー用の設定を行います。

最初に[OVRManager]コンポーネントでパススルーの機能を有効化します。以下の通り設定を変更します。
・[Quest Features -> PassthroughCapabilityEnabled]にチェックを入れる
・[Enable Passthrough]にチェックを入れる

次にパススルーレイヤーのコンポーネントを設定します。
[Add Component]から[OVR Passthrough Layer]コンポーネントを検索して追加します。

[OVR Passthrough Layer]コンポーネントが追加されたら[Placement]の設定を[Underlay]に設定しておきます。
これでパススルーの映像のレイヤーが最背面に設定されるので、透過されたシーンの背景にパススルーが映るようになります。

これでパススルー用の CameraRig オブジェクトが作成できました。

作成した CameraRig オブジェクトをプロファイルの[OvrCameraRigPrefab]参照にドラッグして参照を差し替え、プロファイルを保存します。
これでシーン再生時にパススルー用の CameraRig オブジェクトが利用されるようになります。

メインカメラの背景に透明色を設定

MRTK 2.8.2 では MetaQuestPro は Opaque(不透過) デバイスとして判定されるため、本設定に透明色を設定する必要があります。
[Camera]タグを開き、カメラ設定のプロファイルを[Clone]して編集可能にします。

[Display Settings]パネルの[Opaque]の設定に透明色の背景を設定します。
[Transparent]と同じ設定にしておけば透明色の設定になります。

プロジェクト設定

パススルーは特定の Configuration 設定下でのみ動作するようです。
設定を変更するため、メニューから[Edit -> ProjectSettings..]を開き、[Player]タブの[AndroidSettings -> OtherSettings]を開きます。

以下の通り設定を変更します。
・[Configuration -> ScriptingBackend]を[IL2CPP]に変更する
・[Configuration -> TargetAchitectures]で[ARM64]のみのチェックに変更する

ビルドと動作確認

これでパススルーの設定は完了です。
[File -> BuildSettings...]からビルドとデプロイを実行します。

自作アプリのデプロイと実行に関する手順は以下の記事を参照ください。
bluebirdofoz.hatenablog.com

MetaQuestPro でデプロイしたアプリを起動すると、以下の通り現実世界のカメラ映像が背景に映りました。