ストレッチの有無を切り替えられる IK のリグ
カテゴリ:blender
ストレッチの有無を切り替えられる IK の実装方法には、IK がのびきった時にストレッチの有無を切り替える方法やストレッチ用ボーンを用意する方法がある。この記事では IK ターゲットの位置をコントロールすることでストレッチの有無を切り替える方法を紹介する。この方法は Blender 2.79 の Rigify でも使われている。

動作デモ
ボーン構造
まず先にストレッチ切り替えのためのボーン構造を示す。ユーザーが操作する ik と、ストレッチする str、デフォームボーンの IK ターゲットとなる real_ik を用意する。ik と real_ik とは同じ位置にある。これらのボーンはすべてつながっていない。

ストレッチ機構のボーン構造
モディフィア
real_ik は str のテール位置を位置コピー(ワールド)でコピーする。

real_ik ボーンのモディフィア
str はストレッチと弾性トラックとで ik の方向を向くようにする。ストレッチの切り替えは拡縮制限の影響力で行う。拡縮制限のY最大が 1.05 になっているのは、デフォームボーンのバインドポーズで肘や膝がすこし曲がっているからだ。モデルによってこの値は調整する必要がある。

str ボーンのモディフィア
拡縮制限の影響力を制御する ON/OFF スイッチを用意してやると、現状では以下のような動作になる。

ストレッチの動作テスト
デフォームボーンの設定
デフォームボーンを用意して real_ik をターゲットとして IK を設定する。加えて上腕・前腕両方ともにインバースキネマティクスのストレッチを 0.1 に設定する。

デフォームボーンの設定