YouTubeで見つけて以来ずっと作りたかったNiagaraエフェクトが出来た。
というわけで今回はこれの解説を。長くなるので記事を2回に分けて投稿。
ai-gaminglife.hatenablog.com
環境
UE4.20.0
Sample Static Meshモジュールについて
Niagara Moduleとして予め用意してあるStaticMesh関連のモジュールはいくつかある。その内使用するのは"Sample Static Mesh"と"Static Mesh Location"。まずはこの2つがどのようなモジュールかをみていく。
Content Browserから Niagara Content -> Modules -> Spawn -> MeshInterfaces -> SampleStaticMeshで"Sample Static Mesh"の中身を見ることが出来る。
これが"Sample Static Mesh"の中身。
Map Getで Module.○○ ピンを追加するとエミッター編集画面でそのパラメータを編集することが出来る。
ここではModule.StaticMeshで取得したStaticMeshからそのMesh上のランダムな位置の法線、色、位置等の情報を取得し、それを "Particles.Module.Mesh○○" という形でMap Setしている。これで他のモジュールからParticles.SampleStaticMesh.Mesh○○という形で入力として与えたStaticMeshの情報を取得することが出来るようになる。
Static Mesh Locationモジュールについて
続いてStaticMeshLocationを見てみる。
全体図。ここでは全体は解説せず、必要な部分だけを抜き出して解説する。
Map GetでParitcles.SampleStaticMesh.MeshPosition、つまりSample Staic Meshの入力として与えたStaticMesh表面の位置等を取得している。
ごちゃごちゃ色々な処理が書かれているが重要なのは赤で囲んだ部分だけ。コメントで囲まれた部分で調整されたParitcles.SampleStaticMesh.MeshPositionをParticles.Position、つまりパーティクルそのものの位置としてSetしている。
StaticMeshの形にパーティクルをスポーンさせる
Niagara Emitterを新規作成。不要な以下のモジュールを削除する。
- Paritcle Spawn -> Add Velocity
- Particle Spawn -> Sphere Location
- Particle Update -> Acceleration Force
続いてParticle Spawnに"Sample Static Module"と"Static Mesh Location"モジュールを追加する。この時追加する順番を間違えないように。
Sample Static MeshのStatic Meshパラメータに好きなメッシュを設定する。今回はスターターコンテンツに入っている椅子を設定した。
分かりづらいが椅子の形にパーティクルが配置されている。ただこれでは分かりづらいので次の項でパラメータを調整していく。
パラメータを調整する
今のままでは何度もパーティクルがスポーンされて良くない。最初に一回だけポンと出現させて消えてほしい。
これには"Spanw Burst Instantaneous" モジュールを使うとよい。CascadeのSpawnモジュール、にあったBurstに相当するものでSpawn Countに与えた数だけ最初にパーティクルをスポーンさせる。
Emitter Update -> Spawn Rateを削除し"Burst..."モジュールを追加。Spawn Countを2000に設定する。
何度もBurstが繰り返されてしまっている。今回は1回だけBurstして終わってほしい。これはEmitter Update->Emitter Life CycleのMaxLoopCountを1に設定すればよい。こうすると、NextLoopDurationだけ時間が経過すると自動で終了するようになる。
Particle Spawn -> Set VariablesでLifetimeとSpriteSizeを変更することでパーティクルの寿命、サイズを設定することが出来る。今回は画像の様に値を設定する。
最後に色を設定する。色はParitlce Update -> Colorで設定されている。
赤で囲んだアイコンをクリックすると見慣れたカーブ編集画面に移ることが出来る。カーブエディタで好きな色に設定する(4.20.0時点でカーブエディタはかなり不安定なので注意。私はクラッシュした)。
これで完成。
ここまで理解できれば後はそこまで難しくない。続きは次の記事で。