ナイアガラの概要

このページでは、Unreal Engine 4 のナイアガラ VFX システムの概要について説明します。

Windows
MacOS
Linux

カスケードとナイアガラは両方とも Unreal Engine (UE4) 内でのビジュアル エフェクト (VFX) の作成に使用できますが、ナイアガラを使用して VFX を作成、調整する方法は、カスケードとはかなり異なります。

ナイアガラは Unreal Engine の次世代 VFX システムです。ナイアガラを使用することで、テクニカル アーティストはプログラマーのサポートなく、自分で追加の機能を作成できます。VFX システムは、わかりやすく、使いやすいシステムでありながら、できる限り適応性と柔軟性に富んだシステムになるよう設計されています。

ナイアガラのコア コンポーネント

ナイアガラ VFX システムには、次の 4 つのコンポーネントがあります。 システム エミッタ モジュール パラメータ

システム

ナイアガラ システムは、複数のエミッタ用のコンテナであり、これらすべてのエミッタを 1 つのエフェクトにまとめます。例えば、花火エフェクトを作成する場合、花火で複数のバーストが必要になる場合があります。そのためには、複数のエミッタを作成して、作成したすべてのエミッタを Firework というナイアガラ システムに配置します。 ナイアガラ システム エディタでは、システム内にあるすべてのエミッタまたはモジュールの任意の要素を変更および上書きすることができます。システム エディタの [Timeline (タイムライン)] パネルでは、どのエミッタがシステムに含まれているかが示されており、このパネルを使用して、それらのエミッタを管理できます。 エミッタ エディタとシステム エディタはほとんど同じです。システム エディタ インターフェースの詳細については、「ナイアガラ システムとエミッタ エディタのリファレンス」 を参照してください。システム エディタで動作が異なる UI 要素は、各セクションで示されています。

エミッタ

ナイアガラ エミッタはモジュールのコンテナです。ナイアガラ エミッタは 1 つの目的にしか使用できませんが、再利用することができます。ナイアガラ エミッタ固有の特長の 1 つは、モジュール スタックを使用してシミュレーションを作成し、同じエミッタでそのシミュレーションを複数の方法でレンダリングできることです。引き続き花火エフェクトを例として挙げると、火花用のスプライト レンダラと、火花に続く光線用のリボン レンダラを含むエミッタを 1 つ作成することができます。 ナイアガラ エミッタ エディタ インターフェースの詳細については、「ナイアガラ システムとエミッタ エディタのリファレンス」 を参照してください。

モジュール

ナイアガラ モジュールは、ナイアガラ VFX の基本レベルです。モジュールは、カスケードのビヘイビアに相当し、一般的なデータとの対話、ビヘイビアのカプセル化、他のモジュールとのスタック、および関数の作成を行います。 モジュールは High Level Shading Language (ハイレベル シェーディング ランゲージ、略称:HLSL) を使用して作成されますが、グラフでノードを使用して視覚的に作成することもできます。関数を作成したり、入力を含めたり、値やパラメータ マップに書き込んだりすることができます。グラフで CustomHLSL ノードを使用して、HLSL コードをインラインで記述することもできます。 ナイアガラ エミッタで使用可能なデフォルトのモジュールの詳細については、「ナイアガラ システムとエミッタ モジュールのリファレンス」 を参照してください。

パラメータとパラメータの型

パラメータは、ナイアガラ シミュレーションにおいてデータを抽象化したものです。パラメータには、パラメータが表すデータを定義する型が割り当てられています。パラメータには、次の 4 つの型があります。 プリミティブ:幅広い精度とチャンネル幅を持つ数値データを定義します。 列挙型:名前付きの値の固定セットを定義し、いずれかの名前付きの値を受け入れます。 構造型:プリミティブ型と列挙型を併用したセットを定義します。 データ インターフェース:外部データ ソースからデータを提供する関数を定義します。これは、UE4 の他の部分のデータであったり、外部アプリケーションのデータであったりする場合があります。

プラス記号 アイコン (+) をクリックして、[Set new or existing parameter directly (新規または既存のパラメータを直接設定する)] を選択すると、エミッタにカスタムのパラメータ モジュールを追加できます。Set Parameter モジュールをスタックに追加します。Set Parameter モジュールの プラス記号 アイコン (+) をクリックして [Add Parameter] を選択して既存のパラメータを設定、または [Create New Parameter] を選択して新しいパラメータを設定します。これらのエミッタ モジュールや他のエミッタ モジュールの詳細については、「ナイアガラ システムとエミッタ モジュールのリファレンス」 を参照してください。

ナイアガラ スタック モデルとスタック グループ

ナイアガラでのパーティクル シミュレーションは stack&mdash として動作します。スタック シミュレーションがスタックの上流から下流に向かって、「モジュール」と呼ばれるプログラム可能なコード ブロックを順番に実行して行われます。各モジュールは、モジュールの実行時を説明するグループに割り当てられます。詳細は、「ナイアガラ キーコンセプト 」と「ナイアガラ システムとエミッタ モジュール リファレンス 」をご覧ください。

テンプレートおよびウィザード

初めてナイアガラ エミッタまたはナイアガラ システムを作成する際は、作成するエミッタまたはシステムの種類に関して複数のオプションを提示するダイアログが表示されます。これらのオプションの 1 つに、テンプレートを選択する方法があります。これらのテンプレートは、複数の一般的な基本エフェクトに基づいており、各種モジュールがすでに含まれています。 テンプレートのパラメータはいずれも変更可能です。どのモジュールも追加、変更、または削除することができます。また、システム テンプレートでは、どのエミッタも追加、変更、または削除できます。テンプレートは、クリエイティビティを促進するために、すぐに操作できるように作成されています。ナイアガラ エディタ UI の詳細については「ナイアガラ エディタ UI リファレンス 」を参照してください。

システム ウィザード

システム ウィザードには、新しいシステムを作成するための次のオプションがあります。 * **New system from selected emitters**:このオプションを選択して **[Next]** をクリックすると、使用可能なエミッタのリストが表示されます。このリストにはプロジェクトの既存エミッタとテンプレートのエミッタの両方が含まれます。新しいシステムに含めるエミッタを選択して、緑色の **[プラス]** (**+**) アイコンをクリックして追加します。**[Finish (完了)]** をクリックしてシステムを新規作成します。既存のエミッタを選択すると、これらのエミッタが継承されます。テンプレートのエミッタを選択すると、継承はありません。また、テンプレートのエミッタはインスタンスです。厳密にシステムにローカルにするか、別のエミッタ アセットとして保存することができます。

クリックしてフルサイズ表示。

  • New system from template:このオプションを選択して [Next] をクリックすると、一般的に使用される複数のエフェクト システムを表示するテンプレートのリストから選択できます。エミッタ テンプレートと同様に、このリストはアート関連の責任者やクリエイティブ ディレクターによって作成される場合があります。UE4 を初めて使用する方のために、このオプションでは、ナイアガラでの FX システムのビルド方法のサンプルが提供されます。

クリックしてフルサイズ表示。

  • Copy existing system:このオプションを選択して [Next] をクリックすると、使用可能なシステムのリストが表示されます。コピーするシステムを 1 つ選択して [Finish (完了)] をクリックします。

クリックしてフルサイズ表示。

  • Create empty system:このオプションを選択すると、システムにはエミッタやエミッタ テンプレートが含まれません。このオプションは、他のシステムとまったく異なるシステムを作成する場合に便利です。

クリックしてフルサイズ表示。

エミッタ ウィザード

エミッタ ウィザードには、新しいエミッタを作成するための次のオプションがあります。 * **New emitter from a template**:このオプションを選択すると、一般的に使用されるいくつかの種類のエフェクトを表示するテンプレートのリストから選択できます。大規模な開発スタジオでは、企業のベスト プラクティスがテンプレートに確実に反映されるようにするため、テンプレートのリストはアート関連の責任者やクリエイティブ ディレクターが作成する場合があります。また、UE4 を初めて使用する場合は、手始めにこれらのテンプレートを使用することをお勧めします。

クリックしてフルサイズ表示。

  • Inherit from an existing emitter:このオプションを選択すると、既存のエミッタのプロパティを継承するエミッタを新規作成できます。このオプションを使用すると、新しいエミッタが、選択した既存のエミッタの子になります。すべてが共通の特定のプロパティを持つ多数のエミッタが必要な場合は、このオプションを選択することをお勧めします。親エミッタを変更すると、すべての子エミッタにその変更が反映されます。

クリックしてフルサイズ表示。

  • Copy existing emitter:このオプションを選択すると、作成済みのエミッタをコピーして新しいエミッタを作成できます。同じようなエミッタを複数作成する必要がある場合に役立ちます。このオプションを選択すると、検索バーの下に使用可能なエミッタのリストが表示されます。コピーするものを選択します。

クリックしてフルサイズ表示。

ナイアガラ VFX のワークフロー

エミッタを作成する

エミッタを作成するときは、そのエフェクトがどのように表示されるか、実行されるアクションなどを定義するモジュールをスタックに配置します。[Emitter Spawn (エミッタのスポーン)] グループには、エミッタが最初にスポーンしたときに行われる処理を定義するモジュールを配置します。[Emitter Update (エミッタの更新)] グループには、時間の経過とともにエミッタに影響を及ぼすモジュールを配置します。[Particle Spawn (パーティクルのスポーン)] グループには、パーティクルがエミッタから最初にスポーンされたときに行われる処理を定義するモジュールを配置します。[Particle Update (パーティクルの更新)] グループには、時間の経過とともにパーティクルに影響を及ぼすモジュールを配置します。[Event Handlers (イベント ハンドラ)] グループには、任意のデータを定義する 1 つ以上の Generate イベントを作成することができますその後で、生成されたイベントに反応するビヘイビアをトリガーする Listening イベントを他のエミッタに作成することができます。

システムを作成する

個々のエミッタを 1 つのシステムに結合します。このシステムで、作成しようとしているビジュアル エフェクト全体を表示します。システム固有のモジュールが複数あるため、エミッタではなくシステムを編集しているときは、エディタの一部の要素の動作が異なります。ナイアガラ エディタでシステムを編集する時に、システムに含まれるエミッタのどのモジュールでも、変更またはオーバーライドすることができます。ナイアガラ エディタの [Timeline (タイムライン)] パネルを使用して、含まれているエミッタのタイミングを管理することもできます。

モジュールを作成する

Module Function Flow

モジュール関数のフロー

  • モジュールが一時的な名前空間に蓄積されるため、より多くのモジュールをまとめてスタックできます。同じ属性に関与する限り、モジュールは適切にスタックおよび蓄積されます。

  • モジュールを記述する際は、次のように多くの関数を使用できます。 ブール演算子 Math 式 三角公式 カスタマイズ関数 * ボイラープレート関数をより簡単にするノード

  • モジュールを作成したら、誰でもそのモジュールを使用できます。

  • モジュールはすべて HLSL を使用します。ロジック フローは次のとおりです。

HLSL Logic Flow

作成したモジュール、エミッタ、システムはそれぞれリソースを使用することを覚えておいてください。リソースを節約しパフォーマンスを改善するには、ナイアガラに既存するモジュールを見て、新しいモジュールを作成しなくても目的を達成できるかかくにんします。動的入力 がここで大きな効果があります。

ナイアガラのパラダイム

継承

  • 平坦な階層では、ライブラリ内で既存のアセットを効果的に見つけて使用することはできません。その結果、既存のアセットを再度作成することになります。重複する作業は効率が低下するだけでなく、コストが増大します。

  • 階層的な継承では検出可能性が高まるため、既存のアセットを効果的に再利用できます。

  • システムの子エミッタでは、継承されたものはすべてオーバーライドできます。

  • モジュールを追加したり、親の値に戻したりすることができます。

  • これは、スポーン、存続期間、ループ、バーストなどのエミッタレベルのビヘイビアにも当てはまります。

動的入力

  • 動的入力は、モジュールの作成と同じ方法で作成されます。

  • 動的入力により、ユーザーは継承に関して無限の拡張性を得ることができます。

  • 動的入力は、パラメータ マップに作用するのではなく、値の型に作用します。

  • いずれの値もグラフ ロジックとユーザー向けの表示値で実行されます。

  • 動的入力はモジュールの作成とほぼ同じではありますが、実際に新規モジュールを作成することなく、動的入力を選択してスタックに含めることができます。

  • 動的入力を使用およびチェーンすることで、既存モジュールをさまざまな方法で変更およびカスタマイズできます。モジュールの肥大化を減らし、パフォーマンスを改善します。

マクロ式

  • インライン値はすべて HLSL 式のスニペットに変換できます。

  • ユーザーは、パーティクル、エミッタ、またはシステムの任意の変数、および任意の HLSL 関数または VM 関数にアクセスできます。

  • これは、新規モジュールを必要としない、小規模の一度限りの機能に適しています。

イベント

  • イベントは、要素 (パーティクル、エミッタ、システムなど) 間でやり取りを行う手段です。

  • イベントとしてあらゆる種類のデータを使用でき、ペイロード (構造体など) にパックして送信します。その後は、他のどの要素でもそのイベントをリッスンしてアクションを実行できるようになります。

  • 使用可能なオプションは次のとおりです。 Particle.ID を使用して、パーティクルに対してイベントを直接実行する。 システム内のすべてのパーティクルでイベントを実行する。 * イベントに応じてパーティクルをスポーンするように設定し、それらのパーティクルに対してアクションを実行する。

  • イベントはグラフの特殊なノード (構造体) です。Event ノードを使用するには、次の手順を実行します。 イベントに名前を付けます。 必要なデータをすべて追加します。 エミッタ スタックにイベント ハンドラを追加します。 イベント ハンドラのオプションを設定します。

  • イベントには個別の実行スタックがあります。 精密なグラフ ロジックをイベント ハンドラに配置できます。 複雑なロジックを使用してパーティクル システム全体を設定し、イベントがトリガーされたときに発生する一連のビヘイビアを個別に設定できます。

データ インターフェース

  • 任意のデータにアクセスできるようにする拡張可能なシステムがあります。

  • 任意のデータには、メッシュ データ、音声、外部 DDC 情報、コード オブジェクト、およびテキスト コンテナが含まれます。

  • データ インターフェースは、将来に向けた拡張性を高めるためのプラグインとして作成できます。

  • ユーザーは、スケルタル メッシュのデータ インターフェースを使用して、スケルタル メッシュに関連付けられたあらゆるデータを取得できます。

Houdini (フーディーニ)

  • Houdini を使用すると、スプリット ポイント、スポーン位置、衝撃位置、衝撃速度、法線などを計算できます。

  • その後、そのデータを Houdini から一般的なコンテナ形式 (CSV) にエクスポートできます。

  • その CSV を UE4 プロジェクトでナイアガラにインポートできます。

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback