腕や足などのIKを、切り替えオプションによってFKとも併用できるようなリグを作成する。
同様の作業を左右の腕・左右の足の計4回やる必要がある。
もくじ
仕組み
「元のデフォームボーンの腕」・「IKの影響を受けたIK用の腕ボーン」・「なにも影響していないFK用の腕ボーン」の、それぞれ3つの腕を作る。
そして、元のデフォームボーンの腕を、IK用/FK用それぞれの腕の状態に移行できるように、回転コピーコンストレイントによって関連付ける。
この回転コピーコンストレイントの影響度によって、元のボーンのFK/IK状態を切り替えられるようにする。
(つまり元のデフォームボーンの腕には、直接IKが作用していない状態となっている)
(上画像ではFK/IKリグをわかりやすいようにずらしている。
本来は全てデフォームボーンと同じ位置に置く。)
ボーンを複製する
IK用とFK用のリグを用意する。
同じ位置に複製されるので、3Dビューでは重なってわかりづらい。
アウトライナーのボーン階層から選択・確認するとよい。
- 上腕・前腕・手の3つのデフォームボーンを、2つ複製する。
- REFIK_lowerarm_l・REFFK_lowerarm_lなどとそれぞれリネームする。
- REFIK_lowerarm_lの方にIKコンストレイントを設定し、別途用意したIK_handボーンをIK対象にする。
リネーム
複製後にCtrl + F2で一括リネームができる。
ボーンを対象、名前を設定:接頭辞で、プレフィックスを付ける。
名前の置き換えで、不要な「.001」を消す。
回転コピーコンストレイントを元ボーンに作成する
複製したIK/FKボーンの状態をコピーできるように、デフォームボーンに回転コピーコンストレイントを付ける。
これで、IKに沿わせたいときはIKの回転コピーの影響オプションを1.0・FKの回転コピーの値を0.0にすれば、IKのボーンにデフォームボーンが沿う。
FKに沿わせたいときは値を逆にする。
- 元のデフォームボーン3つに、IK用とFK用の回転コピーコンストレイントをそれぞれ2つずつ設定する。
- ワールド座標対象。
ドライバーの設定
回転コピーだけでもすでに機能はできたが、より扱いやすくするためにカスタムプロパティとドライバーを作成する。
1つの値の操作で一括変更できるようにするため、ドライバーを作成する。
カスタムプロパティを作成する
操作用のプロパティを作成する。
このプロパティを操作すると、回転コンストレイントの影響オプションが変化するようにする。
- プロパティ > アーマチュアタブ > カスタムプロパティ > + で新規プロパティを作成する。
- 名前を"FK2IK_hand_l"、Float型、デフォルトを1.0に設定する。
ドライバーを作成する
- 各コンストレイントの"影響"に、ドライバーを設定する。
- 右クリック > ドライバーを追加(マウスホバーしてCtrl+Dでもよい)。
- ドライバーの設定。
- 式:var
- ※FKの場合は逆の値を設定したいので、1-varにする。
- タイプ:単一プロパティ
- プロパティのIDタイプ:アーマチュア
- プロパティの対象データ:今編集しているアーマチュア
- パス:["IK2FK_hand_l"]
入力値はコピーできる
ドライバー編集画面はドライバーエディターでも閲覧できる。
こちらの方が複数のドライバーを一覧できて見やすい。
メニューから入力値をコピー・ペーストできるので、多少は早く作れる。
("入力値を追加"の右のアイコン2つ)
アニメーションを付ける
前フレームと切り替えるフレームに、IK2FK_hand_lオプションにキーを打つ。
使う値は0.0か1.0だけでいい模様。
当然急にポーズが変わってズレることになるので、変更後のFK(またはIK)でなるべく元のポーズの状態に沿わせてから次の動きに移行する。
大きな動きの時に切り替えた方がバレにくい。
IK/FKのスナップ
手動でFK/IK用ボーン同士をスナップするのは大変なので、そのような処理は自動処理で行う。
スナップ機能のソースコードはこちら。