ナイアガラでスプライト パーティクル エフェクトを作成する方法

このドキュメントでは、ナイアガラを使用してスタティック メッシュ パーティクル エフェクトを作成する方法を説明します。

Windows
MacOS
Linux
Prerequisite Topics

This page assumes you have prior knowledge of the following topics. Please read them before proceeding.

「スプライト」とは頻繁に使用されるビジュアル エフェクト (VFX) 技法の一つで、テクスチャおよびマテリアルを 2D カメラ方向平面にレンダリングします。以下では、スプライトと連携するようナイアガラ エミッタを設定する方法を紹介します。ナイアガラ エミッタを含むナイアガラ システムをレベル内に配置すると、そのエフェクトがレベル内で表示されるようになります。

前提条件:

このドキュメントでは Starter Content (スターター コンテンツ) に含まれる「M_smoke_subUV」マテリアルを使用します。このマテリアルまたは Starter Content をプロジェクトに追加していない場合は、先に進む前に追加してください。

プロジェクト設定

  1. 最初に、エフェクトのアセットを保存するためのフォルダをコンテンツ ブラウザで新たに作成します。トップ レベル (Content) を選択している状態で、コンテンツ ブラウザ 内で右クリックして [New Folder (新規フォルダ)] を選択します。このフォルダに「SpriteEffect」などと名前を付けます。

    プロジェクトで複数のナイアガラ エフェクトを作成する場合は、「NiagaraFX」もしくは似たような名前のフォルダを作成し、スプライト エフェクト用にサブフォルダを作成することをお勧めします。

  2. このエフェクトを作成する前に、エミッタのスプライトに使用するマテリアルを作成するか指定する必要があります。この例では Starter Content のマテリアルを使用します。このマテリアルを指定もしくは移動しなくても取り込むことは可能ですが、元のマテリアルのコピーを作成し、エフェクト用のフォルダまたは他の既存のマテリアル用フォルダのいずれかに保存するほうが便利な場合もあります。これについては、以下の手順に従ってください。

    1. コンテンツ ブラウザの検索バーに「m_smoke」と入力します。検索結果に M_smoke_subuv マテリアルが表示されます。

    2. コピーを別のフォルダに保存するには、目的のマテリアルをクリックして希望のフォルダにドラッグし、ポップアップ メニューの [Move Here (ここに移動)] または [Copy Here (ここにコピー)] のいずれかを選択します。移動 すると、前の場所にあった元のマテリアルが削除されて新しい場所に移動されます。コピー すると、新しい場所にマテリアルのコピーが作成されます。元のマテリアルは元の場所に維持されます。

    3. スプライト用に独自のマテリアルを作成する際は、「マテリアル入門 」ページや、ドキュメントの「Materials (マテリアル)」セクションに含まれる他のページを参照してください。

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

カスケードとは異なり、ナイアガラのエミッタとシステムは独立して機能します。現時点では、既存のエミッタまたはエミッタ テンプレートからシステムを作成するワークフローを推奨します。

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

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

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

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

  3. [Template (テンプレート)][Simple Sprite Burst (シンプル スプライト バースト)] を選択します。プラス記号 (+) のアイコンをクリックして、システムに追加するエミッタのリストに目的のエミッタを追加します。次に [Finish (完了)] をクリックします。

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

  4. 新しいシステムに「SmokeSystem」と名前を付けます。これをダブルクリックしてナイアガラ エディタで開きます。

    Name System

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

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

レンダリング設定を変更する

  1. このドキュメントでは、Emitter モジュール グループについて、スタック内での表示順に従って説明していきます。ただし、マテリアルは [Renderer (レンダラ)] で設定するまで、プレビューやレベル内には表示されないので、まず [System Overview (システム概要)] にある [Sprite Renderer (スプライト レンダラ)] を選択して、[Selection (選択項目)] パネルで開きます。

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

  2. ここでエフェクト用のマテリアルを選択します。SubUV マテリアルなので、画像グリッド内の画像数をレンダラに伝える必要があります。以下のプロパティを次の図に示す値に設定します。

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

    プロパティ名

    Material

    M_smoke_subUV

    Sub Image Size

    X:8.0, Y:8.0

    Sub UV Blending Enabled

    チェックを入れる

  3. SmokeSystem をレベル内にドラッグします。

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

Emitter Update グループの編集

まず Emitter Update グループでモジュールを編集します。これらはエミッタに適用されるビヘイビアであり、それぞれのフレームを更新します。

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

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

  2. スモーク (煙) のバーストではなくスモークの定数列を作成します。ゴミ箱 のアイコンをクリックして Spawn Burst Instantaneous モジュールを削除します。

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

  3. プラス記号 アイコン (+) をクリックして [Spawning (スポーン)] > [Spawn Rate] を選択することで、Spawn Rate モジュールを Emitter Update に追加します。

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

  4. Spawn Rate モジュールの [Spawn Rate (スポーン率)] の値を「50」に設定します。これによって、ちょうどいいサイズの膨らんだ煙の形状が作成されます。エフェクト作成のベースとして適した設定です。

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

  5. 現時点では、エフェクトの作成時には、シミュレーションを無限ループするよう設定しておくことをお勧めします。こうすることで、エフェクトに影響を及ぼす設定を評価する時間をより多く確保できます。Emitter State モジュールで、[Life Cycle Mode (ライフ サイクル モード)] のドロップダウンをクリックして [Self (自身)] を選択します。次に [Loop Behavior (ループ ビヘイビア)] のドロップダウンをクリックし、[Infinite (無限)] を選択します。

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

Particle Spawn グループの設定

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

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

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

  2. [Initialize Particle (パーティクルの初期化)] モジュールを展開します。このモジュールでは、関連するいくつかのパラメータを 1 つのモジュールにまとめてスタック内を整理します。[Point Attributes (ポイント属性)] にある [Lifetime (存続期間)] パラメータを見つけます。

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

  3. Lifetime パラメータでは、パーティクルが消滅するまでの表示期間を指定します。現実味のある煙を生み出すために、[Lifetime] パラメータには多少のランダム性を持たせることをお勧めします。[Lifetime] の横にあるドロップダウン矢印をクリックし、[Dynamic Inputs (動的入力)] > [Uniform Ranged Float (均一化された範囲内のフロート)] を選択します。[Minimum] と [Maximum] フィールドが追加されます。

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

  4. [Lifetime] の [Minimum] および [Maximum] の値を以下のとおりに設定します。

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

    プロパティ名

    Minimum

    2.0

    Maximum

    3.0

  5. 煙のエフェクトにより現実味を加えるために、スプライト パーティクルのサイズを調整します。元のパーティクル群は小さいので、このサイズを大きく設定します。また、サイズをランダムにしてスプライト パーティクルがオーバーラップするようにし、より継続性の高いエフェクトにします。 [Sprite Attributes (スプライト属性)] にある [Sprite Size (スプライト サイズ)] パラメータを見つけ、これが有効になっていることを確認します。[Sprite Size] の横にあるドロップダウン矢印をクリックし、[Dynamic Inputs (動的入力)] > [Vector 2D From Float] を選択します。これにより、[Sprite Size] の [X] および [Y] フィールドが単一の [Value (値)] フィールドに置き換わります。

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

  6. 次は、ランダム性を加えるために別の動的入力を追加します。[Value (値)] の横にあるドロップダウン矢印をクリックし、検索バーに「uniform」と入力します。[Uniform Ranged Float] を選択します。[Value] に [Minimum][Maximum] フィールドが追加されます。それらの値を以下のとおりに設定します。

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

  7. [Sprite Size] の [Minimum] および [Maximum] の値を以下のとおりに設定します。

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

    プロパティ名

    Minimum

    75.0

    Maximum

    200.0

  8. これで煙のサイズが大きくなり、より現実に近いものになりました。次に回転を加えて、パーティクルの形状にバリエーションを与えます。さらに、回転にもランダム性を加えてバリエーションを増やします。[Sprite Rotation (スプライトの回転)] チェックボックスをオンにして有効にします。 [Sprite Rotation] の横にある下向き矢印をクリックして、[Dynamic Inputs] > [Normalized Angle to Degrees] を選択します。[Normalized Angle (正規化された角度)] フィールドが追加されます。回転角度は 0 と 1 の間の小数に変換されます。

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

  9. 次に [Normalized Angle] の横にあるドロップダウン矢印をクリックして [Dynamic Inputs] > [Uniform Ranged Float] を選択します。[Normalized Angle] に [Minimum][Maximum] フィールドが追加されます。それらの値を以下のとおりに設定します。パーティクルのスポーン時に、パーティクルがランダムな角度で回転します。

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

  10. [Minimum] および [Maximum] の値を以下のとおりに設定します。

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

    プロパティ名

    Minimum

    1.0

    Maximum

    2.0

  11. 煙のサイズはちょうど良くなりましたが、現時点では同じ場所で回転するのみです。煙のパーティクルがスポーンされたときにすぐに拡散するように、初期速度を加えます。プラス記号 (+) のアイコンをクリックして [Velocity (速度)] > [Add Velocity (速度の追加)] を選択し、Add Velocity モジュールを [Particle Spawn] グループに追加します。

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

  12. [Velocity] の横にあるドロップダウン矢印をクリックし、[Dynamic Inputs (動的入力)] > [Uniform Ranged Vector (均一化された範囲内のベクター)] を選択します。[Velocity] に [Minimum][Maximum] フィールドが追加されます。繰り返しになりますが、多少のランダム性を加えることで、エフェクトのバリエーションが増えて、自然な感じも高まります。

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

  13. [Velocity] の [Minimum] および [Maximum] の値を以下のとおりに設定します。

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

    プロパティ名

    Minimum

    X:0, Y:0, Z:50

    Maximum

    X:1, Y:1, Z:200

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

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

  15. Sphere Location (球体の場所) では、スプライトがスポーンする場所の形状と原点を制御します。Sphere Location モジュールを追加することで、スプライトは球体形状でスポーンすることができ、半径を指定することでその球体形状のサイズも設定できます。[Sphere Radius (球体の半径)] の値を「64」に設定します。[Sphere Distribution] を必ず [Random] に設定してください。

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

  16. このスモーク エフェクトに使用するスプライト マテリアルは、まとめて並べられてアニメートされる複数の画像がついているスプライト シートを使用します。これを含まない場合、レンダラはシートの最初のスプライトのみを使用します。この問題を解決するために SubUV Animation モジュールを追加することができます。Particle Spawn の プラス記号 (+) をクリックして、[Sub UV] > [SubUV Animation] を選択します。

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

  17. Sub UV Animation モジュールで、[SubUV Animation Mode] のドロップダウンをクリックして [Linear] を選択します。[Number of Frames] タイプは 64 です。スプライト シートの画像は 8x8 グリッドなので、画像の合計数は 64 です。

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

Particle Update グループの設定

次に Particle Update グループのモジュールを編集します。これらのビヘイビアはパーティクルに適用され、それぞれのフレームを更新します。

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

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

  2. Particle Spawn に追加したベロシティにより、パーティクルが最初にスポーンされた際に動きが加わります。次は時間の経過に伴う動きを加えて、 煙が立ち上るようにします。Particle Updateプラス記号 (+) のアイコンをクリックして [Forces (力)] > [Acceleration Force (加速力)] を選択し、Acceleration Force モジュールを追加します。

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

  3. ナイアガラでは新しいモジュールをグループのスタックの下部に追加するため、「モジュールの依存関係が解決していません」というエラーが発生します。これは、Acceleration Force モジュールが Solve Forces and Velocity モジュールの後に配置されたことが原因のエラーです。[Fix Issue (問題を修正)] ボタンをクリックしてモジュールを移動します。

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

  4. [X] および [Y] の値をそれぞれ「0」に、[Z] の値を「500」のままにしておきます。これにより、時間の経過とともに煙がまっすぐ上に立ち上るようになります。希望するスモーク エフェクトのタイプに応じてこの設定を調整するか、このモジュールを削除できます。

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

  5. スモーク エミッタをシステム内で再使用できるようにするには、スモーク エミッタを別のアセットとして保存します。歯車 のアイコンをクリックして [Emitter Settings (エミッタの設定)] メニューを開き、[Create Asset From This (これからアセットを作成)] を選択します。これにより、独立したナイアガラ エミッタ アセットが作成されます。

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

  6. 次に [Save (保存)] ボタンをクリックして、変更を適用して保存します。

    Save System

最終結果

お疲れ様でした。スプライトを使ってシンプルな煙のエフェクトを作成しました。

Tags
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