MkItYs

MkItYs > 音楽・漫画・VR・自律制御 > 

images

3Dのキャラクタを物理ベースのキャラにする:Unity (ConfigurableJoint) , UnityChan, VRM (VRoid) , DAZ

images

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 のボーンの向き:
images
UnityChan / SD_UnityChanのボーンの向き:
images

このため、ボーンの向きが違っている3Dモデルは、取り付け位置を修正する必要があります。

修正が必要なのは、ジョイントが接続している位置と、軸の方向です。

ジョイントの軸の方向は、ボーンの軸に合わせて調整します(たとえばプライマリの軸が、コピー元のY座標に設定されていて、コピー先のボーンの接続方向がX座標に相当するなら、軸はその位置に設定します。なおボーンの向きが反対なら、軸の符号も逆にします)。

ジョイントが接続している位置は、UnityChan / SD_UnityChanについては、すべて親のボーンとの距離をゼロにするだけでかまいません。