UnrealのNiagara VFXシステムを使用し、複雑なエフェクトシステムをビジュアルプログラミングパラダイムで構築できます。Niagaraシステムの詳細については Niagara Overview.
Wwise Unreal Integrationは、Niagaraシステム内からWwise Eventのポストと更新を行うために必要なコードとNiagaraモジュールを提供します。
プラグインをアクティブ化する
プラグインはEngineまたはGameプラグインとしてインストールできます。このプラグインはWwise Unreal Engine Integrationプラグインとともに自動的にインストールされます。 プラグインをインストールした後、Unreal Editorでアクティブ化できます。アクティブ化するには、 Edit > Plugins を選択してから Wwise Niagara Integration を選択します。
Niagara Wwise Event Data Interface
このインテグレーションに含まれるWwise Event用のNiagara Data Interfaceを使用し、Wwise EventアセットとGame ParameterアセットをNiagaraシステム内で参照できます。このData InterfaceはNiagaraのCPUシミュレーションとのみ互換性があります。これを使用して、ファイアアンドフォーゲット(撃ちっ放し)Eventと、シミュレーションの進行に合わせてコントロール可能な永続的Eventをポストできます。永続的Eventの場合、データインターフェースが内部の「オーディオハンドル」を追跡し、これを使ってパーティクルインスタンスやエミッターインスタンスをポストされたEventにマッピングします。
パラメータ:
- Event to Post ( 必須 ): ポストするAkAudioEventアセット。
- Max Plays per Tick ( デフォルト: 10 ): 1ティック当たりにポストするEventの最大数を設定します。任意のティックでそれ以上のパーティクルがサウンドの再生を試みると、サウンドを上限に達するまで再生し、残りは廃棄します。
- Stop when Component is Destroyed ( デフォルト: True ): Niagaraコンポーネントが破棄された時(パーティクルの死またはシステムの停止や破棄)にEventを停止します。ループするサウンドはコンポーネントが破棄されると常に停止されます。
- Only active During Gameplay ( デフォルト: False ): アクティブなゲームプレイ中にのみサウンドを処理し、開かれたビューポート内でRealtime Renderingを使用している間は処理しません。これはプレビューウィンドウで作業していて、サウンドを聞こえないようにしたい時に便利です。
- Game Parameters : 一連のGame Parameterで、Set Wwise Persistent Event Game Parameterモジュールで更新(インデックス経由)します。
Niagaraモジュール
Niagara Wwise Event Data Interfaceは、Eventをポストし、それらの再生パラメータやGameObjectパラメータを更新するための関数を実装します。これらの関数はNiagaraモジュールで利用できますが、Niagaraエミッターのスタックから直接利用することはできません。インテグレーションには一連の基本的なNiagaraモジュールが含まれ、これらの各関数をNiagaraスタックに公開します。
info | 注記: これらのモジュールはプラグインの中に含まれるため、新しいモジュールをスクリプトに追加する時に、 Plugins フィルタを選択してモジュールを Add new Module 選択ボックスに表示させる必要があります。
|
Post Wwise Event at Location
パラメータ:
- Post Event Condition ( デフォルト: True ): Eventをポストするために満たす必要のあるブール条件。
- Position ( デフォルト: システム/エミッター/パーティクルの位置 ): ポストされたEventの空間的な位置。
- Rotation ( デフォルト: 0 ): ポストされたEventの空間回転。
- Wwise Event Data ( 必須 ): Niagara Wwise Event Data Interface 。
- Position Coordinate Space ( デフォルト: Simulation ): Positionの座標に使用する座標システム。Emitterの設定に合わせるにはSimulationに設定(この場合はWorldの座標がWwiseに送られる)、エミッターと相対的な位置を選択するにはLocalに設定、Worldの空間を使用するにはWorldに設定します。
動作:
このモジュールは、パーティクルやエミッターの存続期間中に管理する必要のない「ファイアアンドフォーゲット(撃ちっ放し)」Eventをポストします。 このモジュールはEventを、特定の場所にあり特定の向きを持つ一時的なGameObjectにポストします。
info | 注記: 無限のデュレーションのEventは、StopAll()をコールしない限り停止できないため、この方法でポストできません。 |
dangerous | 警告: パーティクルシステムから短時間に多数のWwise Eventをポストすると、サウンドエンジンに過剰な負荷がかかる可能性があります。必ず、システムがポストできる1フレーム当たりのEvent数を制限するか、Wwiseプロジェクトで 再生制限を設定 してください。 |
Post Wwise Persistent Event
パラメータ:
- Post Event Condition ( デフォルト: True ): Eventをポストするために満たす必要のあるブール条件。
- Position ( デフォルト: システム/エミッター/パーティクルの位置 ): ポストされたEventの空間的な位置。
- Rotation ( デフォルト: 0 ): ポストされたEventの空間回転。
- Wwise Event Data ( 必須 ): Niagara Wwise Event Data Interface で、更新すると永続的Eventを参照します。
- Position Coordinate Space ( デフォルト: Simulation ): Positionの座標に使用する座標システム。Emitterの設定に合わせるにはSimulationに設定(この場合はWorldの座標がWwiseに正確に送られる)、エミッターと相対的な位置を選択するにはLocalに設定、Worldの空間を使用するにはWorldに設定します。
動作: AkComponentを特定の位置に、指定した回転で作成し、提示されたEventをこれに対してポストします。EventをポストしたAkComponentは、アップデートループ内のモジュールによって生きた状態が維持されます。このためパーティクルが死んだ場合やカリングされた場合、AkComponentは確実に破棄され、メモリがリークしません。 モジュールがUpdateスクリプトで更新されなければ(System、Emitter、 Particle)、AKComponentは破棄されます。この場合、1フレームの オーディオがポスト後に再生され、すぐに消去されます。 コンポーネントが破棄された時、それに対してポストしたEventが停止するかは、Niagara Wwise Event Data Interfaceの Stop when Component is Destroyed の設定によります。
このモジュールをNiagaraシステムの Update ステージに入れると、EventをPost Event Conditionを満たした時に1インスタンス(エミッターまたはパーティクル)当たり1回ポストし、AkComponentは生き続けます。ほかの永続的Eventモジュールをアップデートステージで使用している場合は、それらによってAkComponentが生き続けるため、Post Persistent Eventモジュールを、代わりにエミッタースタックの Spawn ステージに入れることができます。
info | 注記: Persistent Eventを使用する時は、同じ永続的Eventを扱うモジュールのWwise Event Dataパラメータに、同じ属性を使うことが重要です。同じ属性を使うことで、各パーティクルに関連付けられたインスタンスデータをほかのモジュールで利用できるようになります。この属性が存在する可能性があるのはUserレベル、Systemレベル、Emitterレベルです。 |
以下のモジュールを使用して、永続的Eventの再生をコントロールしたり、AkComponentのGameObjectにGame Parameterを設定したり、Sound Engine内のGameObjectを更新するためにAkComponentの位置や向きを更新したりできます。
Update Wwise Persistent Event Position
パラメータ:
- Position ( デフォルト: システム/エミッター/パーティクルの位置 ): ポストされたEventの空間的な位置。
- Wwise Event Data ( 必須 ): Post Wwise Persistent Eventで設定したEvent Dataへのレファレンス。
- Position Coordinate Space ( デフォルト: Simulation ): Positionの座標に使用する座標システム。Emitterの設定に合わせるにはSimulationに設定(この場合はWorldの座標がWwiseに送られる)、エミッターと相対的な位置を選択するにはLocalに設定、Worldの空間を使用するにはWorldに設定します。
動作:
AkComponentの位置を設定します。
Update Wwise Persistent Event Rotation
パラメータ:
- Rotation ( デフォルト: 0 ): ポストされたEventの空間回転。
- Wwise Event Data ( 必須 ): Niagara Wwise Event Data Interface。
動作:
AkComponentの回転を設定します。
Set Wwise Persistent Event Game Parameter
パラメータ:
- Game Parameter Index ( デフォルト: 0 ): Wwise Event Dataの「Game Parameters」アレイにあるGame Parameterのインデックス。
- Game Parameter Value ( デフォルト: 0 ): 希望するGame Parameter値。
- Wwise Event Data ( 必須 ): Wwise Event Data Interfaceへのレファレンス。
動作:
AkComponentのGameObjectのGame Parameter値を設定します。
Stop Wwise Persistent Event
パラメータ:
- Stop Condition ( デフォルト: True ): trueの場合、Eventの再生を停止します。
- Wwise Event Data ( 必須 ): Wwise Event Data Interfaceへのレファレンス。
Pause Wwise Persistent Event
パラメータ:
- Pause Condition ( デフォルト: True ): trueの場合、Eventの再生を一時停止します。falseの場合、再生を再開します。
- Wwise Event Data ( 必須 ): Wwise Event Data Interfaceへのレファレンス。
アクティブなイベントを制限するためのベストプラクティス
Wwise EventをポストするNiagaraシステムをデザインする時はWwise Profilerを注意深く監視します。Max Plays per Tick パラメータを利用することで、生成されるパーティクル数が多過ぎる時にSoundEngineにかかる負荷を抑制することはできますが、オーディオEventがそれなりに長ければ、結局は同時に起きるボイスが多数発生する可能性があります。Wwiseプロジェクトにあるオブジェクトの再生制限の設定 を使用し、パーティクルシステムがスポーンできるボイス数にハードリミットを設定できます。
パーティクルデータをブループリントにエクスポートする
Export Particle Dataモジュールは、NiagaraシステムをWwise Sound Engineに接続するための代替案を提供してくれます。このモジュールは、任意のパーティクルデータを、Receive Particle Dataインターフェースを実装するBlueprintにをエクスポートします。これにより、Blueprintに公開されているすべてのWwise Integration機能を使用できるようになります。デフォルトで、Export Particle Dataモジュールは2つのベクトルと1つの浮動小数点値をエクスポートし、これらによって位置、速度、永続的ID、年齢(経過時間)など各パーティクルに関する情報を伝達します。
Wwise Niagaraサンプル
Wwise Integration Unreal Gymsプロジェクトは、前述のNiagara Wwise Event Dataインターフェースとそのモジュールの使い方を示すサンプルのNiagaraシステムと、Export Particle DataをCPUおよびGPUパーティクルシステムと使う方法を示すNiagaraシステムとBlueprintアクタを提供します。
これらのサンプルは、パーティクルの軌跡を追う永続的Eventをポストし、それらのEventにGame Parameterを設定し、パーティクルが衝突するとファイアアンドフォーゲットEventをポストします。
Wwise Niagaraモジュールを以前のUnrealバージョンで使用する
提供中のNiagaraモジュールはUnreal 5.X以降と互換性があります。もし Unreal 4をご利用の場合は、提供されているWwise Niagara関数は使用できますが、関連するNiagaraモジュールは再構築する必要があります。
これを行うには、タイプFX > Niagara Module Scriptのアセットを作成します。
Post Wwise Event at Location
Post Persistent Wwise Event
Update Persistent Event Position
Update Persistent Event Rotation
Set Persistent Event Game Parameter
Stop Persistent Wwise Event
Pause Persistent Wwise Event