このチュートリアルでは、炎のビジュアル エフェクト (VFX) を作成し、レベル内のトラップに追加する方法について説明します。
開始する前に
マテリアルの作成方法を理解していることを確認します。マテリアルについては、このトラックの「マテリアルとマテリアル インスタンス」のモジュールで説明されています。
次のアセットを使用します。
BP_FireTrap ブループリント
Niagara の概要
Niagara VFX システム は、Unreal Engine 内で視覚効果 (VFX) を作成するための主要なツールです。 このシステムには、カスタマイズしてレベル内に直接配置できる、さまざまな事前作成済みのビジュアルエフェクトが用意されています。 独自のビジュアル エフェクトを作成して完全にカスタマイズすることも可能です。
Niagara の詳細については、「Niagara の概要」ドキュメントを参照してください。
Niagara システムを作成する
次に、通常のエミッタを使用する最初の Niagara システム を作成します。 Niagara システムを作成するには、次の手順を実行します。
コンテンツ ブラウザに移動し、[Content (コンテンツ)] > [AdventureGame] > [Artist (アーティスト)] フォルダに移動します。 [Artist (アーティスト)] フォルダを右クリックし、[New Folder (新規フォルダ)] を選択します。 「VFX」という名前を付けます
新しい [VFX] フォルダでアセット領域を右クリックし、[FX] から [Niagara System] を選択します。
[Create Niagara System (Niagara システムを作成)] ウィンドウが開きます。 ここでは、視覚効果のベースとしてエミッタまたはシステムを選択できます。
システムを選択すると、1 つまたは複数のエミッタを使用する Niagara システムが作成されます。 エミッタを選択すると、単一のエミッタを使用する Niagara システムが作成されます。
[Hanging Particulates (浮遊粒子)] エミッタを選択し、[Create (作成)] をクリックします。
このアセットに「NS_HangingParticles」という名前を付けて開きます
NS_HangingParticles ウィンドウには、NS_HangingParticles と HangingParticulates の 2 つのノードが表示されます。
NS_HangingParticles ノードはシステム ノードで、システム全体のプロパティなどのオプションと、「System Spawn」および「System Update」という名前の 2 つのステージをリストし、Unreal Engine がシステムを作成する際 (スポーン時) やシステムがアクティブな際に実行するモジュールを追加できます。
HangingParticulates ノードはエミッタです。 これは、パーティクルの生成方法とレンダリング方法を定義するノードです。
[System Overview (システムの概要) グラフ内の任意の場所 (ノードがある場所) を右クリックすると、このシステムに新しいエミッタを追加することができます。 または、E キーをショートカットとして使用して、新しいエミッタを追加することもできます。
新しいエミッタを追加すると、Add Emitter to your System (システムにエミッタを追加) ウィンドウが開きます。 これはシステムを作成した以前のウィンドウと似ていますが、(すでにシステムを作成しているため) 利用可能なベース エミッタのみが表示されます。 この例では、別のエミッタを追加せずにウィンドウを閉じてください。
HangingParticles エミッタには、小さなダスト パーティクルに似た視覚効果を生成する事前定義モジュールが付属しています。 ウィンドウの左上隅にある [Preview (プレビュー)] パネルで、エフェクトを確認できます。
次に、このエミッタの スポーン率 を上げて、生成されるパーティクルの数を増やします。 次の手順を実行します。
HangingParticles ノードを選択します。
[Details (詳細)] パネルを使用して、[Spawn Rate (スポーン率)] カテゴリに移動します。
SpawnRate フィールドを 250 に変更します。
エミッタのスポーン率 モジュールを選択し、[Details (詳細)] パネルにそのモジュールに関連するオプションのみを表示することも可能です。
[Preview (プレビュー)] パネルでは、さらに多くのパーティクルがレンダリングされていることを確認できます。
ウィンドウの下部には、システムのアニメートに使用されているタイムラインが表示されます。 [Pause (一時停止)] ボタンまたは [Play (再生)] ボタンを押して、プレビューを制御することができます。
次に、このシステムをレベルに追加して、コンテキスト内で表示させます。 次の手順を実行します。
コンテンツ ブラウザに移動し、 NS_HangingParticles アセットを作成した [AdventureGame] > [Artist (アーティスト)] > [VFX] フォルダに移動します。
NS_HangingParticles アセットをワールドにドラッグします。 このレベルでシミュレートされたビジュアル エフェクトを確認できるようになりました。
ファイア エフェクトを作成する
このセクションでは、トラップのファイア エフェクトを作成します。
マテリアルを作成する
アニメーションのファイア エフェクトを作成するには、連続表示することで炎が動いているように見える一連の静止画像を含むテクスチャを使用します。 このタイプのテクスチャは SubUV テクスチャ と呼ばれ、マテリアルまたは Niagara エミッタを使用してアニメーション化できます。
まず、指定されているファイア テクスチャを使用してマテリアルを作成します。 次の手順を実行します。
コンテンツ ブラウザに移動し、[AdventureGame] > [Artist (アーティスト)] > [Materials (マテリアル)] フォルダに移動します。
任意の箇所を右クリックして、マテリアルを作成します。
このアセットに「M_Fire_SubUV_Simple」という名前を付けて開きます。
素材を設定するには、以下の手順を実行します。
[Details (詳細)] パネルの [Material (マテリアル)] カテゴリで次のように設定します。
[Blend Mode (ブレンド モード)] を [Translucent (透過)] に変更します。
[Shading Model (シェーディング モデル)] を [Unlit(非ライティング)] に変更します
マテリアル エディタを右クリックして ParticleSubUV ノードを作成します。
Particle SubUV ノードを選択し、[Details (詳細)] パネルでテクスチャを「T_Fire_SubUV」ファイルに変更します。
Particle SubUV ノードで RGB ピンにドラッグし、Multiply ノード (Math カテゴリの下) を追加します。
Multiply ノードの出力ピンをドラッグし、M_Fire_SubUV_Simple ノードの Emissive Color 入力に接続します。
Particle SubUV ノードの下の空の領域を右クリックして、Particle Color ノード (Particles カテゴリ内) を追加します。
その RGB 出力ピンをドラッグして、Multiply ノードの B 入力ピンに接続します。
Particle SubUV ノードの R 出力ピンからドラッグし、新しい Multiply ノードを追加します。
Particle Color ノードで A 出力ピンをドラッグし、新しい Multiply ノードの B 入力ピンに接続します。
新しい Multiply ノードの出力ピンをドラッグし、Clamp ノードを追加します。
Clamp ノードの出力ピンをドラッグし、Depth Fade ノードを追加します。
Depth Fade ノードで、[Fade Distance (フェード距離)] フィールドを「60」に変更します。
Depth Fade ノードの出力ピンを M_Fire_SubUV_Test ノードの Opacity 入力ピンに接続します。
マテリアルのプレビューは、次のようになります。
このマテリアルは、エミッシブ カラーを、Niagara システムのパーティクル カラーによって着色 (カラー化) された ParticleSubUV テクスチャの形状に設定します。 不透明度はパーティクル カラーのアルファ (透過性) 値を使用して設定され、0 から 1 の間で正規化されます。 最後に、DepthFade ノードを使用して、レベル内の近くのジオメトリとオーバーラップ (クリッピング) しているパーティクルを非表示にします。
Niagara システムを作成する
次に、炎のビジュアル エフェクトを生成する Niagara システムを作成します。 ファイア エフェクトには、軽量 (ステートレス) エミッタを使用します。 これらのエミッタは、従来のステートフルなエミッタと比較してパフォーマンスが向上するよう最適化されていますが、特定のモジュールのセットに限定されます。
軽量エミッタの詳細については、「Niagara 軽量エミッタの概要」のドキュメントを参照してください。
次の手順に従って、新しい Niagara システムを作成します。
コンテンツ ブラウザに移動し、[AdventureGame] > [Artist (アーティスト)] > [Materials (VFX)] フォルダに移動します。
任意の箇所を右クリックして [FX] から [Niagara システム] を選択します。
リストから [Minimal Lightweight (最小重量)] を選択し、[Create (作成)] をクリックします。 なお、ウィンドウの上部にある検索フィールドを使用して、システムを検索することもできます。
このアセットに「NS_LW_Fire」という名前を付けて開きます
次に、エミッタのモジュールを設定します。 次の手順を実行します。
Minimal emitter ノードを選択します。
[Details (詳細)] パネルの [Emitter State (エミッタ状態)] カテゴリで [Loop Duration (ループ持続時間)] を「5.0 秒」に変更します。
[Spawn Burst Instantaneous (スポーン瞬間バースト)] カテゴリで、次の手順を実行します。
[Spawn Burst Instantaneous (スポーン瞬間バースト)] の見出しの横にある [Type (タイプ)] ドロップダウンをクリックし、[Rate (率)] に変更します。 これによって、[Spawn Burst Instantaneous (スポーン瞬間バースト)] モジュールが [Spawn Rate (スポーン率)] モジュールに変わります。
[Spawn Rate (スポーン率)] フィールドのタイプを [Binding (バインディング)] に変更します。
ウィンドウの左下隅にある [User Parameters (ユーザー パラメータ)] パネルに移動します。 [User Parameters (ユーザー パラメータ)] カテゴリの横にある [+] ボタンをクリックし、新しいパラメータを追加します。
[Create New(新規作成)] > [Common(共通)] > [float] を選択します。
このパラメータに「FireSpawnRate」という名前を付けます。
FireSpawnRate パラメータの値を「20」に変更します。
最小エミッタを選択し、[Details (詳細)] パネルでドロップダウンを使用して [Spawn Rate (スポーン率)] フィールドの値を [FireSpawnRate] に変更します。
エミッタを選択したまま、[Details (詳細)] パネルの [Initialize Particle (初期化パーティクル)] カテゴリに移動し、[Lifetime (ライフタイム)] フィールドを 5.0 秒 に変更します。
エミッタで、[Simulate (シミュレート)] ステージの横にある [Plus (プラス)] ボタンを押して、Shape Location モジュールを追加します。
新しいモジュールを追加すると、デフォルトでそのモジュールが選択され、[Details (詳細)] パネルにはそのモジュールのみに関連するプロパティが表示されます。 いつでも、エミッタを選択して全てのモジュールのプロパティを表示するか、単一のモジュールを選択してそのプロパティのみを表示することができます。
新しいモジュールを選択し、[Details (詳細)] パネルで [Shape Primitive (形状プリミティブ)] を [Plane (平面)] に設定します。 これにより、平面全体に炎のパーティクルが分散されます。 必要であれば [Plane Size (プレーン サイズ)] を小さくすることもできますが、このチュートリアルでは 100 x 100 のままにしておいてください。
エミッタの [Simulate (シミュレート)] ステージで [Add Velocity (速度を追加)] モジュールを追加します。
モジュールを選択し、[Details (詳細)] パネルで次のように設定します。
速度を不均一な範囲に設定してください。
[Velocity (速度)] フィールドの Min Z 値を 5 に、Max Z を 10 に設定します。これにより、パーティクルはゆっくりと上方向に移動します。
エミッタの [Simulate (シミュレート)] に Scale Color モジュールを追加します。
モジュールを選択し、[Details (詳細)] パネルで Scale タイプを「Color Range (カラー範囲)」に設定します。
[Min (最小)] カラー フィールドをクリックし、[Hex sRGB] を [FFA91300] に変更します。
[Max (最大)] カラー フィールドをクリックし、[Hex sRGB] を [FF4747FF] に変更します。
これにより、各パーティクルの色が適宜設定されます。
エミッタで、[Simulate (シミュレート)] の [Scale Sprite Size (スケール スプライト サイズ)] モジュールを追加して範囲を 5 と 8 に設定します。 これにより、パーティクルのサイズが変更され、非常に大きくなります。
エミッタで、[Simulate (シミュレート)] にある [Sub UV Animation (サブ UV アニメーション)] モジュールを追加します。
エミッタの [Render (レンダリング)] カテゴリで [Sprite Renderer (スプライト レンダリング)] モジュールを選択します。
[Details (詳細)] パネルで、次の項目をアップデートします:
マテリアルを作成した M_Fire_SubUV_Simple マテリアルに変更します。
[Alignment (アラインメント)] を [Velocity Aligned (速度整合)] に変更します
[Facing Mode (対向モード)] を [Face Camera (カメラの方を向く)] に変更します。
[Sub UV (サブ UV)] カテゴリで [Sub Image Size (サブイメージ サイズ)] を「6」と「6」に変更します。
Sub Image Size に 6 x 6 を入力したのは、T_Fire_SubUV テクスチャには 6 行 6 列があるためです。
これで新しいファイア エフェクトのプレビューを確認できるようになりました。
ファイアトラップにファイア エフェクトを追加します
最後に、トラップがアクティブな間、各トラップで火のエフェクトが再生されるよう、トラップのブループリントにファイア エフェクトを追加します。 次の手順を実行します。
コンテンツ ブラウザで、[AdventureGame] > [Designer (デザイナー)] > [Traps (トラップ)] フォルダに移動します。
BP_TrapFire ブループリントを開きます
[Components (コンポーネント)] パネルで Base コンポーネントを選択し、[Add (追加)] をクリックして Niagara Particle System コンポーネントを追加します。
最初に Base コンポーネントを選択すると、Niagara コンポーネントが Base コンポーネントの子として追加されます。 これは、ベース コンポーネントのサイズに合わせてファイア エフェクトのスケールを調整するための重要なステップです。
Niagara コンポーネントを選択し、[Details (詳細)] パネルの Niagara セクションで、Niagara システム アセットを作成した NS_LW_Fire に変更します。
ブループリント エディタで、EventGraph タブを開きます。 これで次のようになりました。
最上位行の Stop ノード の前に、ファイア エフェクトを無効化するための 2 つの新しいノードを追加します。
Alt キーを押しながら Stop ノードと Set Material ノード間の接続を外します。
ノード間のスペースを確保します。
中央を右クリックして Deactivate Niagara ノードを追加します。 このノードには先ほど追加した Niagara コンポーネントにちなんだ名前が付けられています。たとえば、Deactivate [Component] などがあり、表示される名前と異なる場合があります。
Set Material ノードを Deactivate Niagara ノードに接続します。
Deactivate Niagara ノードを Stop Audio ノードに接続します。
次に、この行の下にある行についてもこれらの手順を繰り返し、マテリアル設定とオーディオ再生を実行します。
先ほどと同じ手順を実行して、代わりに Activate Niagara ノードを追加します。
ブループリントをコンパイルして保存します。
EventGraph は次のようになります。
次に、トラップのブループリントで以前作成した FireSpawnRate Niagara ユーザー パラメータを変更する機能を追加します。 この例では、ファイアのスポーン率を変更していますが、この手法は、Niagara システム内の任意の数のユーザー パラメータを変更するために利用できます。
ユーザー パラメータを変更するには、次の手順に従ってください。
ブループリント エディタで、[Construction Script (コンストラクション スクリプト)] タブに移動します。
新しい float 変数を作成し、「FireSpawnRate」という名前を付けます。
新しい変数を選択し、次の操作を行います。
[Category (カテゴリ)] を [Setup (設定)] に変更します。 これにより、FireSpawnRate は他の変数と共に設定カテゴリに分類されます。
[Default Value (デフォルト値)] を「10」に変更します。 これにより、レベル内にあるファイア トラップの新しいそれぞれのインスタンスが、表示可能なパーティクルを使用して開始されるようになります。
[Instance Editable (編集可能なインスタンス)] を有効にしてこの変数を公開します。
グラフで、Parent: Construction Script ノードの exec ピンからドラッグし、Set Niagara Variable (Float) ノードを追加します。 このノードで以下を実行します。
[In Variable Name ()入力変数名] テキスト フィールドに「FireSpawnRate」と入力します。 これは、Niagara システムで作成したパラメータを参照します。 Niagara システム内に表示される名前を正確に入力します。
In Value ピンをドラッグし、Get FireSpawnRate ノードを追加します。 これは、このブループリントで作成された変数を参照します。
Target ピンをドラッグし、ブループリントに追加した Niagara コンポーネントを参照する Get Niagara ノードを追加します。
ブループリントを保存してコンパイルします。 コンストラクション スクリプト グラフは次のようになります。
次は、ゲームをプレイして、ファイア エフェクトを確認しましょう。 ファイア エフェクトはトラップのブループリント アセットに追加されたため、レベルにビジュアル エフェクトを追加したり、トラップを手動で変更したりする必要はありません。 トラップは自動的に炎のエフェクトを獲得します。
ファイアトラップ ベース メッシュを非表示にする
ゲーム内でファイア エフェクトのみを表示できるようにファイア トラップのスクエア メッシュを非表示にするには、次の手順を実行します。
BP_TrapFireブループリントに戻ります。[Components (コンポーネント)] パネルで、[TrapBase] を選択します。
[Details (詳細)] パネルで [Rendering (レンダリング)] カテゴリに移動し、[Hidden in Game (ゲーム内で非表示)] を有効にします。
ブループリントをコンパイルして保存します。
これで、ゲームをプレイするとレベルのフロアのみにファイア エフェクトが表示されるようになります。
ファイア スポーン率を変更する
先ほど作成した FireSpawnRate 変数を使用して、個々のトラップが生成する炎のパーティクルの数を変更することができます。
ファイア スポーン率を変更するには、次の手順を実行してください。
[Outliner (アウトライナー)] パネルで、検索フィールドを使用して「BP_FireTrap」を検索します。 また、Room2 フォルダを展開すると、ルーム 2 にある全てのファイア トラップを確認できます。
全ての BP_FireTrap アクタを選択します。
[Details (詳細)] パネルの [Setup (設定)] カテゴリで、[Fire Spawn Rate (ファイア スポーン率)] フィールドを「20」に変更します。
入力した数値に応じて、スポーンされた炎のパーティクルの数が変わることを確認できます。 ゲームに適した値が見つかるまで、さまざまな値を試し続けてみましょう。
さまざまなエフェクトを試し、どのようなものを作成できるか確認できます。 詳細については、視覚効果を作成するを参照してください。
サンプル プロジェクト
以下は、このチュートリアルシリーズを使って作成できる最終サンプルプロジェクトをダウンロードするためのリンクです。 このサンプル プロジェクトを使用すると、最終的なプロジェクトの外観を確認したり、プロジェクトのビルドと設計方法を確認するための参考として使用したりできます。
次の内容
アーティスト トラック チュートリアル シリーズはこれで終了です。 マテリアル、ポストプロセスエフェクト、ライティング、オーディオ、Niagara ビジュアルエフェクトを使用して、レベルでアートパスを実行する方法を学びました。
プロジェクトをテストおよび共有用のスタンドアローン プログラムとしてパッケージ化することに関心がある場合は、次のドキュメントを参照してください。