在使用与 UPrimitiveComponent
绑定的 AkLateReverbComponent 时,可告知 Wwise Unreal Integration 依据 UPrimitiveComponent
的大小和形状来自动指派混响 Aux Bus。
同样地,Wwise Unreal Integration 还可使用 UPrimitiveComponent
来估算特定混响参数,并通过 全局混响 RTPC 加以调节。本教程将阐述如何自动指派 Aux Bus 并使用全局混响 RTPC 估算混响参数。
|
注記: UPrimitiveComponent 是一种具有大小和形状的通用 Unreal 组件。很多组件类型都是基于 UPrimitiveComponent 构建的,其中包括 Collision、Brush 和 Mesh 组件。有关详细信息,请参阅 Unreal Engine 文档。 |
自动指派 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 估值。
- 打开 SpatialAudioTutorialMap(如尚未打开)。
- 在 World Outliner 中,单击 "Interior_SmallRoom"
AkSpatialAudioVolume
。
- 在 Interior_SmallRoom 所对应的 Details 面板中,启用 Auto Assign Aux Bus。
- 针对 "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 分区中也会显示混响参数信息
- 打开 Integration Settings。
- 展开 Reverb Assignment Map 分区(如尚未展开)。
Integration Settings 中的 Aux Bus Assignment Map
- 单击 Insert Decay Key 按钮。
- 将值设为 0.4,并单击 Insert。
在 Insert Decay Key 中键入 0.4
- 单击 Insert Decay Key 按钮。
- 将值设为 0.5,并单击 Insert。
- 在 0.4 的 Decay 键值旁,选择 "SmallRoom" Aux Bus。
- 在 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。
- 打开 Wwise 工程。
- 通过依次单击 Layouts > Designer 或按下 F5 来打开 Designer 布局。
- 在 Project Explorer 中,单击 Game Syncs 选项卡。
打开 Game Syncs 选项卡
- 添加三个新的 Game Parameter,并分别命名为 Decay、Predelay 和 HFDamping。
- 按照如下所述来设置三个新 Game Parameter 的 Min、Max 和 Default 值:
-
Decay – Min:0;Max:10;Default:0
-
Predelay – Min:0;Max:1;Default:0
-
HFDamping – Min:-1;Max:1;Default:0
在 Wwise 工程中添加三个新的 RTPC
- 在 Project Explorer 中,单击 Audio 选项卡。
- 在 Master-Mixer Hierarchy 下,双击 SmallRoom。
- 这时将在 Property Editor 中打开 "SmallRoom" Aux Bus。
- 在 Property Editor 中单击 Effects 选项卡。
打开 'SmallRoom' Aux Bus 所对应的 Effects 选项卡
- 单击 Edit 按钮来打开 "WwiseRoomVerb" Effect。
- 在 Effect Editor 中,单击 RTPC 选项卡。
- 在 RTPC 列表中添加 Decay Time、Predelay 和 HF Damping 条目。
- 按照如下所述来映射各项参数:
-
Decay Time:Decay
-
Pre delay:Predelay
-
HF Damping:HFDamping
- 选中 Decay 映射,并在曲线上添加控制点。
- 将控制点的 X 和 Y 值全部设为 0.2。
'Decay' RTPC 的映射
- 选中 HFDamping 映射,并在曲线上添加控制点。
- 将 X 值设为 0.0,并将 Y 值设为 1.0。
'HFDamping' RTPC 的映射
同时显示三个 RTPC 的映射
- 选中列表中的所有映射。
- 右键单击其中一个映射并选择 Copy。
- 在 Property Editor 中打开 "LargeRoom" Aux Bus。
打开 LargeRoom Wwise RoomVerb Effect 所对应的 Effect Editor
- 单击 Effects 选项卡。
- 单击 Edit 按钮来打开 "WwiseRoomVerb" Effect。
- 在 Effect Editor 中,单击 RTPC 选项卡。
- 右键单击空白 RTPC 列表并选择 Paste。
现在我们在 Wwise 中设置了三个 RTPC 来控制混响参数。下面我们返回 Unreal 工程,来将这三个 RTPC 用作全局混响 RTPC。
- 打开 Integration Settings。
- 展开 Reverb Assignment Map 分区(如尚未展开)。
- 展开 RTPCs 分区(如尚未展开)。
Integration Settings 中的全局混响 RTPC
- 将新的 RTPC 分别指派给对应的全局混响 RTPC。
将三个新的 RTPC 指派给全局混响 RTPC
接下来可远程连接到 Wwise,并进入 Play In Editor 模式。若在 Small Room 和 Large Room 中触发声音时察看 Wwise 中的 RTPC 曲线,便可看到这些混响参数的变化情况。
由游戏驱动 RTPC
将一条混响 Aux Bus 用于不同的 Room 类型
借助全局混响 RTPC,可将一个混响效果器用于整个关卡,并针对关卡中的不同 Room 来动态驱动相应的参数。
- 在 Wwise 工程中,创建新的 Aux Bus 并命名为 DynamicReverb。
- 使用 Default 效果器预设将 "Wwise RoomVerb" Effect 添加到此 Aux Bus。
创建新的 'DynamicReverb' Aux Bus 并为其添加 'Wwise RoomVerb' Effect
- 将 RTPC 映射从 "SmallRoom" Aux Bus 的混响效果器复制并粘贴到 "DynamicReverb" Aux Bus 的混响效果器。
- 在 Unreal 工程中,清除 Aux Bus Assignment Map 内的所有条目。
- 为此,可单击 Environment Decay Aux Bus Map 旁边的“删除”小图标。
- 将 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 内部。
- 在 Content Browser 中,转到 WwiseAssets/SpatialAudioDemo 文件夹。
- 右键单击 SpatialAudioDemoMeshMaterial 并选择 Duplicate。
复制 SpatialAudioDemoMeshMaterial
- 将新的 Material Instance 命名为 SpatialAudioDoubleSidedMaterial。
将新的 Material Instance 重命名为 SpatialAudioDoubleSidedMaterial
- 打开新的 Material Instance。
- 在 Material Property Overrides 下,启用 Two Sided。
- 保存 Material Instance。
现在示例 Material 已准备就绪,接下来便可创建自定义 Blueprint 类。
- 在 Content Browser 中,转到 Blueprints 文件夹。
- 在文件夹中右键单击并选择 Blueprint Class。
创建新的 Blueprint 类
- 选择将 Actor 作为 Parent Class。
- 将新的 Blueprint 命名为 BPRoom。
- 打开新的 BPRoom Blueprint 类。
- 在 Components 面板中,单击 Add Component 按钮。
在 Blueprint Editor 中使用 Add Component 按钮来添加组件
- 在搜索栏中键入 cube,然后选择 Cube 组件。
- 这时将创建一个 Static Mesh 组件并把 Cube Mesh 选作 Static Mesh。
- 在 Details 面板的 Materials 下,将 Element 0 设为 SpatialAudioDoubleSidedMaterial。
将 Cube 的 Material 设为 SpatialAudioDoubleSidedMaterial
- 在 Components 面板中,选中 Cube 组件。
- 单击 Add Component 按钮,并添加 Box Collision 组件。
- 选中 Box 组件。
- 单击 Add Component 按钮并添加 Ak Room 组件。
- 选中 Box 组件。
- 单击 Add Component 按钮并添加 Ak Late Reverb 组件。
- 选中 Box 组件。
- 单击 Add Component 按钮并添加 Ak Geometry 组件。
Blueprint 类中的组件层级结构应如下图所示:
设置 Cube、Box 和 Spatial Audio 组件
- 选中 AkGeometry 组件。
- 在 Details 面板的 Geometry 下,将 Mesh Type 设为 Simple Collision。
- 展开 Acoustic Properties Override 分区,并将 Acoustic Texture 设为 Concrete。
设置 AkGeometry 参数
- 在 Components 面板中,选中 Cube 组件。
- 单击 Add Component 按钮并添加 Point Light 组件。
- 这样在走进 Room 时便可看到其内部。
将 Point Light 添加到 Cube 组件
- 选中 Cube 组件。
- 在 Collision 下,将 Collision Preset 设为 No Collision。
- 选中 Box 组件。
- 在 Collision 下,将 Collision Preset 设为 No Collision。
- 这样便可穿过墙壁。
- 编译并保存 Blueprint。
- 在 Level Editor 中,从 Content Browser 拖入多个 BPRoom 实例。
- 将这些 Room 设为不同的大小。
在测试新的 Room Blueprint 前,我们需要添加声音以在变换 Room 时播放。
- 从 Content Browser 中的 Blueprints 文件夹打开 MyCharacter Blueprint。
Content Browser 中的 'MyCharacter' Blueprint
- 在 Components 面板中,选中 Capsule 组件。
- 单击 Add Component 按钮并添加 Ak 组件。
- 该组件将直接显示为 Ak。
- 将 Ak 组件的名称改为 SpatialSound。
- 选中 SpatialSound 组件。
- 在 Details 面板中,将 Ak Audio Event 设为 Play_SpatialSound。
将 Ak 组件添加到 'MyCharacter' Blueprint
- 打开 "MyCharacter" Blueprint 所对应的 Event Graph。
- 在 Event Graph 的右下方找到 Event BeginPlay 节点。
- 从最后一个 Set Switch 节点向外拖动,然后键入 post associated。
将 Set Switch 节点连接到 PostAssociatedAkEvent 节点
- 选中 Post Associated Ak Event (SpatialSound)。
设置逻辑以在 BeginPlay 时发送空间音效
接下来便可在关卡中放置一些 Room。
- 将多个 "BPRoom" Blueprint 实例拖到关卡中。
- 将这些 Room 设为不同的大小。
- 更改各个 Room 中 AkGeometry 组件上的 Acoustic Texture。
- 选择关卡中的 Room。
- 在 Details 面板中,选中 AkGeometry 组件。
- 更改 Acoustic Texture。
- 针对关卡中的所有 BPRoom 实例执行上述操作。
针对不同的 BPRoom Actor 实例更改 Acoustic Texture
接下来可远程连接到 Wwise,并进入 Play In Editor 模式。这时将立即触发空间音效。在走进不同的 Room 时,将为音效应用相应的混响参数。
HFDamping 计算和 Acoustic Texture
在估算 HFDamping 值时,AkLateReverbComponent
使用 AkGeometryComponent
来查询其所具有的 Acoustic Texture。在上一小节中,我们将 AkLateReverbComponent
和 AkGeometryComponent
绑定到了同一 UPrimitiveComponent
父对象。之前的 UPrimitiveComponent
父对象为 Box 组件。在采用此设置时,若 AkLateReverbComponent
具有同级 AkGeometryComponent
,则将自动使用该同级 AkGeometryComponent
来计算 HFDamping。不过,若 AkGeometryComponent
具有不同的父对象,则需使用 AssociateAkTextureSetComponent 函数来显式地将 AkGeometryComponent
与 AkLateReverbComponent
关联。本节将展示如何执行此设置。
- 打开 "BPRoom" Blueprint。
- 在 Components 面板中,将 AkGeometry 组件拖到 Cube 组件之上,然后松开鼠标按钮。
- 这时将把 AkGeometry 组件绑定到 Cube 组件而非 Box 组件。
- 选中 AkGeometry 组件。
- 在 Details 面板的 Geometry 下,将 Mesh Type 设为 Static Mesh。
- 使用加号按钮向 Acoustic Properties Override 添加条目。
在 Acoustic Properties Overrides 列表中添加 Material
- 将 Material 设为 SpatialAudioDoubleSidedMaterial。
- 单击 Material 旁边的下拉箭头,并将 Acoustic Texture 设为 Concrete。
设置 AkGeometry 参数
- 打开 Blueprint 所对应的 Event Graph。
- 单击 Even BeginPlay 节点,并从执行引脚向外拖动。
- 在搜索栏中键入 associate。
- 选中 Associate Ak Texture Set Component (AkLateReverb)。
- 将 AkGeometry 组件从 Components 面板拖到 Texture Set Component 之上,然后松开鼠标按钮。
设置 BeginPlay 函数
接下来可远程连接到 Wwise,并进入 Play In Editor 模式,来测试是否能正确更新 HFDamping 值。利用此设置,我们可以为 Static Mesh 设置多种 Material,同时绑定 AkGeometryComponent
并将这些 Material 映射到 Acoustic Texture。然后,将该 AkGeometryComponent
与 AkLateReverbComponent
绑定,以此让 Acoustic Texture 来驱动 HFDamping 值。