Blenderを覚える日記

箱うし本でBlender基礎の習得を目指す、3DCG初心者の日記。

【天使のBlender2.8入門】ボーンコンストレイントとドライバーを利用してポーズ制御を便利にする

天使シリーズでキャラクターを作ってみる5日目、今回は
ボーンコンストレイントやドライバーといった機能を使ってみる。
Sasukeのアーマチュアを、アニメーションが付けやすくなるようにするための、追加のセットアップとなる。

ボーンコンストレイントを使ってみる

ボーンコンストレイントを使うための下準備

下準備として、ボーンの向きを調整して、ボーンのローカルX軸とローカルZ軸の向きを使いやすいように整える。
ボーンコンストレイントを使うための、というよりはアーマチュアの基本的なセットアップだと思うけど。ポーズを付ける作業に直接関わってくるので。

アーマチュアの編集モードで、ボーンの回転を調整する。

f:id:komanotes:20200615201925p:plain
ボーンの回転(Roll)調整後

ボーンコンストレイント「Limit Rotation」

箱うし本で気にしてた、ボーンの回転を制限するコンストレイントがここで出てきた。

Sasukeの腕ボーンに、このコンストレイントを追加する。
Localのx,y,z軸それぞれの、可動範囲を決める。

f:id:komanotes:20200615202740p:plainf:id:komanotes:20200615202747p:plain
X軸とZ軸の回転を限定
x軸とz軸の制限で可動域を自然な範囲に限定して、y軸は回らないように0に限定した。
これで、自由回転でぐりぐり動かしても、腕が骨折することはない。


他のボーンにも、Limit Rotationを設定していく。

ただし、右足、下あご、しっぽの先側のボーンはあえて飛ばした。
これらのボーンには別のボーンコンストレイントを追加する。

f:id:komanotes:20200616151712p:plain
各ボーンに回転の制限をかける

ボーンコンストレイント「Transformation」

右足のボーンに、Transformationというボーンコンストレイントを追加する。

f:id:komanotes:20200616151717p:plainf:id:komanotes:20200616151722p:plain
Transformationを設定する
これによって、左足ボーンのx軸回転が、右足ボーンのx軸回転(逆向き)に変換して加えられるようになった。
左足を動かすだけで、自動的に右足も逆方向に振られてバタ足をするように。
f:id:komanotes:20200616151726p:plain
右足に設定したTransformationの効果


f:id:komanotes:20200616151731p:plain
下あごにTransformationを追加
下あごボーンも、上あごに合わせて開閉するようにTransformationを設定した。

おまけ・ボーンコンストレイント「Copy Rotation」

しっぽの先側のボーンには、CopyRotationというのを設定してみた。
動画では触れられていなかったボーンコンストレイントだけど、
触ってみたところ、名前の通り、ターゲットにしたものの回転をボーンの回転にそのまま影響(加えたり置き換えたり)させるというものに見える。
Transformationの下位互換かな?

f:id:komanotes:20200616151738p:plain
しっぽにCopyRotationを設定
しっぽの動きはTransformationを使わずともCopyRotationで済ませられそうだったので、採用。
しっぽの根元側のボーンの回転を、先側のボーンにコピーされるようにした。
これで根元側のボーンを動かせば、先側のボーンも同じだけ動くようになった。
f:id:komanotes:20200616151749p:plainf:id:komanotes:20200616151745p:plain
CopyRotationの効果

ドライバーを使ってみる

続いて、足の動きに合わせて、Sasukeの体がぴょんぴょんと跳ねるように上下するようにしよう。ということなんだけど、
コンストレイントでこれを表現するのは難しいらしい……実際に自分でも挑戦してみたけどできなかった。
Transformationでできそうにも思えるけど、少なくとも動画作成者のYonaoshiさんの知る限りでは無理、とのこと。

そこで使うのが、ドライバーという機能。
うまく説明ができないんだけど、パラメータにドライバーを付与することで、他のあらゆるパラメータを参照して数式での操作ができる。みたいな。

今回の場合は、Rootボーンのz位置に対してドライバーを追加した。

f:id:komanotes:20200616151755p:plain
RootボーンにDriverを設定
内容としては、左足ボーンの回転を変数として参照して、その絶対値を調整してRootボーンの位置に変換する。
これで、左足ボーンを前後に振ればSasukeの体が浮き上がり、左足ボーンを戻せば体も元の高さに戻るという挙動が実装できた。
f:id:komanotes:20200616151808p:plainf:id:komanotes:20200616151800p:plainf:id:komanotes:20200616151804p:plain
Driverの効果

仕上げのボーン設定

ボーングループを作りボーンの色を変える

アーマチュアのオブジェクトデータプロパティに、ボーングループという項目があって、ここでボーンのグルーピングをすることができる。
そしてグループごとに、3Dビューに表示するボーンの色を変えることができる。

f:id:komanotes:20200616151812p:plain
ボーングループで表示色を変更する

操作する必要のないボーンを選択不能にする

ボーンコンストレイントでのみ動かすボーンは、ポーズを付けるために選択することはない。ので、選択できないように設定してしまう。

f:id:komanotes:20200616151818p:plain
ボーンを選択不能にする
設定はアウトライナーでできる。




以上で、アニメーションをつけやすくするためのセットアップは完了。