使用ソフトウェア | バージョン | 備考 |
---|---|---|
Blender | 3.3.1 |
エフェクトを作りたい時などBlenderでマテリアルをアニメーションさせたいときは色々ある。
このときにわざわざキーフレームを書いていると作業が大変である。
そこで、現在のフレーム数を取得し、その値をマテリアルのパラメタに入れる方法をサクッと紹介する。
今回はこのためにロウソクの炎のようなものを簡単に作った。
リアリティはないが、次の作例はキーフレームを一切使用すること無く動いている。
サンプルのマテリアルノードは次が全てだが、今回は作り方解説ではないので省略する。
画像が小さいのでクリックで拡大。
特に赤枠で囲った箇所が重要。
Value
ノードを使う。
次に、この値に#frame
と入れるとValueノードから現在のタイムラインのフレーム数が出力される
タイムラインを再生するとこの値が毎フレーム変化するのでアニメーション用の数値として使えるというワケ。
キーフレームは打つ必要がない。
これで再生してみるとValue
の値がフレーム数で変化するのが分かると思う。
このままだとフレーム番号がそのまま出てしまい、アニメーションが早すぎるといったことがよく起こる。
そこでBlender
のパラメタ入力には簡単な式が入力できる小技を併用する。
次のようにするとフレーム数ではなく「秒」を出力することができる。
上の例では24fps設定なので1秒は24コマ。
わかりやすくValue
ノードで試したが、実はあらゆるソケットにこの値は利用できる。
これも地味に便利
ドライバという簡易プログラムのような物を使っているので#frame
を何度も入力していると壊れて止まってしまうことがある。
そんなときは値を右クリックしてDelete Driver
してからもう一度入力しよう。
日本語:ドライバを削除
少しだけロウソクの例を解説するとNoise Texture
のW
というソケットに「秒数」を入れている。
このW
は連続した数値が入って来ると、ノイズそのものもシームレスに動くというメリットがある。
つまりガタガタしないため、炎のゆらぎのようなものを作っている。
知らなければ色々実験してみてほしい。
基本はこのノイズからアルファを生成しているだけだ。
余談になるがジオメトリノードにはScene Time
という便利なノードがある。
このノードはそのまま「再生時間(秒)」と「frame」が両方出力されるので使いやすい。
正直マテリアルノードにもほしい。
ノード検索時にframe
と入力すると別のアイテムが出てきてしまうので検索には注意。
この方法を使えばキーフレームを使わず再生され続けるマテリアルを作ることができる。
ゲーム制作と違いBlender
ではあまりエフェクトを作っている人を見かけないが、動くマテリアルは無限の可能性を秘めている。
ぜひとも覚えてもらえたらと思う。