【Niagara】UVスクロールやUVランダムなどの処理方法について※DynamicParameter
Verは4.25です
【初めに】
サムネイルは...こういう斬撃は多分スクロール大活躍だからいいかなと...
そういえば書いてなかったような...というのと
DynamicParamererをNiagaraで16個使えるようになりましたけど
この内容はまた別の記事で予定してます。
ややこしい部分があったような気がしたので、記事として書いておきます。
【Material側の設定】
これだけです
TextureCoordinate(TexCoord)からRとGそれぞれ
ComponentMask(Mask)で分離したものと
DynamicParameterの情報をAddで加算するだけです。
あとはAppendVector(Append)で2チャンネルにして、UVsに繋ぎます
DynamicParameterの情報はどこを取ってもいいですが
Niagaraで組むときにどこを取ってくるかはここで変わります。
Niagaraはデフォルトの状態で、これだけで開始時の座標ランダムとカーブによるスクロールの併用ができます。
【UV座標ランダム】
パーティクルのスポーンに「Dynamic Material Parameters」を追加します
そうするとこのようなモジュールが出てきます。
ここのScloll_Xなどは、Materialでつけた名前が出てきます。
この二つのところにUniform Ranged Floatを挿入します。
デフォルトで0~1の乱数になっているので
これで、発生ごとにランダムで座標が変わる処理が完成しました。
【UVスクロール】
やることとしては、UV座標ランダムとそこまで変わりませんが
パーティクルのスポーンではスクロールできないので
パーティクル更新に「Dynamic Material Parameters」を入れます。
ランダムで「Uniform Ranged Float」を入れたところに
「Float from Curve」を挿入します。
デフォルトで1から0のカーブになっているので
入れた時点でUVスクロールが始まります。
あとは好みでカーブを弄れば完成です。
【UV座標ランダムとスクロールの併用】
このようにすれば、先ほどのやり方を混ぜるだけで出来はしますが
DynamicParameterを4つ占領してしまいます。
Niagaraであれば、デフォルトでも2つのチャンネルで
UVランダムとスクロールの併用が可能です。
まずパーティクルのスポーンで「Set new or existing parameter directly」を追加します。
既にある場合は追加はしなくても大丈夫です。
右上の+ボタンから、新規パラメータの追加
Floatのパラメータを追加します
パラメータ生成後、わかりやすい名前に変えておきます(今回はPosition_X)
そして「Uniform Ranged Float」を追加します。
XとY軸両方でする場合は、名前だけ違うパラメータをもう一つ作ります
ただ、この段階では、0~1の乱数を二つ作っただけなのでこれだけでは何も動かないので
ここからDynamicParameterに入れ込んでいきます。
パーティクルの更新に入れた「Dynamic Material Parameters」
にAddFloatを入れます。
後は、AddFloatのAとBに
先ほど作った乱数と、カーブをそれぞれ入れます。
これで、発生時の座標がランダムで、尚且つカーブで調整できるスクロール処理が完成です。
最初の乱数作るときに、パーティクルの更新で作ってしまうと
毎フレーム座標がランダムに計算されるという、凄まじい動きになるので注意しましょう...
【終わりに】
今回はUVスクロールやUV座標のランダムに関する内容でしたが
パーティクルのスポーンでパラメータを定義しておいて
パーティクルの更新で利用する、というやり方は中々便利です。
発生ごとにランダムな変数が欲しい、という場合はこのやり方が通用します。
また、これはFloatに限った話ではないです。
個人的に作った便利な乱数だと
ランダムな方向を向くVector型のパラメータです
処理内容としてはこうなっています。
数値を代入するところは一切なく
このモジュールを追加するだけでAxisという、Vector型で
尚且つ正規化されたパラメータがランダムに生成されるという内容です。