【検証】UE4 Niagara Parameter Collectionと同Instanceについて
ご挨拶
こんにちは、Niagara芸人です。
社会人になりました。
今回はちょっとした検証になります。
具体的には、Niagara Parameter Collection(以降: NPC)とNiagara Parameter Collection Instance(以降: NPCI)の検証結果について書きたいと思います。
NPCやNPCIについての使用法などは、moyasiさんのブログをご覧いただければわかりやすいと思います。
概要
先日のことです。
「おーい!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にしておきましょう。
2, Niagara Parameter Collectionを作成します。
Liner Color型の変数を追加しておきます。
3, Niagara Parameter Collection Instanceを作成します。
先程作ったNPCを右クリックすれば、メニューが表示され作成することができます。
4, Niagara SystemにNPCIをセットする。
Niagara Editor内のSystem Detailsタブより、先程作成したNPCIをセットします。
5, Niagara SystemのColor ModuleにNPCの変数をセットする。
Parameters WindowにNPCに作成した変数を追加し、Color Moduleにセットします。
検証しやすくするため、Location Based RibbonにColor Moduleを追加し、同じようにセットしました。
6, 実際に配置して、NPCIより操作してみる。
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をご覧いただければと思います。
Q2, 同じNSを複数個、レベル上に配置した場合、同じNPCIを別々のNPCIとして参照できるか?
先程の考察でも触れたように、NPCIは値を定数として扱うためのアセットであると考えられ、それぞれのNPCIに対する値の変更は不可能であり、
現状のNiagaraでは、Q2のNPCIに関する検証は、不可能であるといった結果になるかと思われます。
まとめ
今回の記事では、機能検証を行いました。
今後も度々、検証結果を書くことがあるかと思います。
もしも、間違った記載をしていましたら、ご指摘のほど、よろしくお願いいたします。