[UnrealEngine]NiagaraSystemで直接グラデーションマップ制御

UnrealEngine

■[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の中でグラデーションマップをある程度に操作できるので、差分作成がかなり楽になると思いました。
 大まかな説明となりますが、なにか参考になれば幸いです。

コメント

タイトルとURLをコピーしました