目录

Surface Reflector 教程

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

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

A. Wwise Project(工程)

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

  1. Master Audio Bus 下添加 Auxiliary Bus。在 Auxiliary Bus Property Editor 中:
    1. General Settings 选项卡下,将 Channel Configuration 改为 1.0(即单声道)。在将总线设为单声道时,并不会影响 Reflect 的输出。您可以在 Reflect Effect Editor 中配置其输出。
      AuxBusPropertyEditorGeneralSettingsThirdPerson.png

      在 Auxiliary Bus Property Editor 的 General Settings 选项卡中配置 Reflect

    2. Effects 选项卡中,添加 Wwise Reflect Effect。
      AuxBusPropertyEditorEffectsThirdPerson.png

      Auxiliary Bus Property Editor Effects tab for Reflect

    3. 在 Positioning 选项卡中,选中 Listener Relative Routing,并将 3D Spatialization 设为 None。请不要为总线添加衰减,不过可在 Reflect Effect Editor 中自定义衰减效果。
      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. 修改每个按钮的 AkSpatialAudioEmitter 组件。
    1. Reflect Aux Bus 选取 Reflect Auxiliary Bus。 将 Reflection Max Path Length 设为 100000。
    2. Reflections Aux Bus Gain 设为 1。
    3. Reflections Order 设为 2。
    4. Debug Draw 下选中 Draw First Order ReflectionsDraw Second Order Reflections
      AkSpatialAudioEmitterReflect.png

      在 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。步骤如下:

  1. 创建 Cube:GameObject > 3D Object > Cube
    1. 移除 Mesh Renderer 组件。
    2. Box Collider 组件中选中 Is Trigger
    3. 添加 AkSurfaceReflector 组件。
      1. Acoustic Texture 参数中,选择声学材质,或保留设为 None 以便获得未经滤波的反射声。
        AkSurfaceReflector.png

        AkSurfaceReflector 组件

D. 验证设置

  1. 启动游戏并播放其中一个发声体。
    1. 在 章节,我们已在 Debug Draw 下启用反射路径绘制功能,所以应该可在 Scene 窗口中看到射线从发声体到听者的投射路径黄色射线代表一阶反射(即在到达听者所在位置前只经过一次表面反射),橙色射线代表二阶反射。GameObject 的名称将显示在反射点位置。您可以通过启用 GizmosGame 窗口中查看射线。
      DebugDraw2ndOrderTop.png

      Top view of early reflection drawings for existing mesh surface reflectors

    2. 在 Wwise 中连接游戏,并转到 Profiler 布局。Voice Graph 应如下图所示:
      VoiceGraphReflect.png

      Voice Graph 中显示 Reflect Effect

    3. 在 Voice Graph 中的 Auxiliary Bus 节点下,双击高亮显示的 Wwise Reflect,打开 Reflect Effect Editor。在播放声音时,应会在 Voice Graph 和列表中看到当前的反射声。在 Texture(s) 列下显示两种材质时,表示其为二阶反射。
      1. 在此,可修改这些反射的衰减曲线。
      2. 若未看到任何反射,请确保 Max Distance 与发声体和听者之间的反射距离相比足够大。
        ReflectEffectEditor.png

        Reflect Effect Editor View

    4. 转到 Game Object Profiler 布局(快捷键 F12)
      1. 确保在 Game Object 3D Viewer Settings 中启用 Diffraction Paths 和 Reflection Image Sources(如尚未启用)。
        GameObject3DViewerSettingsReflectionPaths.png

        在 Game Object 3D Viewer Settings 中配置 Reflect

      2. 在 Game Object 3D Viewer 中,应会看到正在播放的发声体和 Spatial Audio 听者之间的 Surface Reflector 和反射路径。在下图中,可以看到 Surface Reflector 显示为纯蓝绿色(Acoustic Texture 的颜色)。对于反射路径和镜像声源,黄色代表一阶反射,橙色代表二阶反射。在图中,只显示了 Button Outside 的反射路径和镜像声源,因为只有它是当前正在播放的声源。
        GameObject3DViewerReflect.png

        Game Object 3D Viewer

        Note.gif
        备注: 注意,在建筑表面为 Cube 形状的 Surface Reflector 时,若发声体位于建筑内部而听者位于其外部(反之亦然),则即便该发声体正在播放,也无法获取其反射路径。这是因为建筑开口是反射表面的一部分。为了解决这一问题,可选择只将建筑的 Mesh 用作 Surface Reflector,或者在开口附近设置 Portal。
Generated at Wed Jul 10 16:16:42 2019 for Wwise Unity Integration by  doxygen 1.6.3