GPU スプライト パーティクル エフェクトを作成する

GPU を使用して数百万にもおよぶスプライト パーティクルをスポーンする方法を説明します。

Windows
MacOS
Linux
前提トピック

このページは以下のトピックへの知識があることを前提にしています。まず以下のトピックの内容についてご確認をお願いします。

エフェクトによっては、数万にもおよぶパーティクルのスポーンが必要になるものがあります。しかし、多数のパーティクルを標準的な CPU で生成すると、パフォーマンスに問題が生じることがあります。このガイドでは、CPU の代わりに GPU を使用するスプライト パーティクル エフェクトを作成し、シミュレーションを実行する方法を説明します。

システムとエミッタを作成する

Cascade とは異なり、Niagara のエミッタとシステムは独立して機能します。現時点では、既存のエミッタまたはエミッタ テンプレートからシステムを作成するワークフローが推奨されています。

  1. まず、コンテンツ ブラウザ内で右クリックし、表示されるメニューから [FX] > [Niagara System] を選択して Niagara System を作成します。Niagara System ウィザードが起動します。[Niagara System] ウィザードが開きます。

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

  2. [New system from selected emitters (選択したエミッタに基づく新規システム)] を選択します。[Next (次へ)] をクリックします。

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

  3. [Templates (テンプレート)][Simple Sprite Burst (シンプル スプライト バースト)] を選択します。

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

  4. プラス記号 (+) のアイコンをクリックして、システムに追加するエミッタのリストに目的のエミッタを追加します。次に [Finish (完了)] をクリックします。

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

  5. 新しいシステムに「GPUSprite」と名前を付けます。これをダブルクリックして Niagara Editor で開きます。

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

  6. 新しいシステム内のエミッタ インスタンスには、デフォルトで「SimpleSpriteBurst」という名前が付けられていますが、この名前は変更することができます。[System Overview (システム概要)] でエミッタ インスタンスの名前をクリックすると、このフィールドが編集可能になります。エミッタの名前を「FX_GPUSprite」に変更します。

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

  7. GPUSprite システムをレベルにドラッグアンドドロップします。

    パーティクル エフェクトを作成する時は、システムをレベル内にドラッグアンドドロップすることを推奨します。こうすることで、すべての変更をコンテキスト内で確認して編集することができます。システムに加える変更は、レベル内にあるシステムのインスタンスにも自動的に適用されます。

エミッタの設定 - エミッタのプロパティ

最初に、[Emitter Properties (エミッタのプロパティ)] でいくつかの設定を変更する必要があります。ここで CPU シミュレーションから GPU シミュレーションに切り替えます。

  1. [System Overview] にある [Emitter Settings (エミッタの設定)] をクリックして、[Selection (選択)] パネルで開きます。

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

  2. [Emitter Properties] を展開します。[Sim Target] フィールドを確認します。ここで、目的のシミュレーションに GPU を使用することを Unreal Engine に指示します。ドロップダウンをクリックして [GPUComputeSim] を選択します。

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

  3. [Fixed Bounds (固定した境界)] が設定されていないという警告が表示される場合があります。その場合は [Fixed Bounds] のチェックボックスをクリックしてオンにします。これでエラーが解決します。[Minimum] および [Maximum] はデフォルト値のままにしておきます。

    パーティクルのシミュレーションは GPU で実行されるため、システムはエフェクトの大きさを読み込むことができません。そのために、固定した境界の設定が必要となります。この手順で示した方法でエミッタの境界を設定するか、または [System Properties] の項目でシステム全体に対する境界の固定を設定することができます。

Emitter Update グループの設定

次に、Emitter Update グループのモジュールを編集します。挙動には、エミッタに適用されるものと各フレームを更新するものがあります。

  1. [System Overview][Emitter Update] をクリックして [Selection (選択)] パネルで開きます。

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

  2. Emitter State モジュールを展開します。モジュールはこのエミッタの時間とスケーラビリティを制御します。既に「Simple Sprite Burst」テンプレートを使用したので、Life Cycle Mode[Self] に設定されています。通常、これは特定のエミッタに対してエミッタ ライフ サイクル ロジックを完全にカスタマイズするために使用しますが、このエフェクトに対しては必要ありません。ドロップダウンをクリックして Life Cycle Mode[System] に設定します。こうすることでシステムによってライフ サイクルの設定が計算されるようになり、通常はパフォーマンスが最適化されます。デフォルトでシステムは 5 秒間隔で無限にループします。

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

  3. Spawn Burst Instantaneous モジュールは、エミッタがスポーンする時にパーティクルの大きなバーストを作成します。このモジュールは、「Simple Sprite Burst」テンプレートに含まれています。[Spawn Count (スポーン数)] は「2500」に設定します。[Spawn Time (スポーン時間)] を「0」に設定しているため、バーストは起動直後に発生します。

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

  4. このエフェクトの場合、エミッタのスポーン時にパーティクルがバーストするだけでは不十分です。Spawn Rate モジュールは、エミッタが有効な間、パーティクルのストリームを継続して作成します。[Emitter Update] の プラス記号 (+) のアイコンをクリックして [Spawning (スポーン)] > [Spawn Rate] を選択し、Spawn Rate モジュールを追加します。

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

  5. [Spawn Rate] を「500」に設定します。これによりパーティクルが毎秒 500 のレートでスポーンされ、最初のバースト後にパーティクルのストリームが継続して発生します。

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

Particle Spawn グループの設定

次に、Particle Spawn グループのモジュールを編集します。これらの挙動は、初回スポーン時にパーティクルに適用されます。

  1. [System Overview] にある [Particle Spawn] をクリックして [Selection (選択)] パネルで開きます。

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

  2. Initialize Particle モジュールを展開します。このモジュールでは、関連するいくつかのパラメータを 1 つのモジュールにまとめてスタック内を整理します。Point AttributesLifetime パラメータを確認します。

  3. Lifetime パラメータでは、パーティクルが消滅するまでの表示期間を指定します。このエフェクトには、パーティクルをエフェクトの効果時間中ずっと表示させるための定数値が必要です。そこで、[Lifetime] を「5」に設定します。

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

  4. このガイドではスプライト サイズをランダム化する箇所もありますが、ここではスプライトの基本サイズを設定します。[Sprite Attributes (スプライト属性)] にある Sprite Size パラメータが有効になっていることを確認します。Sprite Size を次のように設定します。

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

    サイズ ベクター

    X

    5

    Y

    5

  5. [Sphere Location (球体の場所)] では、スプライトがスポーンする場所の形状を制御します。Sphere Location モジュールを追加するとスプライトは球体の形状でスポーンし、半径を指定することにより球体のサイズを設定することもできます。[Particle Spawn] セクションで プラス記号 (+) のアイコンをクリックして [Location (場所)] > [Sphere Location] を選択し、[Sphere Location] モジュールを追加します。このモジュールは、デフォルト設定のまま使用することができます。

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

Particle Update グループの設定

次に Particle Update グループのモジュールを編集します。これらの挙動がエミッタのパーティクルに適用され、それぞれのフレームを更新します。

  1. [System Overview] にある Particle Update をクリックして [Selection] パネルで開きます。

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

  2. Particle Spawn グループの Initialize Particle モジュールでは、スプライトの基本サイズを選択しました。Scale Sprite Size モジュールを追加することにより、スプライトのサイズをランダム化できます。これにより、基本サイズにスケーリング係数が適用されます。プラス記号 (+) のアイコンをクリックして [Size (サイズ)] > [Scale Sprite Size] を選択し、Scale Sprite Size モジュールを追加します。

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

  3. Scale Sprite Size のデフォルト値を X:1Y:1 に設定します。これらのデフォルト値を変更すると、すべてのパーティクルが一様に大きくなったり小さくなったりします。しかし、サイズのバリエーションがランダムな方が、スタティックなものと比べてエフェクトがビジュアル的に面白くなります。[Scale Factor (スケーリング係数)] フィールドの横にある下向き矢印をクリックして、[Dynamic Inputs (動的入力)] > [Vector2D from Float] を選択します。

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

  4. Scale Factor の値がスタティックな値に変更されていることに注意してください。パーティクルの外観をどのようにしたいかによって、浮動小数点値を追加する方法が異なります。流れるような緩やかなサイズ変更の場合、カーブが理想です。[Value (値)] の横にある下向き矢印をクリックして [Dynamic Inputs] > [Float From Curve] を選択します。

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

  5. 手順 5 で追加したカーブには 2 つのデフォルト値があります。さらにキーをカーブに追加して、サイズのバリエーションをより複雑にすることができます。ライン上を右クリックして [Add Key to Curve (キーをカーブに追加)] を選択します。これをもう一度行うと、カーブに全部で 4 つのキーが表示されます。

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

  6. カーブの 4 つのキーを次の値に設定します。

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

    キー番号

    時間

    1

    0

    0

    2

    .25

    1

    3

    .75

    1

    4

    1

    0

  7. 現在の設定で作成されたボールには、特にこれといった特徴はありません。このパーティクルにいくつかの要素を追加してバリエーションや動きを増やすことができます。Particle Update の プラス 記号アイコン (+) をクリックして [Forces (フォース)] > [Curl Noise Force] を選択します。

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

  8. Curl Noise Force を使うと様々なことが行えます。Noise Strength は、ノイズのフィールド全体の大きさ (つまり、パーティクルの元の球体を妨害するノイズの量) を制御します。Noise Frequency は、カール ノイズがパーティクルに適用される頻度を制御します。数が小さいと、パーティクルの球体の場所がより歪みます。ここでは次の設定を使用しますが、後でこれを変更して別の外観を試すことができます。 

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

    パラメータ

    Noise Strength

    72

    Noise Frequency

    .02

  9. こうすると、最初は渦を巻いていたパーティクルが、消滅するまで継続的に外側に動いていくことがわかります。このエフェクトでは、パーティクルは外側に移動してから最初の位置に戻ることにより、渦巻きが形成されます。Point Attraction Force (点の引力) モジュールは、パーティクルを単一の位置に移動させます (デフォルトでは、この位置はエミッタの位置です)。Particle Updateプラス 記号アイコン (+) をクリックして [Forces (フォース)] > [Point Attraction Force] を選択します。

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

  10. Attraction Strength は、パーティクルをアトラクタの位置まで引く力の量です。Attraction Radius は点引力がパーティクルに適用されるフィールドのサイズを表します。Falloff Exponent は、球体の広がりを制御します。数値が小さいと、球体のパーティクルがより広がります。Kill Radius は、存続期間の終わりにパーティクルが消滅する領域のサイズを設定します。[Attraction Strength][Attraction Radius][Falloff Exponent]、および [Kill Radius] をそれぞれ次の値に設定します。

    モジュールの下にある三角形のアイコンをクリックして Kill Radius パラメータを表示します。チェックボックスにチェックが入っていない場合はクリックして有効化します。

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

    パラメータ

    Attraction Strength

    5.5

    Attraction Radius

    300.0

    Falloff Exponent

    0.6

    Kill Radius

    4.0

  11. 次に、色を変更します。Particle Updateプラス 記号アイコン (+) をクリックして [Colors] > [Color] を選択します。

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

  12. カラーバーの上のスペースをクリックすると、カーブにカラー経由点を追加することができます。経由点をダブルクリックしてカラーピッカーを開き、カラーを変更することもできます。オパシティ分岐点を設定するには、カラーバーの下にあるスペースをクリックします。カラーとオパシティを次のように設定します。

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

    カラー経由点またはオパシティ分岐点

    時間

    カラー

    経由点 1

    0.0

    R:1, G:0, B:1

    経由点 2

    .35

    R: .08, G:0, B:1

    経由点 3

    ..60

    R: .2 , G:1, B: .8

    経由点 4

    .8

    R:1, G: .96, B: .3

    オパシティ

    分岐点 1

    0

    1

    分岐点 2

    .7

    1

    分岐点 3

    1

    0

最終結果

お疲れさまでした。CPU の代わりに GPU を使用する素晴らしいスプライト エフェクトが作成できました。

タグ
Select Skin
Light
Dark

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

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

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

フィードバックを送信