見出し画像

Blenderアニメーション作成の基礎(zip付き)


ロボットアーマチュアやタイトスカート・ウェイトペイントなどで、なにげにアニメーションを使ってきましたが、そもそもBlenderのアニメーション作りになれていない方のために、カワウニなりにBlenderアニメーションの基礎についてnoteしてみたいと思います。

Blenderのアニメーション

Blenderは時間軸を持っている

アニメーションを作れる3DCGツールでは、アニメーションの捉え方自体がツールによって異なります。
 ハニセレ師匠の場合は、ツール全体には時間軸はなく、オブジェクト単位にアニメーション出来る物・出来ない物があり、プロパティでアニメーションの有無を設定して配置します。動くパーツと動かないパーツを組み合わせるレゴブロックのような作りで、直感的に理解しやすいです。
 Blenderでは3Dビューポート自体には時間軸はありませんが、画面下部に用意されているタイムラインが、Blender全体の時間軸になっています。
 Blenderは、3Dビューポートをパラパラ漫画の1ページのように扱い、ページの変化をタイムライン上に記録することでアニメーションを作ります。
3Dビューポート上にある総てのオブジェクトが、同じ時間軸上で扱われ、タイムラインに変化が記録されていないオブジェクトは、動かない物として背景のように扱われます。

タイムラインはBlenderの時間軸

出力プロパティ

時間軸は1フレームを単位時間として扱い、フレーム数で時刻を表します。アニメや格闘ゲームに詳しい人ならピンとくるでしょう。1秒24フレーム、1秒30フレーム、というように、出力プロパティでフレームレートを設定します。その他にも出力プロパティには、動画の出力サイズや出力形式などの設定項目があります。

アニメーション設定に関する出力プロパティ

今回は、フレームレート 24 FPS、1フレーム24分の1秒のフレームレート設定で説明します。
(FPS:ファーストパーソンシューティングではない。定番おやじギャグ)

アニメーション作りは変化のプロット作業

Blenderのアニメーション作りは、3Dビューポートのオブジェクトやアウトライナーなどの設定を、いつどのように変化させるかを、時間軸に記録する作業になります。
登録作業は「キーフレームを挿入」コマンドで行い、タイムラインのカーソルがある指定時間(フレーム)に登録します。
「キーフレームを挿入」コマンドは、変化させる対象を選択して、右クリックメニュー等から実施します。メニューの場所については改めて書きます。

キーフレームを挿入したときの画面状態

上図の例では、
まず1フレームに、原点にいるメッシュを「キーフレームを挿入」で登録します。1フレームに、オレンジの◆マークが登録されます。
ちなみに、これだと1フレーム目を0秒として捕らえているので、ちょっと違和感があるかもしれません。出力プロパティのフレーム範囲で0~250フレームに設定するのも1つの方法ですが、Blenderは頑なに1フレームを開始フレームと考える傾向にあるので、そういう物だと慣れて下さい。気持ち悪いかもしれませんけど、気にするのはたぶん日本人だけですw (^^;)
次にフレームカーソルを200フレームに移動して、メッシュをX=1mの位置まで移動してから「キーフレームを挿入」を実行します。200フレームに、◆マークが登録されます。
同時に右側のチャンネル欄に、キーの項目名が並びますが、これがフレーム挿入した項目を意味します。どんなチャンネルがあるかは後ほど触れます。
 アニメーションさせると、メッシュが1フレームから200フレームの間で
原点からX=1mの位置まで移動します。アニメの中割りにあたる作業はBlenderが自動計算してくれるので、中間フレームのX位置を登録する必要はありません。Blenderの中割りは、1フレームと200フレームの数値の差をフレーム数で割るだけなので、移動は直線的な動きになります。フレーム毎の変化量(イージング)は、徐々に加速・減速するように変更するなど、あとでコマンド設定することが出来ます。
201フレーム以降はキーフレームが何も登録されていないので、そこからは何も変化しません。
◆と◆の間のバー表示は「この間は変化しない」ことを意味します。オブジェクトモードとポーズモードとでも表記に若干違いがありますが、そういう物だと慣れて下さい。
 なお、キーフレームは、キーフレームを登録したオブジェクトを選択しないと、タイムライン上には表示されません。(正確には、チャンネルをもつオブジェクトを選択することでチャンネルが表示され、そのチャンネルのキーフレームが表示される)
しかし、時間軸自体はBlender全体を支配しているので、タイムラインに表示されていなくても(選択されていなくても)、キーフレームを登録した物はフレームを進めることで勝手にアニメーションします。

アニメーションの作り方

ここでは、実際のアニメーション作成で使う機能を幾つか紹介します。

タイムラインとドープシート

Blenderには「タイムライン」と「ドープシート」という2つのアニメーション時間軸編集モードが用意されています。
カワウニも詳しくは分かりませんが、「タイムライン」はアニメーションの再生と作成機能の簡易版、「ドープシート」はゴリゴリの細工をするための強化版、のようです。表面的には機能やメニューに違いがありますが、よほど本格的な物を作るので無い限り、「タイムライン」で充分でしょう。
コマンドを捜すときにはメニューが明記されている「ドープシート」の方が捜しやすいかもしれません。バージョンによって機能分担も微妙に変わってきており、今後は棲み分けがハッキリしてくるかもしれません。
ここでは「タイムライン」を使って説明します。

タイムラインとドープシート

「キーフレームを挿入」コマンド

「キーフレームを挿入」コマンドはあちこちに出てきますが、基本的な物を上げておきます。
3Dビューポート>オブジェクトモード
  オブジェクトメニュー>アニメーション>キーフレームを挿入
  選択されたメッシュ等のトランスフォーム値を登録する。
3Dビューポート>ポーズモード
  ポーズメニュー>アニメーション>キーフレームを挿入
  選択されたボーンのトランスフォーム値を登録する。
その他
  マウスの右クリックメニュー>キーフレームを挿入
  使えるものにのみメニューが出現します。

「自動キー挿入」ボタン

「タイムライン」には、「自動キー挿入」ボタンが用意されています。これをONにすると、操作結果がそのままキー登録されます。
 例えば、先の例で「200フレームでxを1mに変更登録」というのを上げましたが、自動キー挿入を使った場合は、
・自動キー挿入をON(赤くなる)
・カーソルを200フレームに移動
・X位置トランスフォーム欄に1mを入力
 (または、マウスでメッシュをX1mまで移動)
で、自動的に200フレームにキーフレームが挿入されます。
キーフレーム挿入を忘れる心配が無いので、キーフレームの変更作業などで重宝しますが、反面、何でもかんでもキーフレーム化するので、善し悪しな所もあります。使い慣れるしかありません。(^^;)
勿論、OFFにすれば止まります。(グレーに戻る)

キーフレームの編集

キーフレーム挿入の順番は自由です。1フレーム目から始めることが多いと思いますが、基本的には何フレーム目を使おうと自由です。
ただし、アニメーションの開始フレームはプロパティで指定しているので、その点は注意して下さい。(何を言ってるのかは、後で出てきます)
作業を進めていくと、「もう少しゆっくり動かそう」「間に1アクション入れたいぞ」という風にキーフレームの編集がしたくなります。
そんなときの操作例を上げておきます。
「キーフレームを挿入」コマンドは、タイムラインのカーソル位置に実行されますが、キーフレーム(◆マーク)自体の移動(ドラッグ)は、カーソルに無関係に作業できます。
範囲指定すれば、25~50フレームのキーを50~75フレームに下げる、といった操作もできます。
また、フレーム範囲の外にもキーフレーム挿入は可能です。例えば、3人が歩いているシーンなどでは、開始位置を変えることで足並みをずらすことが出来ます。「よーいドン」だと不自然に見えるのはTVでもよくありますがアレを避けるために使う手です。

キーの編集

ループアニメーションを作る

ループアニメーションを作るFモディファイアは、下図の場所にあります。
チャンネル専用のモディファイアなので見つけにくいです。モディファイアプロパティにも表示されません。(それだけに、適用できたかどうかが分かりにくい。アニメーションさせてみないと確認できません)
ループアニメーションをさせるには、キー間を選択してその間をループするようにコマンドを実行します。
このループ設定には、カワウニも「?」なところがあり、チャンネル単位にできるのかオブジェクト単位なのか、使用条件がいまいちピンときていません。ループさせるキーフレームの頭とお尻の指定で適用できるようです。詳しいことを知りたい方は、Blender上級者の講座を探して下さい。キーフレームを持つオブジェクトが少ないうちはまだいいのですが、規模が大きくなると手こずる事があります。ご注意下さい。
 ループアニメーションは、頭とお尻のアクションが連結することも忘れずに。頭とお尻に全く同じ動作を挿入して中間だけ変えると、自動的に頭とお尻を重ねてループアニメーションを作ってくれるようです。
たかが1/24秒、されど1/24秒。(^^;)

ループアニメーションを作るFモディファイア

※2025/01/30追記
Fモディファイアでループアニメーションを設定しようとしても、設定されない場合があります。その時はタイムライン右側のアクションの項目にチェックを入れて、強制的にループアニメーションの指定をしてみて下さい。
初めからループアニメーションだけを組む場合はアクション欄に指定を入れなくてもFモディファイアが有効になると思います。しかし、既に他のアニメーションなどがある環境で、追加で指定しようとすると、アクション欄の指定を入れないと反応してくれない場合があるようです。
紛らわしいなぁ (・_・;)

Fモディファイアが有効にならない場合

変化に加減速を付ける

これまたメニューが2つあり分かりにくいのですが、単純な加減速をさせたいなら自動イージングでいいでしょう。
アクションシーンを作り出すと、「こんな機能が欲しいな」と気になる機能です。とりあえず、ここにそんなコマンドがあることだけ覚えておけばいいでしょう。「イージングとは」とググれば、どんなものか分かります。
単純な例では、ロケットが飛ぶアニメーションとかで使うでしょう。徐々に加速するような加減速の変化です。自動イージングは頭で加速、お尻で減速する加減速モデルです。
使いたいときが来たら、試してみて下さい。

時間軸に沿った変化を編集するコマンド

「キーフレームを挿入」は色々な項目で実行できる

「キーフレームを挿入」コマンドは、右クリックメニューであちこちに出てきます。(逆に言えば、右クリックメニューで出てこない物はキーフレーム設定できない項目だということです)
主な登録可能な対象を上げておきます。
■3Dビューポート内の設定可能項目の例
メッシュ
トランスフォーム値を登録します。移動・回転・拡縮のアニメーションを作ることが出来ます。トランスフォーム欄を使えば、1項目だけ登録することも可能です。上記例ではチャンネルをX位置だけ登録することも出来ます。関係ないチャンネルが増えるのは厄介ですが、慣れないうちは気にせずベタでキーフレーム挿入した方がいいでしょう。気になるようなら、あとで不要なチャンネルをチャンネルメニューで削除することもできます。
アーマチュア
オブジェクトモードではメッシュと同じです。
ポーズモードでは選択したボーンのトランスフォーム値を登録します。動かしたボーンを登録することで、ポーズ変更のアニメーションが作れます。
ポーズアニメーションは、鬼のようにチャンネル数が増えます。なので、関係ないボーンはキーフレーム挿入しない方がいいでしょう。
例えば、手足を振り回すだけならIKターゲットだけ登録すれば良く、IKで勝手に動くボーンはキーフレーム登録する必要はありません。ボーンコレクションで操作しないボーンを消す方法は、そのままアニメーション登録でも役立ちます。アーマチュアにボーンコレクションは必需品です。
■アウトライナーやプロパティ内の設定可能項目の例
レンダリング有効/無効
レンダリング対象に加えたり外したり出来ます。フレームの途中から表示/非表示するといった表現に使えます。銃撃エフェクトやアフターバーナーの表示切り替えなどで使います。銃撃エフェクトでは、予め銃撃アニメーションをエフェクトメッシュに仕込んでおき、使うときにレンダリング有効にする、といった使い方が出来ます。
いきなり「どっから出した、そんな物?」とハリセンで殴るシーンなどでも使えます。(^^;)

レンダー表示切り替えアニメーションの例

モディファイアやコンストレイントの有効/無効
IKやパスに追従など、モディファイアやコンストレイントを入れたり切ったりする事ができます。可変ロボットのアニメーションでは有効かもしれません。
カワウニは、「パスに追従」コンストレイントを使うときなどで、よく利用します。
アウトライナーなどの目玉アイコン上で右クリックメニューを出して設定します。

パスに追従の無効化/有効化を利用した例

これら有効化/無効化のキーフレーム挿入をして、実際にアニメーションさせると「何でじゃ?」となる場合があります。そんな時のよくある原因に、1フレームや終了フレームの設定忘れがあります。
有効化/無効化は中間フレームにポンと追加する物なので、1フレームや最終フレームの登録を忘れて、いざアニメーションさせたときに想定外の動きになり慌てる場合があります。(それはわたしですw)
 こういう中間にいきなり入れるタイプのキーフレームは、前後関係に十分注意して下さい。アニメーションは先頭から作るとは限りません。(^^;)

表情作りのシェイプキー
人物などの表情を変えるときに、シェイプキーの値をキーフレーム登録できます。瞬きや口パクなど、人物アニメーションでは必需品です。
やってみて思いましたが、目パチはともかく、口パクはセリフにもある程度合わせなきゃならないので、並大抵の苦労じゃないなぁと感じました。
アニメーション沼は、カワウニには深すぎます。(^^;)

キャラの表情をアニメーションさせる例

以上、3種類ほどマイナーなキーフレームを上げておきましたが、他にも
「アニメーションさせたいなぁ」と思う項目があれば、右クリックメニューで探してみて下さい。「キーフレームを挿入」がメニュー項目に出てくればアニメーションに使えます。Blenderはいろんな使い道を想定して作られており、「こんなものまで!?」というほど、いろいろとタイムラインに組み込むことが出来ます。

アニメーション作りの実例

実例としては、「ポーズアセットと歩行アニメーション(zip付き)」の回や、「ポーズアセットと歩行アニメーション(zip付き)」の回で、アニメーションデータを公開しています。上記noteを参考に、キーフレームを見れば「このフレームでこのポーズを作ってキーフレーム挿入したんだな」と読み解くことが出来ると思います。

歩行アニメーションサンプルの画面例

せっかくなので、アニメーションを使った実用的な道具の作成例も載せておきます。試しに作ってみて下さい。

ターンテーブルカメラを作る

最近は、「Turnaround Camera」アドオンが出来たので、ターンテーブルをわざわざ自作する必要性も低くなりましたが、アドオンの機能をあえて手作りする例を書いておきます。アドオンで変なオブジェクトを実装しなくても同じ事が出来るので、1個作っておくとアペンド利用もできて便利です。

1)カメラを用意します。焦点距離はお好みで。(カワウニは今のところ135mmを使用しています。カメラの焦点距離について詳しく知りたい方は、写真関係のホームページをご覧下さい。これまたドップリ深い沼です)
とりあえず原点に置かれたオブジェクトの撮影用として、図のような位置に仮置きします。回転・スケールは手動操作しないので鍵を掛けておきます。

カメラの準備

2)エンプティの十字を追加します。これも回転・スケールは手動操作しないので鍵を掛けておきます。とりあえずカメラの正面に置きます。
あとあと使いやすいように、エンプティ十字の名前をターンテーブルに変更します。

エンプティ十字を追加

3)カメラにオブジェクトコンストレイントの「軸固定トラック」と「減衰トラック」を追加します。(設定は下図)
カメラビューに切り替えると、設定の効果が分かりやすいです。
これで、カメラのレンズが、自動的にエンプティをフォーカスするようになります。(お、フォーカスなんて書くと、かっこいいなw (^^;) )

カメラにコンストレイントを追加

4)カメラをエンプティの子供にします。これで、エンプティが回転するとカメラがエンプディの周りを回ることになります。そして、カメラを動かしてもレンズはエンプティを常に画面の中央に捕らえ続けます。
なお、図では、終了フレームが300になっていますがたまたまです。
250で構いません。(終了フレームは幾つでもいい)

カメラをエンプティの子供にする

5)タイムラインのカーソルを1フレームに合わせておきます。エンプティを選択して、トランスフォーム欄の回転Z欄上で右クリックメニューを出します。「キーフレームを挿入」「単一キーフレームを挿入」という2つのコマンドがあります。
「キーフレームを挿入」を選ぶと回転のチャンネル(X,Y,Zの3つ)、
「単一キーフレームを挿入」を選ぶと回転Zのチャンネルだけ
が作られます。
どちらでもいいのですが、せっかくなので「単一キーフレームを挿入」で進めます。

1フレームのエンプティ回転角を登録

6)終了フレームにタイムラインカーソルを合わせます。回転Z欄に360を入力します。「単一キーフレームを挿入」で、終了フレームにキーフレームを登録します。(-360にすれば逆回転になります)
これで、カメラがエンプティの周りを1回転するターンテーブルカメラができました。(下図)
しかし、このカメラだと、均一な角速度で回転するので、「Turnaround Camera」アドオンのような、開始時・終了時の加減速がありません。

終了フレームに360°を登録

7)加減速を付けるため、自動イージングを適用します。
まず、チャンネルを全範囲選択するため「a」キーを押します。開始/終了フレームのキーをctrlクリックでも同じです。(なんとタイムラインには選択メニューが無い!プンスカ!)
キーフレーム欄(破線内)で右クリックメニューを出し、図のように自動イージングを実行します。
これで、開始時/終了時に加減速するようになります。

自動イージングを適用する

自作ターンテーブルの使い方)
ターンテーブルで撮したい対象の位置に、エンプティをスナップします。
エンプティを上下させて焦点位置を決め、カメラを被写体から適度に離して画角を決めます。カメラビューと平行投影の2ウィンドウで操作すれば簡単です。構図が決まったら、実際にアニメーションさせて見ましょう。エンプティとカメラを調整して、気に入る構図を探せば完成です。

カメラはエンプティを中心に狙うので、2つのキャラクターの間にエンプティを置けば、2体の周りを回るターンテーブルになります。街の風景などなら、エンプティを街中に置きカメラを上空に置けば、上空から見たターンテーブルになります。
図のようにコレクションにしておけば、アペンドするだけで、いつでもターンテーブルが使えます。勿論、アセット化する手もあります。アセットバグ問題はありますが。(^^;)
 フレーム間隔の長さが異なるデータで使う場合は、ターンテーブルエンプティの終了フレームのキーフレームをドラッグして移動させれば、データに揃えることが出来ます。
 他にも、ターンテーブルエンプティ自体を移動するオブジェクトにペアレントする、ターンテーブルエンプティに上下動のキーフレームを追加する、など、いろんな追加工も可能です。

このカメラテクニックは、いろいろ応用が利くので重宝します。(^^)

最後に、上記手順で作ったターンテーブルカメラと、これまでに公開済みの歩行アニメーションデータをセットにしたデータを載せておきます。
いろいろいじってみて下さい。

※ この記事は、Blender ver4.3.2 で書かれています。


いいなと思ったら応援しよう!