Meta Quest3 パススルー機能中にハンドを3D-CGの手前に表示する方法(Depth機能)

こんにちは、くのへ@MasazaneKunoheです。

今日はMeta Quest3のパススルー機能を行っている際に、ハンドを3D-CGの手前に表示する方法を紹介します。
これはDepthと呼ばれる機能であり、自分の手とVRデバイスの距離をMetaQuest3が測定しており、その距離に応じて3D-CGの手前もしくは手奥に表示するものです。

はじめに

下の動画を見て下さい。左の動画は手がどんなに手前にあってもCubeの裏側に隠れてしまっています。
一方、右の動画は手がCubeの手前に見えています。

これは手の距離をMetaQuest3が認識し(Depthという機能。ハンドトラッキングもこれを使っている。)、その距離に応じて3D-CGの手前・手奥に表示するものです。
今回はこの設定を解説します。

開発方法

①準備(パススルーのセッティング、SceneModelPassThroughマテリアルの作成)

まず、パススルー機能をセッティングしてください(この記事です)。
そして、以前のMR化の記事で解説したSceneModelPassThroughというマテリアルを作ってください。この記事の①項のことです。

②OVRHandPrefabにセッティング

準備が出来たら、下図のようにヒエラルキーウィンドウからOVRHandPrefabを探し(下図①)、インスペクターウィンドウのSkinned Mesh Rendererを探し(下図②)、そして、Materialsの項を開きます(下図③)。
そして、SceneModelPassThroughマテリアルと交換してください。ドラッグアンドドロップすればOKです(下図③)。
左手が終わったら、右手にも同じ設定を行います。

以上です!
これだけで、ハンドが3D-CGの手前に表示されるようになります。

なお、どうしても手の周囲の薄皮一枚分だけ背面が映ってしまいます。他の手法を用いることで、対応できる可能性があるのですが、非常に手順が複雑なので、それは研究次第、また別記事としてアップしたいと思います。


今日はパススルー機能中にハンドを3D-CGの手前に表示する方法(Depth機能)を解説しました。

仮想現実と現実世界(自分の手)が融合する瞬間であり、これもとても面白いですね~。

ではまた別の記事で会いましょう。
ではでは~

🦅バサバサ~