Niagara の主要概念

このページでは、ナイアガラのデザイン フィロソフィーについて説明します。ナイアガラの視覚効果システムについての理解を深めます。

Windows
MacOS
Linux

ナイアガラのデザイン フィロソフィー

視覚効果を Unreal Engine で再利用する理由

Unreal Engine のユーザーベースは拡大しており、Unreal Engine は今やゲーム業界を超えた数多くの産業で利用されています。例:

  • アーキテクチャ ビジュアライゼーション

  • 自動車設計などのインダストリアル デザイン

  • 仮想的なテレビと映画の制作

Unreal Engine のユーザーはかつてないほど多様化し、デザインを学ぶ学生から、インディー デベロッパー、そして大規模なスタジオのプロのチームに及びます。Unreal Engine が進化すると、Epic のデベロッパー達はもやはエキスパートではなくなります。私達の目標は、すべての産業における、すべてのユーザーの役に立つビジュアル エフェクト (VFX) システムを作ることでした。

カスケード システムの長所と短所

カスケードは Unreal Engine で長年採用されてきた VFX システムです。カスケードには以下のような長所があります。

  • ビヘイビアを追加すると反応が速くなり、カスケード モジュール同士でレイヤー、スタック、インタラクト操作がしやすい。

  • 非技術系のアーティストが自由に制御し、一般的なビヘイビアを一通り使用できる。

  • スタック パラダイムを使用して、一目でわかる多くの情報を提供できる。

ただし、カスケードには以下の欠点もあります。

  • カスケードの機能は固定されている。機能の変更、追加/削除をするためにプログラマーが必要である。

  • システムへ何かを追加するとパーティクルのペイロードが肥大化する。

  • パーティクル システムとエンジン内のその他のシステム間におけるデータ共有がほぼ不可能。

  • イベントに制限があり、扱いにくい。

  • CPU と GPU のシミュレーションが非常に難しい。

新しい VFX システムが掲げる目標

カスケードの欠点を取り除くことがでいる要素を新しく取り入れながら、カスケードの長所と強みを進化させた新システムの作成を目指しました。以下が新しい VFX システムが掲げる目標です。

  • アーティストが自由自在に制御できる。

  • 軸ごとにプログラミングとカスタマイズができる。

  • デバッグ、ビジュアル化、パフォーマンスのより良いツールを提供する。

  • Unreal Engine 4 の他の部分、または外部ソースからのデータをサポートする。

  • ユーザーの邪魔にならない、控えめなシステムである。

目標に対するナイアガラの貢献

データ共有

ユーザーが自由自在に制御するには、データへのアクセスが必要です。ユーザーが Unreal Engine のすべての部分、そして他のアプリケーションからも自由にデータを使用可能にするために、すべてをユーザーに公開することにしました。

パーティクルのペイロード

すべてをユーザーに公開するために、データの使用方法を構築する必要があります。名前空間は階層データにコンテナを提供します。たとえば、Emitter.Age はエミッタ用のデータを、また Particle.Position はパーティクル用のデータを含みます。パラメータ マップはパーティクルの属性のすべてを運ぶパーティクル ペイロードです。この結果、すべてがオプションとなりました。

様々なデータ タイプの追加を可能にする

すべてのタイプのデータをパーティクル パラメータとして追加できます。複雑な構造体を追加したり、マトリクスやBoolean フラグを変形できます。それだけでなく、他のデータ タイプも追加して、エフェクトのシミュレーションで使用できます。

グラフ パラダイムとスタック パラダイムを結合する

スタック パラダイム (カスケードで使用されるような) とグラフ パラダイム (ブループリントで使用されるような) はそれぞれ長所があります。スタック パラダイムは、ユーザーにモジュラー ビヘイビアと可読性を提供します。グラフ パラダイムは、ユーザーにビヘイビアに対するより自由な制御を提供します。この 2 つのパラダイムの長所を結合して新しいエフェクト システムが誕生しました。

ナイアガラのハイブリッド パラダイムの階層

モジュール

モジュールはグラフ パラダイムにおいて機能します。視覚的なノード グラフを使用して、スクリプト エディタの中で HLSL でモジュールを作成できます。モジュールは、カスケードではビヘイビアに当たります。モジュールは一般的なデータと対話し、ビヘイビアをカプセル化し、まとめてスタックします。

エミッタ

エミッタはスタック パラダイムで機能します。モジュールのコンテナとして動作し、まとめてスタックして様々なエフェクトを作成できます。エミッタは専用ですが、再利用できます。パラメータはモジュールからエミッタ レベルへ膨れ上がりますが、エミッタでモジュールとパラメータを変更できます。

システム

システムはスタック パラダイムでも機能します。また、システム内のエミッタの挙動を制御するために使用するシーケンサー タイムラインを使っても機能します。システムはエミッタ用のコンテナです。システムはこれらのエミッタを 1 つのエフェクトにまとめます。システム エディタでは、システム内にあるすべてのパラメータ、モジュール、エミッタの変更およびオーバーライドができます。

ナイアガラにおけるスタック選択およびスタック グループ

ナイアガラでのパーティクル シミュレーションは概念的にはスタックとして機能します。シミュレーションは上流から下流方向にモジュールを順番に実行して行われます。各モジュールは、モジュールの実行時を説明するグループに割り当てられます。たとえば、パーティクルを初期化するモジュールやパーティクルのスポーン時に動作するモジュールは Particle Spawn モジュールに割り当てられます。

System Group に属するモジュールを最初に実行し、各エミッタと共有されているビヘイビアを処理します。次に、Emitter Group のモジュールを一意の各エミッタに対して実行します。その次に、Particle Group のパラメータを個々のエミッタで一意の各エミッタに対して実行します。最後に、Renderer Group のアイテムが、各エミッタでシミュレートされたパーティクル データの画面への出力方法を説明します。

グループ、名前空間、データのカプセル化

各モジュールをグループに割り当てることで、いつモジュールを実行するのかだけでなく、モジュールが どのデータ と稼働するのかも制御できます。Stack Group は、そのグループのモジュールの読み込み元/書き込み先となるデータを定義する名前空間と紐づいています。

たとえば、System Group で実行するモジュールは、エンジン名前空間あるいはユーザー名前空間に属するパラメータの読み込みだけが可能です。システム名前空間のパラメータの読み込み/書き込みは可能な場合があります。System Group から Emitter Group 方向へ実行されるので、Emitter Group で実行するモジュールはシステム名前空間、エンジン名前空間、ユーザー名前空間内のパラメータの読み込みと、エミッタ名前空間にあるパラメータの読み込み/書き込みができます。

Emitter Group のモジュールは、システム名前空間内のパラメータからの読み取りが可能な場合があるので、すべてのエミッタに関連するシミュレーションを System Group のモジュールで一度行うことができ、個々のエミッタは Emitter Group のモジュールにシステム名前空間に格納されている結果からの読み込みをさせることができます。これが、システム名前空間とエミッタ名前空間のパラメータの読み込みが可能な Particles Group Modules で継続します。

モジュール グループ

名前空間からの読み込み

名前空間への書き込み

System

System, Engine, User

System

Emitter

System, Emitter, Engine, User

Emitter

Particle

System, Emitter, Particle, Engine, User

Particle

Select Skin
Light
Dark

新しい Unreal Engine 4 ドキュメントサイトへようこそ!

あなたの声を私たちに伝えるフィードバックシステムを含め、様々な新機能について開発をおこなっています。まだ広く使える状態にはなっていないので、準備ができるまでは、ドキュメントフィードバックフォーラムで、このページについて、もしくは遭遇した問題について教えていただけると助かります。

新しいシステムが稼働した際にお知らせします。

フィードバックを送信