MRが楽しい

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

MRTKv2.xを使ってMetaQuest3向けのUnityプロジェクト作成を行う その6(アプリの背景にパススルーを設定する)

本日はMetaQuest3の技術調査枠です。
MRTKv2.xを使ってMetaQuest3向けのUnityプロジェクト作成を行う手順を記事にします。
本記事はアプリの背景にパススルー(複合現実)を設定する手順です。

前提条件

以下の記事で作成した Unity プロジェクトを基に設定を行います。
記事その1~その4までの作業を実施済みであることが前提になります。
bluebirdofoz.hatenablog.com

パススルーを利用する

パススルーを利用するには以下の作業が必要になります。
・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 -> Passthrough Support]を[Supported]または[Required]に設定する
・[Insight Passthrough -> Enable Passthrough]にチェックを入れる

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

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

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

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

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

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

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

プロジェクト設定

パススルーは特定のConfiguration設定下でのみ動作します。パススルーが正常に動作しない場合は以下の設定を確認してください。
メニューから[Edit -> ProjectSettings..]を開き、[Player]タブの[AndroidSettings -> OtherSettings]を開きます。

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

ビルドと動作確認

これでパススルーの設定は完了です。
以下の記事を基にプロジェクトのビルドとQuest3へのデプロイを実行してください。
bluebirdofoz.hatenablog.com

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