在现实声学环境中,封闭空间内的声音会穿透墙壁,还会通过房门和窗户等开口传到外面。Spatial Audio 可利用上层几何抽象概念(即 Room 和 Portal)来模拟这种效果。
|
注記: 在使用 Spatial Audio Diffraction 时,请在 Unreal Engine 端禁用声障/声笼。同时将发声体 (AkComponent) 的 Occlusion Refresh Interval 设为 0。 |
Wwise 工程
- 在 Wwise 工程中,为每个 Room 创建新的 Auxiliary Bus。
- 右键单击相应对象来添加子 Auxiliary Bus
-
依次转到 New Child > Presets,然后选择 Room Auxiliary Bus
- 在 Effects 选项卡中,可调节 RoomVerb 效果器。
将混响效果器添加到 Auxiliary Bus
-
转到 Wwise 工程准备工作 中创建的 Sound SFX。
- 在 Positioning 选项卡中,确保选中 Diffraction and Transmission 复选框。
在 Wwise 中针对声音启用衍射
- 保存工程。
Unreal 工程
- 在 Unreal 中,将新建的 Auxiliary Bus 从 Wwise Picker 拖放到 Content Browser 中。
- 双击这些 Auxiliary Bus,并将其指派给 SoundBank。
- 针对建筑的每个 Room 拖放两个 AkSpatialAudioVolume 对象(如尚未在另一教程中执行该操作)。我们使用 Fit To Geometry 来放置两个 Room。
- 在各个 AkSpatialAudioVolume 所对应的 Details 面板中启用 Fit To Geometry。
- 若对最初获得的形状不满意,可使用 Transform 小组件将 AkSpatialAudioVolume 变换到新的位置。注意,在变换 AkSpatialAudioVolume 时,会显示黄色预览框线。在获得满意的形状后,松开鼠标按钮。这时 AkSpatialAudioVolume 会对齐到所需位置。
- 有关如何使用 Fit To Geometry 放置 AkSpatialAudioVolume 的详细信息,请参阅 Fit to Geometry 章节。
- 确保针对两个 AkSpatialAudioVolume 对象启用 Enable Room 和 Enable Late Reverb。
- 若未学习 Reflect 教程,请将 Enable Surface Reflectors 保持设为禁用状态。
- 在 Late Reverb 分区中,将新导入的 Auxiliary Bus 从 Content Browser 拖放到 Aux Bus 参数。
-
添加两个 AkAcousticPortal 对象。
- 将其放在建筑物的开口附近。
- 为便于放置 AkAcousticPortal,请在 Details 面板中启用 Fit To Geometry 复选框。
- 在启用 Fit To Geometry 时,Integration 会利用周围的几何构造来查找合理的 Portal 放置位置。在使用 Transform 小组件将 AkAcousticPortal 拖到相应开口附近时,会显示黄色预览框线。在找到满意的放置位置后,松开鼠标按钮。这时 AkAcousticPortal 会对齐到所需位置。
- 有关如何使用 Fit To Geometry 放置 AkAcousticPortal 的详细信息,请参阅 Fit to Geometry 章节。
- 在将 AkAcousticPortal 放在各个门廊内之后,使用 Scale 小组件来调节各个 Portal 的深度,以获得想要的交叉淡变距离。在 AkComponent 穿过 Portal 时,Portal 越深(沿局部 X 轴),交叉淡变距离越长。这对混响发送和散布过渡来说都是适用的。
- 选中 Portal,然后在 Ak Portal Component 分区中将 Initial State 设为 Open 。
AkPortalComponent 属性
|
注記: 在设置 AkAcousticPortal 的朝向时,必须确保其所连通的两个 Room 位于 Portal 的局部 Y 轴上。为了便于识别,在选中 Portal 时其周围会显示黄色条带。黄线用来分隔前后区域。在 Room 之间存在重叠时,会选用优先级最高的 Room。在 Level Editor 中设置 Room 和 Portal 时,确保将视口设为 Realtime 以便在四处移动 Portal 时正确更新 Portal 模型。
在 Level Editor 中设置 Room 和 Portal 时,确保在视口中启用 Realtime
|
验证所作设置
- 针对 Windows 生成 SoundBank。
- 启动场景并待在起点位置。在针对 Room 内的发声体播放 Event 时,应当能够听到相应的声音。
- 连接 Wwise 设计工具并转到 Game Object Profiler 布局(快捷键 F12)。在 Game Object 3D Viewer 中,应会看到:
- 以灰色框线表示的 Portal 模型(如 AkSpatialAudioVolume 未启用 Surface Reflector)。
- 以绿色框线表示的 Portal 模型。
- 在与听者不同的 Room 中播放声音。在 Game Object 3D Viewer 中,应会看到:
- 各个游戏对象所在的 Room。
- 声音在 Portal 边缘衍射时的传播路径及关联衍射值(依据弯曲角度在各个边缘予以显示)。
- 声音穿透 Room 墙壁时的传播路径及关联透射损失值。
- 声音衍射和透射路径的散布声锥(如设有散布曲线)。
Game Object 3D Viewer 及所用 Room 和 Portal
|
注記: 在默认情况下,衍射和透射损失值分别映射至 Obstruction 和 Occlusion 曲线。这些曲线可在设计工具内 Project Settings 的 Obstruction/Occlusion 选项卡中找到。
Obstruction Volume 曲线
|
Portal 和 Reverb
通过 Portal 传播的声音可进行混响处理并输出到听者当前所在 Room。以下步骤阐述了如何在 Spatial Audio Tutorial Map 中予以配置。
- 在 Wwise 工程中:
-
找到 Room Reverb 所用 Auxiliary Bus。我们希望将发出声音的 Room 的混响效果馈送到其他 Room 的混响效果中。
- 在 Auxiliary Bus Property Editor 的 General Settings 选项卡中,确保启用 Use game-defined auxiliary sends。
针对 Room Auxiliary Bus 启用 Use game-defined auxiliary sends
- 生成 SoundBank,然后启动场景并连接到 Wwise 设计工具。
-
在启用了辅助发送的 Room 中播放声音,然后转到相连的 Room。
- 您应会看到声音信号的湿声部分还会馈送听者所在 Room 的混响效果。
SmallRoom 的混响效果被馈送到了 LargeRoom 的混响效果中
Room Tone
有时,Room 内会有像空调嗡嗡声这样的特定环境声。为了重现这种效果,您可以针对 Spatial Audio Room 游戏对象发送 Event。在听者和发声体处在同一 Room 时,声音会被定位在听者所在位置。在听者和发声体处在不同 Room 时,听者会通过连通两个 Room 的 Portal 听到房间底噪 (Room Tone)。
- 在 Wwise 工程中:
- 创建新的 Sound SFX 并用于房间底噪。
- 若要将声音发送到混响效果器,则启用 Use game-defined aux sends。
- 在必要时,为距离衰减曲线添加衰减。
- 右键单击 Sound SFX,然后依次选择 New Event > Play,来创建带有房间底噪的 Play Event。
-
在 Unreal 中:
- 将前面章节中创建的 Event 从 WAAPI Picker 拖到 Content Browser 中。
- 在其中一个 Room 对应的 Ak Event 分区下,将此 Event 添加到 Ak Audio Event 参数。
- 调节 Aux Send Level 来将部分声音馈送到该 Room 的混响效果中。
- 您可以通过选中 Auto Post 方框来在 BeginPlay 时发送房间底噪 Event,也可调用常用的 Blueprint 函数来针对游戏对象发送 Event。
在 Spatial Audio Volume 的 AkEvent 分区中启用 Room
-
在 Spatial Audio Tutorial Map 中,我们在 Level Blueprint 中使用了 Blueprint 函数来激活和停用房间底噪。
- 在 World Outliner 中选中带有房间底噪的 AkSpatialAudioVolume 时,右键单击 Level Blueprint 来创建引用对象。
- 从引用对象拖动连线,并搜索 Post Associated Ak Event。
- 按照相同方式搜索 Stop 函数。
- 添加按键作为输入节点。
通过 Level Blueprint 播放和停止房间底噪
- 生成 SoundBank。
- 启动场景并连接到 Wwise 设计工具。
-
转到带有房间底噪的 Room,并按下按键来触发房间底噪。确认可以听到声音。
- 在 Advanced Profiler 视图中,应会看到当前触发的 Event。
在播放房间底噪时查看 Advanced Profiler 视图
-
在 3D Game Object Viewer 中,可一边来回移动听者,一边察看 Room 游戏对象。
- 若听者和发声体处在同一 Room,则 Room 会在听者所在位置播放声音。您会看到 Room 游戏对象跟随“听者”游戏对象。
- 若听者和发声体处在不同 Room,则:
- 将 Room 游戏对象定位在 Portal 位置(来指示衍射声音的位置),并在其与“听者”游戏对象之间绘制路径。
- 将 Room 游戏对象定位在直达路径上的 Room 边界来指示透射声音的位置。
- 针对所有这些位置绘制散布声锥。
Game Object 3D Viewer 中的 Room Tone
- 参见
-