版本
menu_open
Wwise Unity Integration Documentation
Spatial Audio 附加功能
备注: 此页面涉及的内容假定您已完成 Spatial Audio 教程准备工作 以及 Surface Reflector 教程Room 和 Portal 教程

A. Surface Reflector 和 Portal

正如 Portal 会为 Room 区域创建开口以便声音从中穿过一样,在反射表面上也可用 Portal 实现类似的功能。在 Surface Reflector 教程 结尾,我们注意到:在将简单 Cube 用作 Surface Reflector 时,Mesh 开口上会产生反射。为了解决这一问题,Spatial Audio Portal 也能够处理反射路径,允许反射声穿过。反射路径甚至会在 Portal 边界发生衍射。

  1. 设置起来很简单,直接放置穿透 Room 的 Portal 以及 Surface Reflector 即可。
    Game Object 3D Viewer 中显示反射路径穿过 Portal

B. Surface Reflector 和 Reverb

在带有后期混响的 Room 中,可将早期反射馈送到混响效果器,使后期混响具有更多房间几何构造的特征。

  1. 在 Wwise 工程中,打开应用有 Reflect Effect 的 Auxiliary Bus。
    1. 在 General Settings 选项卡中,选中 Use game-defined auxiliary sends
      Auxiliary Bus Property Editor General Settings tab to send early reflection to the room reverb
  2. 启动场景并按下小房间中的按钮。在玩家进入 Small Room 后,Voices Graph 应如下图所示:
    Voices Graph 中显示 Small Room 中的早期反射被发送到了 Small Room 的混响效果器

C. 衍射

在有物体出现在发声体和听者之间时,Spatial Audio 可创建绕过该物体衍射路径。根据声音绕过障碍物边缘时的路径角度,声音会被衰减,以此模拟 Obstruction 作用。在默认情况下,Unity 中未启用衍射。不过,您可以通过 Spatial Audio 发声体和 Surface Reflector 来启用衍射。对于启用了衍射的发声体,仅会在启用了衍射的反射表面边缘产生衍射。

  1. AkSpatialAudioEmitter 组件启用衍射:
    1. Diffraction Max Edges 设为 8
    2. Diffraction Max Paths 设为 8
    3. Diffraction Max Path Length 值设为此发声体所播放声音的最大衰减距离(或者实验性地适当将其设为一个较大的数值,如 10000)。
      为 AkSpatialAudioEmitter 启用了衍射
  2. AkSurfaceReflector 组件启用衍射:
    1. 选中 Enable Diffraction。这样会在发送到 Wwise Spatial Audio 的几何构造上生成衍射边缘。在将 Wwise 连接到游戏时,这些衍射边缘会显示在游戏对象查看器中。
    2. 另外可能还希望选中 Enable Diffraction On Boundary Edges。此复选框会在选中前述复选框后显示。其中,Boundary Edge 代表仅连有一个三角形的边缘。比如,Unity Quad 3D Object 周围的边缘便被视为 Boundary Edge。
      为 AkSurfaceReflector 启用了衍射
  3. 在 Wwise Unity Demo Scene 中,室外发声体、障碍物和建筑外侧启用了衍射。其中,衍射路径显示为紫色。它们都会在声音的听感位置创建一个虚声源。
    Game Object 3D Viewer 中显示衍射路径

D. 将 Room 与 Surface Reflector 关联(优化)

对于每个添加到 Spatial Audio 的 Surface Reflector,都会实施衍射边缘和可见性分析。为了优化这一步骤,可为每个 Room 设置一组互连的 Surface Reflector。假如这些 Surface Reflector 仅与某个特定 Room 关联,那么从其他 Room 是看不到它们的。如有 Surface Reflector 被某个 Room 完全包围,且该 Room 不与其他 Room 共用 Surface Reflector,则应将上述特定 Surface Reflector 关联到该 Room。您可以自由选择是否在 Room 和 Surface Reflector 之间设定关联。若未选择任何 Room,则将 Surface Reflector 添加到 Surface Reflector 全局组。通过将 Surface Reflector 与 Room 关联,可限制反射和衍射计算中执行的射线投射的搜索范围。

  1. AkSurfaceReflector 组件中的 Associated Room 下选择要与其关联的 Room。
    将 Room 与 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

此页面对您是否有帮助?

需要技术支持?

仍有疑问?或者问题?需要更多信息?欢迎联系我们,我们可以提供帮助!

查看我们的“技术支持”页面

介绍一下自己的项目。我们会竭力为您提供帮助。

来注册自己的项目,我们帮您快速入门,不带任何附加条件!

开始 Wwise 之旅