BlenderでFKとIKを切り替え可能なリグを組む
一例として組み方をまとめておく
下準備
1. 2つからなるボーンを作成する(IKで曲がる方向が決まるように、若干回転させておく)
このボーンでメッシュを変形させることになる
2. FK用とIK用にボーンを複製する(ここで複製したボーンの回転情報などを手順1で作成したボーンに反映させることで、FK/IKの切り替えを実現する)
IKを組む
1. IKハンドル及びポールターゲットとして扱うボーンをそれぞれ作成する
カーブやメッシュで作成すると、Poseモードで制御できなくなり、扱いづらくなるので、IKのコントローラとして扱うためのボーンになる(見た目は後から変更可能)
2. Poseモードに入り、先端のIKボーンに対して、BoneConstraintプロパティから、InverseKinematicsを追加する
TargetとPoleTargetに、前の手順で作成したボーンを設定する
必要に応じて、PoleAngleの値を変更するが、何にすればいいかドキュメントを見てもよくわからなかった(今回の例では180度でIK適用前と同じ見た目になった)
ChainLengthはIkで動かすボーンの数に変更する
FKとIKの切り替えの実装
1. メッシュを変形させるボーンそれぞれに対して、BoneConstraintプロパティから、CopyRotationを追加し、FK用ボーンとIK用ボーンを設定する
Influenceの値を0/1に切り替えることで、FKとIKを切り替えられるようにする
2. FK/IKの切り替え用のボーンを作成する
これは作らずに、Rootボーンなど扱いやすいボーンでも代用可
3. Poseモードに変更し、FK/IK切り替え用ボーンに対して、CustomPropertyを追加する
Editモードで追加すると、Poseモードでキーを打てなくなるので注意!
設定すると、ボーン選択時にViewport右のPropertiesにも現れる
4. ドライバーを設定する
作成したカスタムプロパティの上で右クリックして、Copy as New Driver
5. IK用のCopyRotationのInfluenceに対して、右クリックでPasteDriver
これにより、手順3で作成したCustomPropertyの値が1のとき、IKが有効になる
6. FK用のCopyRotationのInfluenceに対しても同様に、右クリックでPasteDriver
ただし、FKはIKが無効ならInfluenceが1,IKが有効なら0になるように設定する
ペーストしたら右クリックでEdit Driverで設定を変更する
TypeをScripted Expressionに変更
Expressionを「1 - UseIK」に変更する
これにより、UseIKの値が変わったときに、この計算が行われ、その計算結果の値がInfluenceの値になる
7. 変形用ボーンすべてに同様の設定を行ったら完成
BoneプロパティからCustomShapeを設定することで、Boneの見た目を変更できる
また、Hide に対してもDriverを設定すれば、FK/IKの切り替えで、対象のボーンの表示/非表示も切り替えられる
参考
この記事が気に入ったらサポートをしてみませんか?