本教程以下步骤将展示如何结合 Spatial Audio 使用新的 Reflect 插件。为了确保正常使用工程,您需要获取 Reflect 插件授权。
A. Wwise Project(工程)
我们需要在 Wwise 工程中添加 Auxiliary Bus 并为其应用 Reflect 插件,另外还要导入 Acoustic Texture。
- 在 Master Audio Bus 下添加 Auxiliary Bus。在 Auxiliary Bus Property Editor 中:
- 在 General Settings 选项卡下,将 Channel Configuration 改为 1.0(即单声道)。在将总线设为单声道时,并不会影响 Reflect 的输出。您可以在 Reflect Effect Editor 中配置其输出。
在 Auxiliary Bus Property Editor 的 General Settings 选项卡中配置 Reflect
- 在 Effects 选项卡中,添加 Wwise Reflect Effect。
Auxiliary Bus Property Editor Effects tab for Reflect
- 在 Positioning 选项卡中,选中 Listener Relative Routing,并将 3D Spatialization 设为 None。请不要为总线添加衰减,不过可在 Reflect Effect Editor 中自定义衰减效果。
Auxiliary Bus Property Editor Positioning tab for Reflect
- 从 Project > Import Factory Assets... 菜单导入 Reflect Acoustic Textures。
- 它们将被添加到 Project Explorer 视图的 ShareSets 选项卡中的 Virtual Acoustics 文件夹。
Factory Reflect Acoustic Textures in the Project Explorer ShareSets tab
- (可选) 在 Default Work Unit 下的 Virtual Acoustics 文件夹中,可添加自定义 Acoustic Texture。
- 保存工程。
B. Spatial Audio Emitter
为了使用新创建的 Reflect 辅助总线,我们需要修改 Spatial Audio Emitter。
- 在 Wwise Picker 中刷新 Wwise 工程:Windows > Wwise Picker
- 生成 SoundBank
Wwise Picker
- 修改每个按钮的 AkSpatialAudioEmitter 组件。
- 为 Reflect Aux Bus 选取 Reflect Auxiliary Bus。 将 Reflection Max Path Length 设为 100000。
-
Reflections Aux Bus Gain 设为 1。
- 将 Reflections Order 设为 2。
- 在 Debug Draw 下选中 Draw First Order Reflections 和 Draw Second Order Reflections。
在 AkSpatialAudioEmitter 中设置 Surface Reflector
C. Surface Reflector 组件
您可以使用 AkSurfaceReflector 组件来模拟早期反射。比如,您可以将 Surface Reflector 组件添加到游戏的现有 Mesh。不过,若形状过于复杂,则会向 Spatial Audio API 发送太多三角形,进而拖慢游戏运行速度。在这种情况下,可能需要创建一个新的 GameObject,以便将其作为 Surface Reflector。在 Wwise Unity Demo Scene 提供的场景中,Surface Reflector 使用了新的对象。因为 Room 是 Cube 形状的,所以我们使用了不带 Mesh 渲染器的 Cube。步骤如下:
- 创建 Cube:GameObject > 3D Object > Cube
- 移除 Mesh Renderer 组件。
- 在 Box Collider 组件中选中 Is Trigger。
- 添加 AkSurfaceReflector 组件。
- 在 Acoustic Texture 参数中,选择声学材质,或保留设为 None 以便获得未经滤波的反射声。
AkSurfaceReflector 组件
D. 验证设置
- 启动游戏并播放其中一个发声体。
- 在 \sect_surface_reflector_emitter 章节,我们已在 Debug Draw 下启用反射路径绘制功能,所以应该可在 Scene 窗口中看到射线从发声体到听者的投射路径黄色射线代表一阶反射(即在到达听者所在位置前只经过一次表面反射),橙色射线代表二阶反射。GameObject 的名称将显示在反射点位置。您可以通过启用 Gizmos 在 Game 窗口中查看射线。
Top view of early reflection drawings for existing mesh surface reflectors
- 在 Wwise 中连接游戏,并转到 Profiler 布局。Voice Graph 应如下图所示:
Voice Graph 中显示 Reflect Effect
- 在 Voice Graph 中的 Auxiliary Bus 节点下,双击高亮显示的 Wwise Reflect,打开 Reflect Effect Editor。在播放声音时,应会在 Voice Graph 和列表中看到当前的反射声。在 Texture(s) 列下显示两种材质时,表示其为二阶反射。
- 在此,可修改这些反射的衰减曲线。
- 若未看到任何反射,请确保 Max Distance 与发声体和听者之间的反射距离相比足够大。
Reflect Effect Editor View
- 转到 Game Object Profiler 布局(快捷键 F12)
- 确保在 Game Object 3D Viewer Settings 中启用 Diffraction Paths 和 Reflection Image Sources(如尚未启用)。
在 Game Object 3D Viewer Settings 中配置 Reflect
- 在 Game Object 3D Viewer 中,应会看到正在播放的发声体和 Spatial Audio 听者之间的 Surface Reflector 和反射路径。在下图中,可以看到 Surface Reflector 显示为纯蓝绿色(Acoustic Texture 的颜色)。对于反射路径和镜像声源,黄色代表一阶反射,橙色代表二阶反射。在图中,只显示了 Button Outside 的反射路径和镜像声源,因为只有它是当前正在播放的声源。
Game Object 3D Viewer
info |
备注: |
注意,在建筑表面为 Cube 形状的 Surface Reflector 时,若发声体位于建筑内部而听者位于其外部(反之亦然),则即便该发声体正在播放,也无法获取其反射路径。这是因为建筑开口是反射表面的一部分。为了解决这一问题,可选择只将建筑的 Mesh 用作 Surface Reflector,或者在开口附近设置 Portal。 |