忘却まとめ

Blenderの中級者・上級者向けの踏み込んだ情報や、アドオン・3DCGに関する情報を記事にします

リグにIK/FK切り替え機能を作る【Blender】

Blender

更新日:

腕や足などのIKを、切り替えオプションによってFKとも併用できるようなリグを作成する。

同様の作業を左右の腕・左右の足の計4回やる必要がある。

仕組み

「元のデフォームボーンの腕」・「IKの影響を受けたIK用の腕ボーン」・「なにも影響していないFK用の腕ボーン」の、それぞれ3つの腕を作る。
そして、元のデフォームボーンの腕を、IK用/FK用それぞれの腕の状態に移行できるように、回転コピーコンストレイントによって関連付ける。
この回転コピーコンストレイントの影響度によって、元のボーンのFK/IK状態を切り替えられるようにする。

(つまり元のデフォームボーンの腕には、直接IKが作用していない状態となっている)
(上画像ではFK/IKリグをわかりやすいようにずらしている。
本来は全てデフォームボーンと同じ位置に置く。)

ボーンを複製する

IK用とFK用のリグを用意する。

同じ位置に複製されるので、3Dビューでは重なってわかりづらい。
アウトライナーのボーン階層から選択・確認するとよい。

  1. 上腕・前腕・手の3つのデフォームボーンを、2つ複製する。
    • REFIK_lowerarm_l・REFFK_lowerarm_lなどとそれぞれリネームする。
  2. 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つの値の操作で一括変更できるようにするため、ドライバーを作成する。

カスタムプロパティを作成する

操作用のプロパティを作成する。
このプロパティを操作すると、回転コンストレイントの影響オプションが変化するようにする。

  1. プロパティ > アーマチュアタブ > カスタムプロパティ > + で新規プロパティを作成する。
  2. 名前を"FK2IK_hand_l"、Float型、デフォルトを1.0に設定する。

ドライバーを作成する

  1. 各コンストレイントの"影響"に、ドライバーを設定する。
    • 右クリック > ドライバーを追加(マウスホバーしてCtrl+Dでもよい)。
  2. ドライバーの設定。
    • 式:var
    • ※FKの場合は逆の値を設定したいので、1-varにする。
    • タイプ:単一プロパティ
    • プロパティのIDタイプ:アーマチュア
    • プロパティの対象データ:今編集しているアーマチュア
    • パス:["IK2FK_hand_l"]

入力値はコピーできる

ドライバー編集画面はドライバーエディターでも閲覧できる。
こちらの方が複数のドライバーを一覧できて見やすい。

メニューから入力値をコピー・ペーストできるので、多少は早く作れる。
("入力値を追加"の右のアイコン2つ)

アニメーションを付ける

前フレームと切り替えるフレームに、IK2FK_hand_lオプションにキーを打つ。
使う値は0.0か1.0だけでいい模様。

当然急にポーズが変わってズレることになるので、変更後のFK(またはIK)でなるべく元のポーズの状態に沿わせてから次の動きに移行する。
大きな動きの時に切り替えた方がバレにくい。

IK/FKのスナップ

手動でFK/IK用ボーン同士をスナップするのは大変なので、そのような処理は自動処理で行う。
スナップ機能のソースコードはこちら。

3Dモデルなどの制作依頼はこちら

-Blender

Copyright© 忘却まとめ , 2025 All Rights Reserved Powered by STINGER.