MRが楽しい

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

Unity-MovementのAura Sampleを確認する

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

前回記事

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

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

Aura Sampleを試す

Aura Sampleを試すには以下のサンプルシーンを利用します。
・Packages/MetaMoveMent/Samples/Aura/Scenes/MovementAura.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 -> AuraFirstPerson の下に、ユーザーの動きを追跡するミラーリングされていないキャラクターが存在します。
ミラーリングされたキャラクターは InteractionRigOVR-Basic -> OVRCameraRig -> MirroredObjects の下にあります。

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

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

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

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

コンポーネントの解説

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

1.OVRBody

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

2.OVRCustomSkeleton

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

3.BlendShapeMapping

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

4.BlendshapeModifier

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

5.FaceTrackingSystem

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

6.FacialExpressionDetector

キャラクタの表情を検出します。
キャラクタの表情を検出し、検出された場合にイベントを発生させます。

7.CorrectiveShapesDriver

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

8.SmileEffect

MacroFacialExpressionDetector に反応し、キャラクタの顔のマテリアルプロパティを変更します。

9.MacroFacialExpressionDetector

笑顔("Happy")などのマクロ表情を検出するために使用します。

10.RecalculateNormals

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

11.OVRFaceExpressions

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


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