MRが楽しい

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

MetaQuestProでMRTKを使ってハンドオクルージョンを設定する

本日は MetaQuestPro の技術調査枠です。
MetaQuestProでMRTKを使ってハンドオクルージョンを設定する手順を記事にします。

前提条件

以下の記事と同様の手順でプロジェクトの基本設定を実施します。
bluebirdofoz.hatenablog.com

ハンドオクルージョンを設定する

今回は MRTK の機能で表示されるハンドメッシュ部分をオクルージョンすることでハンドオクルージョンを実現します。
そのためには以下の作業が必要になります。
・背景のパススルーの設定を行う
・Profile からハンドメッシュのマテリアルにオクルージョンシェーダを設定する

背景のパススルーの設定を行う

ハンドオクルージョンをする際、実際の手の映像が見える必要があるため、以下の記事を参考にパススルーの設定も実施してください。
bluebirdofoz.hatenablog.com

今回は上記の記事で作成したハンドインタラクションのサンプルシーンにパススルー設定したプロジェクトをベースに利用しました。

Profile からハンドメッシュのマテリアルにオクルージョンシェーダを設定する

初めにオクルージョン用のマテリアルを作成します。
適当なフォルダで右クリックから[Create -> Material]でマテリアルを作成します。

作成したマテリアルの[Sharder]を MRTK に含まれる[VR/SpatialMapping/Occlusion]に設定します。
これでオクルージョン用のマテリアルが作成できました。

Profile をクローンして編集可能な状態にします。
MRTK の Profile を開き、[Input -> Articulated hand Tracking]パネルの[HandTrackingProfile]まで[Clone]して編集可能な状態にします。

編集可能になった HandTrackingProfile を以下の通り編集します。
・[RiggedHandMeshMaterial]に先ほどのオクルージョン用のマテリアルを設定する
・[HandJointVisualizationModes]を[Nothing]に設定する

これで手の位置にオクルージョンされるハンドメッシュのみが表示されるようになります。

UnityEditorでのテスト

シーンを再生して動作を確認します。
UnityEditor 上でもハンドメッシュの部分がオクルージョンされて背景が見えます。

ビルドと動作確認

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

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

MetaQuestPro でデプロイしたアプリを起動して手をかざすとハンドメッシュの部分にパススルーが映り、手の部分がオクルージョンされて見えます。