Meta XR SDK IOBT GenerativeLegs で全身トラッキング

前回「Meta XR SDK を用いたスムーズ移動とテレポートの実装」で Meta XR SDK の動作とテレポート移動の実装を行いましたが、今回はそちらに加えて「IOBT+GenerativeLegs」を用いた3Dアバターとの連携も行いました。

 

IOBT とは「InsideOutBodyTracking」の略称で Meta Quest に搭載されたカメラが動きを認識し、両肘・肩・胴体などの上半身のトラッキングを行う機能となります。

また GenerativeLegs とは、最先端のAI技術を用いて下半身の動きを推測する機能となり、これらを組み合わせる事で全身の動きの推測が可能となります。

2024/05 現在は Meta Quest 3 を用いて、開発者モードを有効にしている場合に使用可能なようです。

Unity-Movement のインポート

  1. IOBT+GenerativeLegsを導入する為に、公式サンプル「Unity-Movement」のクローン用URLをコピーします。
  2. メニューバーから「Window > Package Manager」を選択します。
  3. 開いたPackage Manager画面左上の「+」プルダウンから「Add package from git URL...」を選択し、入力欄に1でコピーしたURLを貼り付けて「Add」ボタンを押下します。

アバター用FBXファイルの設定

  1. アバターとして動かす3DモデルのFBXモデルをProjectに追加します。
  2. 追加したFBXファイルを選択し、「Rig」の「AnimationType」に「Humanoid」を設定して「Apply」ボタンを押下します。
  1. 「AvatarDefinition」の「Configure...」ボタンを押下し、各ボーンマッピングを行います。
    この際「Chest」・「UpperChest」・「Shoulder」のボーンも設定した方がより正確に動作しました。
  2. 「Muscles&Settings」タブの項目の内「TranslationDoF」にチェックを入れ、「Done」ボタンを押下します。

IOBT+GenerativeLegsの設定

  1. 設定を行ったFBXファイルをHierarchyに配置して右クリックして、
    「Movement Samples > Body Tracking > Animation Rigging Retargeting(full body)(constraints)」を選択します。
  1. 各種必要な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 … それぞれのボーンをどれだけ追従させるかの重み付けを設定します。

  1. OVRCameraRigにアタッチされている「OVRManager」の下記項目の値を変更します。

    対象オブジェクト
     OVRPlayerController > OVRCameraRig

    対象コンポーネント
     OVRManager
    対象項目
     QuestFeatures > BodyTrackingSupport … Supported

     MovementTracking > BodyTrackingFidelity … High
     MovementTracking > BodyTrackingJointSet … FullBody
  1. 現段階でもアバターが動作はしますが現実の位置回転とのズレが発生してしまう為、下記スクリプトを配置したFBXオブジェクトにアタッチし「TrackingSpaceTransform」に「OVRPlayerController > OVRCameraRig > TrackingSpace」を指定します。

    また、そのままですとアバターとVRコントローラーの3Dモデルが重なって表示されてしまう為、必要に応じて「OVRControllerPrefab」等のVRコントローラー3Dモデルの表示を無効にします。
ダウンロード
SyncAvatar.cs
SyncAvatar.cs
テキスト文書 549 Bytes

各値の調整を行い実行すると、設定したアバターの上半身が追従し下半身も推定動作しました。

GenerativeLegs は今後 Meta Quest 3 以外でも実装予定となっているらしく、機器に足りない機能を補助する形でもAIが使用されている等、こういった部分にも注目しています。

システムフレンドはXRの技術を利用し、楽しい「体験」を実現するための開発を行っています。
ご相談や事例の紹介など弊社のエンジニアがフレンドリーに対応させていただきます。
お気軽にお問い合わせください。