「スプライト」とは頻繁に使用されるビジュアル エフェクト (VFX) 技法の一つで、テクスチャおよびマテリアルを 2D カメラ方向平面にレンダリングします。以下のチュートリアルでは、スプライトと連携するよう Niagara エミッタを設定する方法を紹介します。Niagara エミッタを含む Niagara システムをレベル内に配置すると、そのエフェクトがレベル内で表示されるようになります。
前提条件:
このドキュメントでは Starter Content (スターター コンテンツ) に含まれる「M_smoke_subUV」マテリアルを使用します。このマテリアルまたは Starter Content をプロジェクトに追加していない場合は、先に進む前に追加してください。
プロジェクトのセットアップ
-
最初に、エフェクトのアセットを保存するためのフォルダをコンテンツ ブラウザで新たに作成します。トップ レベル (Content) を選択している状態で、コンテンツ ブラウザ 内で右クリックして [New Folder (新規フォルダ)] を選択します。このフォルダに「SpriteEffect」などと名前を付けます。
プロジェクトで複数の Niagara エフェクトを作成する場合は、「NiagaraFX」もしくは似たような名前のフォルダを作成し、スプライト エフェクト用にサブフォルダを作成することをお勧めします。
-
このエフェクトを作成する前に、エミッタのスプライトに使用するマテリアルを作成するか指定する必要があります。この例ではスターター コンテンツのマテリアルを使用します。このマテリアルを指定もしくは移動しなくても取り込むことは可能ですが、元のマテリアルのコピーを作成し、エフェクト用のフォルダまたは他の既存のマテリアル用フォルダのいずれかに保存するほうが便利な場合もあります。これについては、以下の手順に従ってください。
-
コンテンツ ブラウザの検索バーに「
m_smoke
」と入力します。検索結果に M_smoke_subuv マテリアルが表示されます。画像をクリックするとフルサイズで表示されます。
-
コピーを別のフォルダに保存するには、目的のマテリアルをクリックして希望のフォルダにドラッグし、ポップアップ メニューの [Move Here (ここに移動)] または [Copy Here (ここにコピー)] のいずれかを選択します。移動 すると、前の場所にあった元のマテリアルが削除されて新しい場所に移動されます。コピー すると、新しい場所にマテリアルのコピーが作成されます。元のマテリアルは元の場所に維持されます。元のマテリアルは元の場所に維持されます。スプライト用に独自のマテリアルを作成する際は、ドキュメントの「Materials (マテリアル)」セクションに含まれるページを参照してください。
-
システムとエミッタを作成する
次に Niagara システムを作成し、その中にエミッタを作成します。このシステムは、1 つ以上のエミッタを置くことができるコンテナです。エミッタは生成された新規パーティクルのソースです。
-
まず、コンテンツ ブラウザ内で右クリックし、表示されるメニューから [FX] > [Niagara System] を選択して Niagara System を作成します。Niagara System ウィザードが起動します。[Niagara System] ウィザードが開きます。
画像をクリックするとフルサイズで表示されます。
-
[New system from selected emitters (選択したエミッタに基づく新規システム)] を選択します。[Next] をクリックします。
画像をクリックするとフルサイズで表示されます。
-
[Template (テンプレート)] で [Simple Sprite Burst] を選択します。プラス記号 (+) のアイコンをクリックして、システムに追加するエミッタのリストに目的のエミッタを追加します。次に [Finish (完了)] をクリックします。
画像をクリックするとフルサイズで表示されます。
-
新しいシステムに「SmokeSystem」と名前を付けます。これをダブルクリックして Niagara エディタで開きます。
-
新しいシステム内のエミッタ インスタンスには、デフォルトで「SimpleSpriteBurst」という名前が付けられていますが、これは変更することができます。[System Overview (システム概要)] でエミッタ インスタンスの名前をクリックすると、このフィールドが編集可能になります。エミッタに「FX_Smoke」と名前を付けます。
画像をクリックするとフルサイズで表示されます。
レンダリング設定を変更する
-
このドキュメントでは、Emitter モジュール グループについて、スタック内での表示順に従って説明していきます。ただし、マテリアルは [Renderer (レンダラ)] で設定するまで、プレビューやレベル内には表示されないので、まず [System Overview (システム概要)] にある [Sprite Renderer (スプライト レンダラ)] を選択して、[Selection (選択項目)] パネルで開きます。
画像をクリックするとフルサイズで表示されます。
-
ここでエフェクト用のマテリアルを選択します。SubUV マテリアルなので、画像グリッド内の画像数をレンダラに伝える必要があります。以下のプロパティを次の図に示す値に設定します。
画像をクリックするとフルサイズで表示されます。
プロパティ名 値 Material M_smoke_subUV Sub Image Size X:8.0、Y:8.0 Sub UV Blending Enabled チェックを入れる -
SmokeSystem をレベル内にドラッグします。
パーティクル エフェクトを作成する際は、システムをレベル内にドラッグすることをお勧めします。こうすることで、すべての変更をコンテキスト内で確認して編集することができます。システムに加える変更は、レベル内にあるシステムのインスタンスにも自動的に適用されます。
Emitter Update グループの設定を編集する
まず Emitter Update グループでモジュールを編集します。これらはエミッタに適用される動作で、それぞれのフレームを更新します。
-
[System Overview] にある Emitter Update グループをクリックして、[Selection (選択)] パネルで開きます。
画像をクリックするとフルサイズで表示されます。
-
スモーク (煙) のバーストではなくスモークの定数列を作成します。ゴミ箱 のアイコンをクリックして Spawn Burst Instantaneous モジュールを削除します。
画像をクリックするとフルサイズで表示されます。
-
プラス記号 のアイコン (+) をクリックして [Spawn Rate] を選択し、Spawn Rate モジュールを Emitter Update に追加します。
画像をクリックするとフルサイズで表示されます。
-
Spawn Rate モジュールの [Spawn Rate (スポーン率)] の値を「50」に設定します。これによって、ちょうどいいサイズの膨らんだ煙の形状が作成されます。エフェクト作成のベースとして適した設定です。
画像をクリックするとフルサイズで表示されます。
-
現時点では、エフェクトの作成時には、シミュレーションを無限ループするよう設定しておくことをお勧めします。こうすることで、エフェクトに影響を及ぼす設定を評価する時間をより多く確保できます。Emitter State モジュールで、[Life Cycle Mode (ライフ サイクル モード)] のドロップダウンをクリックして [Self (自身)] を選択します。次に [Loop Behavior (ループの挙動)] のドロップダウンをクリックし、[Infinite (無限)] を選択します。
画像をクリックするとフルサイズで表示されます。
Particle Spawn グループの設定
次に、Particle Spawn グループのモジュールを編集します。これらはパーティクルが初めてスポーンされるときに適用される動作です。
-
[System Overview] にある Particle Spawn グループをクリックして [Selection (選択)] パネルで開きます。
画像をクリックするとフルサイズで表示されます。
-
Initialize Particle モジュールを展開します。このモジュールでは、関連するいくつかのパラメータを 1 つのモジュールにまとめてスタック内を整理します。Point Attributes で Lifetime パラメータを確認します。このパラメータでは、パーティクルが消滅するまでの表示期間を指定します。現実味のある煙を生み出すために、[Lifetime] パラメータには多少のランダム性を持たせることをお勧めします。[Lifetime Mode (Lifetime モード)] を [Random (ランダム)] に設定し、[Lifetime Min (Lifetime 最小値)] を 2、[Lifetime Max (Lifetime 最大値)] を 3 に設定します。
画像をクリックするとフルサイズで表示されます。
プロパティ名 値 Lifetime Mode Random Minimum 2.0 Maximum 3.0 -
スモーク エフェクトにより現実味を加えるために、スプライト パーティクルのサイズを調整します。元のパーティクル群は小さいので、このサイズを大きく設定します。また、サイズをランダムにしてスプライト パーティクルがオーバーラップするようにし、より継続性の高いエフェクトにします。 [Sprite Attributes (スプライト属性)] にある Sprite Size パラメータが有効になっていることを確認します。Sprite Size Mode を Random Uniform に設定します。Minimum (最小値)] と [Maximum (最大値)] を以下の値に設定します。
画像をクリックするとフルサイズで表示されます。
プロパティ名 値 Sprite Size Mode Random Uniform Uniform Sprite Size Min 75 Uniform Sprite Size Max 200 -
これで煙のサイズが大きくなり、より現実に近いものになりました。次に回転を加えて、パーティクルの形状にバリエーションを与えます。さらに、回転にもランダム性を加えてバリエーションを増やします。Sprite Rotation Mode の横のドロップダウンを Direct Normalized Angle (0-1) に設定します。つまり、回転角度は度ではなく 0 と 1 の間の数字として変換されます。
画像をクリックするとフルサイズで表示されます。
-
次に [Sprite Rotation Angle] の横にあるドロップダウン矢印をクリックして [Dynamic Inputs] > [Random Ranged Float] を選択します。[Normalized Angle] に [Minimum] と [Maximum] フィールドが追加されます。パーティクルのスポーン時に、パーティクルがランダムな角度で回転します。
画像をクリックするとフルサイズで表示されます。
-
[Minimum] および [Maximum] の値を以下のとおりに設定します。
画像をクリックするとフルサイズで表示されます。
プロパティ名 値 Minimum 0.25 Maximum 0.5 -
煙のサイズはちょうど良くなりましたが、現時点では同じ場所で回転するのみです。煙のパーティクルがスポーンされたときにすぐに拡散するように、初期速度を加えます。プラス記号 (+) のアイコンをクリックして [Velocity (速度)] > [Add Velocity (速度の追加)] を選択し、Add Velocity モジュールを [Particle Spawn] グループに追加します。
画像をクリックするとフルサイズで表示されます。
-
[Velocity] の横にあるドロップダウン矢印をクリックして [Dynamic Inputs] > [Random Ranged Vector] を選択します。[Velocity] に [Minimum] と [Maximum] フィールドが追加されます。繰り返しになりますが、多少のランダム性を加えることで、エフェクトのバリエーションが増えて、自然な感じも高まります。
画像をクリックするとフルサイズで表示されます。
-
[Velocity] の [Minimum] および [Maximum] の値を以下のとおりに設定します。
画像をクリックするとフルサイズで表示されます。
プロパティ名 値 Minimum X:0、Y:0、Z:50 Maximum X:1、Y:1, Z:200 -
Shape Location では、スプライトがスポーンする場所の形状と原点を制御します。Shape Location モジュールを追加することで、さまざまな形状のプリミティブでスプライトを球体形状でスポーンすることができます。プラス記号 (+) のアイコンをクリックして [Location (場所)] > [Shape Location] を選択し、Shape Location モジュールを [Particle Spawn] グループに追加します。
画像をクリックするとフルサイズで表示されます。
-
Shape Primitive を Sphere に設定します。半径を指定することでその球体形状のサイズを設定できます。[Sphere Radius (球体の半径)] の値を 64 に設定します。[Sphere Distribution] を必ず [Random] に設定してください。
画像をクリックするとフルサイズで表示されます。
-
このスモーク エフェクトに使用しているスプライト マテリアルには、スプライト シートを使用します。このシートには、複数の画像がついていて、まとめて並べられてアニメートされるようになっています。これを含まない場合、レンダラはシートの最初のスプライトのみを使用します。SubUV Animation モジュールを追加してこの問題を解決することができます。Particle Spawn の プラス記号 (+) のアイコンをクリックして、[Sub UV] > [SubUV Animation] を選択します。
画像をクリックするとフルサイズで表示されます。
-
Sub UV Animation モジュールで、[SubUV Animation Mode (SubUV アニメーション モード)] のドロップダウンをクリックして [Linear (線形)] を選択します。Start Frame (開始フレーム) タイプは 0、End Frame (終了フレーム) タイプは 63 です。スプライト シートの画像は 8x8 グリッドなので、画像の合計数は 64 です。
画像をクリックするとフルサイズで表示されます。
Particle Update グループの設定
次に Particle Update グループのモジュールを編集します。これらの挙動はパーティクルに適用され、それぞれのフレームを更新します。
-
[System Overview] にある Particle Update グループをクリックし、[Selection] パネルで開きます。
画像をクリックするとフルサイズで表示されます。
-
[Particle Spawn] に追加した速度により、パーティクルが最初にスポーンされた際に動きが加わります。次は時間の経過に伴う動きを加えて、 煙が立ち上るようにします。Particle Update の プラス記号 (+) のアイコンをクリックして [Forces (フォース)] > [Acceleration Force (加速力)] を選択し、Acceleration Force モジュールを追加します。
画像をクリックするとフルサイズで表示されます。
-
[X] および [Y] の値をそれぞれ「0」に、[Z] の値を「500」のままにしておきます。これにより、時間の経過とともに煙がまっすぐ上に立ち上るようになります。希望するスモーク エフェクトのタイプに応じてこの設定を調整するか、このモジュールを削除できます。
画像をクリックするとフルサイズで表示されます。
-
スモーク エミッタをシステム内で再使用できるようにするには、スモーク エミッタを別のアセットとして保存します。歯車 のアイコンをクリックして [Emitter Settings (エミッタの設定)] メニューを開き、[Create Asset From This (これからアセットを作成)] を選択します。これにより、独立した Niagara エミッタ アセットが作成されます。
画像をクリックするとフルサイズで表示されます。
-
次に [Save (保存)] ボタンをクリックして、変更を適用して保存します。
最終結果
おつかれさまでした!スプライトを使ってシンプルな煙のエフェクトを作成しました。
