Rigify の足が伸びるリグ
Rigify の脚のリグには以下の機能がある.
- 脚が元の長さより短いときはストレッチしない
- ストレッチの有無を切り替えられる
- 体積が保存される
- 脚の長さを変更できる
この記事では 2. 以外の機能を解説する.2. は IK-FK 切り替えスイッチ のスイッチのつくり方を参照.

概要
ストレッチしない IK ボーン,ストレッチする IK ボーン, Maintain Volume で体積を保存するボーン(この記事ではデフォーム用ボーン)を作成し, ストレッチしないボーン -> ストレッチするボーン -> 体積を保存するボーンという流れで情報をコピーする.
ストレッチしないボーンをわざわざ用意したのは,脚の長さが短いときにストレッチしないようにするためだ. ストレッチするボーンに Maintain Volume をつけても意味がないため, そのためのボーンも用意している.
デフォーム用ボーンの構造
必要なのは太ももと脛とのふたつボーンだけだ. 足のボーンはなくてもいい.

IK ボーンとストレッチボーン
DEF-thigh.L と DEF-shin.L とを同じ位置に 2 回コピーする. それぞれ名前は MCH-thigh.nostr.L,MCH-shin.nostr.L と MCH-thigh.str.L,MCH-thin.str.L. コピーしたボーンはポーズモードでデフォームのチェックを外す(Shift + W > Deform).
B-bone にしてボーンの太さを変更(Ctrl + Alt + S)し,ワイヤフレームにすると見やすい.

ストレッチしないボーン(nostr)の設定
適当なターゲットボーンとポールターゲットとを作成し,IK を設定する. Stretch のチェックを外し,Chain Length を 2 にする.

ストレッチするボーン(str)の設定
まずストレッチしないボーンの情報をコピーする. こうすることで IK の動作より先にストレッチが優先されることを防ぐ. MCH-thigh.str.L と MCH-shin.str.L とにそれぞれ Copy Transforms をつける. コピー元はそれぞれ MCH-thigh.nostr.L と MCH-shin.nostr.L.
MCH-shin.str.L に IK をつける.Chain Length は 2 で,Stretch にチェックをいれる. MCH-shin.str.L の IK に Pole Target を設定してはならない. Constraint の順番は重要だ.Copy Transforms が先で,IK が後でなければならない.

MCH-thigh.str.L と MCH-shin.str.L との Inverse Kinematic の Stretch をそれぞれ 1 にする.

ストレッチを無効にしたい場合は MCH-shin.str.L の IK の影響力を 0 にする.
体積保存用ボーン(デフォーム用ボーン)の設定
Copy Transforms で str ボーンの情報をコピーした後, Maintain Volume で体積を保存する.Maintain Volume の Space: は Local Space.

あとは DEF-shin.L と DEF-foot.L との Inherit Scale のチェックを外すだけだ.
脚の長さの調節
MCH-thigh.nostr.L をスケーリングすれば脚の長さを変更できる.


関連記事
Blender 記事の目次