【UE4】Niagaraを触ってみる
各Ver
UE4:4.20.1
UE4の新しいパーティクルシステムであるNiagara、ある程度触ってきたので、そろそろ記事の方も書いていきたいと思います。
【ナイアガラの有効化】
プラグインから、FXという項目、もしくはNiagara、と検索すると出てくるので有効にしましょう。
【Niagaraのデータ】
Niagaraのデータは、コンテンツブラウザの右クリックの、FXという項目の中に入っています。
基本になるものが
・NiagaraSystem(NS)
・NiagaraEmitter(NE)
・NiagaraMouduleScaript(NM)
上からシステム、エミッター、モジュール
この三つは、カスケードの頃にあったのと似た様なものだと考えれば大丈夫です
ただ、今回はそれぞれ別々のアセットで保存されます。
現段階では、まだアイコンらしいアイコンは実装されていないので、Niagara系のデータだけでこんな感じになります。
これ以外のアセットである
・NiagaraDynamicInputScript(ND)
・NiagaraFunctionScript(NF)
・NiagaraParameterCollection(NPC)
・NiagaraParameterCollectionInstance(NPCI)
この4種類、まだまだ曖昧な部分があるので間違ってる部分もありそうですがわかる範囲で書いておこうかと思います。
※()内は略称です、正式な略称かは不明
【NiagaraDyamicInputScript】
直接開くと、NMと似たような構造になっています
グラフの部分はこちらです
一方、NMは
このようになっています
NMにはMapSetというノードが多く、一番最後のOutputが変わっています。
重要なのが、どこに使われているのか?という事ですが。
NMの中に入っている様なイメージです。
NEの要素を動かしたりするのに、NMを使うわけですが(移動や大きさ等)
その数値をあれこれするのに使います。
カスケードで例えると
例えばLifetimeのモジュール
パーティクルの寿命を設定するためのモジュールになります。
そしてこのモジュールの中の
この赤枠の部分、これがNDになると考えると解りやすいと思います。
また、これによって何が便利なのか?というと
NMは、入れる数値の型を指定する必要があるのですが、これを別の型でも使えるようにしてくれます。
これはモジュールの一部を写したものですが。この頭にMouduleとある部分は、エミッター上で数値を入れることができます
ただし、この場合上はColorの4チャンネルの情報
その下は3チャンネル、その下は1チャンネルの情報しか入れることができません。
このモジュールをエミッターに入れた場合、この様な表示となります。
エフェクト作っている方であれば、解ると思いますが、この場合色ですが、完全に固定の色しか入れれないのは困りものです。
大量に飛ぶ粒子などは、ある程度色のランダム性を持たせると綺麗に映りやすいですし、これは位置などにも言えるので、かなり規則正しい動きになるのは、エフェクトにおいてはあまりよろしくない場合が多いです。
このモジュールの数値を入れれる右端に▼マークがあるのですが、ここをクリックするとメニューが出てきます。
そこからUniform Ranged Floatを選択すると、ここの数値の最大値と最小値を指定する事ができるようになります。
下の画像の、赤線の部分、これがNDになります
ダブルクリックで、中に入って編集する事も出来ます...が
カスケードと違い、このデータ自体が編集できるアセットになっているので、ここを編集して保存すると、ほかのエミッターで出したときにも、その編集した後になるので注意が必要です。
共同製作の場合、ここをいじる場合、ほかの方の作ったアセットに悪影響が出かねないので、別名で保存するなどの配慮が必要になります。
【NiagaraFunctionScript】
こちらは、よくある関数になります、BPやマテリアルにも同様の機能があるので、ここは飛ばさせてもらいます。
【NiagaraParameterCollection】
マテリアルにも、似たような機能のある、パラメータコレクションです
パラメータコレクション、という機能自体の説明としては
パラメータコレクションを参照している数値を、全て一律に変えることができる、という感じでしょうか
また、これは動的に変えることも可能です
マテリアルでもあるのですが、マテリアルインスタンスでも動的に変えることができますが最大の違いは、参照してるもの全て同時に変えてしまうということです。
マテリアルインスタンスの数値を変える場合、変更するマテリアルのデータを参照して動かしますが、パラメータコレクションはすべて変更してしまいます。
こちらが、NPCを変更するための、BPのノードです。
左側のが実際に変更するノードですが、MIDなどと違い、ターゲットのピンがありません。
なので、参照してるもの全てを変更します、軽い気持ちでこの機能で動的に変えてしまうと、変えたくない部分まで変わってしまいます。
実用的にNPCを使う場合はどうしたら良いかな?と考えたのですが、モジュールなどに入れるのがいいのかなと。
動かす内容としては、動的に動かすのではなく、全体を一律に調整できるパラメータとして使ってみよう、というわけです。
まずは、モジュールにNPCを適用する方法を。
NPCアセットを作ったら、右の方にある、AddParameterから、パラメータを作ります、名前もとりあえずつけておきましょう。
モジュール側で作ったNPCを追加する場合は
ParameterCollectionの右にある+のマークから、追加していきます。
MapGetのノードから追加することも可能です。
このように追加されれば大丈夫です、あとは、ここからの数値が、常にNPCで設定した数値になるようになります。
長くなりそうなので、実際の数値の運用関係は次の記事で纏めます。
【Niagara Parameter Collection Instance】
所謂、NPCのインスタンス版、だと思うのですが、これに関しては色々試そうとしたもののあまりわかっていないのが現状です...
というのも、NPCをセット出来るところでも、基本はセットできない作りになっているようです
モジュールなどの入れる場所で、NPCが入るところにそのままでは入れれないようです。
また、BPでNPCを操作できるノードがありますが、ここにNPCIが入る事もできないようです。
このアセットの運用については、今のところ調べてみようかなと思っています。
具体的な動かし方等は、次以降の記事で書いていきたいと思っています。