【UE】Niagara の学習メモ(随時更新)

Unreal Engine

基本用語

Niagara の基本要素

System

Niagara システムは、エフェクトを構築するために必要なものがすべて入ったコンテナです。システムの中には、全体的なエフェクトを生み出せるようにさまざまな構成要素が積み重なっています。

Niagara の概要

Emitter

エミッタは、Niagara システムでパーティクルが生成される場所です。エミッタは、パーティクルが生まれる方法、生まれたパーティクルが時間経過とともにどうなるのか、パーティクルの外観と動き方を制御します。

Niagara の概要

Module

モジュールは、Niagara のエフェクトの基本の構成要素です。モジュールをグループに追加してスタックを作ります。スタックのモジュールは、上から下へ順次処理されます。

Niagara の概要

Emitter のグループ

Emitter Spawn

CPU 上でエミッタを最初に作成したときに何が起こるかを定義します。このグループは、初期設定とデフォルトを定義するために使用します。

Niagara の概要

Emitter Update

CPU 上でフレームごとに発生するエミッタ レベルのモジュールを定義します。このグループは、パーティクルを毎フレームでスポーンし続けたい場合、パーティクルのスポーンを定義するために使用します。

Niagara の概要

Particle Spawn

パーティクルが初めて生まれたとき、パーティクルごとに 1 回呼び出されます。ここでは、パーティクルが生まれる場所、パーティクルの色やサイズなど、パーティクルの初期化の詳細を定義します。

Niagara の概要

Particle Update

各フレームでパーティクルごとに呼び出されます。パーティクルの時間的な変化に伴ってフレーム単位で変更する必要があるものをここで定義します。

Niagara の概要

Event Handler

Event Handler グループでは、特定のデータを定義する 1 つまたは複数のエミッターに Generate イベントを作成できます。そして、その生成したイベントに反応する動作をトリガーする他のエミッタに Listening イベントを作成できます。

Niagara の概要

Render

このグループでは、パーティクルの表示とパーティクル用の 1 つまたは複数のレンダラの設定を定義します。

Niagara の概要

Renderer の種類

Sprite Renderer

スプライトとは頻繁に使用されるビジュアル エフェクト (VFX) 技法の一つで、テクスチャおよびマテリアルを 2D カメラ方向平面にレンダリングします。

Niagara でスプライト パーティクル エフェクトを作成する方法

Mesh Renderer

Ribbon Renderer

自然現象のシミュレーションは簡単ではありません。特にスプライトまたはメッシュ ベースのパーティクルを使用して煙や飛行機雲などを再現するのは困難な作業です。Ribbon Emitters (リボン エミッタ) はこのようなオブジェクトのシミュレーションに最適なソリューションです。

リボン エフェクト

Sprite の種類

CPU Sprite

エフェクトによっては、数万にもおよぶパーティクルのスポーンが必要になるものがあります。しかし、多数のパーティクルを標準的な CPU で生成すると、パフォーマンスに問題が生じることがあります。

GPU スプライト エフェクト

GPU Sprite

GPU で演算処理をするため、何千もの多くのパーティクルを一度に処理できるのが利点です。高密度でより詳細なパーティクル システムを実現します。

1.1 – CPU と GPU のスプライトパーティクルの比較

マテリアルのブレンドモード

Translucent(透過)

透過ブレンド モードは、何らかの透過処理が必要なオブジェクトに使用します。

マテリアルのブレンド モード
Base Color に黒色を設定(Translucent)
Base Color に灰色を設定(Translucent)

Additive(加算)

加算ブレンド モードは、マテリアルのピクセルを受け取り、それらを背景のピクセルに加えます。つまり、明るさは落ちないということです。すべてのピクセル値が加算されるため、黒は単に透明としてレンダリングされます。このブレンド モードは、火、蒸気、ホログラムなど、さまざまな特殊エフェクトに役立ちます。

マテリアルのブレンド モード
Base Color に黒色を設定(Additive)
Base Color に灰色を設定(Additive)

良く使う Module

Emitter Update

Emitter State

ライフサイクル (ループ、存続期間、消滅) をエミッタで管理するか、エミッタを所有するシステムで管理するかを指定します。

Emitter Update グループ
Life Cycle Mode

System か Self かを選択でき、System の場合はその Emitter を所有している System の System State に設定されている値が適用され、

Emitter State 側では各項目に値を設定できなくなる。

Self の場合は Emitter State 側で各項目に値を設定できるようになるが、どうしても Emitter 側で個別に設定したい場合を除いて基本的には System にした方が処理が軽い。
(参考:Unreal Engine 5 Niagaraにおける実践的な最適化とスケーラビリティ【CEDEC 2023】

Loop Behavior

ループに関する挙動を設定でき、Once の場合は1度のみ再生される。

Multiple の場合はループ回数を指定して再生でき、以下の GIF の例では Loop Count を2に設定している。

Infinite の場合は無限にループ再生される。

Loop Delay / Delay First Loop Only

ループ再生に入る前の遅延を設定できる。

以下の GIF の例では Loop Behavior を Infinite に、Loop Delay を1に設定している。

また、Delay First Loop Only を true にする事で最初の再生時のみ遅延させて2回目以降のループ再生では遅延を挟まないようにする事も出来る。

Spawn Burst Instantaneous

すべてのエミッタにパーティクルのバーストを自発的にスポーンするモジュールです。

System Spawn グループ
Spawn Count / Spawn Time

Emitter 生成時にスポーンさせるパーティクルの数や、Emitter 生成の何秒後にパーティクルをスポーンさせるかを設定できる。

以下の GIF の例では Spawn Count を10に、Spawn Time を1に設定しているが、同じサイズのパーティクルが同じ場所にスポーンしているため Spawn Count の違いは分かりにくい。

Loop Count Limit

Loop Behavior が Multiple か Infinite に設定されている時に何回目のループ再生までパーティクルをスポーンさせるかを設定する事が出来る。

以下の GIF の例では Loop Count Limit を2に設定しており、3回目以降のループ再生からはパーティクルがスポーンしないようになっている。

Spawn Probability

パーティクルのスポーン確率を0から1までの値で設定できる。

例えば、0.7 という値を設定すると 70% の確率でパーティクルがスポーンするが、30% の確率でパーティクルがスポーンしなくなる。

Spawn Rate

Spawn Rate

1秒間にスポーンさせるパーティクルの数を設定できる。

Spawn Rate:10
Spawn Rate:5

また、Spawn Burst Instantaneous と同様に Spawn Probability でパーティクルのスポーン確率を設定する事が出来る。

Spawn Probability:0.5

Beam Emitter Setup

このセクションは編集中です

Particle Spawn

Initialize Particle

Lifetime、Position、Mass、Color などの Point Attributes、Sprite Size、Sprite Rotation などの Sprite Attributes、Mesh Scale などの Mesh Attributes です。このモジュールは、Particle Spawn グループのスタックの一番上に配置されている必要があります。

Particle Spawn グループ
Lifetime Mode

パーティクルの寿命の設定方法を Direct Set にするか Random にするかを設定でき、Direct Set の場合はパーティクルの寿命を Lifetime に直接設定するが、

Random の場合は Lifetime Min(寿命の最小値)と Lifetime Max(寿命の最大値)の間のランダムな値がパーティクルの寿命になる。

Color Mode

パーティクルスポーン時の色の設定方法を Unset にするか Direct Set にするか、

Random Range にするか、

Random Hue/Saturation/Value にするかを設定できる。

Color Mode を Random Range に変更した際に出てくる Color Channel Mode を Link RGBA にすると1つの乱数のみを使用して RGB と透明度の両方の値を決定させるが、Link RGB / Link A にすると RGB で1つ、透明度で1つの乱数をそれぞれ使用して各値を決定させ、Random Individual Channels にすると RGB と透明度の全てのチャンネル(4つ)がそれぞれ別の乱数を使用して各値を決定させる。

また、Color Mode を Random Hue/Saturation/Value に変更すると Hue(色彩)、Saturation(彩度)、Value(明度)、Alpha(透明度)の最小値と最大値をそれぞれ個別に設定できるようになる。

Position Mode

パーティクルのスポーン位置の設定方法を Unset にするか Direct Set にするか、

Simulation Position にするかを設定できる。

Mass Mode

パーティクルの質量の設定方法を「Unset / (Mass of 1)」にするか、Direct Set にするか、

Random にするかを設定できる。

「Unset / (Mass of 1)」の場合は質量が1であり、この状態で Point Force 等でパーティクルを移動させると通常の速さで移動するが、

以下の GIF のように質量を Random か Direct Set で大きい値に変更すると移動速度が小さくなる。

Add Velocity

このセクションは編集中です

Shape Location

このセクションは編集中です

Spawn Beam

このセクションは編集中です

Beam Width

このセクションは編集中です

Particle Update

Particle State

パーティクルの存続期間が経過したときにシミュレーションからパーティクルをキル (消去) する処理を行います。

Particle Update グループ
Kill Particles When Lifetime Has Elapsed

パーティクルが寿命を迎えた際にそのパーティクルを削除するかどうかを設定できる。

以下の GIF の例では Loop Behavior が Infinite、Loop Duration が 0.5、パーティクルの Lifetime が 0.5 に設定してあり、Kill Particles When Lifetime Has Elapsed が true の場合はパーティクルが寿命を迎える 0.5 秒毎にそのパーティクルが削除されているため、特に何も変化は無いが、

Kill Particles When Lifetime Has Elapsed が false の場合はパーティクルが寿命を迎えても削除されずにその場に留まり続けているため、明るさが増している。

Scale Color

色をカーブ等で変化させたり、

透明度をカーブ等で変化させたり出来る。

Solve Forces and Velocity

Speed Limit でパーティクルの速さを、Acceleration Limit でパーティクルの加速度の大きさを制限できるが、基本的には Add Velocity 等のモジュールと一緒に使用する。

Scale Sprite Size

このセクションは編集中です

Curl Noise Force

このセクションは編集中です

Drag

このセクションは編集中です

Vortex Force

このセクションは編集中です

Point Attraction Force

このセクションは編集中です

Color

このセクションは編集中です

Sprite Rotation Rate

このセクションは編集中です

Wind Force

このセクションは編集中です

Aerodynamic Drag

このセクションは編集中です

Sub UVAnimation

このセクションは編集中です

Scale Mesh Size

このセクションは編集中です

Update Mesh Orientation

このセクションは編集中です

最後に

参考文献

公式ドキュメント

書籍

その他

お問い合わせ

    タイトルとURLをコピーしました