Version
menu_open
Wwise Unity Integration Documentation
Additional Spatial Audio Features
Note: This page assumes you have already completed the Preparation for the Spatial Audio Tutorials as well as both Surface Reflectors Tutorial and Rooms and Portals Tutorial.

A. Surface Reflectors and Portals

Just like portals will open up a room area to let the sound propagate through it, it will also do the same through a reflective surface. At the end of the Surface Reflectors Tutorial, we noticed that reflections were occuring on openings of our mesh if we used simple cubes as surface reflectors. To fix this problem, Spatial Audio Portals are also aware of reflection paths and let them pass through. Reflection paths will even diffract on the borders of a portal.

  1. Setup is simple, just placing a portal through a room and a surface reflector should do the trick.
    Reflection paths going through a Portal in the Game Object 3D Viewer

B. Surface Reflectors and Reverb

In a Room with late reverb, it is possible to feed early reflections into the reverb to make it more geometry aware.

  1. In the Wwise project, open the Auxiliary Bus with the Reflect Effect applied to it.
    1. In the General Settings tab, make sure Use game-defined auxiliary sends is checked.
      Auxiliary Bus Property Editor General Settings tab to send early reflection to the room reverb
  2. Play the scene and press the button in the small Room. With the player in the small Room, here is the Voices Graph we see:
    Early reflections in the small room are sent to the small room's reverb in the Voices Graph

C. Diffraction

When an object appears between the emitter and the listener, Spatial Audio can create diffraction paths that will go around the object. Depending on the angle of the path around an edge, the sound will be attenuated to simulate obstruction. You can enable diffraction per Sound and per Surface Reflector. An emitter emitting diffraction enabled sound will only diffract off a diffraction enabled reflective surface.

  1. Enabling diffraction on the Sound:
    1. In the Positioning tab, make sure the Enable Diffraction checkbox is checked.
      Enable Diffraction on the Sound
  2. Enabling diffraction on an AkSurfaceReflector component:
    1. Check Enable Diffraction. This will generate diffraction edges on the geometry sent to Wwise Spatial Audio. The diffraction edges will be visible in the game object viewer when Wwise is connected to the game.
    2. You may also want to check Enable Diffraction On Boundary Edges. This checkbox appears when the previous checkbox is checked. Boundary edges are edges that are connected to only one triangle. For example, edges around the Unity Quad 3D Object would be considered boundary edges.
      Diffraction enabled AkSurfaceReflector
  3. In the Wwise Unity Demo Scene, the outside emitter, the barrier and the exterior of the building are diffraction enabled. Diffraction paths are in purple. Each one of them will create a virtual source placed where the sound will be heard from.
    Diffraction paths in the Game Object 3D Viewer

D. Transmission

When an object appears between the emitter and the listener, the sound can also pass through the object. Spatial Audio models this phenomena by applying occlusion filtering on the direct path of the sound. Occlusion values ranging from 0 to 1 can be applied on an AkSurfaceReflector or AkRoom components. The occlusion value is then sent to Wwise where the associated filter is applied according to the occlusion curves of the project. Typically, a value of 1.0 represents full occlusion, and a value of 0.0 indicates that sound can be transmitted through the geometry.

  1. Enable transmission in the spatial audio init settings
    Spatial Audio Init Settings
  2. The transmission value of a sound is the maximum occlusion value of AkSurfaceReflector or AkRoom components that the sound encounters in a direct path from the emitter to the listener.
    1. On AkSurfaceReflector components, associate an occlusion value for each submesh of the surface reflector mesh by populating the Occlusion Values array.
      Occlusion Values array on the AkSurfaceReflector component
    2. On AkRoom components, change the occlusion value in the Wall Occlusion parameter.
      Wall Occlusion parameter on the AkRoom component
  3. Adjust the occlusion curves in Wwise Authoring in the Obstruction/Occlusion tab of the Project Settings.
    Occlusion curves in the Wwise Project Settings

E. Room-Aware Surface Reflectors (Optimization)

Each surface reflector added to Spatial Audio is analysed for diffraction edges and visibility. To optimize this step, each room can have a group of connected surface reflectors. Surface Reflectors associated with a room are not visible from other rooms. A Surface Reflector should be associated to a room if it is completely encompassed by it and if that room doesn't share surface reflectors with other rooms. Associating a room to a surface reflector is totally optional. If no room is selected, the surface reflector is added to a global group of surface reflectors. Associating surface reflectors to rooms will reduce the search space for ray casting performed by reflection and diffraction calculations.

  1. Choose a Room under Associated Room in the AkSurfaceReflector component to associate them.
    Room-Aware AkSurfaceReflector
Helper class that knows a Wwise Event and when to trigger it in Unity. As of 2017....
Definition: AkEvent.cs:36
UnityEngine.Vector3 axis
The axis used to find the contribution of each environment.
Definition: AkEnvironmentPortal.cs:17
static bool Call(string Uri, string Args, string Options, out string Result)
Perform a call to the Wwise Authoring. See Querying the Wwise Project for more information.
Definition: AkWaapiClient.cs:184
(DEPRECATED) This script is deprecated as of 2019.2. Early reflections, Diffraction and Room Reverb c...
Definition: AkSpatialAudioEmitter.cs:9
bool decodeBank
Decode this SoundBank upon load.
Definition: AkBank.cs:20
AK.Wwise.AcousticTexture[] AcousticTextures
The acoustic texture per submesh. The acoustic texture represents the surface of the geometry....
Definition: AkSurfaceReflector.cs:17
bool loadAsynchronous
Check this to load the SoundBank in the background. Be careful, if Events are triggered and the Sound...
Definition: AkBank.cs:23
bool drawDiffractionPaths
This allows you to visualize geometric diffraction sound paths between an obstructed emitter and the ...
Definition: AkSpatialAudioDebugDraw.cs:18
void ClosePortal(UnityEngine.GameObject in_gameObject)
Closes the portal on trigger event.
Definition: AkRoomPortal.cs:132
ulong GetID()
Access the portal's ID.
Definition: AkRoomPortal.cs:99
float reverbLevel
The reverb control value for the send to the reverb aux bus.
Definition: AkRoom.cs:29
Trigger triggerDelegate
All components reacting to the trigger will be registered in this delegate.
Definition: AkTriggerBase.cs:19
static bool IsConnected
Is the client connected
Definition: AkWaapiClient.cs:33
Sorts AkEnvironments based on the selection algorithm. The selection algorithm is as follows:
Definition: AkEnvironment.cs:75
Sorts AkEnvironments based on their priorities.
Definition: AkEnvironment.cs:61
float transitionDuration
Duration of the fade. See AK::SoundEngine::ExecuteEventOnAction()
Definition: AkEvent.cs:72
static bool Unsubscribe(ulong SubscriptionID, int TimeoutMs, out string Result)
Unsubscribes from a topic.
Definition: AkWaapiClient.cs:166
float reflectionsAuxBusGain
(DEPRECATED) As of 2019.2, the early reflections send volume can be set per sound,...
Definition: AkSpatialAudioEmitter.cs:20
virtual UnityEngine.Vector3 GetUpward()
Definition: AkGameObj.cs:228
This component converts the provided mesh into Spatial Audio Geometry.
Definition: AkSurfaceReflector.cs:10
float roomReverbAuxBusGain
(DEPRECATED) As of 2019.2, the Room Reverb Aux Bus Gain is set by the Game-Defined Auxiliary Sends Vo...
Definition: AkSpatialAudioEmitter.cs:28
uint diffractionMaxPathLength
(DEPRECATED) As of 2019.2, diffraction is enabled in the Sound Property Editor in the Authoring tool.
Definition: AkSpatialAudioEmitter.cs:39
static SpatialAudioListenerList SpatialAudioListeners
Returns the list of active Unity Game Objects that are designated to be spatial audio listeners.
Definition: AkSpatialAudioListener.cs:36
static bool Subscribe(string Uri, string Options, WaapiEventCallback Callback, out ulong SubscriptionID, out string Result)
Subscribes to a topic. See Subscribing to Topics in the Wwise Authoring API for more information.
Definition: AkWaapiClient.cs:75
bool drawDiffractionPaths
(DEPRECATED) Spatial Audio Debug Drawing were moved to the new AkSpatialAudioDebugDraw component.
Definition: AkSpatialAudioEmitter.cs:55
This class represents the list of active Unity Game Objects that are designated to be spatial audio l...
Definition: AkSpatialAudioListener.cs:60
bool isLocalizedBank
Is the bank localized (situated in the language-specific folders)
Definition: AkMemBankLoader.cs:20
void UpdateGeometry()
Update the surface reflector's geometry in Spatial Audio.
Definition: AkSurfaceReflector.cs:202
override void OnEnable()
Definition: AkRoom.cs:86
static bool Unsubscribe(ulong SubscriptionID, out string Result)
Unsubscribes from a topic.
Definition: AkWaapiClient.cs:149
bool drawSecondOrderReflections
(DEPRECATED) Spatial Audio Debug Drawing were moved to the new AkSpatialAudioDebugDraw component.
Definition: AkSpatialAudioEmitter.cs:49
The full Wwise Authoring API is exposed to Unity as a native plugin for the Windows and macOS platfor...
Definition: AkWaapiClient.cs:6
void LoadNonLocalizedBank(string in_bankFilename)
Load a SoundBank from WWW object.
Definition: AkMemBankLoader.cs:45
AK.Wwise.AuxBus reflectAuxBus
(DEPRECATED) As of 2019.2, the early reflections auxiliary bus can be set per sound,...
Definition: AkSpatialAudioEmitter.cs:13
This component represents a sound object in your scene tracking its position and other game syncs suc...
Definition: AkGameObj.cs:21
Add this script on the game object that represent a listener. This is normally added to the Camera ob...
Definition: AkAudioListener.cs:16
bool EnableDiffractionOnBoundaryEdges
Switch to enable or disable geometric diffraction on boundary edges for this mesh....
Definition: AkSurfaceReflector.cs:30
void SetGeometry()
Sends the mesh's triangles and their acoustic texture to Spatial Audio
Definition: AkSurfaceReflector.cs:175
uint diffractionMaxPaths
(DEPRECATED) As of 2019.2, diffraction is enabled in the Sound Property Editor in the Authoring tool.
Definition: AkSpatialAudioEmitter.cs:36
Defines the behavior of a AkEventPlayable within a AkEventTrack.
Definition: AkEventPlayableBehavior.cs:14
bool drawFirstOrderReflections
(DEPRECATED) Spatial Audio Debug Drawing were moved to the new AkSpatialAudioDebugDraw component.
Definition: AkSpatialAudioEmitter.cs:46
void ExitedRoom(AkRoom room)
Called when exiting a room.
Definition: AkRoomAwareObject.cs:80
void UnloadBank(UnityEngine.GameObject in_gameObject)
Unloads a SoundBank.
Definition: AkBank.cs:75
delegate void Trigger(UnityEngine.GameObject in_gameObject)
Delegate declaration for all Wwise Triggers.
This enables us to detect intersections between portals and environments in the editor.
Definition: AkEnvironmentPortal.cs:80
static bool Subscribe(string Uri, string Options, WaapiEventCallback Callback, int TimeoutMs, out ulong SubscriptionID, out string Result)
Subscribes to a topic. See Subscribing to Topics in the Wwise Authoring API for more information.
Definition: AkWaapiClient.cs:106
bool Remove(AkSpatialAudioListener listener)
Removes listeners from the list
Definition: AkSpatialAudioListener.cs:92
AK.Wwise.AuxBus reverbAuxBus
The reverb auxiliary bus.
Definition: AkRoom.cs:25
void LoadLocalizedBank(string in_bankFilename)
Load a language-specific bank from WWW object.
Definition: AkMemBankLoader.cs:52
delegate void WaapiEventCallback(ulong SubscriptionID, string Contents)
Delegate ran when a subscription is triggered
override void HandleEvent(UnityEngine.GameObject in_gameObject)
Loads the SoundBank.
Definition: AkBank.cs:66
This will call AkSoundEngine.SetSwitch() whenever the selected Unity event is triggered....
Definition: AkSwitch.cs:17
bool drawSecondOrderReflections
This allows you to visualize second order reflection sound paths.
Definition: AkSpatialAudioDebugDraw.cs:12
AkGameObjPositionOffsetData m_positionOffsetData
When not set to null, the position will be offset relative to the Game Object position by the Positio...
Definition: AkGameObj.cs:38
virtual UnityEngine.Vector3 GetForward()
Definition: AkGameObj.cs:221
UnityEngine.GameObject sender
GameObject from whom the callback function was called.
Definition: AkEvent.cs:18
An AkRoom is an enclosed environment that can only communicate to the outside/other rooms with AkRoom...
Definition: AkRoom.cs:8
virtual UnityEngine.Vector3 GetPosition()
Definition: AkGameObj.cs:210
AK.Wwise.AuxBus reflectionsAuxBus
Definition: AkEarlyReflections.cs:14
Add this script on the game object that represent a listener. This is normally added to the Camera ob...
Definition: AkSpatialAudioListener.cs:19
A playable asset containing a Wwise event that can be placed within a AkEventTrack in a timeline.
Definition: AkEventPlayable.cs:16
void EnteredRoom(AkRoom room)
Called when entering a room.
Definition: AkRoomAwareObject.cs:71
System.Collections.Generic.List< int > unloadTriggerList
Reserved.
Definition: AkBank.cs:29
uint reflectionsOrder
(DEPRECATED) As of 2019.2, the Reflection Order is set in the Spatial Audio Initialization Settings.
Definition: AkSpatialAudioEmitter.cs:23
float wallOcclusion
Occlusion level modeling transmission through walls.
Definition: AkRoom.cs:33
static bool Call(string Uri, string Args, string Options, int TimeoutMs, out string Result)
Perform a call to the Wwise Authoring. See Querying the Wwise Project for more information.
Definition: AkWaapiClient.cs:209
Event callback information. Event callback functions can receive this structure as a parameter
Definition: AkEvent.cs:13
AkCallbackInfo info
For more information about the event callback, see the classes derived from AkCallbackInfo.
Definition: AkEvent.cs:15
A track within timeline that holds AkEventPlayable clips.
Definition: AkEventTrack.cs:20
static void Disconnect()
Disconnects from the connected Wwise Authoring application
Definition: AkWaapiClient.cs:50
This will call AkSoundEngine.SetState() whenever the selected Unity event is triggered....
Definition: AkState.cs:17
Definition: AkRoom.cs:156
UnityEngine.Mesh Mesh
The mesh to send to Spatial Audio as a Geometry Set. We recommend using a simplified mesh.
Definition: AkSurfaceReflector.cs:13
string bankName
Name of the bank to load.
Definition: AkMemBankLoader.cs:17
AkEnvironment[] environments
Definition: AkEnvironmentPortal.cs:22
bool drawHigherOrderReflections
This allows you to visualize third or higher order reflection sound paths.
Definition: AkSpatialAudioDebugDraw.cs:15
ulong GetID()
Access the room's ID.
Definition: AkRoom.cs:81
void RemoveGeometry()
Remove the surface reflector's geometry from Spatial Audio.
Definition: AkSurfaceReflector.cs:211
override void HandleEvent(UnityEngine.GameObject in_gameObject)
Opens the portal on trigger event.
Definition: AkRoomPortal.cs:126
AkRoom AssociatedRoom
Optional room with which this surface reflector is associated. It is recommended to associate geometr...
Definition: AkSurfaceReflector.cs:34
AK.Wwise.Event roomToneEvent
Wwise Event to be posted on the room game object.
Definition: AkRoom.cs:36
This class is an example of how to load banks in Wwise, if the bank data was preloaded in memory....
Definition: AkMemBankLoader.cs:11
int priority
Definition: AkRoom.cs:22
bool drawFirstOrderReflections
This allows you to visualize first order reflection sound paths.
Definition: AkSpatialAudioDebugDraw.cs:9
Use this component to define a reverb zone. This needs to be added to a collider object to work prope...
Definition: AkEnvironment.cs:23
AkCallbackType type
AkSoundEngine.PostEvent callback flags. See the AkCallbackType enumeration for a list of all callback...
Definition: AkEvent.cs:21
bool enableActionOnEvent
Enables additional options to reuse existing events. Use it to transform a Play event into a Stop eve...
Definition: AkEvent.cs:44
Base class for the generic triggering mechanism for Wwise Integration. All Wwise components will use ...
Definition: AkTriggerBase.cs:12
AkCurveInterpolation curveInterpolation
Fade curve to use with the new Action. See AK::SoundEngine::ExecuteEventOnAction()
Definition: AkEvent.cs:41
bool isEnvironmentAware
Is this object affected by Environment changes? Set to false if not affected in order to save some us...
Definition: AkGameObj.cs:25
float reflectionMaxPathLength
(DEPRECATED) As of 2019.2, the Reflection Max Path Length is set by the sound's Attenuation Max Dista...
Definition: AkSpatialAudioEmitter.cs:16
This script deals with initialization, and frame updates of the Wwise audio engine....
Definition: AkInitializer.cs:22
bool Add(AkSpatialAudioListener listener)
Uniquely adds listeners to the list
Definition: AkSpatialAudioListener.cs:74
Completely obstructs/occludes the emitter of the current game object from its listeners if at least o...
Definition: AkEmitterObstructionOcclusion.cs:12
uint diffractionMaxEdges
(DEPRECATED) As of 2019.2, diffraction is enabled in the Sound Property Editor in the Authoring tool.
Definition: AkSpatialAudioEmitter.cs:33
bool drawHigherOrderReflections
(DEPRECATED) Spatial Audio Debug Drawing were moved to the new AkSpatialAudioDebugDraw component.
Definition: AkSpatialAudioEmitter.cs:52
float roomToneAuxSend
Send level for sounds that are posted on the room game object; adds reverb to ambience and room tones...
Definition: AkRoom.cs:41
UnityEngine.GameObject soundEmitterObject
Game object onto which the Event will be posted. By default, when empty, it is posted on the same obj...
Definition: AkEvent.cs:69
float reflectionsVolume
Definition: AkEarlyReflections.cs:21
const int MAX_ROOMS_PER_PORTAL
AkRoomPortals can only connect a maximum of 2 rooms.
Definition: AkRoomPortal.cs:10
Use this component to add a Large Mode position to any AkAmbient in a Scene.
Definition: AkAmbientLargeModePositioner.cs:8
Add this script on a GameObject to print Spatial Audio paths.
Definition: AkSpatialAudioDebugDraw.cs:6
Completely obstructs the spatial audio portal of the current game object from the spatial audio liste...
Definition: AkRoomPortalObstruction.cs:13
An AkRoomPortal can connect two AkRoom components together.
Definition: AkRoomPortal.cs:8
float[] OcclusionValues
The occlusion value per submesh. The occlusion value is a control value used to adjust sound paramete...
Definition: AkSurfaceReflector.cs:22
EnvListWrapper[] envList
Unity can't serialize an array of list so we wrap the list in a serializable class.
Definition: AkEnvironmentPortal.cs:85
Use this component to define an area that straddles two different AkEnvironment's zones and allow mix...
Definition: AkEnvironmentPortal.cs:13
static bool Connect(string Uri, uint Port)
Connects to a Wwise Authoring application
Definition: AkWaapiClient.cs:14
This component makes a GameObject aware of AkRoom components. When using Spatial Audio rooms,...
Definition: AkRoomAwareObject.cs:15
static AkAudioListener? TheSpatialAudioListener
Returns the "single" spatial audio listener.
Definition: AkSpatialAudioListener.cs:28
Loads and unloads a SoundBank at a specified moment. Vorbis sounds can be decompressed at a specified...
Definition: AkBank.cs:16
Use this component to attach a Wwise Event to any object in a scene. The sound can be started at vari...
Definition: AkAmbient.cs:36
Set an early reflections auxiliary bus and send volume for a particular game object.
Definition: AkEarlyReflections.cs:7
bool saveDecodedBank
Save the decoded SoundBank to disk for faster loads in the future.
Definition: AkBank.cs:26
AkActionOnEventType actionOnEventType
Replacement action. See AK::SoundEngine::ExecuteEventOnAction()
Definition: AkEvent.cs:38
bool EnableDiffraction
Switch to enable or disable geometric diffraction for this mesh.
Definition: AkSurfaceReflector.cs:26

Was this page helpful?

Need Support?

Questions? Problems? Need more info? Contact us, and we can help!

Visit our Support page

Tell us about your project. We're here to help.

Register your project and we'll help you get started with no strings attached!

Get started with Wwise