Wwise SDK 2023.1.9
|
Wwise Spatial Audioに関しては、ほかのルームからの音の伝播は、Rooms and Portalsの抽象化だけで管理されています。Rooms with at least one propagation path to the listener through open Portals simulate diffraction. Additionally, rooms model sound transmission through walls. Diffraction and Transmission Loss values are applied to the emitter game object. In the Wwise Authoring application, you can choose whether you want these values to attenuate the sound using the attenuation curves or using built-in game parameters instead. If a sound doesn't have an attenuation instance (either custom or ShareSet), the project diffraction and transmission curves are used to attenuate the sound.
If you are using built-in game parameters to drive RTPCs, any obstruction and occlusion values set on a Portal do not affect the RTPC values. This behavior is intentional and occurs because RTPCs only provide one value per game object, but a single game object can have multiple paths through different Portals, each with different obstruction and occlusion values.
If you want to implement your own solution for obstruction (for example, one driven by game-side raycasting) in conjunction with diffraction set from Spatial Audio, the game can use the AK::SoundEngine::SetObjectObstructionAndOcclusion
sound engine API. For the occlusion of portal openings, the game can use the Spatial Audio API AK::SpatialAudio::SetPortalObstructionAndOcclusion
. また、 AK::SpatialAudio::SetGameObjectToPortalObstruction
や、 AK::SpatialAudio::SetPortalToPortalObstruction
を活用して、オブストラクションを、エミッタと付近のポータルの間、またはリスナーと付近のポータルの間、または連続する2つのポータルの間を通るサウンドパスにも、適用できます。ゲームが、ゲームオブジェクトのパラメータとしてRoomのIDを設定して AK::SoundEngine::SetObjectObstructionAndOcclusion
をコールすると、どのような結果となるのか不明なため、これは絶対に行わないでください。Spatial Audioで同じルームのオブストラクションを使う場合の詳細は、section ルームの中の障害物のモデル化 を参照してください。
これらの音響の概念については、 Spatial Audioの概念 を参照してください。
リスナーと同じルームから出された音のオブストラクションは、ジオメトリーによる回折( Geometry APIを使った回折(diffraction)と透過(transmission)のシミュレーション 、 ジオメトリのAPIとルームやポータルを、合わせて使う を参照)で対処できますが、Spatial Audioのルームやポータルだけでは処理できません。オブストラクションの計算目的でSpatial Audioにジオメトリを送信したくない場合は、同じルームで起きるオブストラクションを、ゲーム側で処理する必要があります。同室内のオブストラクションを計算するために使うジオメトリの表現、方式、そして理想の詳細レベルは、ゲームエンジンによってかなり違います。典型的なゲームでは、このタスクの実行にレイキャストを採用していますが、精度はゲームによって様々です。このセクションでは、ルームやポータルに関して、ゲーム側でオブストラクションを実装するためのコツを提供します。
しかしSpatial Audioのルームやポータルを活用すれば、全てのエミッタで処理する必要はなく、リスナーと同じルームにいるエミッタだけになります。通常のレイキャストが伝播パスを計算するのは、Spatial Audioに使われるアルゴリズムと比較してかなり負荷が大きいので、有利です。エミッタとリスナーの間の室内オブストラクションは同じルームで起きるので、その言葉の意味からして、障害物がリスナーやエミッタを完全に覆うことはなく、音は室内の反射を通してリスナーに届くものと考えます。これは、Auxセンドを変えずにドライ・直接シグナルだけを変えれば正しくモデル化できるので、該当するメカニズムはオブストラクションです。この目的のためには、ゲームは AK::SoundEngine::SetObjectObstructionAndOcclusion
をコールすべきです。
さらに隣室へのポータルは、リスナーのルーム内にあるサウンドエミッタのようにとらえるべきです。これに伴い、リスナーと、リスナーがいるルームのポータルの間でも、ゲームのオブストラクションアルゴリズムを実行するべきです。それにはゲームが各ポータルに関して AK::SpatialAudio::SetPortalObstructionAndOcclusion
をコールして、ルーム内のオブストラクションをリスナーに確実に宣言するべきです。
ゲーム側が AK::SoundEngine::SetGameObjectAuxSendValues
をSpatial Audioのルームと組み合わせて使うことも可能です。ゲームのセンドが、 AkRoomParams::ReverbAuxBus
で定義したルームオブジェクトのAuxバスへのセンドに追加されます。
Additionally, it is possible to use AK::SoundEngine::SetObjectObstructionAndOcclusion
or AK::SoundEngine::SetMultipleObstructionAndOcclusion
with Spatial Audio emitters, even though Spatial Audio already uses diffraction and transmission. オブストラクションやオクルージョンの詳細と、それらをSpatial Audioのルームやポータルでどのように使用するかについては、 別のルームからの音伝播のモデル化 や、 ルームの中の障害物のモデル化 のセクションを参照してください。
サウンドエンジンのAPIである AK::SoundEngine::SetGameObjectAuxSendValues
を使って、Spatial Audioで設定されたAuxiliary Sendsに追加することができます。室内に複雑なリバーブをデザインする時などに便利で、例えば同じ部屋に環境エフェクトが違う物体や地形がある場合などに利用できます。Roomの AkRoomParams::ReverbAuxBus
は "none" ( AK_INVALID_AUX_ID
)のままにすると、センドバスを、 AK::SoundEngine::SetGameObjectAuxSendValues
経由でゲームだけが管理できるようになります。