moyasiエフェクト館

主にエフェクト関係の記事を上げていこうかと思います。


エフェクトに関係する記事上げてきます
エフェクト関係の記事の内容は緩く募集中
自分がわかる範囲であれば書いていこうかなと。

【UE4】Niagaraを触ってみる

f:id:tktknkyo:20180815131640p:plain

各Ver

UE4:4.20.1

UE4の新しいパーティクルシステムであるNiagara、ある程度触ってきたので、そろそろ記事の方も書いていきたいと思います。

 

【ナイアガラの有効化】

f:id:tktknkyo:20180815132124p:plain

 

プラグインから、FXという項目、もしくはNiagara、と検索すると出てくるので有効にしましょう。

 

Niagaraのデータ】

f:id:tktknkyo:20180815131958p:plain

Niagaraのデータは、コンテンツブラウザの右クリックの、FXという項目の中に入っています。

基本になるものが

・NiagaraSystem(NS)

・NiagaraEmitter(NE)

・NiagaraMouduleScaript(NM)

 

上からシステム、エミッター、モジュール

この三つは、カスケードの頃にあったのと似た様なものだと考えれば大丈夫です

ただ、今回はそれぞれ別々のアセットで保存されます。

f:id:tktknkyo:20180815132833p:plain

現段階では、まだアイコンらしいアイコンは実装されていないので、Niagara系のデータだけでこんな感じになります。

 

これ以外のアセットである

・NiagaraDynamicInputScript(ND)

・NiagaraFunctionScript(NF)

・NiagaraParameterCollection(NPC

・NiagaraParameterCollectionInstance(NPCI)

 この4種類、まだまだ曖昧な部分があるので間違ってる部分もありそうですがわかる範囲で書いておこうかと思います。

※()内は略称です、正式な略称かは不明

 

【NiagaraDyamicInputScript】

直接開くと、NMと似たような構造になっています

f:id:tktknkyo:20180815133539p:plain

グラフの部分はこちらです

一方、NMは

f:id:tktknkyo:20180815133634p:plain

このようになっています

NMにはMapSetというノードが多く、一番最後のOutputが変わっています。

 

重要なのが、どこに使われているのか?という事ですが。

NMの中に入っている様なイメージです。

NEの要素を動かしたりするのに、NMを使うわけですが(移動や大きさ等)

その数値をあれこれするのに使います。

 

カスケードで例えると

例えばLifetimeのモジュール

f:id:tktknkyo:20180815133958p:plain

パーティクルの寿命を設定するためのモジュールになります。

そしてこのモジュールの中の

 

f:id:tktknkyo:20180815134121p:plain

この赤枠の部分、これがNDになると考えると解りやすいと思います。

また、これによって何が便利なのか?というと

NMは、入れる数値の型を指定する必要があるのですが、これを別の型でも使えるようにしてくれます。

 

f:id:tktknkyo:20180815134355p:plain

これはモジュールの一部を写したものですが。この頭にMouduleとある部分は、エミッター上で数値を入れることができます

ただし、この場合上はColorの4チャンネルの情報

その下は3チャンネル、その下は1チャンネルの情報しか入れることができません。

 

このモジュールをエミッターに入れた場合、この様な表示となります。

f:id:tktknkyo:20180815134624p:plain

エフェクト作っている方であれば、解ると思いますが、この場合色ですが、完全に固定の色しか入れれないのは困りものです。

大量に飛ぶ粒子などは、ある程度色のランダム性を持たせると綺麗に映りやすいですし、これは位置などにも言えるので、かなり規則正しい動きになるのは、エフェクトにおいてはあまりよろしくない場合が多いです。

 

このモジュールの数値を入れれる右端に▼マークがあるのですが、ここをクリックするとメニューが出てきます。

そこからUniform Ranged Floatを選択すると、ここの数値の最大値と最小値を指定する事ができるようになります。

f:id:tktknkyo:20180815134938p:plain

f:id:tktknkyo:20180815135211p:plain

 

下の画像の、赤線の部分、これがNDになります

ダブルクリックで、中に入って編集する事も出来ます...が

カスケードと違い、このデータ自体が編集できるアセットになっているので、ここを編集して保存すると、ほかのエミッターで出したときにも、その編集した後になるので注意が必要です。

共同製作の場合、ここをいじる場合、ほかの方の作ったアセットに悪影響が出かねないので、別名で保存するなどの配慮が必要になります。

 

【NiagaraFunctionScript】

こちらは、よくある関数になります、BPやマテリアルにも同様の機能があるので、ここは飛ばさせてもらいます。

 

【NiagaraParameterCollection】

マテリアルにも、似たような機能のある、パラメータコレクションです

パラメータコレクション、という機能自体の説明としては

パラメータコレクションを参照している数値を、全て一律に変えることができる、という感じでしょうか

また、これは動的に変えることも可能です

マテリアルでもあるのですが、マテリアルインスタンスでも動的に変えることができますが最大の違いは、参照してるもの全て同時に変えてしまうということです。

 

マテリアルインスタンスの数値を変える場合、変更するマテリアルのデータを参照して動かしますが、パラメータコレクションはすべて変更してしまいます。

 

f:id:tktknkyo:20180815140819p:plain

こちらが、NPCを変更するための、BPのノードです。

左側のが実際に変更するノードですが、MIDなどと違い、ターゲットのピンがありません。

なので、参照してるもの全てを変更します、軽い気持ちでこの機能で動的に変えてしまうと、変えたくない部分まで変わってしまいます。

 

実用的にNPCを使う場合はどうしたら良いかな?と考えたのですが、モジュールなどに入れるのがいいのかなと。

動かす内容としては、動的に動かすのではなく、全体を一律に調整できるパラメータとして使ってみよう、というわけです。

 

まずは、モジュールにNPCを適用する方法を。

 

f:id:tktknkyo:20180815174921p:plain

NPCアセットを作ったら、右の方にある、AddParameterから、パラメータを作ります、名前もとりあえずつけておきましょう。

 

f:id:tktknkyo:20180815175118p:plain

モジュール側で作ったNPCを追加する場合は

ParameterCollectionの右にある+のマークから、追加していきます。

MapGetのノードから追加することも可能です。

 

f:id:tktknkyo:20180815175312p:plain

このように追加されれば大丈夫です、あとは、ここからの数値が、常にNPCで設定した数値になるようになります。

 

長くなりそうなので、実際の数値の運用関係は次の記事で纏めます。

 

 

Niagara Parameter Collection Instance】

所謂、NPCインスタンス版、だと思うのですが、これに関しては色々試そうとしたもののあまりわかっていないのが現状です...

 

というのも、NPCをセット出来るところでも、基本はセットできない作りになっているようです

モジュールなどの入れる場所で、NPCが入るところにそのままでは入れれないようです。

 

また、BPでNPCを操作できるノードがありますが、ここにNPCIが入る事もできないようです。

 

 このアセットの運用については、今のところ調べてみようかなと思っています。

具体的な動かし方等は、次以降の記事で書いていきたいと思っています。