本教程将展示如何结合 Spatial Audio 使用 Room 和 Portal。以下章节会详细讲解相关步骤:
A. Wwise Project(工程)
对于本教程,为了在发声体被障碍物阻挡时通过 Portal 传播衍射声音,我们需要添加 Reverb Effect,并修改 Obstruction 曲线。
- 使用 Room 预设添加两条 Auxiliary Bus。
- 右键单击 Master Audio Bus,然后依次转到 New Child > Presets,并选择 Room Auxiliary Bus。
- 在 Effects 选项卡中,为每个 Room 选择不同的效果器。比如,为 SmallRoom 选择 Rooms/Room_Medium,为 LargeRoom 选择 Cathedrals/Medium。

Auxiliary Bus Property Editor Effects tab for rooms
- 修改 Spatial Audio 教程准备工作 中添加的 Sound SFX
- 在 Positioning 选项卡中,通过选中对应复选框来 Enable Diffraction。

在 Sound Property Editor 的 Positioning 选项卡中 Enable Diffraction
- 依次转到 Project > Project Settings > Obstruction/Occlusion
- 根据需要调节 Obstruction Volume 和 Obstruction LPF 曲线。比如,我们在 Wwise Unity Demo Scene 工程中使用了如下曲线:
曲线 |
点 1 |
点 2 |
X |
Y |
X |
Y |
Obstruction Volume |
0 |
0 |
100 |
-3 |
Obstruction LPF |
0 |
0 |
100 |
60 |
- Obstruction Volume 曲线如下图所示:

Wwise Project Settings 中的 Obstruction/Occlusion 曲线
- 保存工程。
- 在 Unity 工程中,在 Wwise Picker (Windows > Wwise Picker) 内刷新 SoundBank
- 生成 SoundBank

Wwise Picker
B. Room
我们需要指定 Room 在场景中的位置。为此,我们将使用 AkRoom 组件。
- 在 Wwise Unity Demo Scene 的教程场景中,我们添加了 Cube Mesh 来代表建筑中每个 Room 的内侧。假如您刚完成 Surface Reflector 教程 ,可使用带有 AkSurfaceReflector 组件的 GameObject。
- 添加 Cube (GameObject > 3D Object > Cube)
- 移除 Mesh Renderer 组件。
- 在 Box Collider 组件中选中 Is Trigger。
- 添加 AkRoom 组件。
- 为 Reverb Aux Bus 选取相应的 Auxiliary Bus。
- 警告消息会提示将 Rigidbody 组件添加到 Room。注意,执行该操作后将允许在 AkRoom 和 AkRoomAwareObject 组件之间进行交互。我们可以按照下一步所述来添加这些组件。

AkRoom 组件
因为要使用 Room,所以必须通过添加 AkRoomAwareObject 组件来将所有听者和发声体设为 Room Aware。
- 已经有 AkRoomAwareObject 组件自动添加到了 Spatial Audio 听者,请确保该组件处于启用状态。

AkRoomAwareObject 组件
- 您可能会看到两条警告消息(如上图所示)。
- 第一条提示需要将 Rigidbody 组件添加到 Room 或当前对象。若 Room 尚未绑定该组件,请单击 Add Rigidbody。
- 第二条是关于 Collider 的警告消息。每个 AkRoomAwareObject 都要具有 Collider 才能与 AkRoom 组件进行交互。
C. Portals(门户)
在听者与发声体在不同房间内时,声音会被完全遮蔽。为了通过所需开口传播来自 Room 的声音,我们需要添加 Portal。在 Wwise Unity Demo Scene 中,我们需要两个 Portal:一个设在外部区域和 Small Room 之间的开口上,另一个设在两个 Room 之间。
- 创建两个 AkRoomPortal 组件 (GameObject > Wwise > Room Portal),并将其放在开口附近。
- 在 Scene 窗口中,Portal 周围显示有黄色条带(用来指示门户大小)及其所应设置的朝向。红色线条用来划分 Portal 的前后区域。其中,局部 Z 轴所指方向为前部。

在 Scene 窗口中创建 AkRoomPortal 组件
- 在 AkRoomPortal 组件中:
- 将 Open On 设为 Start。
- 将 Close On 设为 Nothing。
- 确保 Back Room 和 Front Room 显示正确的 AkRoom 组件。
- Small Room 和外部区域之间的 Portal 的 AkRoomPortal 组件应如下图所示:

AkRoomPortal 组件
D. 验证设置
- 若要查看场景中绘制的声音传播路径,请将 AkSpatialAudioDebugDraw 组件添加到发声体。
- 勾选 Draw Diffraction Paths 选项。

AkSpatialAudioDebugDraw 组件
- 启动游戏。
- 确保 Room 中至少有一个声音在播放。
- 在听者和发声体不在同一 Room 时,应可在 Scene 窗口中看到一条代表声音穿过 Portal 的路径(显示为绿色)。衍射点处会显示应用于声音的衍射百分比。

衍射路径穿过 Portal – 俯视图
- 连接 Wwise 并转到 Game Object Profiler 布局(快捷键 F12)
- 确保在 Game Object 3D Viewer Settings 中启用 Diffraction Paths(如尚未启用)。

在 Game Object 3D Viewer Settings 中为 Portal 启用 Diffraction Paths
- 在 Game Object 3D Viewer 中:
- 应会看到来自不同发声体的衍射路径穿过 Portal 到达听者所在位置。注意图中以绿色虚像标识的虚声源,其代表声音的实际听感位置。
- 应会发现每个发声体/听者都显示有对应的 Room。听者和 Button Outside 不在房间内,因此被默认放在了 Outdoors 房间。
- 将听者移动到某个 Room,并在 Game Object 3D Viewer 中的“听者”游戏对象下查看 Room 名称变化。

Game Object 3D Viewer 中显示穿过 Portal 的衍射路径
- 按下其中一个房间中的按钮,来试听混响效果。
- 在 Small Room 中,Voices Graph 应如下图所示:

Voices Graph 中显示 Button Small Room 应用有 Wwise RoomVerb 效果器
- 走到 Room 外面并移动位置,使隔壁 Room 内正在播放的发声体处于视线内和视线外,从而试听声音的衍射效果。在听者相对于门户的角度不同时,您会听到或多或少的衍射声音。
info |
备注: |
若要在房间外部添加混响效果器,则可围绕整个区域添加一个 Room。确保 Room 的优先级低于场景中的其他 AkRoom 组件。 |
E. Portals(门户)和 Reverb(混响)
通过 Portal 传播的声音还可使用来自听者所在 Room 的混响效果器。
- 打开 SmallRoom 对应的 Auxiliary Bus Property Editor,并确保在 General Settings 选项卡中选中 Use game-defined auxiliary sends 复选框。这样可以将 SmallRoom 的混响效果发送到场景中的其他混响效果中。

Auxiliary Bus Property Editor General Settings tab to send room reverb to other reverbs
- 假如在播放小房间发声体时走进大房间,将会看到小房间的混响效果被馈送到了大房间的混响效果中来。

Voices Graph 中显示将 Small Room 混响效果器发送到了 Large Room 混响效果器
\aknoteWwise Unity Demo Scene 涵盖了 Surface Reflector 教程 和 Room 和 Portal 教程 以及衍射。有关详细信息,请参阅 Spatial Audio 附加功能 。
F. Room Tone
有时,Room 内会有像空调嗡嗡声这样的特定环境声。为了重现这种效果,您可以针对 Spatial Audio Room 游戏对象发送 Event。在听者和发声体处在同一 Room 时,声音会被定位在听者所在位置。在听者和发声体处在不同 Room 时,听者会通过连通两个 Room 的 Portal 听到房间底噪 (Room Tone)。
- 在 Wwise 工程中:
- 创建新的 Sound SFX 并用于房间底噪。
- 确保启用游戏定义的辅助发送来将房间底噪发送到 Room 混响效果中。
- 右键单击 Sound SFX,然后依次选择 New Event > Play,来创建带有房间底噪的 Play Event。
- 保存工程。
- 在 Unity 中:
- 将此 Event 添加到其中一个 Room 所绑定的 AkRoom 组件的 Room Tone Event 参数。
- 调节 Aux Send Level 来将部分声音馈送到该 Room 的混响效果中。
- 您可以选择如何触发 Event。

在 Spatial Audio Volume 的 AkEvent 分区中启用 Room
- 生成 SoundBank。
- 启动场景并连接到 Wwise 设计工具。
- 确认可以听到房间底噪。
- 在 Advanced Profiler 视图中,应会看到当前触发的 Event。

在听者处在带有房间底噪的 Room 中时查看 Advanced Profiler 视图
- 在 3D Game Object Viewer 中,可一边来回移动听者,一边察看 Room 游戏对象。
- 若听者和发声体处在同一 Room,则 Room 会在听者所在位置播放声音。您会看到 Room 游戏对象跟随“听者”游戏对象。
- 若听者和发声体处在不同 Room,则会将 Room 游戏对象定位在 Portal 位置,并在其与 “听者”游戏对象之间绘制路径。

在 Game Object 3D Viewer 中察看 Room 游戏对象