Language:
Page Info
Skill Level:
Engine Version:
The translation of this page is out of date. Please see the English version for the latest version of the page.

ナイアガラの主要概念

ナイアガラ エディタを使うと、アンリアル エンジン 4 (UE4) のプロジェクトのニーズに対応し、リアルタイムで幅広い視覚効果を作成することができます。プレイヤーに対するエフェクトから、背景のエフェクトまで、ナイアガラはプロジェクトが必要とするどんな視覚効果でも処理する柔軟性とパワーを備えています。以下のドキュメントでは、ナイアガラとカスケードの違いについて、およびナイアガラ エディタの様々な構成要素がどのように機能するかについての概要を説明します。

パーティクル エフェクトに対するモジュール式アプローチ

カスケードでうまく行かなかった概念として、エフェクトの作成にできる限りモジュール性を与えるというものがあります。これは、何らかの新規エフェクトを作成した場合に、デフォルトのモジュール セットがあり、どのようなエフェクトにするかに応じてエフェクト アーティストがモジュールや全く新しいエミッターを追加することで対応していました。このシステムは数年間、うまく機能していましたが、いくつかの小さな問題があり、エフェクト間でのデータの共有や一度に多くのエフェクトを更新するなどのタスクは時間がかかりエラーが生じがちでした。

この画像は、カスケードパーティクル システム が複数のエミッターが集まって構成されていることを示しています。

こうした問題に対処するために、ナイアガラではパーティクル システムを構成する個々のエミッターを切り離し、モジュール性という考え方を大事にしました。パーティクル システムに各エミッターがあるのではなく、ナイアガラ システム は多くの個別の ナイアガラ エミッター で構成されます。ナイアガラ エミッターには、使い慣れた様々なモジュールによって制御される個々のエフェクトがあります。例えば、パーティクルの挙動と外観を調整する LifetimeLocation、および Size などのモジュールがあります。ただし、ナイアガラ エミッターはコンテンツ ブラウザで保存される独立したアクタであるため、作成するナイアガラ システムで更新、共有が可能になり、長時間かけることなく、エミッターに大量の変更を加えることができます。

この画像は、ナイアガラ システム が複数のエミッターの集まりで構成されていることを示しています。

ナイアガラ エミッター

ナイアガラ エミッターを作成し開くと、[Selected Emitter] タブにいくつかのデフォルト モジュールがあります。このタブ内に、展開および編集が可能な以下の 5 種類のオプションがあります。以下の各セクションは、エミッターのスポーン方法とライフタイムでどのような挙動をするかに影響を及ぼします。

  • Emitter Spawn

    • エミッターが起動するとこのセクションが実行します。これは後の方のスクリプトで使用可能なワンタイム セットアップを行う点で、ブループリントのコンストラクション スクリプトに似ています。個々のパーティクルは参照できませんが、エミッターの変数の設定、エミッター モジュールの実行、パーティクルのスクリプトで使用する変数の設定を行うことができます。

  • Emitter Update

    • このセクションは、エミッターがアクティブ中の全フレームで実行されます。スポーンするパーティクル数、パーティクルの更新スクリプトで使用する定数値の計算、エミッターのフレーム毎のその他のティック ロジックを行います。このセクションの Emitter Lifecycle モジュールで、すべてのライフサイクルのロジックが各エミッターについて実行されるようにして、システムを適切にシャットダウンできるようにすることが重要です。

  • Particle Spawn

    • このセクションは、パーティクルが発生するたびに一回実行されます。このセクションを使ってパーティクルの初期状態を設定します。エミッターが Interpolated Spawn (補間されたスポーン) を使用するように設定されていない場合、このセクションからの出力はレンダリングされる第一フレームのパーティクルの状態を定義します。Interpolated Spawn が起こると、パーティクルは突然バーストするのではなく、ひとつ前のフレームからの時間範囲で均一に広がり、フレームが作成されてから、フレームのごく一部の各パーティクルに対して更新スクリプトが実行されます。これにより、トレイル (軌跡) が滑らかになり、パーティクルの更新スクリプトで、レンダリングされる第一フレームのパーティクルの状態を定義することができます。各パーティクルで違いを付けてランダムにする必要があれば、スポーン スクリプトでランダム値を選んで、その値を後続のティックで使うために保存すると良いでしょう。

  • Particle Update

    • このセクションは個々のパーティクルのライフタイム中の挙動を制御します。物理シミュレーションの属性、レンダリングの属性などに対する変更は、すべてこのセクション内で行うことができます。データを他のエミッターに送信する必要があれば、イベントを放出するモジュールをこのセクションで実行させることができます。ここでは、各パーティクルの存在時間が経過し、ライフタイムが終了したら最終的に消滅するために Update Age モジュールを持つことが重要です。

  • Add Event Handler

    • Add Event Handler セクションは、このエミッターがコリジョンや他のエミッターから入ってくるイベントにどのように反応するかを決めます。

ナイアガラ システム

プロジェクトでナイアガラ エミッターを使うには、まずナイアガラ エミッターを ナイアガラ システム に配置します。ナイアガラ システムは、エフェクトのために作成された個々のナイアガラ エミッターを表示するために使われます。既存エミッターだけを使って様々なナイアガラ エミッターを非常に簡単に組み合わせて全く新しいエフェクトを生み出すことができます。

ナイアガラ システムにナイアガラ エミッターを追加するには、コンテンツ ブラウザからナイアガラ エミッターを タイムラインTrack セクションまでドラッグする必要があります。

タイムラインに配置したナイアガラ エミッターを選択して、[Selected Emitter] パネルに進み必要なプロパティを調整することができます。