■[UnrealEngine]NiagaraSystemで直接グラデーションマップ制御
今回は、NiagaraSystemのカラーカーブを直接グラデーションマップとして使用する方法のメモとなります
■イメージ図


・今回作成していくもののイメージです。
[Set Parameters]と[Dynamic Material Parameter]で、それぞれこのような調整ができるようにしていきます。
■使用マテリアル紹介

・まずは使用するサンプルマテリアルについて。
グラデーションマップの仕組みについては 「こちらの記事」で紹介していますので、ここではざっくりと。
用意するテクスチャサンプルパラメータは2つ。
ここでは、下地のテクスチャを「Diff_Tex」
グラデーションテクスチャを「Grad_Tex」としています。
ポイントとしては、グラデーションテクスチャの型はリニアカラーにすること。
この際、カーブアトラスである必要はありません。
参考例では、4×4の極小テクスチャを初期読み込みにしています。
また、簡易ディゾルブ用の仕込みも同じく仕込んでいきます。
このとき、NiagaraSystemからカーブ制御ができるようにするため、MinにDynamicPalameterを一つ繋いでおきます。
■ナイアガラ設定
・ここからはNiagaraSystemでの設定です。
■CurveColorの準備

・まずは[Set Parameter] で「Curve for Colors」を準備。
基本的には最初に1回だけ読み込めばいいので、負荷を考えてEmitterSpawnに作成します。
※後述しますが、User変数のカラーカーブは使えないようです。
■Curve for Colors入力

・作成された「Curve for Colors」にカラーカーブを入力します。
今回はひとまずこのような形で。
※補足として「グラディエント」で色を入力していく他に、「カーブ」でカーブグラフを操作することも可能です。
■[Expose Curve to Material]設定

・次に、[Curve for Colors]のカーブをマテリアルで使用するための重要な設定をします。
下にある折りたたみボタンを押してパラメータを展開し、そこにある「Expose Curve to Material」のチェックを入れます。
こうすることにより、Rendererでテクスチャサンプルパラメータに対し、このカラーカーブ変数を選択することができます。
■Renderer設定
・準備したマテリアルの設定し、作成したカラーカーブをバインディングしていきます。
[Material Parameter]の[Attribute Bindings]にて、
[Material Parameter]に[Grad_Tex]を、
[Niagara Variable]に[エミッタ_Curve for Colors]を登録します。


・設定したカラーカーブを変化させてみたサンプル動画です。
■[Dynamic Material Parameters]の登録
・続いて、[Dynamic Material Parameter]でMinを操作する準備です。
こちらはパーティクルの寿命を元にアニメーションさせたいので、[Particle UpDate]に追加します。


・ディゾルブ用のパラメータを動かしてみたサンプルです。
これで一通りの設定が完了しました。
■注意点
・この手法に当たって引っかかった注意点について、備忘録として記載いたします。
■ユーザーパラメータのカラーカーブは使えない。
・UE5.7.1現在、User変数のカラーカーブは使えない模様です。
[Attribute Binding] でも選択に表示されず、
エミッタパラメータを経由しても、表示が意図したものになりません。

■[LightWeightEmitter]ではエミッタカラーカーブは使えない。
・[LightWeightEmitter]は[Set Parameters]を使えないので、直接カラーカーブを編集することはできません。
しかし、Rendererのバインディングでカーブアトラスを割り当てることは可能です。
ちなみに、[Dynamic Material Parameters]はLightWeightEmitterでも使用可能なので、ディゾルブ効果は期待できます。

・今回は以上となります。
NiagaraSystemの中でグラデーションマップをある程度に操作できるので、差分作成がかなり楽になると思いました。
大まかな説明となりますが、なにか参考になれば幸いです。

コメント