【検証】UE4 Niagara Parameter Collectionと同Instanceについて

ご挨拶

こんにちは、Niagara芸人です。
社会人になりました。

今回はちょっとした検証になります。
具体的には、Niagara Parameter Collection(以降: NPC)とNiagara Parameter Collection Instance(以降: NPCI)の検証結果について書きたいと思います。
NPCやNPCIについての使用法などは、moyasiさんのブログをご覧いただければわかりやすいと思います。

tktknkyo.hatenadiary.jp

概要

先日のことです。
「おーい!Niagara芸人!こういうのできねーのかYO!」といったことがあり、以下のことを検証します。

検証項目と結論

Q1, 同じNiagara System(以降: NS)を複数個、レベル上に配置した場合、それらは共通のNPCIを参照できるか?
A, 可能でした。

Q2, 同じNSを複数個、レベル上に配置した場合、同じNPCIを別々のNPCIとして参照できるか?
A, ​不可能でした。

以降は、検証と考察になります。

前提

  • Unreal Engine 4.22.0を使用しています。
  • Niagaraは、アーリーアクセスです。
    今後、実装方法などに変更がある可能性があります。

  • 今回の検証は、ソースコードまで潜った検証を行っておらず、あくまでも現状の機能面での結論です。そのため、ソースコード上の記述と間違った内容があるかもしれません。

検証と考察

Q1, 同じNSを複数個、レベル上に配置した場合、それらは共通のNPCIを参照できるか?

検証

実際に作ってみて配置してみました。

1, Niagara Systemを作成します。
テンプレートから、Directional Burstを選択しました。
Emitter Life Cycle内のMax Loop Countは0にしておきましょう。

f:id:yuyasaltcanyon:20190319221345p:plain:w500

2, Niagara Parameter Collectionを作成します。
Liner Color型の変数を追加しておきます。

f:id:yuyasaltcanyon:20190319221817p:plain:w500

3, Niagara Parameter Collection Instanceを作成します。
先程作ったNPCを右クリックすれば、メニューが表示され作成することができます。

f:id:yuyasaltcanyon:20190319222218p:plain:w500

4, Niagara SystemにNPCIをセットする。
Niagara Editor内のSystem Detailsタブより、先程作成したNPCIをセットします。

f:id:yuyasaltcanyon:20190319222534p:plain:w500

5, Niagara SystemのColor ModuleにNPCの変数をセットする。
Parameters WindowにNPCに作成した変数を追加し、Color Moduleにセットします。

f:id:yuyasaltcanyon:20190319223121p:plain:w500

検証しやすくするため、Location Based RibbonにColor Moduleを追加し、同じようにセットしました。
f:id:yuyasaltcanyon:20190319225659p:plain:w500

6, 実際に配置して、NPCIより操作してみる。

youtu.be


Level上に配置したNiagara Systemにセットした共通のNPCIより、色の操作が可能になりました。

考察

無事に同一のNiagara Systemを複数個用意し、共通のNPCIによる操作ができました。
しかしながら、現在のNiagaraには、ゲーム中にNPCIの値を変更することはできなかったため、
NPCIはFX用の値を定数として扱うためのものだと思われます。
そのため、
もしも、ゲーム中にNPCIのパラメーター群に対して、動的な変更を行う場合、
NPCIではなく、NPCを使用し、個々の変数をBlueprint等から変更することが現実的かと思われます。

余談ですが、SequencerからNPCの変数を変更する場合
Material Parameter Collectionのようにトラック内に直接追加して操作はできません。
そのため、Sequencer Directorを使った実装が現実的かと思います(Event Trackなため値の変更がCurveなどになりませんが・・・)。

Sequencer Directorについては、Epic Games Japan公式のUnreal Japan Streamをご覧いただければと思います。

youtu.be


Q2, 同じNSを複数個、レベル上に配置した場合、同じNPCIを別々のNPCIとして参照できるか?


先程の考察でも触れたように、NPCIは値を定数として扱うためのアセットであると考えられ、それぞれのNPCIに対する値の変更は不可能であり、
現状のNiagaraでは、Q2のNPCIに関する検証は、不可能であるといった結果になるかと思われます。

まとめ

今回の記事では、機能検証を行いました。
今後も度々、検証結果を書くことがあるかと思います。
もしも、間違った記載をしていましたら、ご指摘のほど、よろしくお願いいたします。