MRが楽しい

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

Unity-MovementのHigh Fidelity Sampleを確認する

本日は MetaQuestPro の小ネタ枠です。
Unity-MovementのHigh Fidelity Sampleの仕組みを確認して記事にします。

前回記事

以下の前回記事の続きです。
bluebirdofoz.hatenablog.com

本記事では以下のHigh Fidelity Sampleの解説ページを参考にサンプルシーンを確認します。
Unity Movement High Fidelity Sample: Unity | Oculus Developers

High Fidelity Sampleを試す

High Fidelity Sampleを試すには以下のサンプルシーンを利用します。
・Packages/MetaMoveMent/Samples/Aura/Scenes/MovementHighFidelity.unity

Packages フォルダ配下は書き込み不可の領域のため、そのままではシーンを開けません。
一旦、これらのサンプルシーンを Assets フォルダ配下にドラッグしてコピーます。

サンプルを動作させるにはボディ/アイ/フェイストラッキングの権限設定を行う必要があります。
Hierarchy から InteractionRigOVR-Basic/OVRCameraRig を選択して Inspector ビューを開きます。

[OVRManager]コンポーネントで以下の通り設定を行います。
・[Quest Features -> Hand Tracking Support]に[Controllers And Hands]を設定する
・[Quest Features -> Body Tracking Support]に[Required]を設定する
・[Quest Features -> Face Tracking Support]に[Required]を設定する
・[Quest Features -> Eye Tracking Support]に[Required]を設定する
・[Permission Requests On Startup -> Body Tracking]にチェックを入れる
・[Permission Requests On Startup -> Face Tracking]にチェックを入れる
・[Permission Requests On Startup -> Eye Tracking]にチェックを入れる

シーンの概要

このシーンを再生すると目の前にリアルな人型のキャラクターが現れます。
ユーザーは自分の顔の感情と視線をリアルタイムでキャラクターに反映したアニメーションを確認することができます。

シーンの詳細

1.
InteractionRigOVR-Basic -> OVRCameraRig -> HighFidelityFirstPerson の下に、ユーザーの動きを追跡するミラーリングされていないキャラクターが存在します。
ミラーリングされたキャラクターは InteractionRigOVR-Basic -> OVRCameraRig -> MirroredObjects の下にあります。

2.
メインのディレクションライトはミラーリングされていないキャラクターに作用します。
MirroredObjects の下にあるディレクションライトはミラーリングされたキャラクターに作用します。
3.
一般に、すべてのミラーリングオブジェクトは InteractionRigOVR-Basic -> OVRCameraRig -> MirroredObjects ゲームオブジェクトの下に存在します。
4.
スポットライトはベイクド・ライティングによってプロップに影響を与えます。

ミラーキャラクターの詳細

このシーンは Packages/Meta Movement/Samples/HighFidelity/Character/Scenes/MovementHighFidelity.unity に存在します。
一人称のキャラクターは Packages/Meta Movement/Samples/HighFidelity/Character/Prefabs/HighFidelity.prefab です。
三人称のキャラクターは同じフォルダ内の HighFidelityThirdPersonMirrored.prefab です。

キャラクターのプレハブのモデルは Packages/Meta Movement/Samples/HighFidelity/Character/Models/high_fidelity_rig.fbx を参照します。
そのマテリアルは Packages/Meta Movement/Samples/HighFidelity/Character/Materials に存在しています。

コンポーネントの解説

コンポーネントの機能に関する詳細を記載します。
以下のリストはキャラクターに設定された各コンポーネントの基本情報です。

1.OVRBody

ボディ・トラッキングの機能を提供します。

2.OVRCustomSkeleton

ボディ・トラッキングで BoneId 列挙型を対応するボーンのトランスフォームにマッピングするために使用されます。
このマッピングは手動または "Auto Map Bones" ボタンで行うことができます。

3.BlendShapeMapping

ブレンドシェイプにマッピングします。
これは、"Auto Map" ボタンで行うことができます。

4.BlendshapeModifier

キャラクターの顔の表現を修正するために使用します。

5.FaceTrackingSystem

キャラクタのブレンドシェイプを動作させ、補正を適用し、EyeRigLogic スクリプトも駆動します(有効な場合)。

6.CorrectiveShapesDriver

ブレンドシェイプ用の修正スクリプトです。
ここで使われる修正ファイルは Packages/Meta Movement/Samples/HighFidelity/Character/CombinationShapes/HighFidelityCombinationShapes.json に存在します。

7.RecalculateNormal

メッシュがアニメートする際に法線を再計算します。

8.OVRFaceExpressions

顔トラッキングから更新された顔の表情の値を提供します。

9.DriveSkeletalLateUpdateLogic

OVRSkeleton がスケルトンのボーンを更新した後、LateUpdate で RecalculateNormals と同様に、高度なスケルトンアニメーションスクリプトを実行します。

10.DeformationLogic

ボディのボーン位置を変更し、元のモデルのプロポーションと一致するように調整します。


三人称キャラクターと一人称キャラクターには、いくつかの違いがあります。
一人称キャラクターは人物の顔、体、目の動きを追跡しますが、三人称キャラクターはミラーリングのためにそれらの値を単にコピーしています。
また、一人称キャラクターの頭部は無効化されています。