本教程将展示如何结合 Spatial Audio 使用 Room 和 Portal。以下章节会详细讲解相关步骤:
注意:本教程假定您已完成 Spatial Audio 教程准备工作 。不过,并不要求完成 Surface Reflector 教程 ;两个教程并不相干。假如您已完成 Surface Reflector 教程 且希望继续学习本教程,除了需要撤消可选步骤 C.2. 备选方案:创建新的音量 外,不用对场景做任何更改。如果您想重新开始且已完成 Surface Reflector 教程 ,那么仍可沿用相同的场景,直接移除 Ak Surface Reflector 组件便可。
对于“Room 和 Portal 教程”,为了在发声体被障碍物阻挡时通过门户传播衍射声音,我们需要添加 Reverb Effect,并修改 Obstruction 曲线。
- 在 Master Audio Bus 下添加两个 Auxiliary Bus:SmallRoom 和 LargeRoom。在 Auxiliary Bus Property Editor 中:
- 在 Effects 选项卡中,添加 Wwise RoomVerb 效果器。分别为 SmallRoom 和 LargeRoom 选择不同的出厂预设:Rooms/Room_Medium 和 Cathedrals/Medium。
Auxiliary Bus Property Editor Effects tab for rooms
- 在 Positioning 选项卡下,选中 Enable Positioning 并设为 3D。
Auxiliary Bus Property Editor Positioning tab for rooms
- Project > Project Settings > Obstruction/Occlusion
- 更改曲线:
曲线 |
点 1 |
点 2 |
|
X |
Y |
X |
Y |
Obstruction Volume |
0 |
0 |
100 |
-3 |
Obstruction LPF |
0 |
0 |
100 |
60 |
- Obstruction Volume 曲线如下图所示:
Obstruction/Occlusion curves in the Wwise Project Settings
- 保存工程。
为了使用新创建的 Reflect 辅助总线,我们需要修改 Spatial Audio Emitter。
- 在 Wwise Picker 中刷新 Wwise 工程:Windows > Wwise Picker
- 生成 SoundBank
Wwise Picker
- 修改每个按钮的 Ak Spatial Audio Emitter 组件。
- 将 Room Reverb Aux Bus Gain 参数设为 1。
- 在 Debug Draw 下选中 Draw Sound Propagation ,并取消选中所有其他选项。
Ak Spatial Audio Emitter for Rooms and Portals
- 我们将在下面章节使用房间,所以需要将 Rigidbody 组件添加到发声体(如 Ak Game Obj 组件中警告消息所述)。
- 请单击 Add Rigidbody。
Ak Game Obj component
每个房间都要单独配置房间混响效果器。为此,我们将使用 Ak Room 组件。
- 使用 Cube 创建未渲染的 Mesh:GameObject > 3D Object > Cube
对象名称 |
位置 |
旋转 |
比例 |
Small Room Interior |
(-2, 2.875, -6) |
(0, 0, 0) |
(11, 5.25, 7.5) |
Large Room Interior |
(11.5, 2.875, 3.25) |
(0, 0, 0) |
(15, 5.25, 21) |
- 移除 Mesh Renderer 组件。
- 在 Box Collider 组件中选中 Is Trigger。
- 将 Ak Room 组件添加到 Small Room Interior Volume 和 Large Room Interior Volume。
- 为 Reverb Aux Bus 选取相应的 SmallRoom 或 LargeRoom Auxiliary Bus。
- 若已将 Rigidbody 添加到发声体,则此处无需再行添加。若尚未添加,请单击 Add Rigidbody。
Ak Room component
- 启动游戏,然后连接 Wwise,并转到 Game Object Profiler 布局
- 监视所有发声体和听者。
- 打开 Game Object 3D Viewer 视图。在此,应可看到对应房间中的发声体。下图为场景的俯视视图。听者和 Button Outside 不在房间内,因此被默认放在了 Outdoors 房间。若游戏对象全部都在 Outdoors 房间而非分别处在对应房间,则表示 Spatial Audio 处于禁用状态。这意味着您应该是忘了将 Ak Spatial Audio Listener 组件添加到听者。为此,请参照步骤 3.B。
Emitters in their respective rooms and the Listener Outdoors
- 将听者移动到房间内,并在 Game Object 3D Viewer 中的“听者”游戏对象下查看房间名称变化。在下图中,听者处在 Large Room 内。
Emitters in their respective rooms and the Listener in the Large Room Interior
- 按下其中一个房间中的按钮,来试听混响效果。
- 在 Small Room 中,Voices Graph 应如下图所示:
Button Small Room Voice Graph with Reverb
- 在听者与发声体在不同房间内时,声音会被完全遮蔽。为了通过所需开口传播来自房间的声音,我们需要添加门户。
|
备注: |
若要在房间外部添加混响效果器,则可围绕整个区域添加一个 Room。确保该 Room 的优先级低于 Small Room Interior 和 Large Room Interior。 |
每个 Room 都需要通过 Portal 与其他区域连通。我们需要两个 Portal:一个设在房间外部和 Small Room 之间的房门上,另一个设在两个 Room 之间的墙壁上。
- 创建两个 Ak Room Portal 组件:GameObject > Wwise > Room Portal
对象名称 |
位置 |
旋转 |
比例 |
Outside Portal |
(0, 2, -10) |
(0, 0, 0) |
(2, 4, 2) |
Inside Portal |
(3.75, 2, -4.5) |
(0, 90, 0) |
(3.5, 4, 2) |
- 在 Ak Room Portal 组件中:
- 将 Open On 设为 Start。
- 将 Close On 设为 Nothing。
- 确保 Back Room 和 Front Room 显示正确的 Ak Room 组件。
- Inside Portal Ak Room Portal 组件应如下图所示:
Ak Room Portal component
- 在 Scene 窗口中,Portal 周围显示有黄色条带(用来指示门户大小)及其所应设置的朝向。红色线条用来划分 Portal 的前后区域。其中,局部 Z 轴所指方向为前部。
Ak Room Portal in the Scene window
- 启动游戏。此时,应会看到 Draw Sound Propagation 绘图,它指示了声音如何通过门户从房间内传出。左侧球体来自小房间发声体,右侧球体来自大房间发声体。从中可以看出,后者其实来自于连通小房间和大房间的 Portal。声音传播由红色和蓝色球体表示,球体大小会根据干声和湿声衍射角度相应地改变。
Game window at Start
- 连接 Wwise。
- 播放 Button Outside,并进入小房间。
- 您应该可以看到相同的声音传播绘图。从中可以看出,外部发声体通过与房间外部连通的门户将声音传到房间内部。
Sound Propagation drawings from Button Outside when the listener is inside Small Room Interior
- 进入并走出发声体视线,来试听应用于声音的衍射效果。在听者相对于门户的角度不同时,您会听到或多或少的衍射声音。在下图中,我们来监视听者和 Button Outside。在 Game Object 3D Viewer 中,可以看到场景的俯视视图。暗红色区域表示门户。其中,中央区域为 Outside Portal,Portal 上方区域为 Small Room Interior,下方区域为房间外部。Listener 处在 Small Room Interior 内,正在播放的发声体为 Button Outside。在图中,可以看到听者和发声体之间的声音传播路径(表示为绿色)。Diffraction 角度为 103.3。另外,在右侧还可看到 Button Outside 发声体的虚拟位置。声音会从该位置通过门户向房间内传播。
Portal diffraction angle on Game Object 3D Viewer
备注: 此时,若更改 Room 的位置或对 Portal 进行多项编辑,则只有分别打开各个 AkRoomPortal 检视器,才能更新 Portal 前后的 Room。在场景中包含大量门户时,这样会很不方便。为此,可使用本教程中作为示例添加的 AkRoomPortal Baker 窗口。您可以从 Wwise > AkRoomPortal Baker... 菜单打开该窗口。然后,单击 Bake 按钮来更新场景中所有门户的前后房间。
另外,通过 Portal 传播的声音还可使用听者当前所在 Room 的混响效果器。
- 打开 SmallRoom Auxiliary Bus Property Editor,并在 General Settings 选项卡中选中 Use game-defined auxiliary sends。这样可以将小房间的混响效果发送到场景中的其他混响中去。
Auxiliary Bus Property Editor General Settings tab to send room reverb to other reverbs
- 假如在播放小房间发声体时走进大房间,将会看到小房间的混响效果被馈送到了大房间的混响效果中来。
Button Small Room reverb sending to Large Room Interior room's reverb on the Voices Graph
另外,还可将早期反射馈送到 Room 的混响效果器。接下来,我们在场景中添加表面反射器。
- 参照 Surface Reflector 教程 章节:
- 添加 Auxiliary Bus 并应用 Reflect Effect。
- 将各个 Ak Spatial Audio Emitter 链接到新的 Reflect Auxiliary Bus。
- 为所有墙壁和地板添加 Ak Surface Reflector 组件。
- 在 Wwise 工程中,打开应用有 Reflect Effect 的 Auxiliary Bus。
- 在 General Settings 选项卡中,选中 Use game-defined auxiliary sends。
Auxiliary Bus Property Editor General Settings tab to send early reflection to the room reverb
- 启动场景并按下小房间中的按钮。在玩家进入 Small Room 后,Voices Graph 应如下图所示:
Early reflections in the small room are sent to the small room's reverb in the Voices Graph