LoginSignup
0
0

ジオメトリノードでランダムなテクスチャアニメーション

Last updated at Posted at 2024-05-21

先日 Blenderのパーティクルでテクスチャーのアニメーションの記事を書きました

雨粒の波紋を作ったりするのに使える方法ですが、Cyclesレンダーでないと使えない等デメリットがありました

同様に テクスチャ平面の散布からGeometryNodesをで作成すれば
Eeveeでも利用できる他 応用も効くので試してみました
24052007.gif

ジオメトリノードの入力

今回のジオメトリノードでは 適当なメッシュ上に 
UVシフトのでのテクスチャアニメーションする面を散布します
UVシフトの考え方については前回記事を参照してください。
image.png
グループの入力でモディファイアの項目から設定を入力できるようにしています
散布密度は 面を発生させる密度
終了フレームは散布が終わるフレーム
コマ数はUVシフトのアニメーションが何枚の画像でできているかを指定するもので
Materialでアニメーションさせるテクスチャのマテリアルを指定します。

ランダム配置と選択

まずテクスチャを貼り付ける面を配置させるためのポイントを生成します。
このポイントに「名前付き属性格納」で BornTimeという名前を付けてポイントが発生した時間を仮定したデータをランダムに設定しています
image.png
「ポイントにインスタンス」で ポイントに平面を発生させるのですが
選択の入力を使うことで 条件に合致したポイントのみに発生させるということができます
今回は 「シーンタイム」から現在の時間をフレーム数で取得して 先にランダム生成しておいたBornTimeの値と比較することで 一定範囲の値のポイントにのみ平面を発生させています。
インスタンス入力に接続しているメッシュプリミティブの「グリッド」は 最初からUVが設定された状態で生成されます。

UVシフトアニメーションとマテリアル設定

先ほどポイントにインスタンスで発生させた面は「インスタンス実体化」のノードを挟むことでメッシュとして利用できます
メッシュプリミティブのグリッドのUVはuv_mapで取得できます
image.png
また 生成元のポイントに設定してあった BornTimeの情報も発生後のメッシュの頂点に引き継がれているので
現在のフレームとの差からUVのシフト量を計算できます
X軸方向のみUVの縮小とシフト操作をして 名前付き属性格納で上書きしています
「マテリアル設定」ノードでモディファイアパネルで設定したマテリアルが発生した面に適用されます

因みに「グループ入力」のノードは複数配置することができて 同じデータを参照するので
入力値を扱う場合にリンクの線を長々と伸ばす必要がなくてすっきりさせることができます

マテリアルの設定

ジオメトリノードの中で指定したマテリアルの設定です
今回はテクスチャをただ表示するだけのノードです
image.png
注意が必要なのですが ジオメトリノード内で設定された値をUV等で利用する場合には
ジオメトリノード内で利用した属性名か
(今回は利用しなかったのですが)出力属性で指定した名前で
「属性」のノードから取得する必要があります

ざっくり説明ですが 何かの手助けになれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0