3Dキャラを、物理ベースのキャラ(アクティブラグドール)にするための設定方法です。
関連
- ◯
- コンテナに強化学習のフレームワークを設置する:Docker, ML-Agents
検証
- ・
- OS:macOS 11, Windows 10
- ・
- アプリ:Unity 2021.2.8f1
- ・
- ライブラリ:ML-Agents 18 (com.unity.ml-agents (C#) 2.1.0) : Assets/ML-Agents/Examples/Walker
前提:強化学習の3Dモデルとしても使えるようにしておく
前提として、ここでは能動的なジョイント(ConfigurableJoint )を一から設定することはしません。次の強化学習フレームワーク(ML-Agents )の3Dモデルから、ジョイント群の設定をラグドールにコピーすることで、アクティブラグドールとして設定します:
- ・
- ${DIR_ML_AGENTS}/ml-agents/Project/Assets/ML-Agents/Examples/Walker/Prefabs/Ragdoll/WalkerRagdoll.prefab
これはキャラクタを、強化学習のフレームワークでも使えるようにしておくためです。
手順:能動的なジョイントをコピーする
次の手順で、能動的なジョイントをコピーします:
- ・
- ラグドールのCharacterJointを、すべて削除
- ・
- 転記元の3Dモデル(WalkerRagdoll )から、すべてのConfigurableJoint をコピー
ラグドールにコピーするConfigurableJoint は、足〜手〜頭のボーンふくめ、ぜんぶで13コです。
このとき、ボーンがボディに取り付けられている方向に注意する必要があります。たとえばWalkerRagdoll /VRoid は各ボーンの向きが同じですが(ワールドの向きと一致している)、UnityChan / SD_UnityChanは違っています:
- ・
- WalkerRagdoll /VRoid のボーンの向き:
- ・
- UnityChan / SD_UnityChanのボーンの向き:
このため、ボーンの向きが違っている3Dモデルは、取り付け位置を修正する必要があります。
修正が必要なのは、ジョイントが接続している位置と、軸の方向です。
ジョイントの軸の方向は、ボーンの軸に合わせて調整します(たとえばプライマリの軸が、コピー元のY座標に設定されていて、コピー先のボーンの接続方向がX座標に相当するなら、軸はその位置に設定します。なおボーンの向きが反対なら、軸の符号も逆にします)。
ジョイントが接続している位置は、UnityChan / SD_UnityChanについては、すべて親のボーンとの距離をゼロにするだけでかまいません。