前腕を回転できる腕のリグ―Blender リグ

カテゴリ:blender

Blender のみで完結するなら B-bone の Curved Bones を使うのが一番だ. 適当な数の Segment を設定し Ease In/Out を 0 にする.

B-bone の設定
B-bone の設定

しかしエクスポートして使うなら Blender 固有の機能を使うわけにはいかない. やり方としては,下腕を2分割し回転専用のボーンを作る. このボーンを IK ターゲットの回転に対応させる. 回転の制限と Copy Rotation しか使わないので比較的簡単にできる.

デモ
動作デモ

ボーンの初期配置

以下の画像のようにボーンをセットアップする. 手首あたりにあるのは IK ターゲットでデフォーム用ボーンとはつながっていない.

ボーンの構造
ボーンの構造

IK の設定

P_arm.L をポールターゲット,T_arm.L を IK ターゲットとして D_rotLowerArm.L に IK を設定する. その時の Chain Length: を3にする.

下腕の回転の制限

このままでは IK で動かした際に下腕が曲がってしまうので D_rotLowerArm.L の回転を制限する. Properties > Bone > Inverse Kinematics で X 軸と Z 軸の回転をロックする.

回転の制限
D_rotLowerArm.L の回転を制限する

ここで Y 軸まわりの回転も制限できるが,T_arm.L に Limit Rotation をつける方がよい; なぜなら回転しすぎて反転することがないからだ.

回転のコピー

IK ターゲットを回転させて下腕を回転させるので T_arm.L の回転をコピーする. D_rotLowerArm.L に Copy Rotation をつける. Bone は T_arm.L.座標軸は Y 軸,Space は両方 Local Space.

Copy Rotation の設定
Copy Rotation の設定

下腕の回転域を制限する. T_arm.L に Limit Rotation をつける. Y 軸の回転を制限し,この例では -90 から 30 になった.

Limit Rotation の設定
Limit Rotation の設定

ポールターゲットの回転を防ぐ

IK のポールターゲットは IK ターゲットの子にすることが多い. しかしそうすると IK ターゲットを回転させた際に同時にひじも動いてしまう. そこで Child of を使い Location のみ影響させることでこの問題を解決する.

P_arm.L に Child of をつける. Bone は T_arm.L. Location のみにチェックを入れる. 位置がおかしくなったときは Set Inverse を押す.

child of の設定
Child of の設定

関連記事

ボーンを使った筋肉の表現 ではボーンをひとつ追加するだけで筋肉の隆起を表現する方法を解説している.
Blender 記事の目次