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