Wwise SDK 2024.1.0
|
A Reverb Zone models a region within a Room that has a distinct reverb effect but does not require portals to connect to neighboring Rooms. Use Reverb Zones instead of standard Rooms whenever there are no obvious walls, or generally when there is more negative space than positive space at the interface between the two regions. Here are some example scenarios where Reverb Zones can be used:
A Reverb Zone is a type of Room within Wwise Spatial Audio, and has all the same properties of a Room. Additionally, a Reverb Zone:
There are different ways to manage sound propagation: you can add an extra send with AK::SoundEngine::SetGameObjectAuxSendValues or you can use Reverb Zones. However, Reverb Zones have an advantage: they integrate with and take full advantage of the sound propagation framework provided by the Rooms and Portals API in Wwise Spatial Audio.
The following example demonstrates Reverb Zone usage. It is included in the Integration Demo project, which is distributed as part of the Wwise SDK.
The emitter plays inside a Room called "Room Object" | |
The sound propagates ou of a Portal, which is connected to a Reverb Zone called "Patio Object". | |
The sound continues to propagate outside to the Reverb Zone's parent Room. When outside, the sound also diffracts around an obstacle defined by geometry. |
You can see how the five Game Objects are chained together in the Voice Graph in either the Advanced Profiler or the Voice Inspector.
The emitter "Emitter E" sends to both the Room it is currently inside, and any adjacent Rooms. In this case, the emitter is inside "Room Object" and adjacent to "Patio Object". | |
Each Room sends to the next Room, following the shortest path towards the listener. "Room Object" sends to "Patio Object", which in turn sends to "Outside Object". The link between "Patio Object" and "Outside Object" is established by the parent-child relationship between the two Rooms. |
You can use the AK::SpatialAudio::SetReverbZone
API to specify a transition region between a Reverb Zone and its parent Room. This transition region functions very similarly to a portal. A transition region can overlap with portals and other transition regions as long as the Rooms' geometries do not overlap. You can use this type of overlap to create smooth crossfades between Reverb Zones. To define a transition region for a Reverb Zone, the Reverb Zone Room must have geometry with 1 or more "transparent" surfaces. A transparent surface is a surface with AkAcousticSurface::transmissionLoss
set to 0. The extent of a Reverb Zone's transition region is defined by the location of the Room's transparent triangles, and the in_transitionRegionWidth
parameter passed to AK::SpatialAudio::SetReverbZone
. The transition region is centered around each triangle. Consider a Room with one wall composed of transparent surfaces, which we define as a Reverb Zone by calling AK::SpatialAudio::SetReverbZone
with in_transitionRegionWidth
set to 5. The transition region starts when a Game Object is 5 units away from the transparent wall on the outside of the Reverb Zone, and ends when the Game Object is 5 units past the wall on inside of the Reverb Zone. Because transition regions are only defined by transparent triangles, you can define a custom shape for the transition region. For more information about defining room geometry, refer to Setting up Room Geometry.
This section describes the general Reverb Zone creation process. The following example demonstrates how to create a forest surrounded by an outdoor environment. The forest and the outdoor environment each have a unique reverb effect.
Reverb Zones inherit the behaviors and properties of Rooms when it comes to attenuation, with these added considerations:
Normally, a diffraction path never carries transmission loss because only a transmission path can pass through a surface. With Reverb Zones, there are exceptions for the wet path and for room tones, if a diffraction path passes through the transition region of a Reverb Zone with AkRoomParams::TransmissionLoss
higher than 0. When this happens, it's possible for different paths from the same room to have different amounts of transmission loss. This can be seen in the Voice Inspector:
In this example of a room tone, there is a transmission path directly from the room to the listener. There is also a path diffracting through a portal. Each path carries a different amount of transmission loss.
Transmission on the direct transmission path is calculated as described in Emitter-Listener (Direct) Connection, as the max of the listener's room and the emitter's room transmission loss. When those rooms are part of different Reverb Zone hierarchies, then transmission loss will be the max of both room and their parents.
On a diffraction path, whenever a path crosses a transition region, the transmission loss of the child room applies (as specified by AkRoomParams::TransmissionLoss
), with the final transmission loss being the max of the values found along the path.
Care needs to be taken to choose which surfaces of a Reverb Zone are transparent (transmission loss is 0) because of their effect on the calculation of distance between an object in the Reverb Zone and its parent room. Any distance calculation to or from a Reverb Zone is taken based on the nearest opaque triangles.
A common example of this is the floor of a large Reverb Zone. If the floor of a Reverb Zone is transparent (has a surface transmission loss of 0), and a listener is positioned to be far away from any walls, then the nearest distance to the parent room will be through the floor, which is usually undesirable.
Another common example is a surface in a Reverb Zone that has a portal to another room. A surface with a portal connected to it should usually be opaque.
In this example, the three highlighted surfaces of a Reverb Zone have been made opaque. The bottom surface is shared with the floor. The left surface is shared with another room and has a connected portal. The top surface is a creative choice representing something like a covered balcony. All other surfaces are transparent.
AK::SpatialAudio::SetReverbZone
API creates hierarchies of rooms. Parent-child relationships are created directly by AK::SpatialAudio::SetReverbZone
, and sibling relationships are created by specifying the same parent room for more than one Reverb Zone.AK::SpatialAudio::SetReverbZone
or AK::SpatialAudio::SetPortal
with parameters that would cause portals to connect rooms within the same hierarchy will fail.AkAcousticSurface::transmissionLoss
should be above 0 for these shared walls. A Reverb Zone cannot directly transition into another Reverb Zone, therefore Reverb Zones and their transition regions should not overlap.Questions? Problems? Need more info? Contact us, and we can help!
Visit our Support pageRegister your project and we'll help you get started with no strings attached!
Get started with Wwise