Wwise SDK 2023.1.9
|
Wwiseのゲーム定義Auxセンドは、サウンドのゲーム内での位置に基づいて、1つまたは複数の環境エフェクトを簡単に適用する方法です。"Use game-defined auxiliary sends(ゲーム定義Auxセンドを使用)" オプションが、オブジェクトのプロパティ、または、プロパティの継承元であるオブジェクトで設定されている必要があります。
Wwiseを使用して、サウンドデザイナーはゲーム内で使用する複数の環境を定義することができます。たとえば、以下のような環境が定義可能です:
各環境は、様々なパラメーターセットにより環境リバーブエフェクトを表すことができます。そうすることで、それぞれの環境を、Wwiseプロジェクト内で、それぞれ別のAuxiliariy Busによって表せます。
各ゲームオブジェクトは、最初は環境として定義されない場所にあることが前提です。 サウンドが環境にない場合 (AUXバスにルートされていない)、通常に再生されます。 つまり、いずれの環境エフェクトなしで再生されます。
同一 Aux バス内のすべてのサウンドは、エフェクト適用の前にミックスされます。 各ゲームオブジェクトに対して、異なるボリュームを設定することができます。
注釈: API で使用される値は 0 から 1 で、これらはフルボリュームの割合を表しています。0 は 0、1 は 100% となります。ボリュームが1つ以上の場所に適用された場合、結果の値は乗算されます。たとえば、GAME_OBJECT_ID_HUMAN ゲームオブジェクトがAUXバス"Hangar"の 50% で、AUXバス "Hangar" が 90で減衰されている場合、このゲームオブジェウトはエフェクトが 45でサウンドを発します (0.50f * 0.90 )。 |
ゲーム定義Auxセンドの処理は、以下の関数を使用して実行可能です:
ダイナミックAuxバスルーティング: Auxバスへの動的送信
Wwiseサウンドエンジンのバスのすべてのインスタンスは、ゲームオブジェクトに関連付けられています。AUXセンドを作成するときは、特定のAUXバスをターゲットとして、サウンドエンジンにリスナ ー・ エミッタの関連付けを作成します。エミッタとリスナーのゲームオブジェクトの位置は、サウンドを空間化するためにソースとターゲットのオーディオ・ノードで使用されます(サウンドがオーサリングツールで3Dに設定されている場合)。AUXセンドを定義するとき、ソース・オーディオ・ノードのダイレクト出力に割り当てられているターゲットAuxバスに対して同じリスナーを使用することが望ましい場合があります。これは、 SetListeners()
または SetDefaultListeners()
を介して割り当てられたリスナーです。 この動作を容易にし、どのゲームオブジェクトがどのリスナーに既に関連付けられているかを覚えておく必要を避けるために、AK_INVALID_GAME_OBJECT
を listenerID
として渡します。
注釈: AkAuxSendValue 構造の listenerID フィールドを書き込むことが重要です。それを初期化しないと、未定義の動作になります。 |
SDK では、バンク内のアイテムにアクセスするために、文字列使用またはID使用の 2種類の方法を提供します。文字列を使用すると、コードがより読みやすくなり、開発段階での使用や通常文字列を使用する環境での使用に適しています。ID を使用すると、ランタイム時における Wwise による名前のハッシュ処理を避けることができます。
IDを使用して作業するには、Wwise の Generate SoundBanks ダイアログボックス内 "Generate header file" オプションでバンクを生成する必要があります。Wwise_IDs.h という名前の定義ファイルには、全ての必要なIDが含まれています。この定義ファイルは、バンクが生成されるたびに更新されます。
Wwiseにおけるバンク生成に関する詳細は、Wwise Helpを参照してください。
注意: IDで作業する場合、新しいバンクの生成時に、.h ファイルを最新の状態に保っておくことが大切です。さもなければ、IDの不整合および/またはコンパイルエラーが発生する可能性があります。 |
以下は、Wwise に生成される非常に単純なヘッダファイルの例です:
抜粋コードを修正する必要があります。
通常、Wwise に生成されるヘッダファイルは、上記のものよりはるかに多くの情報を含んでいます。これは、各イベント、スイッチ、バスなどごとにエントリが追加されるためです。
両方のメソッドを組み合わせて使用することも可能です。たとえば、文字列で作業をし、環境(Environments)にアクセスするためにIDを使用することができます。
次のメソッドは、unicode文字列からIDへの実行時変換を行います。これにより、環境ごとの文字列テーブルのワンタイム ルックアップ、続いてIDの使用が可能になります。
Auxバスルーティングの動的な駆動は、 AK::SoundEngine::SetGameObjectAuxSendValues()
関数を使用して実行可能です。 関数の最初のパラメータは、ゲーム定義 Aux バスルーティングが適用されるゲームオブジェクトIDです。2番目と3番目のパラメータは、 AkAuxSendValue
タイプの構造体配列と送信先 Aux バスの数を表しています。 サウンドの "Use game-defined auxiliary sends" オプションが有効化されていないと、このゲームオブジェクトには環境が適用されません。ゲームオブジェクトの送信先となる各Aux バスに対して、環境適用の割合を表す制御値を設定する必要があります。制御値は、0.0fから1.0fの間の値で、0がセンドなし、1がセンド100を表します。
注釈: オブジェクトのauxiliary sendsを変更すると、サウンドエンジンは、グリッチを回避するために環境を補正します。その結果、一部のフレームでオブジェクトが予想以上の個数のAuxiliary Busに接続することがあります。 |
SHangar Auxバスを100に設定。
Hangar Auxバスを75、Tunnel Auxバスを25に設定。
制御値を使用すると、サウンドが1つの環境から別の環境へスムーズに移行するようにできます。
Tip: Auxセンド値のトータルが、100である必要はありません。たとえば、ゲームオブジェクトに軽い環境エフェクトのみを設定する場合、ゲームオブジェクトを1環境で25に設定することが可能です。 |
注意: Wwiseサウンドエンジンは、同時に送信を受ける Aux バス数を制限しません。つまり、同時に多数の環境 FX が処理されるよう要求することが可能です。環境 FX の中には、多くの CPU を占有するものがあるので、同時に多数の環境 FX を実行するとパフォーマンスの低下を引き起こすことがあります。したがって、たとえば、64サウンドが、それぞれ独自の環境と再生されるような状況が起こらないように注意してください。 |
次の例では、3D空間で音響ポータルをシミュレートするために使用されるゲームオブジェクトを登録しています。ゲームオブジェクトは、サウンドもメインのリスナーも内部にない環境を表します。. listenerID
フィールドを有効なゲームオブジェクトIDに設定すると、 SetListeners()
と同様の方法でエミッタ・リスナー アソシエーションが作成されます。ただし、オーディオ・ノードの補助出力に適用されますが、 SetListeners()
は 直接出力に適用されます。オーディオを送信するオーディオ・ノードは、オーサリングツールで "ゲーム定義の補助送信を使用" フラグを設定することによって制御されます。listenerID
が auxBusID
で指定されたバスのインスタンスをゲームオブジェクト listenerID
に設定する方法を視覚化するには、Wwiseオーサリングツールの詳細プロファイラの音声グラフタブを参照してください。
In this example, the AK::AUX_BUSSES::TUNNEL_ENV_PORTAL
aux bus should be set to “Enable Positioning” and positioning type 3D in the Wwise authoring tool, so that is can also emit sound in the 3D simulation.
この例では、Wiseオーサリングツールで AK::AUX_BUSSES::TUNNEL_ENV_PORTAL
バスを "Enable Positioning" と位置づけタイプ3Dに設定する必要があります。そして、3Dシミュレーションでも音を出すことができます。
ゲームオブジェクトが属する複数のAuxiliary Busを変更できるほか、AK::SoundEngine::SetGameObjectOutputBusVolume()
関数を使用して、そのゲームオブジェクトのドライ成分を減らすことができます。この関数は、オブストラクションをシミュレートするために使用することができます。 最初は、(サウンドオブジェクトのプロパティで特に指定のない限り)各ゲームオブジェクトのドライレベルは100% (1.0f)に設定されています。
Tip: サウンドが遠すぎてリスナーがその反響のみを聞くことができる状況をシミュレートするには、ドライレベルを 0% に設定してください。 |
Aux バスの出力に適用されるボリュームは、他のバスのボリュームの場合と同様に、オーサリングツールの Volumes スライダー、State、RTPCなどを使用して駆動可能です。