menu
 
版本
2019.1.11.7296

2024.1.5.8803

2023.1.13.8732

2022.1.19.8584

2021.1.14.8108

2019.2.15.7667

2019.1.11.7296

2018.1.11.6987

2017.2.10.6745

2017.1.9.6501

2016.2.6.6153

2015.1.9.5624


menu_open
Wwise Unreal Integration Documentation
在 Unreal 中使用 Wwise Spatial Audio

本教程将展示 Wwise 2017.1 提供的最新功能以及 Unreal 插件中新增的 Spatial Audio 功能。在此,我们会介绍在游戏中集成 Spatial Audio 组件的工作流程及相关技术信息,来了解如何在 Wwise 设计工具中初始化 Spatial Audio 元素(如 3D 总线、3D 空间化 Sound SFX 和 Reflect Effect 插件),并使用 Unreal Engine 在游戏中导入 Spatial Audio 组件。

我们假定读者具备基本的 Wwise 和 Unreal Engine 使用知识。不过请放心,本文档中会提供详尽的说明。无论用户处于怎样的专业水平,都可顺利完成本教程。如需了解更多信息,请参阅 Unreal 文档。

在学习本教程的过程中,我们会创建四个不同的虚拟声学区域来分别展示新增 Spatial Audio 插件的对应功能。每个区域的中央都设有作为发声体的环境声。在本例中,听者按照默认设置绑定至镜头。您可以通过来回移动来体验不同的声学环境。

为了构建相应的工作环境,您必须按照顺序完成 ABC 章节中所述的步骤。在完成这三个章节之后,您可以根据自身需要单独完成后续的 DEFG 章节。

info 注記: 对于需要使用 Reflect 插件的章节,必须获取相应的授权。

A – 设置工程

为了构建相应的工作环境,请使用最新版本的 Wwise 和 Unreal 完成以下步骤。

  1. 通过 Epic Launcher 启动 Unreal。
  2. 新建一个空白的 C++ Unreal 工程(没有初学者内容),并将其命名为 TestSpatialAudio。
  3. 关闭 Unreal。
  4. 启动 Wwise Launcher。
  5. 安装 Wwise。
  6. 选中 Unreal Engine 选项卡。
  7. 点击 Integrate Wwise into Project... 按钮。
  8. 点击 Open in Wwise 按钮来启动 Wwise。
  9. 点击 Open in Unreal 按钮来启动 Unreal。

B – 准备工作

在本节中,我们将调整地板大小并设置墙壁和 Portal,以此划定四个不同的区域来代表前述声学环境,并在其中放置 Spatial Audio 组件。

  1. 选中地板并设置新的 Transform。
    • 将 Location 设为 (x=0.0, y=0.0, z=0.0)。
    • 将 Scale 设为 (x=2.0, y=2.0, z=1.0)。
  2. 按照以下 Location 和 Scale 使用 8 个 Cube 创建墙壁:
    • Location (x=775.0, y=0.0, z=100.0) Scale (x=4.5, y=0.25, z=2.0)。
    • Location (x=225.0, y=0.0, z=100.0) Scale (x=4.5, y=0.25, z=2.0)。
    • Location (x=-225.0, y=0.0, z=100.0) Scale (x=4.5, y=0.25, z=2.0)。
    • Location (x=-775.0, y=0.0, z=100.0) Scale (x=4.5, y=0.25, z=2.0)。
    • Location (x=0.0, y=-775.0, z=100.0) Scale (x=4.5, y=0.25, z=2.0) Rotation (x=0.0, y=0.0, z=90.0)。
    • Location (x=0.0, y=-225.0, z=100.0) Scale (x=4.5, y=0.25, z=2.0) Rotation (x=0.0, y=0.0, z=90.0)。
    • Location (x=0.0, y=225.0, z=100.0) Scale (x=4.5, y=0.25, z=2.0) Rotation (x=0.0, y=0.0, z=90.0)。
    • Location (x=0.0, y=775.0, z=100.0) Scale (x=4.5, y=0.25, z=2.0) Rotation (x=0.0, y=0.0, z=90.0)。
  3. 将 Player 起点移到:
    • Location (x=-500.0, y=-500.0, z=100.0)。
  4. 为了便于区分各个 Room,请在指定的位置添加以下 PointLight,并将 Intensity 设为 50,000:
    • Red:Location (x=-500.0, y=-500.0, z=500.0)。
    • Blue:Location (x=500.0, y=-500.0, z=500.0)。
    • Green:Location (x=500.0, y=500.0, z=500.0)。
    • Yellow:Location (x=-500.0, y=500.0, z=500.0)。
  5. 另存为 NewMap。
    构建工作环境

C – 在 Unreal 中添加 Reference Sound

第一个区域添加了一个 3D 定位声音。随着听者围绕声源来回移动,声音需要正确的声像摆位和遮蔽/阻挡处理。在听者(即主镜头)移到区域之外或位于障碍物组件(如墙壁、地板或天花板)后方时,会出现遮蔽/阻挡情况。

  1. 在 Wwise 工程中,在 Actor-Mixer Hierarchy 的 Default Work Unit 下创建新的 Sound SFX,并将其命名为 ReferenceSound,然后导入冲激声音。
    创建 Sound SFX
  2. 确保启用 Use game-defined auxiliary sends 和 Listener Relative Routing,并将 3D Spatialization 设为 Position
    将 3D Spatialization 设为 Position
  3. 创建关联的 Event 并将其命名为 PlayReferenceSoundTest,然后将 ReferenceSound 拖到上面。
    创建声音 Event
  4. 保存工程。
  5. 在 Unreal 中,依次打开 Window > Wwise Picker,然后将 "PlayReferenceSoundTest" Event 拖到 Content Browser 中。
    从 Wwise Picker 拖到 Content Browser 中
  6. 双击 "PlayReferenceSoundTest" Event,然后直接在 SoundBank 列表中创建新的 SoundBank,并将其命名为 TestSpatialAudioBank。
    创建 SoundBank
    选择 SoundBank
  7. 将 "PlayReferenceSoundTest" Event 拖到场景中,来创建新的 AkAmbientSound
    • 将 Location 设为 (x=-500.0, y=-500.0, z=100.0)。
      创建 AkAmbientSound
  8. 从 Blueprints 菜单打开 Level Blueprint,然后移除 Event BeginPlay 和 Event Tick。
  9. 将新建的 PlayReferenceSoundTest 条目从 World Outliner 拖到 Blueprint 中。
  10. 右键单击 Blueprint 背景,然后搜索 Left Mouse Button。
  11. 再次右键单击 Blueprint 背景,然后搜索 Post Event。
  12. 将 Pressed 输出引脚连接到 Post Event Exec,并将 PlayReferenceSoundTest 组件连接到 Actor 输入引脚。
  13. 在 Post Event 中选择 "PlayReferenceSoundTest" AkEvent。
    添加用户输入来触发环境声
  14. 在上部菜单中,依次选择 Build > Generate SoundBanks....,来针对 Windows 生成 SoundBank。
    从 Build 菜单生成 SoundBank
  15. 查看 Output Log 并确保已成功生成 Bank。
    查看 Output Log 并确保已成功生成 SoundBank
  16. 启动场景。现在按下 Left Mouse Button,应会听到 3D 空间化声音。

D – 添加 Late Reverb

第二个区域用于演示如何使用 AkSpatialAudioVolume 添加 Late Reverb,并将其应用于该区域内包含的 AkAmbientSound

  1. 在 Wwise 工程中,在 Master Audio Bus 下创建 Auxiliary Bus,并将其命名为 TestReverbAuxBus。
    为混响创建 Auxiliary Bus
  2. 添加 Wwise RoomVerb Effect 并使用 Cathedrals > Holy 预定义 ShareSet。
  3. 创建第二个 Event 并将其命名为 PlayLateReverbTest,然后将 "ReferenceSound" Sound SFX 拖到上面。
    创建 Play Event
  4. 保存工程。
  5. 在 Unreal 中,将 "AkSpatialAudioVolume" Volume 从 Volumes 选择项拖到场景中。
    • 将 Location 设为 (x=500.0, y=-500.0, z=100.0)。
    • 将 Scale 设为 (x=5.0, y=5.0, z=1.0)。
      创建新的 Spatial Audio Volume
  6. 确保此 AkSpatialAudioVolume 只启用了 Enable Late Reverb,而禁用了 Enable Surface ReflectorsEnable Room
    选中 Enable Late Reverb
  7. 将新建的 TestReverbAuxBus 和 PlayLateReverbTest 从 Wwise Picker 拖到 Content Browser 中。
    从 Wwise Picker 拖动 Auxiliary Bus 和 Event
  8. 双击 PlayLateReverbTest,然后将其指派给 TestSpatialAudioBank。
    将 Bus 和 Event 添加到 Bank
  9. 选中新建的 AkSpatialAudioVolume,然后在 Late Reverb 分区中将 Aux Bus 设为 TestReverbAuxBus。
    在 Late Reverb 分区中选择 Aux Bus
  10. 将 "PlayLateReverbTest" Event 拖到场景中,来创建 AkAmbientSound
    • 将 Location 设为 (x=500.0, y=-500.0, z=100.0)。
      将 Event 拖到场景中
  11. 针对 PlayLateReverbTest 重复步骤 C-11 ~ C-13 来触发声音(您可以映射键盘按键而非鼠标按钮)。
  12. 重新生成 SoundBank。
  13. 启动场景并进入 Volume。在触发 PlayReferenceSoundTest 时,应会听到应用了混响效果器的声音。
info 注記: 若针对 AkSpatialAudioVolume 选中 Enable Room,则带有混响效果器的 Auxiliary Bus 也须启用 3D 定位。

E – 添加 Surface Reflector

第三个区域用于演示如何使用 Surface Reflector 模拟声学环境中声音传播产生的早期反射。在为声波传播建模时我们采用了镜像声源法,基于游戏几何构造以及相应的时间延迟(距离)、振幅、滤波参数来进行模拟,以此逼真地重现声学环境。同时,通过实时计算来评估声波从发声体到听者所在位置的不同路径。最终,生成具有强烈空间感的声学环境。您可以通过 Wwise Reflect Effect Editor 清楚地看到每个反射声的距离/振幅。

  1. 在 Wwise 中,创建第三个 Event 并将其命名为 PlayReflectTest,然后将 "ReferenceSound" Sound SFX 拖到上面。
    在 Wwise 中创建新的 Event
  2. 在 Master Audio Bus 下创建 Aux Bus 并将其命名为 TestReflectAuxBus,然后为其应用 Reflect 插件。
    在 Wwise 中创建新的 Aux Bus
  3. 确保选中 Use game-defined auxiliary sends,并启用 Listener Relative Routing,同时将 3D Spatialization 设为 None
    针对 Auxiliary Bus 将 3D Spatialization 设为 None
  4. 将 Reflect 的 Max Distance 设为 10,000,并将 Speed of Sound 设为 34,500。
    针对 Reflect 设置 Speed of Sound 和 Max Distance
  5. 保存工程。
  6. 在 Unreal 中,将 PlayReflectTest 和 TestReflectAuxBus 从 Wwise Picker 拖到 Content Browser 中。
  7. 双击 "PlayReflectTest" Event,然后将其指派给 TestSpatialAudioBank。
  8. 将 PlayReflectTest 拖到场景中,来创建 AkAmbientSound
    • 将 Location 设为 (x=500.0, y=500.0, z=100.0)。
  9. 将 AkSpatialAudioVolume 拖到场景中。
    • 将 Location 设为 (x=500.0, y=500.0, z=100.0)。
    • 将 Relative Scale 设为 (x=5.0, y=5.0, z=1.0)。
  10. 确保此 AkSpatialAudioVolume 启用了 Enable Surface Reflectors,而禁用了 Enable Late Reverb 和 Enable Room。
    将 Spatial Audio Volume 添加到场景中
  11. PlayReflectTest AkAmbientSound 应当在 AkSpatialAudioVolume 之内。
  12. 选中 PlayReflectTest AkAmbientSound,然后转到 Spatial Audio 选项,并将 Early Reflection Aux bus 设为 TestReflectAuxBus。
  13. 另外还可针对此 AkAmbientSound 启用 Debug Draw 并显示一阶反射 (Ak Component > Spatial Audio > Debug Draw)。
    启用 Debug Draw 选项并显示一阶反射
  14. 针对 PlayReflectTest 重复步骤 C-11 ~ C-15 来触发声音(您可以映射键盘按键而非鼠标按钮)。
    添加用户输入来触发声音
  15. 重新生成 SoundBank。
  16. 启动场景并进入 Volume。在触发 PlayReflectTest 时,应会看到绘制的反射路径以及输出到带有 Reflect 插件的 Aux Bus 的声音。

F – 添加 Room 和 Portal

在逼真的声学环境中,可将 Portal(如窗户或其他开口)用作新的声源,以此模拟听者位于声源所在 Volume 之外的情形。您可以使用 AkAcousticPortal 为这种情况建模。为此,可使用 Auxiliary Bus 输出 Volume 内的声音内容,并将其作为新的 3D 声源暴露在临近声学空间中。

  1. 在 Wwise 中,创建新的 Auxiliary Bus 并将其命名为 TestPortalAuxBus。
  2. 确保选中 Use game-defined auxiliary sends 来启用 3D 定位。
    创建新的 Auxiliary Bus 并启用 3D Spatialization
  3. 添加 Wwise RoomVerb Effect 并将参数设为 Room_Medium。
    将混响效果器添加到 Auxiliary Bus
  4. 创建第四个 Event 并将其命名为 PlayPortalTest,然后将 "ReferenceSound" Sound SFX 拖到上面。
    添加新的 Play Event
  5. 保存工程。
  6. 在 Unreal 中,将 PlayPortalTest 从 Wwise Picker 拖到 Content Browser 中。
  7. 将 TestPortalAuxBus 拖到 Content Browser 中。
    将 Event 和 Auxiliary Bus 添加到 Content Browser 中
  8. 双击 "PlayPortalTest" Event,然后将其指派给 TestSpatialAudioBank。
    针对 Event 选择 SoundBank
  9. 添加新的 AkSpatialAudioVolume
    • 将 Location 设为 (x=-500.0, y=500.0, z=100.0)。
    • 将 Absolute Scale 设为 (x=5.0, y=5.0, z=1.0)。
  10. 在 Late Reverb 分区中选择 TestPortalAuxBus 作为 Aux Bus。
    将 Spatial Audio Volume 添加到场景中并在 Late Reverb 分区中选择 Auxiliary Bus
  11. 确保针对此 AkSpatialAudioVolume 启用 Enable Late ReverbEnable Room,而禁用 Enable Surface Reflectors
    确保启用 Enable Room
  12. 重复步骤 F-1 ~ F-7 来在 Late Reverb 分区中添加另一 Aux Bus(带有 RoomVerb 预设),并将其命名为 TestReferenceAuxBus。
    创建新的 Auxiliary Bus 并启用 3D Spatialization
    将混响效果器添加到 Auxiliary Bus
  13. 添加另一 AkSpatialAudioVolume
    • 将 Location 设为 (x=-500.0, y=-500.0, z=100.0)。
    • 将 Absolute Scale 设为 (x=5.0, y=5.0, z=1.0)。
  14. 确保针对此 AkSpatialAudioVolume 启用 Enable Late ReverbEnable Room,而禁用 Enable Surface Reflectors
    添加第二个 Audio Volume 并启用 Enable Room
  15. 在 Late Reverb 分区中选择 TestReferenceAuxBus 作为 Aux Bus。
    在 Late Reverb 分区中选择 Auxiliary Bus
  16. 添加三个 AkAcousticPortal
    • Location (x=-500.0, y=0.0, z=100.0) Scale (x=0.5, y=0.5, z=1.0)。
    • Location (x=0.0, y=-500.0, z=100.0) Scale (x=0.5, y=0.5, z=1.0) Rotation (x=0.0, y=0.0, z=90.0)。
    • Location (x=-500.0, y=0.0, z=100.0) Scale (x=0.5, y=0.5, z=1.0) Rotation (x=0.0, y=0.0, z=90.0)。
      将新建的声学 Portal 拖到场景中
  17. 选中新建的 Portal,然后在 Ak Acoustic Portal 分区中将 Initial State 设为 Open。
    确保 Portal 处于 Open 状态
  18. 将 PlayPortalTest 拖到场景中。
    • 将 Location 设为 (x=-500.0, y=500.0, z=100.0)。
      将新建的 Event 拖到场景中
  19. 针对 PlayPortalTest 重复步骤 C-11 ~ C-13 来触发声音(您可以映射键盘按键而非鼠标按钮)。
  20. 针对 Windows 重新生成 SoundBank。
  21. 启动场景并待在起点位置。在触发 PlayPortalTest 时,应会听到从 Portal 传来的声音。
info 注記: 在设置 AkAcousticPortal 的朝向时,必须确保其所连通的两个 Room 位于 Portal 的局部 Y 轴上。为了便于识别,在选中 Portal 时其周围会显示黄色条带。黄线用来分隔前后区域。在 Room 之间存在重叠时,会选用优先级最高的 Room。
info 注記: 若空间中包含若干 Spatial Audio Room,则将改变声笼/声障算法的行为,并使用 Spatial Audio Room 提供的附加信息。若发声体和听者之间的视线测试失败,则:
  1. 在听者和发声体处在同一 Room 时,设置 Wwise 声障滤波器(仅针对干声路径)。
  2. 在发声体和听者处在不同 Room 时,设置 Wwise 声障滤波器(针对湿声和干声路径)。
  3. 在没有 Spatial Audio Room 的情况下,算法会假定所有处在听者视线之外的声音都会被遮蔽,同时设置 Wwise 声笼滤波器(针对湿声和干声路径)。
info 注記: 在 F 章节添加了 Room 之后,您会发现在听者处在 Room 内而之前章节中创建的声音处在 Room 外时声音会被遮蔽。同样地,在声音处在 Room 内而听者处在 Room 外时声音也会被遮蔽。

在 Wwise 中,您可以在 Project Settings 的 Obstruction/Occlusion 选项卡下微调 Portal 阴影区的滤波响应。

Obstruction Volume 曲线
Obstruction LPF 曲线
Occlusion Volume 曲线
Occlusion LPF 曲线

G – 添加 Spot Reflector

Spot Reflector 是本教程最后要介绍的一项功能,主要用于为特殊的声学反射建模。我们可以使用 Spot Reflector 为远距离的虚拟地理元素(人造\天然)建模,以此生成奇特的声学回声效果。比如,大山或高墙。Spot Reflector 在发声体即为听者的情况下应用效果最佳。我们可以直接将 Spot Reflector 拖到声学环境中,并让引擎根据发声体和听者的各自位置以及反射点之间的实际距离,准确计算声学延迟。

  1. 在 Wwise 工程中,创建新的 Auxiliary Bus 并将其命名为 TestSpotReflectorAuxBus,然后为其应用 Reflect 插件。
    添加新的 Auxiliary Bus 并应用 Reflect
  2. 确保启用 Use game-defined auxiliary sends 和 Listener Relative Routing,并将 3D Spatialization 设为 None
    确保将 3D Spatialization 设为 None
  3. 将 Reflect 的 Max Distance 设为 10,000,并将 Speed of Sound 设为 34,500。
    确保设置 Reflect 的 Speed of Sound 和 Max Distance
  4. 保存工程。
  5. 在 Unreal 中,将 TestSpotReflectorAuxBus 从 Wwise Picker 拖到 Content Browser 中。
  6. 打开 Level Blueprint 并执行以下操作:
    • 在 Player 发声体上启用 Spot Reflector。
    • 通过 Player 发声体发送 "PlayReferenceSoundTest" Event(您可以映射键盘按键而非鼠标按钮)。
      在 Player 组件上启用 Spot Reflector 并通过其发送 PlayReferenceSoundTest
  7. 将新建的 AkSpotReflector 对象拖到场景中。
    • 将 Location 设为 (x=-150.0, y=-150.0, z=100.0)。
  8. AkSpotReflector 对象上,将 Aux Bus 设为 TestSpotReflectorAuxBus。
    将新建的 Spot Reflector 拖到场景中
  9. 重新生成 SoundBank。
  10. 启动场景。在通过 Player 发声体触发新建的 Event 时,若发声体和 Spot Reflector 处在同一 Room,应会听到来自 Spot Reflector 的反射声。在 Effect Editor 中打开 "TestSpotReflectorAuxBus" Auxiliary Bus 上应用的 Reflect 插件时,列表和坐标图中应会显示反射路径。

此页面对您是否有帮助?

需要技术支持?

仍有疑问?或者问题?需要更多信息?欢迎联系我们,我们可以提供帮助!

查看我们的“技术支持”页面

介绍一下自己的项目。我们会竭力为您提供帮助。

来注册自己的项目,我们帮您快速入门,不带任何附加条件!

开始 Wwise 之旅