前回「Meta XR SDK を用いたスムーズ移動とテレポートの実装」で Meta XR SDK の動作とテレポート移動の実装を行いましたが、今回はそちらに加えて「IOBT+GenerativeLegs」を用いた3Dアバターとの連携も行いました。
IOBT とは「InsideOutBodyTracking」の略称で Meta Quest に搭載されたカメラが動きを認識し、両肘・肩・胴体などの上半身のトラッキングを行う機能となります。
また GenerativeLegs とは、最先端のAI技術を用いて下半身の動きを推測する機能となり、これらを組み合わせる事で全身の動きの推測が可能となります。
2024/05 現在は Meta Quest 3 を用いて、開発者モードを有効にしている場合に使用可能なようです。
Unity-Movement のインポート
- IOBT+GenerativeLegsを導入する為に、公式サンプル「Unity-Movement」のクローン用URLをコピーします。
- メニューバーから「Window > Package Manager」を選択します。
- 開いたPackage Manager画面左上の「+」プルダウンから「Add package from git URL...」を選択し、入力欄に1でコピーしたURLを貼り付けて「Add」ボタンを押下します。
アバター用FBXファイルの設定
- アバターとして動かす3DモデルのFBXモデルをProjectに追加します。
- 追加したFBXファイルを選択し、「Rig」の「AnimationType」に「Humanoid」を設定して「Apply」ボタンを押下します。
- 「AvatarDefinition」の「Configure...」ボタンを押下し、各ボーンマッピングを行います。
この際「Chest」・「UpperChest」・「Shoulder」のボーンも設定した方がより正確に動作しました。 - 「Muscles&Settings」タブの項目の内「TranslationDoF」にチェックを入れ、「Done」ボタンを押下します。
IOBT+GenerativeLegsの設定
- 設定を行ったFBXファイルをHierarchyに配置して右クリックして、
「Movement Samples > Body Tracking > Animation Rigging Retargeting(full body)(constraints)」を選択します。
- 各種必要なComponentがアタッチされ、配置したFBXオブジェクトの階層構造も変更されます。
主要なボーンの位置回転や重み付けの設定は、下記Componentの値を変更する事で可能となります。
対象オブジェクト
配置したFBXオブジェクト
対象コンポーネント
Retargeting Layer
対象項目
Adjustments > RotationTweaks … ボーンの回転の調整が可能です。
Adjustments > PositionChange … ワールドに対しての位置の調整が可能です。
Adjustments > RotationChange … ワールドに対しての回転の調整が可能です。
対象オブジェクト
配置FBXオブジェクト > Rig > Deformation
対象コンポーネント
Full Body Deformation Constraint
対象項目
Settings > Body > Spine Translation Correction Type … 背骨位置の補正に何を用いるかを選択します。
Advanced Settings > Bone Adjustment Data > 各Adjustment … ボーンの位置の調整が可能です。
各種Weight … それぞれのボーンをどれだけ追従させるかの重み付けを設定します。
- OVRCameraRigにアタッチされている「OVRManager」の下記項目の値を変更します。
対象オブジェクト
OVRPlayerController > OVRCameraRig
対象コンポーネント
OVRManager
対象項目
QuestFeatures > BodyTrackingSupport … Supported
MovementTracking > BodyTrackingFidelity … High
MovementTracking > BodyTrackingJointSet … FullBody
- 現段階でもアバターが動作はしますが現実の位置回転とのズレが発生してしまう為、下記スクリプトを配置したFBXオブジェクトにアタッチし「TrackingSpaceTransform」に「OVRPlayerController > OVRCameraRig > TrackingSpace」を指定します。
また、そのままですとアバターとVRコントローラーの3Dモデルが重なって表示されてしまう為、必要に応じて「OVRControllerPrefab」等のVRコントローラー3Dモデルの表示を無効にします。
各値の調整を行い実行すると、設定したアバターの上半身が追従し下半身も推定動作しました。
GenerativeLegs は今後 Meta Quest 3 以外でも実装予定となっているらしく、機器に足りない機能を補助する形でもAIが使用されている等、こういった部分にも注目しています。
システムフレンドはXRの技術を利用し、楽しい「体験」を実現するための開発を行っています。
ご相談や事例の紹介など弊社のエンジニアがフレンドリーに対応させていただきます。
お気軽にお問い合わせください。