Rigify の足が伸びるリグ

カテゴリ:blender

Rigify の脚のリグには以下の機能がある.

  1. 脚が元の長さより短いときはストレッチしない
  2. ストレッチの有無を切り替えられる
  3. 体積が保存される
  4. 脚の長さを変更できる

この記事では 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)し,ワイヤフレームにすると見やすい.

表示方法
B-bone + ワイヤフレーム表示

ストレッチしないボーン(nostr)の設定

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

nostr の設定
nostr ボーンの IK の設定

ストレッチするボーン(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 が後でなければならない.

str の IK の設定
str ボーンの IK の設定

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

IK のストレッチを有効化
IK のストレッチを有効化

ストレッチを無効にしたい場合は 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 をスケーリングすれば脚の長さを変更できる.

ストレッチなし
長さの変更なし
長さの変更あり
長さの変更あり

.blend ファイルダウンロード

関連記事
Blender 記事の目次