オーディオ エフェクトは、Niagara シミュレーション内でサウンドを再生する場合に使用します。たとえば、パーティクル シミュレーションが何かと衝突するときにサウンドを再生する場合がこれにあてはまります。Niagara システム内でこれを行うには、いくつかの方法があります。
それぞれの方法にはメリットとデメリットがあります。以下が簡単な概要です。
これらのメソッドのサンプルは、Epic Games Launcher:Unreal Engine > [Learn (ラーニング)] > [Engine Feature Samples] > [Content Examples (機能別サンプル)] の 機能別サンプル プロジェクト にあります。
Play Audio モジュールを使用する
一度限りのサウンド エフェクトの場合、Niagara からサウンド エフェクトを再生する最も簡単な方法は Play Audio モジュールを使用することです。これは、パーティクル コリジョンへの反応など、イベント駆動型エフェクトに役立ちます。また、メモリ使用量の点で最も低負荷のソリューションです。
-
Play Audio モジュールをエミッターに追加します。これを Particle Update グループに追加すると、このモジュールをパーティクルの寿命として評価することができます。
画像をクリックするとフルサイズで表示されます。
-
[Sound to Play (再生サウンド)] のドロップダウンからサウンドを選択します。機能別サンプル プロジェクトが開いてる場合、プロジェクトにはいくつかのサウンドがすでに追加されています。
-
Play Audio の条件を設定します。
これは、ピッチやボリュームなどに設定された値を使用して一度限りのエフェクトを発行します。エフェクトがトリガーされた後は変更や停止はできません。パーティクル シミュレーションが停止しても再生し続けます。
Play Audio モジュール メリット デメリット * パフォーマンスが最も良いソリューション (メモリと CPU の両方の使用に対して) * サウンドの再生が開始すると、ボリュームやピッチなどのサウンド プロパティは固定されます。 * 設定が最も簡単 * サウンドは、パーティクルが移動する時間経過に伴って位置を更新することはできません。
Audio Module のサンプル
-
機能別サンプル プロジェクト をダウンロードして、開きます。
-
コンテンツ ドロワーで、Play Audio を検索します。
画像をクリックするとフルサイズで表示されます。
-
PlayAudio Example をダブルクリックして Niagara システム のコンテンツを開きます。
画像をクリックするとフルサイズで表示されます。
-
このプロジェクトにはさまざまなタイプのオーディオ サンプルがあります。Play Audio モジュール を使用する、Play_Sound_On_Collision という名前のエミッタがあります。 Mesh_Rotational_Velocity というエミッタは、Play Persistent Audio モジュールという異なる方法を使用します。
画像をクリックするとフルサイズで表示されます。
Play Persistent Audio モジュールを使用する
このモジュールは Play Audio と類似していますが、スポーンされた各サウンド エフェクトを保持するので、時間経過と共に更新することができます。
画像をクリックするとフルサイズで表示されます。
このモジュールには、サウンド キュー パラメータのフェーディングや設定などの高度な機能もあります。ただし、この方法では動作に (Play Persistent Audio と Update Persistent Audio の 2 つのモジュールが必要なため、最初の方法よりも設定に少し注意が必要です。
両方のモジュールに同じオーディオ プレイヤー リファレンスを使用します。
オーディオ プレイヤー データ インターフェースをエミッター属性として作成し、それをモジュールにバインドすることができます。 上のスクリーンショットでは、Emitter.AudioPlayer リファレンスが両方のモジュールにあります。
画像をクリックするとフルサイズで表示されます。
EMITTER の横のチェーンの記号は、それらが既存の属性を参照していることを示しています。
デフォルトでは、それぞれのモジュールは他のモジュールとは共有することができない独自のオブジェクトを作成します。 モジュールで同じオブジェクトを使用する場合は、エミッターまたはシステム スポーン スクリプトでオブジェクトを作成してから、モジュールでそれを参照する必要があります。
Play Persistent Audio モジュールの動き方を確認するには、機能別サンプル ファイルで コンテンツ ドロワー から Play Audio を検索し、[PlayAudio Example] をダブルクリックして開きます。Mesh_Rotational_Velocity という名前のエミッタを探します。このエミッタで Play Persistent Audio というモジュールを探します。
画像をクリックするとフルサイズで表示されます。
[Play Persistent Audio] をダブルクリックして ノードグラフ を開きます。
画像をクリックするとフルサイズで表示されます。
この方法は、サウンドがパーティクルの位置とともに移動する必要がある場合など、シミュレーション中にサウンドのプロパティを変更する必要がある場合に有用です。
Play Persistent Audio モジュール | |
---|---|
メリット | デメリット |
* 実行時にボリューム、ピッチ、位置、回転を変更する | * 設定がより複雑 |
* サウンド キュー パラメータを設定し、シミュレーションの停止時にサウンドを終了する | * Play Audio よりもパフォーマンスが劣る |
* カメラ距離に応じてサウンドをフィルタリングする |
Audio Component Renderer を使用する
Audio Component Renderer は実験的機能です。Unreal Engine の他の実験的機能と同じように使用します。
Audio Component Renderer を使用して、オーディオ コンポーネントを生成できます。 Audio Component Renderer を追加するには、[Render] グループの プラス記号 (+) をクリックします。 Component Renderer を選択します。
コンポーネント レンダラーが追加されたら、[Selection] パネルから [Component Type] ドロップダウン メニューをクリックし、[AudioComponent] を選択します。
画像をクリックするとフルサイズで表示されます。
オーディオ コンポーネントを完全に制御することができるため、非常に柔軟なアプローチですが、パーティクル シミュレーションの Play Audio モジュールから機能 (フェーディングや距離ベースのフィルタリングなど) を再実装する必要があります。また、カスタム オーディオ コンポーネントを作成せずにサウンド キューを設定することはサポートしていません。
モジュールでは十分に制御できない特別なユースケースを除いて、コンポーネント レンダラーは推奨しません。
Audio Component Renderer | |
---|---|
メリット | デメリット |
* 柔軟性が高い | * 不足機能が多い |
* オーディオをより細かく制御する | * パフォーマンスが低い |
* サウンド キュー パラメータを設定できない |
パーティクル データをブループリントにエクスポートする
他のアプローチがニーズに対して柔軟に対応できない場合は、パーティクル データをブループリントまたは C++ にエクスポートし、そこにオーディオ ロジックを実装することができます。
そのためには Export Particle Data インターフェースを使用します。機能別サンプル プロジェクトの例を見るには、コンテンツ ドロワーで export particle を検索します。
画像をクリックするとフルサイズで表示されます。
パーティクル シミュレーションからデータをエクスポートする方法に関する詳細については、ExportParticleDataExample ブループリントをダブルクリックしてください。
画像をクリックするとフルサイズで表示されます。
データ エクスポート インターフェースのメリットの 1 つは、GPU エミッター上でも動作することです。必要なデータをブループリントに入れれば、オーディオ再生だけでなく、ポストプロセスやユーザー インターフェース ウィジェットなど、いくつでもコンポーネントを操作することもできます。
これがオーディオを再生する最も柔軟な方法ですが、同時に最も遅く、最も設定が複雑です。エクスポートできるデータ量にも制限があり、オーディオ コンポーネントとパーティクル データ間のマッピングを自分で行う必要があります。
パーティクル データをブループリントにエクスポートする | |
---|---|
メリット | デメリット |
* 最も柔軟性が高い | * 最もパフォーマンスが低い |
* GPU で動作する | * すべてのモジュール機能をブループリント ロジックに再実装する必要がある |
* 設定が複雑 |