版本

menu_open
Wwise Unreal Integration Documentation
Reverb Parameter Estimation

在使用与 UPrimitiveComponent 绑定的 AkLateReverbComponent 时,可告知 Wwise Unreal Integration 依据 UPrimitiveComponent 的大小和形状来自动指派混响 Aux Bus

同样地,Wwise Unreal Integration 还可使用 UPrimitiveComponent 来估算特定混响参数,并通过 全局混响 RTPC 加以调节。本教程将阐述如何自动指派 Aux Bus 并使用全局混响 RTPC 估算混响参数。

注記: UPrimitiveComponent 是一种具有大小和形状的通用 Unreal 组件。很多组件类型都是基于 UPrimitiveComponent 构建的,其中包括 Collision、Brush 和 Mesh 组件。有关详细信息,请参阅 Unreal Engine 文档
注記: Reverb Parameter Estimation 本身是一项 AkLateReverbComponent 功能,不过 AkSpatialAudioVolume 包含 AkLateReverbComponent ,因此其同样可以使用该项功能。
注記: 在开始学习本教程前,请务必先完成 Spatial Audio 教程准备工作

自动指派 Aux Bus

在自动指派 Aux Bus 时,会估算声音混响衰减到一定程度所需的时间(秒)。在此,我们将之简称为 Decay。您可以使用 Integration Settings 中的 Aux Bus Assignment Map 来决定 Decay 值和 Aux Bus 之间的映射关系。

Integration Settings 中的 Aux Bus Assignment Map
注記: 若要访问 Integration Settings,请依次单击 Edit > Project Settings...,以此打开 Unreal Project Settings。然后,在 Unreal Project Settings 的左侧面板中,向下滚动到 Wwise 分区并单击 Integration Settings

在 Aux Bus Assignment Map 中设置 Decay 键值前,可察看关卡中现有混响的 Decay 估值。

  1. 打开 SpatialAudioTutorialMap(如尚未打开)。
  2. 在 World Outliner 中,单击 "Interior_SmallRoom" AkSpatialAudioVolume
  3. 在 Interior_SmallRoom 所对应的 Details 面板中,启用 Auto Assign Aux Bus
  4. 针对 "Interior_LargeRoom" AkSpatialAudioVolume 重复步骤 2 和 3。
针对 Interior_SmallRoom 和 Interior_LargeRoom 启用 Auto Assign Aux Bus
注記: 在启用 Auto Assign Aux Bus 时,会将 Aux Bus 设为 None。这是因为目前尚未设置 Aux Bus Assignment Map。

在启用 Auto Assign Aux Bus 的情况下,在视口中选中各个 AkSpatialAudioVolume 时会在其上方显示一些文本信息。Interior_SmallRoom 的 Decay 估值为 0.37 秒。Interior_LargeRoom 的 Decay 估值为 0.45 秒。Details 面板的 Reverb Parameter Estimation 中也会显示此信息。我们可以使用这些值来设置 Aux Bus Assignment Map。

视口中的 Primitive 组件上方会显示混响参数信息
Details 面板的 Reverb Parameter Estimation 分区中也会显示混响参数信息
  1. 打开 Integration Settings。
  2. 展开 Reverb Assignment Map 分区(如尚未展开)。
    Integration Settings 中的 Aux Bus Assignment Map
  3. 单击 Insert Decay Key 按钮。
  4. 将值设为 0.4,并单击 Insert
    在 Insert Decay Key 中键入 0.4
  5. 单击 Insert Decay Key 按钮。
  6. 将值设为 0.5,并单击 Insert
  7. 在 0.4 的 Decay 键值旁,选择 "SmallRoom" Aux Bus。
  8. 在 0.5 的 Decay 键值旁,选择 "LargeRoom" Aux Bus。
在 Aux Bus Assignment Map 中插入两个新的 Decay 值并设置与之对应的 Aux Bus

在完成上述 Aux Bus Assignment Map 设置后,0.0 ~ 0.4 之间的 Decay 值会生成 "SmallRoom" Aux Bus。0.4 ~ 0.5 之间的 Decay 值会生成 "LargeRoom" Aux Bus。0.5 以上的 Decay 值会生成 Default Reverb Aux Bus

这时返回关卡,可看到为 Interior_SmallRoom 和 Interior_LargeRoom 指派了相应的 Aux Bus 值。

自动指派了 Aux Bus

全局混响 RTPC

除自动指派 Aux Bus 外,还可在 Wwise 中通过全局混响 RTPC 来自动设置混响效果器的某些参数。我们可以采用这种方式设置三项参数:Decay、Predelay 和 HFDamping。您可以在 Integration Settings 中设置由哪些 RTPC 控制这些参数。

Integration Settings 中的全局混响 RTPC

设置 RTPC

为了使用全局混响 RTPC,我们需要在 Wwise 工程中添加三个 RTPC。

  1. 打开 Wwise 工程。
  2. 通过依次单击 Layouts > Designer 或按下 F5 来打开 Designer 布局。
  3. 在 Project Explorer 中,单击 Game Syncs 选项卡。
    打开 Game Syncs 选项卡
  4. 添加三个新的 Game Parameter,并分别命名为 Decay、Predelay 和 HFDamping。
  5. 按照如下所述来设置三个新 Game Parameter 的 Min、Max 和 Default 值:
    1. Decay – Min:0;Max:10;Default:0
    2. Predelay – Min:0;Max:1;Default:0
    3. HFDamping – Min:-1;Max:1;Default:0
      在 Wwise 工程中添加三个新的 RTPC
  6. 在 Project Explorer 中,单击 Audio 选项卡。
  7. 在 Master-Mixer Hierarchy 下,双击 SmallRoom。
    1. 这时将在 Property Editor 中打开 "SmallRoom" Aux Bus。
  8. 在 Property Editor 中单击 Effects 选项卡。
    打开 'SmallRoom' Aux Bus 所对应的 Effects 选项卡
  9. 单击 Edit 按钮来打开 "WwiseRoomVerb" Effect。
  10. 在 Effect Editor 中,单击 RTPC 选项卡。
  11. 在 RTPC 列表中添加 Decay TimePredelayHF Damping 条目。
  12. 按照如下所述来映射各项参数:
    1. Decay TimeDecay
    2. Pre delayPredelay
    3. HF DampingHFDamping
  13. 选中 Decay 映射,并在曲线上添加控制点。
  14. 将控制点的 X 和 Y 值全部设为 0.2。
    'Decay' RTPC 的映射
  15. 选中 HFDamping 映射,并在曲线上添加控制点。
  16. 将 X 值设为 0.0,并将 Y 值设为 1.0。
    'HFDamping' RTPC 的映射
    同时显示三个 RTPC 的映射
  17. 选中列表中的所有映射。
  18. 右键单击其中一个映射并选择 Copy
  19. 在 Property Editor 中打开 "LargeRoom" Aux Bus。
    打开 LargeRoom Wwise RoomVerb Effect 所对应的 Effect Editor
  20. 单击 Effects 选项卡。
  21. 单击 Edit 按钮来打开 "WwiseRoomVerb" Effect。
  22. 在 Effect Editor 中,单击 RTPC 选项卡。
  23. 右键单击空白 RTPC 列表并选择 Paste

现在我们在 Wwise 中设置了三个 RTPC 来控制混响参数。下面我们返回 Unreal 工程,来将这三个 RTPC 用作全局混响 RTPC。

  1. 打开 Integration Settings。
  2. 展开 Reverb Assignment Map 分区(如尚未展开)。
  3. 展开 RTPCs 分区(如尚未展开)。
    Integration Settings 中的全局混响 RTPC
  4. 将新的 RTPC 分别指派给对应的全局混响 RTPC。
将三个新的 RTPC 指派给全局混响 RTPC

接下来可远程连接到 Wwise,并进入 Play In Editor 模式。若在 Small Room 和 Large Room 中触发声音时察看 Wwise 中的 RTPC 曲线,便可看到这些混响参数的变化情况。

由游戏驱动 RTPC

将一条混响 Aux Bus 用于不同的 Room 类型

借助全局混响 RTPC,可将一个混响效果器用于整个关卡,并针对关卡中的不同 Room 来动态驱动相应的参数。

  1. 在 Wwise 工程中,创建新的 Aux Bus 并命名为 DynamicReverb。
  2. 使用 Default 效果器预设将 "Wwise RoomVerb" Effect 添加到此 Aux Bus。
    创建新的 'DynamicReverb' Aux Bus 并为其添加 'Wwise RoomVerb' Effect
  3. 将 RTPC 映射从 "SmallRoom" Aux Bus 的混响效果器复制并粘贴到 "DynamicReverb" Aux Bus 的混响效果器。
  4. 在 Unreal 工程中,清除 Aux Bus Assignment Map 内的所有条目。
    1. 为此,可单击 Environment Decay Aux Bus Map 旁边的“删除”小图标。
  5. Default Reverb Aux Bus 设为刚才创建的 "DynamicReverb" Aux Bus。

这时若远程连接到 Wwise 并进入 Play In Editor 模式,则 Interior_SmallRoom 和 Interior_LargeRoom 都将使用 "DynamicReverb" Aux Bus,不过会通过全局混响 RTPC 来针对每个 Room 自动调节相应的参数。

结合自定义 Blueprint 类来使用混响估算

为了进一步展示单条 Aux Bus 工作流程,我们可以创建自定义 Blueprint 类来代表单个 Room。为便于演示,这里将选用一个带有墙壁且可进出的简单 Cube 形 Room。首先,我们要创建一种双面 Material 以确保能够看到 Room 内部。

  1. 在 Content Browser 中,转到 WwiseAssets/SpatialAudioDemo 文件夹。
  2. 右键单击 SpatialAudioDemoMeshMaterial 并选择 Duplicate
    复制 SpatialAudioDemoMeshMaterial
  3. 将新的 Material Instance 命名为 SpatialAudioDoubleSidedMaterial。
    将新的 Material Instance 重命名为 SpatialAudioDoubleSidedMaterial
  4. 打开新的 Material Instance。
  5. Material Property Overrides 下,启用 Two Sided
  6. 保存 Material Instance。

现在示例 Material 已准备就绪,接下来便可创建自定义 Blueprint 类。

  1. 在 Content Browser 中,转到 Blueprints 文件夹。
  2. 在文件夹中右键单击并选择 Blueprint Class
    创建新的 Blueprint 类
  3. 选择将 Actor 作为 Parent Class。
  4. 将新的 Blueprint 命名为 BPRoom。
  5. 打开新的 BPRoom Blueprint 类。
  6. 在 Components 面板中,单击 Add Component 按钮。
    在 Blueprint Editor 中使用 Add Component 按钮来添加组件
  7. 在搜索栏中键入 cube,然后选择 Cube 组件。
    1. 这时将创建一个 Static Mesh 组件并把 Cube Mesh 选作 Static Mesh
  8. 在 Details 面板的 Materials 下,将 Element 0 设为 SpatialAudioDoubleSidedMaterial
    将 Cube 的 Material 设为 SpatialAudioDoubleSidedMaterial
  9. 在 Components 面板中,选中 Cube 组件。
  10. 单击 Add Component 按钮,并添加 Box Collision 组件。
  11. 选中 Box 组件。
  12. 单击 Add Component 按钮并添加 Ak Room 组件。
  13. 选中 Box 组件。
  14. 单击 Add Component 按钮并添加 Ak Late Reverb 组件。
  15. 选中 Box 组件。
  16. 单击 Add Component 按钮并添加 Ak Geometry 组件。

Blueprint 类中的组件层级结构应如下图所示:

设置 Cube、Box 和 Spatial Audio 组件
  1. 选中 AkGeometry 组件。
  2. 在 Details 面板的 Geometry 下,将 Mesh Type 设为 Simple Collision。
  3. 展开 Acoustic Properties Override 分区,并将 Acoustic Texture 设为 Concrete。
    设置 AkGeometry 参数
  4. 在 Components 面板中,选中 Cube 组件。
  5. 单击 Add Component 按钮并添加 Point Light 组件。
    1. 这样在走进 Room 时便可看到其内部。
      将 Point Light 添加到 Cube 组件
  6. 选中 Cube 组件。
  7. Collision 下,将 Collision Preset 设为 No Collision
  8. 选中 Box 组件。
  9. Collision 下,将 Collision Preset 设为 No Collision
    1. 这样便可穿过墙壁。
  10. 编译并保存 Blueprint。
  11. 在 Level Editor 中,从 Content Browser 拖入多个 BPRoom 实例。
  12. 将这些 Room 设为不同的大小。

在测试新的 Room Blueprint 前,我们需要添加声音以在变换 Room 时播放。

  1. 从 Content Browser 中的 Blueprints 文件夹打开 MyCharacter Blueprint。
    Content Browser 中的 'MyCharacter' Blueprint
  2. 在 Components 面板中,选中 Capsule 组件。
  3. 单击 Add Component 按钮并添加 Ak 组件。
    1. 该组件将直接显示为 Ak。
  4. 将 Ak 组件的名称改为 SpatialSound。
  5. 选中 SpatialSound 组件。
  6. 在 Details 面板中,将 Ak Audio Event 设为 Play_SpatialSound
    将 Ak 组件添加到 'MyCharacter' Blueprint
  7. 打开 "MyCharacter" Blueprint 所对应的 Event Graph。
  8. 在 Event Graph 的右下方找到 Event BeginPlay 节点。
  9. 从最后一个 Set Switch 节点向外拖动,然后键入 post associated。
    将 Set Switch 节点连接到 PostAssociatedAkEvent 节点
  10. 选中 Post Associated Ak Event (SpatialSound)
设置逻辑以在 BeginPlay 时发送空间音效

接下来便可在关卡中放置一些 Room。

  1. 将多个 "BPRoom" Blueprint 实例拖到关卡中。
  2. 将这些 Room 设为不同的大小。
  3. 更改各个 Room 中 AkGeometry 组件上的 Acoustic Texture。
    1. 选择关卡中的 Room。
    2. 在 Details 面板中,选中 AkGeometry 组件。
    3. 更改 Acoustic Texture
    4. 针对关卡中的所有 BPRoom 实例执行上述操作。
      针对不同的 BPRoom Actor 实例更改 Acoustic Texture

接下来可远程连接到 Wwise,并进入 Play In Editor 模式。这时将立即触发空间音效。在走进不同的 Room 时,将为音效应用相应的混响参数。

HFDamping 计算和 Acoustic Texture

在估算 HFDamping 值时,AkLateReverbComponent 使用 AkGeometryComponent 来查询其所具有的 Acoustic Texture。在上一小节中,我们将 AkLateReverbComponentAkGeometryComponent 绑定到了同一 UPrimitiveComponent 父对象。之前的 UPrimitiveComponent 父对象为 Box 组件。在采用此设置时,若 AkLateReverbComponent 具有同级 AkGeometryComponent ,则将自动使用该同级 AkGeometryComponent 来计算 HFDamping。不过,若 AkGeometryComponent 具有不同的父对象,则需使用 AssociateAkTextureSetComponent 函数来显式地将 AkGeometryComponentAkLateReverbComponent 关联。本节将展示如何执行此设置。

  1. 打开 "BPRoom" Blueprint。
  2. 在 Components 面板中,将 AkGeometry 组件拖到 Cube 组件之上,然后松开鼠标按钮。
    1. 这时将把 AkGeometry 组件绑定到 Cube 组件而非 Box 组件。
  3. 选中 AkGeometry 组件。
  4. 在 Details 面板的 Geometry 下,将 Mesh Type 设为 Static Mesh。
  5. 使用加号按钮向 Acoustic Properties Override 添加条目。
    在 Acoustic Properties Overrides 列表中添加 Material
  6. 将 Material 设为 SpatialAudioDoubleSidedMaterial
  7. 单击 Material 旁边的下拉箭头,并将 Acoustic Texture 设为 Concrete。
    设置 AkGeometry 参数
  8. 打开 Blueprint 所对应的 Event Graph。
  9. 单击 Even BeginPlay 节点,并从执行引脚向外拖动。
  10. 在搜索栏中键入 associate。
  11. 选中 Associate Ak Texture Set Component (AkLateReverb)。
  12. AkGeometry 组件从 Components 面板拖到 Texture Set Component 之上,然后松开鼠标按钮。
设置 BeginPlay 函数

接下来可远程连接到 Wwise,并进入 Play In Editor 模式,来测试是否能正确更新 HFDamping 值。利用此设置,我们可以为 Static Mesh 设置多种 Material,同时绑定 AkGeometryComponent 并将这些 Material 映射到 Acoustic Texture。然后,将该 AkGeometryComponentAkLateReverbComponent 绑定,以此让 Acoustic Texture 来驱动 HFDamping 值。


此页面对您是否有帮助?

需要技术支持?

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

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

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

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

开始 Wwise 之旅