カラーのモジュールで色を設定し、いざレベル上に配置してみると。
デフォルトの色のまま…(今回は白のテクスチャを使っているので白だけが表示されてる)
これの対処法です。
Particle Colorノード
ということで、今回重要となるのは「Particle Color」ノードです。こちらは名前の通り、Niagara内で指定された「RPGA」の情報を出力するノードです。RPG(A)とあるように、アルファ(透明度)の情報も当然出力されます。
では試しに、このようなつなぎ方をして確認してみます(Blend Mode: Translucent, Shading Model: Unlit)
するとこのように、グラデーションされてNiagaraが表示されます。次にNiagara内でColorにアルファ(透明度)を設定してみてください。すると…先ほどのマテリアルノードでは何も変化が起こらないはずです。それもそのはずで、先ほどParticle Colorは色の情報を示す「RGB」とは別に、透明度を示す「A」を出力するといいました。しかし、先ほどのノードにはA部分には何もしていません。
なのでこのように、オパシティ(もしくはオパシティマスク)にAのピンをつなげてあげると。
このように透明度部分も表示に反映されました(半透明の場合は、背景の色を混ざった色になるはず)
好きな形
さて、これで完成!とはいきませんよね。
現状はマテリアルの標準の形である四角で固定されてます。ピクセル調のゲームなら合うかもしれませんが、もっと煙っぽかったり、複雑な形にしたいはず。
ということで、テクスチャファイルをマテリアルノード内に入れたら、TextureとParticle ColorのRGBAのピンをMultiplyで乗算し、カラーとオパシティにつなぎます。
すると画像の形のエフェクトに切り替わるはずです。
色に対するMultiply(乗算)は、色の合成みたいなイメージで大丈夫です。もともとは白単色のため、乗算するとParticleで設定した色がそのまま反映されるのです。例えばここを灰色の画像にしてみると、元の色から少しくすんだ色になります。
また、画像は透過素材を使っているため、透明度の情報もアルファとして持っています。
透明度は1が不透明だとして、0に近づくにつれて透明になっていきます。
そして、今回の例の画像ファイルだと形に添って縦横にアルファの情報が並べられているため、それに対しNiagaraのアルファを掛け合わせることで、
例えばNiagaraのアルファが0.5の場合↓
- 透明部分(0.0) × Niagara(0.5)で0.0の透明となり
- 不透明部分(1.0) × Niagara(0.5)で0.5の半透明となります。
これを縦横に画像のサイズだけ計算を行うことで、形を保ったままParticle Colorの透明度も反映できるのです。
と、マテリアルの細かい解説はすごい長くなってしまう気もするので別の機会に。
最後に
ということで、Niagaraの色をマテリアルに反映させる方法でした!