Version
menu_open
Wwise Unity Integration Documentation
Additional Spatial Audio features
Note: This page presumes 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, check Use game-defined auxiliary sends.
      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. By default, diffraction is disabled in Unity. You can enable diffraction per Spatial Audio emitter and per Surface Reflector. A diffraction enabled emitter will only diffract off a diffraction enabled reflective surface.

  1. Enabling diffraction on the AkSpatialAudioEmitter component:
    1. Set Diffraction Max Edges to 8
    2. Set Diffraction Max Paths to 8
    3. Set Diffraction Max Path Length to a value representing the maximum attenuation distance for sounds playing on this emitter (or a suitably large number if experimenting, eg 10000).
      Diffraction enabled AkSpatialAudioEmitter
  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. 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
Base class for spatial audio emitter and listener components.
Definition: AkSpatialAudioBase.cs:12
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
Add this script on the GameObject which represents an emitter that uses the Spatial Audio API.
Definition: AkSpatialAudioEmitter.cs:6
bool decodeBank
Decode this SoundBank upon load.
Definition: AkBank.cs:20
bool loadAsynchronous
Check this to load the SoundBank in the background. Be careful, if Events are triggered and the Sound...
Definition: AkBank.cs:23
void ClosePortal(UnityEngine.GameObject in_gameObject)
Closes the portal on trigger event.
Definition: AkRoomPortal.cs:133
ulong GetID()
Access the portal's ID.
Definition: AkRoomPortal.cs:86
float reverbLevel
The reverb control value for the send to the reverb aux bus.
Definition: AkRoom.cs:23
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
The gain [0, 1] applied to the reflect auxiliary bus.
Definition: AkSpatialAudioEmitter.cs:19
virtual UnityEngine.Vector3 GetUpward()
Definition: AkGameObj.cs:228
This component will convert the triangles of the GameObject's geometry into sound reflective surfaces...
Definition: AkSurfaceReflector.cs:9
float roomReverbAuxBusGain
Send gain (0.f-1.f) that is applied when sending to the aux bus associated with the room that the emi...
Definition: AkSpatialAudioEmitter.cs:30
uint diffractionMaxPathLength
The maximum length that a diffracted sound can travel. Should be no longer (and possibly shorter for ...
Definition: AkSpatialAudioEmitter.cs:43
static SpatialAudioListenerList SpatialAudioListeners
Returns the list of active Unity Game Objects that are designated to be spatial audio listeners.
Definition: AkSpatialAudioListener.cs:32
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
This allows you to visualize geometric diffraction sound paths between an obstructed emitter and the ...
Definition: AkSpatialAudioEmitter.cs:87
This class represents the list of active Unity Game Objects that are designated to be spatial audio l...
Definition: AkSpatialAudioListener.cs:56
bool isLocalizedBank
Is the bank localized (situated in the language-specific folders)
Definition: AkMemBankLoader.cs:20
static bool Unsubscribe(ulong SubscriptionID, out string Result)
Unsubscribes from a topic.
Definition: AkWaapiClient.cs:149
void EnteredRoom(AkRoom room)
Called when entering a room.
Definition: AkSpatialAudioBase.cs:25
bool drawSecondOrderReflections
This allows you to visualize second order reflection sound paths.
Definition: AkSpatialAudioEmitter.cs:81
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
The Auxiliary Bus with a Reflect plug-in Effect applied.
Definition: AkSpatialAudioEmitter.cs:10
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:20
uint diffractionMaxPaths
The maximum number of paths to the listener that the sound can take around obstacles.
Definition: AkSpatialAudioEmitter.cs:39
bool drawFirstOrderReflections
This allows you to visualize first order reflection sound paths.
Definition: AkSpatialAudioEmitter.cs:78
void UnloadBank(UnityEngine.GameObject in_gameObject)
Unloads a SoundBank.
Definition: AkBank.cs:79
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:88
AK.Wwise.AuxBus reverbAuxBus
The reverb auxiliary bus.
Definition: AkRoom.cs:19
AK.Wwise.AcousticTexture AcousticTexture
All triangles of the component's mesh will be applied with this texture. The texture will change the ...
Definition: AkSurfaceReflector.cs:12
static void RemoveGeometrySet(UnityEngine.MeshFilter meshFilter)
Remove the corresponding mesh filter's geometry from Spatial Audio.
Definition: AkSurfaceReflector.cs:117
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:70
This will call AkSoundEngine.SetSwitch() whenever the selected Unity event is triggered....
Definition: AkSwitch.cs:17
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
Add this script on the game object that represent a listener. This is normally added to the Camera ob...
Definition: AkSpatialAudioListener.cs:15
System.Collections.Generic.List< int > unloadTriggerList
Reserved.
Definition: AkBank.cs:29
uint reflectionsOrder
Definition: AkSpatialAudioEmitter.cs:25
float wallOcclusion
Occlusion level modeling transmission through walls.
Definition: AkRoom.cs:27
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
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:108
string bankName
Name of the bank to load.
Definition: AkMemBankLoader.cs:17
AkEnvironment[] environments
Definition: AkEnvironmentPortal.cs:22
void ExitedRoom(AkRoom room)
Called when exiting a room.
Definition: AkSpatialAudioBase.cs:35
ulong GetID()
Access the room's ID.
Definition: AkRoom.cs:43
override void HandleEvent(UnityEngine.GameObject in_gameObject)
Opens the portal on trigger event.
Definition: AkRoomPortal.cs:127
AkRoom AssociatedRoom
Optional room with which this surface reflector is associated. It is recommended to associate geometr...
Definition: AkSurfaceReflector.cs:26
AK.Wwise.Event roomToneEvent
Wwise Event to be posted on the room game object.
Definition: AkRoom.cs:30
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:16
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
A heuristic to stop the computation of reflections. Should be no longer (and possibly shorter for les...
Definition: AkSpatialAudioEmitter.cs:14
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:70
Obstructs/Occludes the emitter of the current game object from its listeners if at least one object i...
Definition: AkEmitterObstructionOcclusion.cs:13
uint diffractionMaxEdges
The maximum number of edges that the sound can diffract around between the emitter and the listener.
Definition: AkSpatialAudioEmitter.cs:35
bool drawHigherOrderReflections
This allows you to visualize third or higher order reflection sound paths.
Definition: AkSpatialAudioEmitter.cs:84
float roomToneAuxSend
Send level for sounds that are posted on the room game object; adds reverb to ambience and room tones...
Definition: AkRoom.cs:35
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
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
Obstructs/Occludes the spatial audio portal of the current game object from the spatial audio listene...
Definition: AkRoomPortalObstruction.cs:13
An AkRoomPortal can connect two AkRoom components together.
Definition: AkRoomPortal.cs:8
static void AddGeometrySet(AK.Wwise.AcousticTexture acousticTexture, UnityEngine.MeshFilter meshFilter, ulong roomID, bool enableDiffraction, bool enableDiffractionOnBoundaryEdges)
Sends the mesh filter's triangles and their acoustic texture to Spatial Audio
Definition: AkSurfaceReflector.cs:40
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
void SetGameObjectInRoom()
Sets the Unity Game Object within the highest priority room.
Definition: AkSpatialAudioBase.cs:44
static bool Connect(string Uri, uint Port)
Connects to a Wwise Authoring application
Definition: AkWaapiClient.cs:14
static AkAudioListener? TheSpatialAudioListener
Returns the "single" spatial audio listener.
Definition: AkSpatialAudioListener.cs:24
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
AkRoom frontRoom
These private members should not be given setters. Rooms should be set using the array,...
Definition: AkRoomPortal.cs:67
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:16

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