2022-11-19

【Blender】マテリアルをフレーム数でアニメーションさせる方法【Tips】

マテリアルノードにてキーフレームを使わずにアニメーションさせる方法。非常に簡単。

Article Image
使用ソフトウェアバージョン備考
Blender3.3.1

マテリアルをアニメーション

エフェクトを作りたい時などBlenderでマテリアルをアニメーションさせたいときは色々ある。

このときにわざわざキーフレームを書いていると作業が大変である。

そこで、現在のフレーム数を取得し、その値をマテリアルのパラメタに入れる方法をサクッと紹介する。

作例

今回はこのためにロウソクの炎のようなものを簡単に作った。

リアリティはないが、次の作例はキーフレームを一切使用すること無く動いている。

ノード例

サンプルのマテリアルノードは次が全てだが、今回は作り方解説ではないので省略する。

ノード例

画像が小さいのでクリックで拡大。

特に赤枠で囲った箇所が重要。

マテリアルのBlend ModeAlpha Blendに設定してある。

Blend Mode外観

コレをやらないと透過が作用しない。

やりかた

Valueノードを使う。

Valueノード外観

次に、この値に#frameと入れるとValueノードから現在のタイムラインのフレーム数が出力される

frameと入力

タイムラインを再生するとこの値が毎フレーム変化するのでアニメーション用の数値として使えるというワケ。

キーフレームは打つ必要がない。

これで再生してみるとValueの値がフレーム数で変化するのが分かると思う。

#frameはドライバという機能を使った方法。

これを入力して決定すると入力欄が紫色になる。

ドライバ設定後は紫になる

ドライバ機能の本格的な使い方は他サイトに譲る。

簡単な計算も加える

このままだとフレーム番号がそのまま出てしまい、アニメーションが早すぎるといったことがよく起こる。

そこでBlenderパラメタ入力には簡単な式が入力できる小技を併用する。

次のようにするとフレーム数ではなく「秒」を出力することができる。

24で割った例

上の例では24fps設定なので1秒は24コマ。

実はValue以外でも使える

わかりやすくValueノードで試したが、実はあらゆるソケットにこの値は利用できる。

Addに入力

これも地味に便利

値が増えない?バグった時

ドライバという簡易プログラムのような物を使っているので#frameを何度も入力していると壊れて止まってしまうことがある。

そんなときは値を右クリックしてDelete Driverしてからもう一度入力しよう。

Delete Driver外観

日本語:ドライバを削除

ロウソクの例はどうやって動いてるの?

少しだけロウソクの例を解説するとNoise TextureWというソケットに「秒数」を入れている。

このWは連続した数値が入って来ると、ノイズそのものもシームレスに動くというメリットがある。

つまりガタガタしないため、炎のゆらぎのようなものを作っている。

知らなければ色々実験してみてほしい。

ノイズテクスチャー外観

基本はこのノイズからアルファを生成しているだけだ。

おまけ:ジオメトリノードはもっと便利

余談になるがジオメトリノードにはScene Timeという便利なノードがある。

Scene Time外観

このノードはそのまま「再生時間(秒)」と「frame」が両方出力されるので使いやすい。

正直マテリアルノードにもほしい。

ノード検索時にframeと入力すると別のアイテムが出てきてしまうので検索には注意。

さいごに

この方法を使えばキーフレームを使わず再生され続けるマテリアルを作ることができる。

ゲーム制作と違いBlenderではあまりエフェクトを作っている人を見かけないが、動くマテリアルは無限の可能性を秘めている。

ぜひとも覚えてもらえたらと思う。



謎の技術研究部 (謎技研)