関連ブログ
- [UE4][UE5]開発環境の容量を少しでも減らす 2024.08.14UE
- [UE5] PushModel型のReplicationを使い、ネットワーク最適化を図る 2024.05.29UE
- [UE5]マテリアルでメッシュをスケールする方法 2024.01.17UE
CATEGORY
2019.04.24UE4UE/ Effect
執筆バージョン: Unreal Engine 4.21 |
初めまして、王様です。
初めてブログ書きますが、折角なのでNiagaraに触れてみようと思います。
こんな感じに飛んでる粒子が突然MESHの形になるエフェクトを作ってみます。
以下のステップを踏んて、エフェクトを作成します:
それでは、実践してみましょう。
今回使用するUE4はバージョン4.21.2。
Niagaraはまだ正式に実装された訳ではないので、まずPluginsでNiagaraとNiagaraExtrasをEnabledにしないと使えないです。
Enabledにして、使えるようにしましょう。
これでNiagaraは使えるようになりました。NiagaraEmitterを作ってください。
いろいろな形なパーティクルが選べるですが、ここでは一番目のDirectinalBurstを選びます。
NiagaraEmitter を作成した後 この NiagaraEmitterを含めたNiagaraEmitterSystemも作成します。
ここではNiagaraEmitter しか触らないですが、NiagaraEmitterSystemじゃないとレベル上に配置できないため、ちゃんと作成しましょう。
NiagaraEmitterの見た目はこんな感じです。
右側のパネルに注目してみよう,Cascadeを使ったことある人はたぶん見たことあるように感じると思います。
実際Cascadeで使い慣れしたモジュールも多数登場します。
NiagaraEmitterを作成し終わったので、パーティクルの形を作っていきます。
まず下の画像通りにパラメーターを設定していきます。
要らないモジュールを消して、足りないモジュールを追加します。
モジュールを追加したいとき、右側の+ボタンを押して、モジュールをサーチしましょう。
全てのパラメーターを設定すると、パーティクルはこんな感じになります。
後は粒子が突然MESHの形になる部分です、これはNiagaraModuleScriptの力を借りて作ります。
NiagaraModuleScriptを作成して、myNiagaraと命名します。
左側にあるScriptのパネルをいじります。
ModuleUsageBitmaskを画像みたいに設定します。
設定完了した後、NodeGraphでこんな感じにノードを繋げます。
MapGetのノードに四つのPinをつくります。
気を付けなければならないところは、Pinの名前を変更できるのですが、「.」の前の部分を変えるとErrorを吐き出しますので、変えないようにしてください。
Module.NewVaiable ModuleのCurveForFloatsを追加
Particles.NormalizedAge Float値を0~1に 正規化します
この二つのPinを使ってTimeLineを作成し、粒子をMESHの形に変化するタイミングを操作します
Module.NewVaiable001 ModuleのStaticMesh を追加
Particles. Position 粒子のPositionを持ってきます
この二つのPinを使って粒子がStaticMeshの形を変わる動きを作ります。
結局この NiagaraModuleScript使って出力したい値はパーティクルの位置ですので、
MapSetのノードに Particles. PositionのPinだけを追加します。
全てのノードを繋げて、SAVEしましょう。
NiagaraEmitterに戻って、 NiagaraModuleScripで自作したModuleを適用させよう。
Particle Update の右の+ボタンを押して、My Niagaraをサーチして、適用します。
適用されたモジュールの見た目はこんな感じになります。
Curve は粒子がどのタイミングでMESHの形になるのをTimeLineで設定できる。
Mesh 粒子はDefault Meshに設定されたMeshの形になります。好きなMeshを設定しよう。
ちゃんとモジュールの設定をしてたら、パーティクルはこんな動きになります、これでエフェクトが完成します。
今回はNiagaraに軽く触ってみた、NiagaraはCascadeよりも複雑そうに見えるですが、Moduleを自作できる分、楽しさも倍増したように思えます。
興味ある方は是非Niagaraを使ってエフェクト作ってみてください!