moyasiエフェクト館

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


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

【UE4】Dynamic Parameterを使ったフェードアウト

f:id:tktknkyo:20171214193350p:plain

今回は、UE4のマテリアルエディタのノードの一つである「DynamicParameter」による簡単なフェードアウトのやり方を

 

そもそも「DynamicParameter」とは

パーティクルシステムである、カスケードで数値を設定することができ

その数値を、マテリアル内に適用する事ができます

 

例えば、カスケード内で、数値を5に設定したら

DynamicParameterが5の数値として出力されます

定数であれば、定数ノードを使えばいいのですが

このノードを使う利点は、カスケード内で動的に数値を変化させることが出来る点です。

 

マテリアルダイナミックインスタンスの、エフェクト版とでも思ってもらえば良いかなと。

で、重要なのがおそらく、動的に動かせて、結局何ができるのか?という事

具体例がないと、ピンと来ないと思います

 

f:id:tktknkyo:20171214194537p:plain

これはサムネイルでもある画像ですが、一つの単純な例として見てもらえればなと

中央の「Power」は、Baseに読み込んだデータを、Expで読み込んだ数値で累乗します

Baseに3

Expに3なら、3の3乗で27になる、といった感じです。

 

右側にある「Subtract」は、引き算をするノードです、AからBを引きます

 

DynamicParameterで数値を変化させるとどう変わるのか?というと

f:id:tktknkyo:20171214195120p:plain

f:id:tktknkyo:20171214195008p:plain

f:id:tktknkyo:20171214195152p:plain

エディタ内では、定数ノードに置き換えています

この構成の場合、数値が低くなるほど、最終結果の、中心の黒い部分が大きくなります

また、1になると、全て真っ暗になります

 

どのような数値でも、1乗してもそのままになり

元が同じテクスチャから引き算をしているので、全て0になるので真っ黒に

 

しかし、1を超える数値を入れた場合、テクスチャからそのまま情報をとってくる場合

0~1に限定されます

なので、1の部分がそのままで、1未満の部分のみ減っていきます(0.9*0.9=0.81など)

で、その減った数値を引いているので、中間の部分は白い部分が残り

中心の白が強い部分がくり抜かれて、リングのような表示になります。

 

これにより、高い数値から1に持っていくことで、中心から削れて、細くなっていって消えるような表現にすることが可能です。

 

当然、別々のテクスチャ同士で引き算することも可能ですが

その場合はDynamicParameterが1になっても、完全に消えて切れないので注意が必要です

その場合は、particlecolorのαをマテリアル側で繋げておいて

カスケードのColorOverLifeのαを最後に0にやって消してあげるといいです。

 

f:id:tktknkyo:20171214200636p:plain

また、このように引き算する前のノードに、加算や乗算などの処理を入れたノードを入れる場合、数値が1を超えてしまう場合があるので注意です(Addは足し算するノードです)

1を超えるとどうなるのか、というと

たとえば、1を超えて1.5になってしまい

累乗が5の場合だと、1.5の5乗で約7.5

1から7.5を引くと、-6.5と、高いマイナスの数値になってしまいます

こうすると、実際に表示した場合に、極端に黒く表示されてしまう場合があるので注意が必要です。

 

その場合にはこの

f:id:tktknkyo:20171214201021p:plain

Clampというノードを使うといいです

これは数値の最大値と最小値を決めてくれるノードです

Powerや、Subtractの前に、このノードにつないで0~1にすると、解決してくれます。

 

ちなみにこのClamp、Powerを使う際に、結構便利なことも多いです

理由は今回と同じく、1を超える数値を累乗すると、極端に高い数値になる事がある為。

Clampの最大値を0.95など、ちょっと低めの数値にしてから、Powerで累乗すると

1の部分がなくなるので、全ての場所が薄くなっていくので

Powerノードで薄くしたいけど、1の部分が消えなくて邪魔、という場合などに特に重宝します。