前提条件
- IKが何かわかっている
- 座標系・回転について理解ができている(基本的にローカル座標系で話します)
- blenderのconstraint・driverの設定ができる
IK or FK
昔は腕はFK、脚はIKと主張する方々が多かったような気がします。私はどちらもIKの方が良いと思います。
FKの良さ
- ドライバーが簡単に仕込める
- 動きの制限をかけやすい
- 微調整が容易
IKの良さ
- 直感的に目的のポーズを達成できる
今回は私の腕周りのIK設定を共有しますよ。
デフォルトポーズ
Tポーズ状態を想定しています。直立状態から腕を横にまっすぐ伸ばし、手のひらは下方向を向いています。
基本のIK
簡単です。
- 上腕 > 前腕を配置
- 前腕のtailにIKコントローラーを配置
- 前腕にchain length2のIKを設定
前腕
前腕の設定についてはよほど適当な方か初心者でない限り同じようになると思います。
前腕には実際大きな骨が2本ねじるように配置されています。肘は自由度1、手首は自由度3ですが、前腕に作用するのはねじる回転のみなので前腕の自由度は2です。肘の回転は前腕全体(さらに手)に作用しますが、手首の回転は手首から肘にかけて影響が小さくなります。
IKにはZ軸方向のみ回転ができるようにリミットをかけます。これで基準の前腕のボーンは肘の動きのみの回転を持ちます。ねじる操作はお好みですが、IKのコントローラーのY軸をコピーするようにします。
分割したボーンを配置
Y軸(ねじる)方向の回転は手首周りが一番影響が大きく、肘に近づくにつれ小さくなります。これを再現するために前腕のボーン上に分割したボーンを配置します。
これらのボーンは前腕のボーンを親に持つようにするので前腕と同じ回転をします。そこにさらにコントローラーのY軸方向の回転をCopy RotationのAddで足されるように設定します。Influenceを手首は1で肘に近づくにつれ0になるように設定すれば完成です。
上腕
上腕はかなりトリッキーです。肩回りは自由度3なのでどの方向にも動きます。そして同じくY軸の回転は肘周りが一番影響が大きく、肩に近づくにつれ小さくなります。しかし上腕にY軸の制限をかけると肘の動きが制限されてしまうため不可能です。
ねじれのあるボーンとないボーンを用意する
ねじれのあるボーンは通常のIKで使用するそのままのボーンです。IKによってねじれを含めて計算されます。
ねじれのないボーンは元のボーンがXZ軸回転だけでどのように最終的なポーズになるかを示します。これにもう一つ前腕をターゲットとしたLength 1のIKを使います。そのボーンにY軸制限をかければXZ軸回転のみだとどのように動くべきなのかがわかります。
ここまでくればあとは前腕と同じです。分割したボーンを配置して肘周りにはねじれあり、肩回りにはねじれ無しのポーズを適用させます。分割ボーンはねじれ有り無しどちらのボーンを親にしてもよいですが、ツリーが簡潔になるようにありを親にします。ねじれ無しの回転をWorld SpaceのCopy RotationでReplaceさせ、Influenceを設定したら完成です。