7/16(水)に、COYOTEが主催するオンラインセミナー「Unreal Engine5を実務レベルで!エフェクトステップアップ塾」が開催されました!
「UE Niagaraが使えるようになりたい」と思っていても、何から始めればよいのかわからない。そんな人も多いのではないでしょうか。
今回のイベントでは、COYOTEエフェクトチームの梶原悠が、UE Niagaraの基礎とつまずきやすいポイントへの対処法を解説。
また後半では、同チームの竹沢和仁も交え、実際の案件ではどのようなことが求められるのか、実体験ベースでのクロストークや質疑応答が行われました。
これからUE Niagaraを触ろうと思っている方にもお気軽に読んでいただければと思います。
対象読者
・UE Niagaraの基本機能について知りたい方
需要の高まりに応えるために!UEへのアプローチ
これからNiagaraを学び始める方向けに、Niagaraの画面の基本構成や、主に使用する機能について、UnityのSyurikenと比較しつつモジュールやパラメータについて解説しました。
UE Niagara基礎解説
NiagaraSystemの作成方法
コンテンツブラウザの「Add」ボタンを押下 > 「NiagaraSystem」を選択。
テンプレートから「Fountain」のNiagaraEmitterを選択し、「Create」ボタンを押下。
任意の名前を付けて新規作成が完了。
空のNiagaraSystemを作成したい場合は「Create Empty Niagara System」を押下します。
※実際の案件では名前を付ける際に、「NS_」、「FX_」を頭文字に設定することが多いです。

NiagaraSystem画面の基本構成
・プレビュー
作成したエフェクトの動きをリアルタイムで確認する。
・パラメーター
エフェクト内で使用する様々なパラメーターを管理。
・システムオーバービュー
エフェクトを構成するエミッタが表示されるメインの作業エリア。
・タイムライン
エフェクトの再生時間、ループのタイミングを確認、調整。
・詳細パネル
選択したモジュールのパラメーターの設定値が表示され、各種パラメーターを編集できる。

モジュールの追加方法、計算順
各エミッタの+ボタンからモジュールを追加することができます。
モジュールは上から下へ順に処理が実行されます。
配置する順番でエフェクトの挙動が変化するため、モジュールの並び順について意識する必要があります。

エミッタのソロ表示、非表示の方法
エミッタ上部の人型アイコンを押すことで選択したエミッタをソロ表示することができます。
エミッタを非表示にしたい場合は、選択したエミッタ上部のチェックボックスをオフにします。
複数のエミッタを表示する際は、表示したいエミッタをドラッグで選択し、右クリックから「Isolated」を押下してチェックを入れます。

複数のエミッタを非表示にする際は、非表示にしたいエミッタをドラッグで選択し、右クリックから「Enebled」のチェックを外します。

Localスペース、Worldスペース
- Localスペースとは
親オブジェクトの動きに追従させたいときに設定する項目です。
例)キャラクターのオーラ、武器に纏わせる炎 - Worldスペースとは
親オブジェクトに追従せず、独立して動作する項目です。
例)魔法陣、ステージの足元に発生する煙 - 設定方法
エミッタのPropertiesの詳細画面にあるLocalSpaceのチェックをオン/オフする。

基本的な動的入力(ダイナミックインプット)
その場で計算した結果を返す関数のようなものです。
自分で計算式を作ったり、計算を組み合わせて様々な表現を作り出すことが可能です。
ダイナミックインプットの設定方法
モジュールパラメーター右端の「▼」から検索して機能を追加。

実際の制作現場でよく使用するものは以下2つです。
Random Range Flort:指定した範囲の中からランダムな値を返す。
Float from Curve:カーブを使用して、時間や割合に応じた値の変化を設定。

Niagaraで主に使用する機能とUnity Shurikenとの比較
Lifetime
Shuriken:ParticleSystem > StartLifetime ➡ Niagara:InitializeParticle > Lifetime

StartColor
Shuriken:ParticleSystem > StartColor ➡ Niagara:InitializeParticle > ColorMode
NiagaraのColorModeは「Unset(初期カラーが設定されていない状態)」になっていることもあるので、その場合はColorModeを「DirectSet」に変更すると初期カラーを設定することができます。

時間経過によって色を変えたい場合、InitializeParticle内のColorModeではなく、ParticleUpdate以下のScaleColorモジュールを使用します。
ScaleModeをRGBALinearColorCurveに設定し、色の遷移を設定します。
StartSize
Shuriken:ParticleSystem > StartSize ➡ Niagara:InitializeParticle > SpriteSizeMode
固定のサイズでパーティクルを生成したい場合はUniform、最小値、最大値の間からランダムな大きさで生成したい場合は、RandomUniformといったように用途別にモードが分かれています。

時間経過によってサイズを変化させたい場合は、Initialize particle内のSpriteSizeModeではなく、ParticleUpdate以下のScaleSpriteSizeを使用します。
StartRotation
Shuriken:ParticleSystem > StartRotation ➡ Niagara:InitializeParticle > SpriteRotationMode

時間経過によって回転させたい場合は、Initialize particle内のSpriteRotationModeではなく、ParticleUpdate以下のSpriteRotationRateを使用します。
Spawn
Shuriken:ParticleSystem > Emission > RateOverTime ➡ Niagara:EmitterUpdate > Spawn Rate、Spawn Burst Instantaneous、Spawn Per Unit

- NiagaraのSpawnの種類は以下の通りです。
・SpawnRate
時間で何個パーティクルを発生させるか設定する。
例)炎、煙
・SpawnBurstInstantaneous
指定したタイミングで一定数のパーティクルを一度に発生させる。
例)爆発、ヒットエフェクト
・SpawnParUnit
エミッターが移動した距離に応じて発生させる。移動量に合わせて一定間隔で生成する。
※プレビュー画面での確認は基本的にできませんが、シーケンサーでアタッチしたアクタを動かしたり、実際のゲーム画面で確認することが多いです。
ShapeLocation
Shuriken:ParticleSystem > Shape ➡ Niagara:ParticleSpawn > ShapeLocation

Unityでは、Shapeの形状をギズモで確認することができるが、Niagaraでは形状を確認する機能がないため、大量のパーティクルをその場にとどめて発生させる方法が簡単で分かりやすい確認手順になります。

Velocity
Shuriken:ParticleSystem > Velocity over Lifetime ➡ Niagara:Particle Spawn > AddVelocity
AddVelocityを使用する際は、VelocitySpeedにRandomRangeFloatといったダイナミックインプットを追加し、速度にランダム性を持たせることが多いです。
また、一定の速度でパーティクルを飛ばさないために、重力を設定するGravityForce、減衰を付与するDragモジュールも併せて使用することが多いです。

※UnityはY軸が上、UEではZ軸が上と軸の方向が異なるため、設定する際は意識する必要があります
マテリアルの基礎
マテリアルとは
UEにおけるマテリアルは、Unityでいう「シェーダー」に相当します。
エフェクト自体の見た目を制御、決定する重要な要素です。
UEでエフェクトを作成する際は、パーティクルの挙動をNiagaraで設定し、見た目はマテリアルで制御するように役割分担されています。
マテリアルインスタンスとは
親マテリアルの性質を受け継いだ子マテリアルのことを指します。
実際の制作現場では、基本的にマスターマテリアル(親)からマテリアルインスタンスを作成して適用します。
マテリアルインスタンスを使用すると、マスターマテリアルから、色、発光の強さ、UVスクロール速度などを変更することができます。
1つのマテリアルを複数のエフェクトに共有することができ、管理がしやすく、作業効率の向上に繋がります。
マテリアルインスタンスの作成手順
1.マスターマテリアルを選択し、右クリック
2.メニューからCreateMaterialInstanceをクリック

マテリアルをNiagaraに挿入する際は、Renderモジュール以下のSpriteRendererから割り当てることができます。
モジュールの実例紹介
実際のエフェクトを例に、各エミッタ内のモジュールがどのような働きをしているか解説します。
ScaleSpriteSize
時間経過によってエフェクトのサイズを変更することができます。
フレアエフェクトの拡縮などに使用されます。

AddVelocity
VelocityModeをFromPointに設定すると、中心から外側に飛んでいく動きを作ることができます。
また、ShapeLocationの半径を大きくし、AddVelocityの速度をマイナスにすることで外側から中心に収束する動きを作ることができます。

▲AddVelocityの値を正の値にすると中心から飛んでいく動きになる
▲AddVelocityの値をマイナスにすると外側から中心に収束する動きになる
UpdateMeshOrientation
メッシュの回転に使用します。
スラッシュエフェクトなどで剣の軌跡に使用されます。
※モジュール名に「Mesh」「Sprite」と記載のあるものは、それぞれMeshRenderer、SpriteRendererでのみ使用することができます。
MeshRenderer
モジュールを複数使用して1つのエミッタで制御することも可能です。
VortexForce、AccelerationForce
Force系のモジュールを併用することでAddVelocityの動きにランダム性を持たせることができます。
- 以下は応用的なモジュールです。Niagaraに慣れてきたら調べてみると良いかもしれません。
DynamicMaterialParameters
マテリアルのパラメータをNiagaraで制御することができます。
ParallaxOcclusionMapping
地割れなど立体的なエフェクトを作成する際に使用します。
Niagaraつまづきポイントの紹介
COYOTEに在籍するエフェクトデザイナーにアンケートを実施し、Niagaraの学習にあたり特に難しいと感じたポイントと対策について紹介しました!
モジュール数が多い!
すべてのモジュールを一度に覚える必要はありません。
制作現場での使用頻度が高い、基本的なモジュールを覚え、必要になったタイミングで都度覚えていく方法がおすすめです。
検索機能を活用することで、使用したいモジュールを効率的に探すことができます。
「int」や「float」ってなに?
int = 整数
1,10,100といった値
float = 浮動小数点数(小数を含む数値)
1.5、3.14,0.25 と言った値
使用する場面としては以下があります。
RandomRangeInt

RandomRangeFloat

クロストーク
クロストークでは、表現のディティールとクオリティを上げるために必要な点について聞かれると、「DynamicInputを使用したランダム性の表現や物理的な挙動を意識した動きを付けること」とし、物理法則に則った自然な動きを付けることがエフェクトのクオリティを引き上げる要素の一つであると回答しました。
質疑応答
質疑応答では、社内メンバーから寄せられた質問について、以下のように回答しました。
Q1:チュートリアルからの脱却のために必要なことを教えてください。
A1:案件に入って経験を積むことです。
エフェクトの発注があった際に、チュートリアルで学んだ知識、経験を基に自分の引き出しから組み立てていく過程の繰り返しが重要です。わからないことを調べたり、知見のある人に質問するなどして、新しいことに挑戦することが知識の定着に大切になります。
Q2:UnityからUEに移行したが、モジュールやパラメータが多く混乱しています。学習に良いサイトはありませんか?
A2:弊社ブログ「VFXGEAR」で実例を交えた記事を更新していく予定です。また、作例の発信などをされている以下のサイトも参考になります。
Kurie氏の記事
FLYPOT秋山高廣氏のホームページ
VFXアーティストtaka氏のnote
Q3:ポートフォリオ制作で気にかけるべき点はどんなことですか?
A3:「自身の得意とする表現、作成できることについてアピールできる作品」を意識してエフェクトを制作することが重要です。
また、就職したい企業や携わりたいIPがある場合は、そのゲーム内で使用しても遜色ないエフェクトを作成できると即戦力と認識される可能性があります。
Q4:UEのNiagaraSystemならではの表現や強みはどんな点ですか?
A4:DynamicInputや独自モジュールの作成、ブループリントとの連携といった自由度の高さ、プレイヤーの行動に応じたインタラクトなエフェクトの作成が可能な点です。
例)ビームエフェクトの長さを、壁やキャラクターに当たった位置でルックを保ちつつ可変にすることができます。
Q5:UE5で汎用マテリアルを作ってインスタンス運用する場合、元となるマテリアルの処理負荷は、どのツールや指標で確認していますか?
A5:案件にもよるが、ビューの機能であるシェーダー複雑度や、レンダードック、アンリアルインサイトを使用しています。
Q6:Niagaraエフェクト制作における、パラメーター、ユーザーパラメーター、属性の理解と学習方法について教えてください。
A6:竹沢が個人的に情報発信する予定です。
もここ@VFX Artist (Mococo) (@AnimaMococo5656) on X
最後に
UE Niagaraの理解を深めたい方、これから触れる方への導入や復習に適した内容のセミナーのため、今回の記事を参考に学習や制作を進めるのも良いと思います。
いきなり全ての機能を覚えるのではなく、まずは今回紹介したところから少しずつ覚え、エフェクト制作に取り組んでいくことがスキルアップに繋がります。
COYOTEでは、今後も様々なイベントを開催していきます。
随時COYOTE公式Xでお知らせしていきますので、興味のあるものがございましたらご参加いただけると嬉しく思います!

