物理ベースのキャラ(アクティブラグドール)に、アニメーションの動きやポージングをさせるための手順です。
検証
- ・
- OS:macOS 11, Windows 10
- ・
- アプリ:Unity 2021.2.8f1
- ・
- ライブライリ:ConfigurableJointExtensions.cs
アニメーションやポーズのコピー
物理ベースのキャラにアニメーションの動きやポージングをさせたい場合、もっとも手っ取り早いやり方は、3Dキャラからアニメーションやポーズをコピーすることです。
これは、3Dキャラの関節の回転を、物理ベースのキャラの能動的なジョイント(ConfigurableJoint )にコピーすることで実現します。ボージングについても、IK/FKの操作はアニメータ(AnimatorController)の管理下にあるので、同じやり方で転写できます。
ただしこの回転は、コピー元とコピー先の、それぞれのボーンの軸の向きの違いを考慮する必要があります。この違いを吸収するメソッドは、次にあります:
https://gist.github.com/mstevenson/7b85893e8caf5ca034e6
このメソッドを使った関節のコピーは、次のようになります(ただしこの方法では、コピー先の初期の回転を、最初に保存しておく必要があります):
ConfigurableJoint cfjdst; // コピー先のジョイント Quaternion quasrc; // コピー元の現在の回転 Quaternion quoini; // コピー先の初期の回転 cfjdst.SetTargetRotationLocal(quasrc,quoini); // 関節の回転を、コピー元からコピー先に転写する
- ※1
- アニメーションのコピーは、部分的にもできます。この部分的なアニメーションと、ジョイントの強度の設定を組み合わせることで、キャラクタに(手つきのアニメーションとは違う、物理的に)よりリアルな動作をさせることができます。