[blender]ドライバーを使って補助ボーンを自動的に動かす方法

blender2.82使用
ドライバーを使うことで様々な処理が自動で出来ます。
例えば、AのオブジェクトをX軸に動かしたらBのオブジェクトはy軸に回転するなど。
以前の記事ではドライバーを使ってIK関連のコンストレイントの影響度を同期しましたね。
そんなドライバーで今回は腕の補助ボーンを自動的に動かしてみたいと思います。

補助ボーンを入れる理由=通常のボーンでは筋肉などの再現が出来ない
今回は肘に補助ボーンを仕込みます。

ボーンを通常の人間の骨格と同じにしただけでは実際の人間の変形を再現できません。
実際の人間は骨に筋肉や脂肪などが複雑に作用して皮膚に反映されます。
単純にボーンに応じて曲がるCGモデルではそれを再現できないのです。
なので変形を補助するボーンを配置する事もあります







ボーンを配置

まずは腕のモデルにボーンを仕込みます。
今回IKは設定しませんが、IKを設定するときは曲がる方向に若干角度をつけて配置しましょう。

次に肘ボーンを配置します。
このボーンは接続のチェックを外して移動できる様にします。


今回使うのはこれだけですが名前をつけましょう。
  • upper_arm
  • elbow
  • lower_arm

elbowとlower_armはオイラー角にしておきましょう。
lower_armは一方向にしか曲がらないので回転軸も制限します。




elbowをlower_armの子にします。


elbowにドライバーを設定する
lower_armが曲がるとそれに応じてelbowが外側に移動する様にして肘の出っ張りを表現します。

今回はelbowのトランスフォームの位置のY軸にドライバーを追加します。
そして式を「-var」にしターゲットにlower_armを指定、Z軸の回転、ローカル座標を指定します。
これでlower_armの回転に応じてelbowが外側に移動します。


ここで少し解説すると式はその名の通りです。
ここに書かれた数式がelbowの移動の値になります。
-varですのでlower_armのローカルの回転量の値のマイナス値を使う事になります。
-var*2とすれば移動量も2倍になります。
その下のvarというのが今回の回転の値の変数になります。
別にvarにしないといけないわけではありません。
変数なのでaとかでも良いわけです。その際は式にも-aとしましょう。



アーマチュアと関連付けてウェイトを調整して完成
アーマチュアとモデルを関連付けます。
今回は自動ウェイトでも良いでしょう。



ウェイト調整の過程は省きましょう。
最終的にこうなりました。

二つのボーンだけでは出来ない結果にする事ができました。







応用するとこんな事も出来る
力こぶの表現






車体の移動に合わせてタイヤを自動回転



ドライバーを駆使する事で様々な表現ができます。
是非マスターしてください。

関連
ドライバーを使ってシェイプキーでボーンの角度と連動させ形状を補正