moyasiエフェクト館

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


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

【Niagara】BPで動的にNiagaraを制御する

f:id:tktknkyo:20190410173413p:plain

Niagaraにて、BPと連動する事で、数値を動的に変える方法を一つ紹介します。

 

バージョンは4.22.0です。

 

 

まずは確認用のデータを作ります。

 

f:id:tktknkyo:20190411051528p:plain

NiagaraSystemから

 

f:id:tktknkyo:20190411051623p:plain

 

Create a new system from a set of selected emitters

から

Fountain
を選択してNiagaraSystemを作ります。

 

f:id:tktknkyo:20190411052005p:plain

 

上に向かってparticleが放出され、重力によって下に落下する動きのものが、生成されています。

 

ただ、このままでは若干解りにくいので

少し弄ります。

 

f:id:tktknkyo:20190411052454p:plain

まずは、Calculate Size by Massのモジュールから、particleの大きさを小さくします

今回はXとYに0.25にします。

 

f:id:tktknkyo:20190411052737p:plain

次に、Colorのモジュールから色を変更します

見やすいように、今回は青色でエミッシブに高い数値を入れて発光させましょう

Bを100に設定しました。

 

f:id:tktknkyo:20190411052922p:plain

発生数が少ないと確認しにくいので

SpawnRateを1000にして、発生数を増やします。

 

f:id:tktknkyo:20190411053025p:plain

放出位置にブレ幅があり、少し確認しにくい部分もあるので

Sphere Locationの

Sphere Radiusを0に設定して、発生位置のブレ幅をなくしましょう。

 

f:id:tktknkyo:20190411053233p:plain

 

これにて確認用のparticleとしては完成です

青い粒子が、大量に上昇し、重力によって落下します。

 

 

 

 

今回は、BPで制御して、この様な動きを作りたいと思います。



今回はレベルブループリントで発生させています。

 

f:id:tktknkyo:20190411054610p:plain

単純にレベルブループリントで発生させる場合は

このようになります。

発生の基準の座標は、レベルに配置したCubeから座標を取ってきています。

 

 

ブループリントで動的に制御する場合。

まずはNiagara側で、ブループリントで制御する用のパラメータが必要になります。

 

f:id:tktknkyo:20190411055157p:plain

 

パラメータの部分の+のアイコンから出てくるメニューで

Vectorを選択し、Vector型のパラメータを追加します。

名前はUser.Locationとしました。

名前は自由と言いたい所ですが

最初のUser.までは必須なので注意です、全て小文字でも恐らく大丈夫です。

 

追加したパラメータが、ユーザーの中にあるかを確認してください。

ここの名前で判断しているようで、ここ以外の場所に入っている場合は

名前が間違っていると思われます。「.」まで必要なので注意してください。

 

f:id:tktknkyo:20190411055657p:plain

次に、作ったパラメータをNiagaraのデータ内に挿入する必要があります。

Positionをこのように書き換えます。

Engine.Owner.Position は、エフェクトを配置した座標を取ってきてくれます。

今回の場合、User.Locationで配置した座標もとってこれば不要とはなりますが。

計算をわかりやすくする為に、この用に今回は設定しておきます。

 

これにて、Niagara側での設定は完了です。

 

 

f:id:tktknkyo:20190411060322p:plain

 

今回は、円を描くように発生位置を制御したいので

この様に作りました

SinとCosを使って円を描く処理です。

また、最後にLocationの変数にSetしておきます。

 

f:id:tktknkyo:20190411060622p:plain

 

最後に、このように繋げれば完成です。

先ほどの円を描いて、Locationの変数にSetした後に

Set Niagara Variable(Vector3)

を繋ぎます。

 

また、このノードには、Niagaraそのものを発生させているノードから
Retum Valueの情報をターゲットに接続して、発生させたエフェクトと関連付けます

In Variable Nameには、Niagaraで設定しておいたパラメータ名にしておきます。

最後に、SetしていたLocationの変数をGetしてきて繋げます。

 

 

これにより、BeginPlayにてエフェクトを発生させ

その発生させたエフェクトに対して

Set Niagara Variable(Vector3)
をTickで毎フレーム処理をさせる事で

User.Locationのパラメータに毎フレーム円を描く座標を持ってきて、それを更新させます。

 

このUser.LocationはNiagara上の設定で

エフェクトを配置した座標から加算しています

それにより、配置した場所を基準にくるくる回る処理が完成しました。