【UE4】Dynamic Parameterを使ったフェードアウト
今回は、UE4のマテリアルエディタのノードの一つである「DynamicParameter」による簡単なフェードアウトのやり方を
そもそも「DynamicParameter」とは
パーティクルシステムである、カスケードで数値を設定することができ
その数値を、マテリアル内に適用する事ができます
例えば、カスケード内で、数値を5に設定したら
DynamicParameterが5の数値として出力されます
定数であれば、定数ノードを使えばいいのですが
このノードを使う利点は、カスケード内で動的に数値を変化させることが出来る点です。
マテリアルダイナミックインスタンスの、エフェクト版とでも思ってもらえば良いかなと。
で、重要なのがおそらく、動的に動かせて、結局何ができるのか?という事
具体例がないと、ピンと来ないと思います
これはサムネイルでもある画像ですが、一つの単純な例として見てもらえればなと
中央の「Power」は、Baseに読み込んだデータを、Expで読み込んだ数値で累乗します
Baseに3
Expに3なら、3の3乗で27になる、といった感じです。
右側にある「Subtract」は、引き算をするノードです、AからBを引きます
DynamicParameterで数値を変化させるとどう変わるのか?というと
エディタ内では、定数ノードに置き換えています
この構成の場合、数値が低くなるほど、最終結果の、中心の黒い部分が大きくなります
また、1になると、全て真っ暗になります
どのような数値でも、1乗してもそのままになり
元が同じテクスチャから引き算をしているので、全て0になるので真っ黒に
しかし、1を超える数値を入れた場合、テクスチャからそのまま情報をとってくる場合
0~1に限定されます
なので、1の部分がそのままで、1未満の部分のみ減っていきます(0.9*0.9=0.81など)
で、その減った数値を引いているので、中間の部分は白い部分が残り
中心の白が強い部分がくり抜かれて、リングのような表示になります。
これにより、高い数値から1に持っていくことで、中心から削れて、細くなっていって消えるような表現にすることが可能です。
当然、別々のテクスチャ同士で引き算することも可能ですが
その場合はDynamicParameterが1になっても、完全に消えて切れないので注意が必要です
その場合は、particlecolorのαをマテリアル側で繋げておいて
カスケードのColorOverLifeのαを最後に0にやって消してあげるといいです。
また、このように引き算する前のノードに、加算や乗算などの処理を入れたノードを入れる場合、数値が1を超えてしまう場合があるので注意です(Addは足し算するノードです)
1を超えるとどうなるのか、というと
たとえば、1を超えて1.5になってしまい
累乗が5の場合だと、1.5の5乗で約7.5
1から7.5を引くと、-6.5と、高いマイナスの数値になってしまいます
こうすると、実際に表示した場合に、極端に黒く表示されてしまう場合があるので注意が必要です。
その場合にはこの
Clampというノードを使うといいです
これは数値の最大値と最小値を決めてくれるノードです
Powerや、Subtractの前に、このノードにつないで0~1にすると、解決してくれます。
ちなみにこのClamp、Powerを使う際に、結構便利なことも多いです
理由は今回と同じく、1を超える数値を累乗すると、極端に高い数値になる事がある為。
Clampの最大値を0.95など、ちょっと低めの数値にしてから、Powerで累乗すると
1の部分がなくなるので、全ての場所が薄くなっていくので
Powerノードで薄くしたいけど、1の部分が消えなくて邪魔、という場合などに特に重宝します。