版本
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 作用。您可以针对每个 Sound 和 Surface Reflector 启用衍射。对于启用了衍射的声音,在发声体发出声音时仅会在启用了衍射的反射表面边缘产生衍射。

  1. 针对 Sound 启用衍射:
    1. 在 Positioning 选项卡中,确保选中 Enable Diffraction 复选框。
      针对 Sound 启用衍射
  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. Transmission

在发声体和听者之间存在障碍物时,可能会有部分声音透射到障碍物的另一侧。Spatial Audio 可通过在声音的直达路径上应用声笼滤波来模拟这一现象。声笼值 (0 ~ 1) 可作用于 AkSurfaceReflectorAkRoom 组件。该值稍后会被发送到 Wwise,进而根据工程的声笼曲线应用关联的滤波器。一般来说,值为 1.0 时表示完全遮蔽,值为 0.0 时表示声音可穿透几何构造。

  1. 在 Spatial Audio Init Settings 中选中 Enable Transmission。
    Spatial Audio Init Settings
  2. 当声音在从发声体到听者的直达路径中遇到 AkSurfaceReflectorAkRoom 组件时,其透射值等于相应组件的最大声笼值。
    1. AkSurfaceReflector 组件上,通过填充 Occlusion Values 数组来为 Surface Reflector 的每个 Submesh 关联声笼值。
      AkSurfaceReflector 组件上的 Occlusion Values 数组
    2. AkRoom 组件上,更改 Wall Occlusion 参数中的声笼值。
      AkRoom 组件上的 Wall Occlusion 参数
  3. 在 Wwise 设计工具内,在 Project Settings 的 Obstruction/Occlusion 选项卡中调节声笼曲线。
    Wwise 内 Project Settings 中的声笼曲线

E. 将 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
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

此页面对您是否有帮助?

需要技术支持?

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

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

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

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

开始 Wwise 之旅