UE5 Niagaraの基礎
UE5のVFXシステムNiagaraは従来のUE4のCascade Particleに代わってUE5で様々なエフェクト効果を作成するために便利な機能です。
Niagaraが登場して間もない頃はエディタ上でのインターフェースが直感的ではなくやや扱いにくい印象もありましたが、比較的新しいUE4やUE5ではかなりわかりやすい設定画面になっていますのでこれから始めようという方たちのために、最低限シンプルなパーティクル効果などを作成するために必要な項目や便利な要素などを解説しようと思います。
まず初めにNiagara Systemを新規作成した際に助けとなるのが用意されたテンプレートです。
Niagaraはエミッタとエミッタを管理するシステムが別々のアセットで管理されますが、エディタには最初から複数のエミッタのテンプレートが含まれています。
どのテンプレートも必要以上に複雑な設定は行われておらず、炎や電撃などの何か特定の効果を表現しているというわけではなく、シンプルな土台として扱いやすいものです。
UE4の旧パーティクルやUnityのパーティクルに慣れている人であればFountainのテンプレートを選択して土台を作成すれば、比較的なじみのあるような状態であるシンプルな粒子が放射されるようなものから試していくことが出来るでしょう。
エミッタの設定は上から「エミッタ自体の扱われ方の設定」項目、「エミッタがパーティクルをスポーンさせる具合の詳細な設定」項目、「エミッタからパーティクルがスポーンした際の初期設定」項目、「パーティクルがスポーンしてから消えるまでの間に処理される動作」項目、「パーティクルの見た目にかかわる要素」項目になっています。
ここからはシンプルなパーティクルを作る際にまず最初に設定するべき箇所を解説します。
・Spawn Rate
パーティクルを特定の割合でスポーンし続けるモジュールです。
SpawnRateは特にシンプルに使用できるモジュールで、他にもより特定の目的に応じて使用できるSpawn Per UnitやSpawn Burst Instantaneous等があります。
各モジュールは右側のチェックマークで非アクティブにできる上、+マークから新たなモジュールを選んで追加できます。
複数のモジュールの挙動の違いを切り替えて簡単に確認することが出来ます。
・Initializa Particle
Initializa Particleの項目は生成するパーティクルの初期設定を行う項目です。
パーティクル単体の寿命やシミュレーションの基準座標、粒子の重さ、初期の色、スプライト画像のサイズや回転、メッシュのサイズや回転などを設定しておくことが出来ます。
粒子タイプではなく線形のエフェクトを作る際は、Initialize Ribbonを使用します。
・Particle Update(パーティクル更新)
発射されたパーティクルがそれぞれ個々にLifetimeの間にどのように動作するのかを設定する項目です。
Fountainエミッタテンプレートに初期から入っているのは重力の様に任意のベクトル方向へ徐々に力を加え続けるGravity Forceモジュールや、Lifetimeの経過などに従って色を変化させたりできるScale Colorモジュールが確認できます。
・Sprite Renderer
FountainエミッタテンプレートのデフォルトではレンダリングにはSpriteRendererが設定されています。
粒子一つ一つに割り当てられる見た目の項目をスプライトを設定したマテリアルから設定できます。サブUV等の項目を設定し、ParticleUpdate(パーティクル更新)欄にSuvUV Animationモジュールを設定することでスプライトアニメーションを行うパーティクルも設定することが出来ます。
レンダリングモジュールとして使えるものとして、他にはMesh RendererやRibbon Renderer、Light RendererやComponent Rendereが存在します。
これらの設定をいろいろ試すことで、シンプルなパーティクルエフェクトは直感的に作成することが出来るかと思います。
最後に、より応用的な効果を作るために触る必要がある場所を紹介します。
選択したモジュールは画面右のプロパティ欄で詳細に設定できますが、多くの設定項目は値を入力する欄の▽を押すことで定数ではなく、値に対して様々な入力を処理することが出来ます。
Niagaraの強みはこの場所といっても過言ではありません。
旧来のCascade Particleではかなり回り道をして処理しなければならなかったような表現さえ、比較的少ない手順で実装することが出来ます。
応用的ですが、より複雑な表現を目指したい場合はモジュールの設定項目の値を定数ではなくどのような入力値があれば目的とするものが実現できるか、逆算して考える必要があるでしょう。