moyasiエフェクト館

主にエフェクト関係の記事を上げていこうかと思います。


エフェクトに関係する記事上げてきます
エフェクト関係の記事の内容は緩く募集中
自分がわかる範囲であれば書いていこうかなと。

【Niagara】UVスクロールやUVランダムなどの処理方法について※DynamicParameter

 

f:id:tktknkyo:20201228231248p:plain

Verは4.25です

 

【初めに】

サムネイルは...こういう斬撃は多分スクロール大活躍だからいいかなと...

そういえば書いてなかったような...というのと

DynamicParamererをNiagaraで16個使えるようになりましたけど

この内容はまた別の記事で予定してます。

ややこしい部分があったような気がしたので、記事として書いておきます。

 

 

【Material側の設定】

f:id:tktknkyo:20201228232601p:plain

これだけです

 

TextureCoordinate(TexCoord)からRとGそれぞれ

ComponentMask(Mask)で分離したものと

DynamicParameterの情報をAddで加算するだけです。

あとはAppendVector(Append)で2チャンネルにして、UVsに繋ぎます

 

DynamicParameterの情報はどこを取ってもいいですが
Niagaraで組むときにどこを取ってくるかはここで変わります。

 

Niagaraはデフォルトの状態で、これだけで開始時の座標ランダムとカーブによるスクロールの併用ができます。

 

 

【UV座標ランダム】

f:id:tktknkyo:20201228233531p:plain

パーティクルのスポーンに「Dynamic Material Parameters」を追加します

 

f:id:tktknkyo:20201228233701p:plain

そうするとこのようなモジュールが出てきます。

ここのScloll_Xなどは、Materialでつけた名前が出てきます。

 

f:id:tktknkyo:20201228234344p:plain

この二つのところにUniform Ranged Floatを挿入します。

デフォルトで0~1の乱数になっているので

これで、発生ごとにランダムで座標が変わる処理が完成しました。

 

 

【UVスクロール】

やることとしては、UV座標ランダムとそこまで変わりませんが

パーティクルのスポーンではスクロールできないので

パーティクル更新に「Dynamic Material Parameters」を入れます。

 

ランダムで「Uniform Ranged Float」を入れたところに

f:id:tktknkyo:20201228234805p:plain

「Float from Curve」を挿入します。

デフォルトで1から0のカーブになっているので

入れた時点でUVスクロールが始まります。

 

あとは好みでカーブを弄れば完成です。

 

 

【UV座標ランダムとスクロールの併用】

 

f:id:tktknkyo:20201228235114p:plain

このようにすれば、先ほどのやり方を混ぜるだけで出来はしますが

DynamicParameterを4つ占領してしまいます。

Niagaraであれば、デフォルトでも2つのチャンネルで

UVランダムとスクロールの併用が可能です。

 

f:id:tktknkyo:20201228235329p:plain

まずパーティクルのスポーンで「Set new or existing parameter directly」を追加します。

既にある場合は追加はしなくても大丈夫です。

 

 

f:id:tktknkyo:20201228235553p:plain

右上の+ボタンから、新規パラメータの追加

Floatのパラメータを追加します

 

f:id:tktknkyo:20201228235748p:plain

パラメータ生成後、わかりやすい名前に変えておきます(今回はPosition_X)
そして「Uniform Ranged Float」を追加します。

 

f:id:tktknkyo:20201229000019p:plain

XとY軸両方でする場合は、名前だけ違うパラメータをもう一つ作ります

ただ、この段階では、0~1の乱数を二つ作っただけなのでこれだけでは何も動かないので

ここからDynamicParameterに入れ込んでいきます。

 

 

f:id:tktknkyo:20201229000202p:plain

パーティクルの更新に入れた「Dynamic Material Parameters」

にAddFloatを入れます。

 

f:id:tktknkyo:20201229000442p:plain

後は、AddFloatのAとBに

先ほど作った乱数と、カーブをそれぞれ入れます。

 

これで、発生時の座標がランダムで、尚且つカーブで調整できるスクロール処理が完成です。

最初の乱数作るときに、パーティクルの更新で作ってしまうと
毎フレーム座標がランダムに計算されるという、凄まじい動きになるので注意しましょう...

 

 

【終わりに】

今回はUVスクロールやUV座標のランダムに関する内容でしたが

パーティクルのスポーンでパラメータを定義しておいて

パーティクルの更新で利用する、というやり方は中々便利です。

 

発生ごとにランダムな変数が欲しい、という場合はこのやり方が通用します。

また、これはFloatに限った話ではないです。

 

個人的に作った便利な乱数だと

ランダムな方向を向くVector型のパラメータです

f:id:tktknkyo:20201229001513p:plain

処理内容としてはこうなっています。

数値を代入するところは一切なく

このモジュールを追加するだけでAxisという、Vector型で

尚且つ正規化されたパラメータがランダムに生成されるという内容です。