【天使のBlender2.8入門】ボーンコンストレイントとドライバーを利用してポーズ制御を便利にする
天使シリーズでキャラクターを作ってみる5日目、今回は
ボーンコンストレイントやドライバーといった機能を使ってみる。
Sasukeのアーマチュアを、アニメーションが付けやすくなるようにするための、追加のセットアップとなる。
ボーンコンストレイントを使ってみる
ボーンコンストレイントを使うための下準備
下準備として、ボーンの向きを調整して、ボーンのローカルX軸とローカルZ軸の向きを使いやすいように整える。
ボーンコンストレイントを使うための、というよりはアーマチュアの基本的なセットアップだと思うけど。ポーズを付ける作業に直接関わってくるので。
アーマチュアの編集モードで、ボーンの回転を調整する。
ボーンコンストレイント「Limit Rotation」
箱うし本で気にしてた、ボーンの回転を制限するコンストレイントがここで出てきた。
Sasukeの腕ボーンに、このコンストレイントを追加する。
Localのx,y,z軸それぞれの、可動範囲を決める。x軸とz軸の制限で可動域を自然な範囲に限定して、y軸は回らないように0に限定した。
これで、自由回転でぐりぐり動かしても、腕が骨折することはない。
他のボーンにも、Limit Rotationを設定していく。
ただし、右足、下あご、しっぽの先側のボーンはあえて飛ばした。
これらのボーンには別のボーンコンストレイントを追加する。
ボーンコンストレイント「Transformation」
右足のボーンに、Transformationというボーンコンストレイントを追加する。これによって、左足ボーンのx軸回転が、右足ボーンのx軸回転(逆向き)に変換して加えられるようになった。
左足を動かすだけで、自動的に右足も逆方向に振られてバタ足をするように。
下あごボーンも、上あごに合わせて開閉するようにTransformationを設定した。
おまけ・ボーンコンストレイント「Copy Rotation」
しっぽの先側のボーンには、CopyRotationというのを設定してみた。
動画では触れられていなかったボーンコンストレイントだけど、
触ってみたところ、名前の通り、ターゲットにしたものの回転をボーンの回転にそのまま影響(加えたり置き換えたり)させるというものに見える。
Transformationの下位互換かな?
しっぽの動きはTransformationを使わずともCopyRotationで済ませられそうだったので、採用。
しっぽの根元側のボーンの回転を、先側のボーンにコピーされるようにした。
これで根元側のボーンを動かせば、先側のボーンも同じだけ動くようになった。
ドライバーを使ってみる
続いて、足の動きに合わせて、Sasukeの体がぴょんぴょんと跳ねるように上下するようにしよう。ということなんだけど、
コンストレイントでこれを表現するのは難しいらしい……実際に自分でも挑戦してみたけどできなかった。
Transformationでできそうにも思えるけど、少なくとも動画作成者のYonaoshiさんの知る限りでは無理、とのこと。
そこで使うのが、ドライバーという機能。
うまく説明ができないんだけど、パラメータにドライバーを付与することで、他のあらゆるパラメータを参照して数式での操作ができる。みたいな。
今回の場合は、Rootボーンのz位置に対してドライバーを追加した。内容としては、左足ボーンの回転を変数として参照して、その絶対値を調整してRootボーンの位置に変換する。
これで、左足ボーンを前後に振ればSasukeの体が浮き上がり、左足ボーンを戻せば体も元の高さに戻るという挙動が実装できた。