目录

Wwise Unity Integration Documentation
Surface Reflector 教程

本教程以下步骤将展示如何结合 Spatial Audio 使用新的 Reflect 插件。为了确保正常使用工程,您需要获取 Reflect 插件授权。

注意:本教程假定您已完成 Spatial Audio 教程准备工作 。不过,并不要求完成 Room 和 Portal 教程 ;两个教程并不相干。

A. Wwise Project(工程)

我们需要在 Wwise 工程中添加 Auxiliary Bus 并为其应用 Reflect 插件,另外还要导入 Acoustic Texture。

  1. Master Audio Bus 下添加 Auxiliary Bus。
    1. Auxiliary Bus Property Editor 中:
      1. Effects 选项卡中,添加 Wwise Reflect Effect。
        AuxBusPropertyEditorEffectsThirdPerson.png
        Auxiliary Bus Property Editor Effects tab for Reflect
      2. 在 Positioning 选项卡中,选中 Listener Relative Routing,并将 3D Spatialization 设为 None
        AuxBusPropertyEditorPositioningThirdPerson.png
        Auxiliary Bus Property Editor Positioning tab for Reflect
  2. 从 Project > Import Factory Assets... 菜单导入 Reflect Acoustic Textures。
    1. 它们将被添加到 Project Explorer 视图的 ShareSets 选项卡中的 Virtual Acoustics 文件夹。
      ProjectExplorerShareSets.png
      Factory Reflect Acoustic Textures in the Project Explorer ShareSets tab
    2. (可选) 在 Default Work Unit 下的 Virtual Acoustics 文件夹中,可添加自定义 Acoustic Texture。
  3. 保存工程。

B. Spatial Audio Emitter

为了使用新创建的 Reflect 辅助总线,我们需要修改 Spatial Audio Emitter。

  1. 在 Wwise Picker 中刷新 Wwise 工程:Windows > Wwise Picker
    1. 生成 SoundBank。
      WwisePicker.png
      Wwise Picker
  2. 修改每个按钮的 Ak Spatial Audio Emitter 组件。
    1. Reflect Aux Bus 选取 Reflect Auxiliary Bus。
    2. Reflections Order 设为 2。
    3. Reflections Aux Bus Gain 设为 1。 将 Reflection Max Path Length 设为 100000。
    4. Debug Draw 下选中 Draw First Order ReflectionsDraw Second Order Reflections
      AkSpatialAudioEmitterReflect.png
      Ak Spatial Audio Emitter for Surface Reflector

C. Surface Reflector 组件

您可以使用 Ak Surface Reflector 组件来模拟早期反射。为此,可利用游戏的现有网格(mesh)来添加表面反射器。假如形状太过复杂,可能就要添加新的对象来作表面反射器。

C.1. 使用现有网格

通过直接使用现有网格,无需创建新的对象,便可为各个网格设置不同的声学材质。不过,假如形状十分复杂,可能会将太多三角形发送到 Spatial Audio API,进而导致游戏的运行速度变慢。另外还有一个限制,就是每个网格只能指派一种材质。对于在本教程来说,这样会无法为房间内部和外部分别设置不同的声学材质。 在 Unity Integration 提供的场景中,表面反射器采用的恰恰是这种方法。

  1. 选择 3.A. 环境 中创建的所有墙壁、天花板和地板,并添加 Ak Surface Reflector 组件。
    1. Acoustic Texture 参数中,选择声学材质,或保留设为 None 以便获得未经滤波的反射声。
      AkSurfaceReflector.png
      Ak Surface Reflector component
  2. 启动游戏。
    1. 在 \sub_surface_reflector_emitter 章节,我们已在 Debug Draw 下启用反射路径绘制功能,所以应该可在 Scene 窗口中看到射线从发声体到听者的投射路径(为了便于查看射线,我们在下图中移除了天花板)。蓝色射线代表一阶反射声,它们在抵达听者前曾被一个表面反射。黄色射线代表二阶反射声。反射点处显示有三角形的名称。该名称由游戏对象的名称和三角形的编号组成。一个 Cube 包含 12 个三角形,每个侧面各两个。
      DebugDraw2ndOrderTop.png
      Top view of early reflection drawings for existing mesh surface reflectors
    2. 通过启用 Gizmos,可在 Game 窗口中查看射线(如下图所示)。在这种视角下,还可看到 Debug Draw 选项绘制有当前反射表面所包含的三角形。除了此视图中的天花板,声音还会在天花板的三角形 7 和 6 上反射。
      DebugDraw2ndOrderGame.png
      First person view of early reflection drawings for existing mesh surface reflectors
    3. 在 Wwise 中连接游戏,并转到 Profiler 布局。在 Voices Graph 中,应会看到与 Button Small Room 发声时相似的情形。
      VoiceGraphReflect.png
      Button Small Room Voice Graph with Reflect Effect
    4. 在 Voices Graph 中,双击应用有 Reflect Effect 的 Auxiliary Bus。转到 Effects 选项卡,并双击 Reflect Effect。在播放声音时,坐标图中会显示当前反射声,左侧会显示 Reflect Effect Editor 列表。在下图中,所有墙壁和天花板都应用了 Drywall 声学材质,只有地板应用了 Tile 声学材质。在列表中显示有两种材质时,表示声音为二阶反射声。
      ReflectEffectEditor.png
      Reflect Effect Editor View

C.2. 备选方案:创建新的音量

通过新建未应用网格渲染器的游戏对象,可以简化复杂的形状。在此选读章节中,我们将展示如何为小房间内部设置表面反射器音量。 另外,您也可以将部分网格设为表面反射器,同时创建一个未应用网格渲染器的对象。示例通过将各个网格设为表面反射器,来单独为房间内的墙壁设置不同的材质;通过添加外部音量,来为房间外的墙壁设置截然不同的材质。 除了 Cube,还可根据需要使用 Quads 来设置不同的材质。在使用 Quads 时要注意避免交叉,以防声音渗透到形状之外。 使用 Cube 创建简单的未经渲染的网格:GameObject > 3D Object > Cube

对象名称 位置 旋转 比例
Small Room Interior (-2, 2.875, -6) (0, 0, 0) (11, 5.25, 7.5)
-# 移除 <b>Mesh Renderer</b> 组件。
-# 在 <b>Box Collider</b> 组件中选中 <b>Is Trigger</b>。
-# 添加 Ak <b>Surface Reflector</b>。
  1. 启动游戏。
    1. 因为我们简化了房间的形状,所以房门现在成了反射表面的一部分。在站在房间外部时,不会听到任何来自 Button Small Room 的反射声。不过,在房门打开时,会听到来自 Button Outside 的反射声。您可能也注意到了,反射点的名称现在与 Small Room Interior 对应。
      DebugDraw2ndOrderTopOutsideInterior.png
      Top view of early reflection drawings for a new surface reflector volume when the emitter is outside
    2. 在进入小房间时,会显示 Button Small Room 的调试绘图,并隐藏 Button Outside 的调试绘图。
      DebugDraw2ndOrderTopInsideInterior.png
      Top view of early reflection drawings for a new surface reflector volume when the emitter is inside