メモ7: Blender - Action
Blenderでアニメーションを作る際にActionという機能が便利そうだったので試してみます。
今回つまづいたところは次の点です。
* NLAエディタ上でAnimations, Modifiersのメニューを表示するにはNキーで表示させる(3D Viewportのメニューの表示方法と同じですが、気づきませんでした)
* NLA上でActionを複数Track上で重ねて動作させるには、"Animation Data"以下ではなく"Active Strip"以下のBlendingを変更する。デフォルトだとReplaceになっているので一番上のActionが有効になっている。
できたアニメーションは次のような感じになりました。
Actionを利用してアニメーションを作る
Actionに関しては、次の動画が分かりやすかったです(Blender 2.8以前のUIなので注意)
また、複数ActionをTrackで重ねるためには、Animationメニューを表示させてBlendingの設定を変更する必要があります。メニューの表示方法は次の質問で見つけました。
そして、Trackを重ねてActionを変更する方法はこのページに書いてありました。
この重ねる方法が、Animation Dataの下のAction Blendingの設定ではなく、Active StripのBlendingをReplaceから変更しないと、そのTrack以下のActionがすべて無視されます。これに気づかずにかなり時間を費やしました。
ここまでのをもとに、空を飛ぶイメージのアニメーションを作ってみました。作ったActionは、
1. FlyingとActionを作成し、Pose modeでArmatureが動くようにする。これをrepeatさせる。Locationは最初と最後のフレームの位置を0にする。
2. Move forwardというActionを作成する。そのAction上でY軸の値を動かす
3. Move upというActionを作成する。そのAction上でZ軸の値を動かす。
これをもとに作ったのが次のアニメーションです。
もともとはMove upというActionを作らずに、FlyingのActionを1回行うごとにZ軸の位置を少しずつ上に飛んでいくようにしたかったのだが、repeatを設定すると初期位置に戻ってしまうのでできなかったです。
前進する軌道を設定する
Action周りを調べていたら、たまたま次の動画を見つけました。これには指定したモデルを作成したベジェ曲線に沿って動かす方法が乗ってました。
この動画の方法をそのまま真似て作りましたが、やったこととしては次のことです。
1. ベジェ曲線を編集する
2. ベジェ曲線上を動かしたいArmatureのObject constraintにFollow Pathを設定し、Targetに作成したベジェ曲線を指定する。Animate PathとFollow Curveを設定したり、Forwardを正しく設定するとうまく動いた。
ちなみに上の動画は次のサイトの中に含まれていました。Blenderのモデリングの本とかLinkedIn Learningとかは少しやったのですが、Animationのこと未だ全然わからず、参考になりそうなサイトでした。
Boneに対するWeightの設定
もしCubeなどのMeshに対して、BoneのAutomatic weightがうまく設定できない場合、weight paintsを使い、Boneを動かすとMeshがどれだけ影響を受けるか設定できます。
手動で設定するには、Weight Paint Modeに変更して、各MeshのObject Data Properties > Vertex Groups から、各Boneごとのweightを設定していきます。
まとめ
今回ざっくりNLAエディタやActionを触り、概ねやりたいことはできましたが、次の点がまだ不明でした。
1. Actionのrepeatするとき、直前のActionのフレームの位置からActionを繰り返し行いたい。