版本
menu

Wwise SDK 2021.1.14
Room 和 Portal 信号模型中的传播路径

以下章节阐述了 Spatial Audio 如何影响 Voice Graph 中的信号流以及声音传播模型在这当中所起的作用。

藉此,可深入了解 Spatial Audio 如何影响 Voice Graph 以及声音传播模型在这当中所起的作用。这些章节将基于声音传播模型来对信号流加以阐释。

路径和通路

在运行时,声部和总线与其他总线相连。对此,可参见 Wwise Profiler 的 Voice Graph 或 Voice Inspector 视图。在此,我们将 Wwise 对象之间的连线称为 Connection(通路)。每次与某一游戏对象(发声体或 Room)关联的声部或总线被连接到不同的游戏对象(另一 Room 或顶层听者),都会创建相应的发声体-听者对。在下文中,我们会将发声体-听者对称为 Path(路径),并使用其来计算衰减曲线。一条通路中可能包含零条、一条或多条路径。比如,在游戏使用 AK::SoundEngine::SetMultiplePositions 为游戏对象设置多个位置时,就会创建多条路径。Spatial Audio 对路径有广泛的应用。在下文中,我们将详细阐述各条通路中的路径。为此,我们构建了一个简单的场景。其中,发声体处在一个与听者相邻的 Room 内(参见以下信号图)。

Emitter-Listener (Direct) Connection

Emitter-Listener (Direct) Connection 携带发声体和听者之间的干声信号(未经混响)。Spatial Audio 会在发声体和听者之间创建第一条路径,以此表示从发声体直接传到听者的声波。因此,其长度就是两者之间的距离。发声体的衰减曲线将依据该距离进行取值。另外,在发声体和听者处在不同 Room 时,除非两者之间存在直接视线,否则将向该路径额外应用声笼系数(取两个 Room 的透射损失当中的最大值)我们将此类路径称为直达路径或透射路径(取决于透射损失是否为零)。

在两个 Room 之间存在打开的 Portal 时,其他声波可以衍射的形式传到听者所在位置。我们将此类路径称为衍射路径。该声波会在 Portal 的边缘发生弯曲。因此,其总长度要长于透射路径。这种情况下没有透射损失,不过有衍射(与弯曲角度成正比)。两个 Room 之间有多少个打开的 Portal,就有多少条衍射路径。

以下 Voice Inspector 截图显示 Direct Connection 当中存在三条路径:其中一条用于表示透射,另外两条用于表示两个打开的 Portal 产生的衍射。

下表对 Direct Connection 当中的路径进行了说明。

路径类型(数量) 特性
透射/直达 (1)
  • Distance:从发声体到听者的直线距离
  • Transmission Loss:Room 透射损失和遮蔽几何构造透射损失当中的最大值
  • Spread:发声体的散布(基于声音的衰减或游戏对象的半径 –参见 游戏对象的 Spread 值 章节)
衍射 (N)
  • Distance:衍射路径的长度
  • Diffraction:Portal 衍射加上几何构造边缘上的衍射
  • Spread:发声体的散布(基于声音的衰减或游戏对象的半径 – 参见 游戏对象的 Spread 值 章节),由 Portal 的开口进一步限定
备注: 即便基于这些路径的波前传到了更远的距离,并因而到达基于透射路径的听者之外的其他听者,也不会向衍射路径应用任何延迟。

所有这些路径都包含在同一通路之内。我们可以将其视为并行声音传播路径。对于在 Master Audio Bus 中混音的 Markers_Test 信号,将针对每条路径分别应用声像摆位和衰减。不过,其最终将由单个滤波器实施滤波。该滤波器的截止频率基于各条路径当中由透射驱动和衍射驱动的滤波器值以及其各自的重要性。

备注: 严格来说,多条路径并行存在并不违反能量守恒法则。基于这一法则,Spatial Audio 不会试图将路径的音量归一化。不过,它会利用声音引擎的 Multi-Direction 声像摆位算法,来实现类似于音量归一化的结果。

Emitter-Room Connection

Emitter-Room Connection
Room-Listener Connection

从发声体到 Room 总线的辅助通路代表在 Room 中产生混响并形成漫反射场的声源所注入的能量。

对于与此通路关联的路径,距离为零且无透射损失或衍射。也就是说,模型会依据从 Room 内的声源到墙壁的平均距离来对距离衰减作出假设。至于之后从墙壁到墙壁的距离,则完全由 Room 总线上混响效果器的冲激响应来予以表示。同时,它还假定 Room 内的几何构造并不会严重阻碍墙壁所反射的声音。

Room-Listener Connection

Room 总线和听者之间的通路代表 Room 的漫反射能量。该能量由混响效果器加以模拟,并最终传达给听者。它会通过 Room 的墙壁和相应的 Portal 传到听者所在位置。跟 Direct Connection 类似,此通路仅包含一条透射路径。另外,对于听者可看到的每个 Portal,还会有一条衍射路径。透射路径基于 Room 的透射损失应用衰减,其 Spread 依据 Room 的预估边界进行计算(参见 设置 Room 几何构造 章节)。衍射路径则假定漫反射能量沿垂直于 Portal 开口的轨迹从 Room 内传出。也就是说,会依据 Portal 的法向矢量计算衍射角。同时,基于听者相对于 Portal 边界的位置计算衍射路径的 Spread。

备注: 模型并不考虑 Room 以外的几何构造后续产生的阻挡作用。这种几何构造产生的影响被认为可以忽略不计。

这些路径的长度决定其距离衰减。对此,我们将在下节中予以说明。

湿声信号基于距离的衰减

对于前面章节中所述路径的长度(用以表示漫反射能量从 Room 到听者的传播),我们无法进行确切的定义。模型会依据从 Room 内的声源到墙壁的距离来对声音的衰减作出假设。至于之后从墙壁到墙壁的距离,则完全由混响效果器本身决定。因此,比较合理的做法是将路径的原点大致设在 Room 的中间。不过,倘若 Room 漫反射能量的距离衰减取决于原始声源是离听者较近还是较远,应当可以获得更为精确的结果,尤其是在 Room 较大的情况下。

相较于现实中的物理机制,在 Wwise 中会使用自定义曲线来模拟声音随距离的衰减。要想准确地计算从 Room 到听者所在位置的距离衰减,Room 必须使用发声体的衰减曲线。那么,问题来了。Room 中可能有多个发声体,每个发声体都有自己的位置,且各自均有对应的衰减曲线。一旦对 Room 内的所有声音实施下混并通过混响效果器加以输出,便无法根据各自的距离衰减来有选择性地调节其音量。

比较简单粗暴的解决办法是为此 Room 内的每个声音分别设置不同的总线和混响效果器。考虑到这样做的成本实在太高,Spatial Audio 改用了以下妙法:针对发声体和听者之间的整段距离实施估算和衰减,并将之应用于发声体和紧邻 Room 总线之间的通路。也就是,在下混和混响之前应用衰减。从数学上来说,相当于为每个声源配置一条总线和一个混响效果器,只要总线上的效果器是线性的就行。事实上,混响效果器一般都是如此。

再谈 Emitter-Room Connection 和 Room-Listener Connection

Room-Listener Connection 的距离衰减可转而应用于 Emitter-Room Connection。不过,Room-Listener Connection 中可能存在多条不同长度的传播路径。因此,Emitter-Room Connection 也需要有多条与之对应的路径。只不过其改为应用距离衰减,而 Room-Listener Connection 依然应用透射损失和衍射。

现在我们可以总结一下 Emitter-Room Connection 和 Room-Listener Connection 当中传播路径的特性。

下表对 Emitter-Room Connection 当中的路径进行了说明。

路径类型(数量) 特性
透射/直达 (1)
  • Distance:从发声体到听者的直线距离
  • Transmission Loss:0
  • Spread:0(不相干)
衍射 (N)
  • Distance:衍射路径的长度
  • Diffraction:0
  • Spread:0(不相干)

下表对 Room-Listener Connection 当中的路径进行了说明。

路径类型(数量) 特性
透射/直达 (1)
  • Distance:0(转到 Emitter-Room Connection)
  • Transmission Loss:Room 透射损失和遮蔽几何构造透射损失当中的最大值
  • Spread:基于 Room 的边界(参见 设置 Room 几何构造 章节)
衍射 (N)
  • Distance:0(转到 Emitter-Room Connection)
  • Diffraction:Portal 衍射加上几何构造边缘上的衍射
  • Spread:发声体的散布(基于声音的衰减或游戏对象的半径 – 参见 游戏对象的 Spread 值 章节),由 Portal 的开口进一步限定

下图显示了 Voice Inspector 中两条通路各自的路径。下半部分为 Emitter-Room Connection 当中的路径,其基于发声体的衰减 (Emitter_Attenuation_Rooms_Portals_Demo ShareSet) 计算距离衰减。上半部分为 Room-Listener Connection 当中的路径,其在 None 下应用透射损失和衍射(因为 Room 总线没有 Attenuation ShareSet)。

Room-Listener Connection
Emitter-Room Connection

Room 之间的耦合

Emitter 所在 Room 和 Listener 所在 Room 之间的通路代表从前者向后者传播并对后者的漫反射能量产生影响的漫反射能量。此类传播通过墙壁和打开的 Portal 实现。

在这种情况下,会针对由墙壁产生的透射和由 Portal 产生的衍射创建相应的路径。透射路径的透射损失等于两个 Room 的透射损失当中的最大值。衍射路径的衍射为 0,因为从 Portal 传出的声波无需在边缘附近弯曲就可对传入端 Room 产生激励作用。

备注: 若存在打开的 Portal,则其传播路径很可能会主导透射路径,并以最大音量实现两个 Room 的耦合。模型不会尝试依据打开的 Portal 与墙壁的面积比来调节能量的传播。对此,我们将在未来版本中加以改进。
备注: 模型假定传入端 Room 中的几何构造不会干扰传出端 Room 的能量传播。

这些传播路径也要应用距离衰减,但这种衰减其实已被考虑在内了。正如 湿声信号基于距离的衰减 章节所述,其被转到了 Emitter-Room Connection。

下表对从 Emitter 所在 Room 到 Listener 所在 Room 的通路当中的路径进行了说明。

路径类型(数量) 特性
透射/直达 (1)
  • Distance:0(转到 Emitter-Room Connection)
  • Transmission Loss:两个 Room 的透射损失当中的最大值
  • Spread:0(不相干)
衍射 (N)
  • Distance:0(转到 Emitter-Room Connection)
  • Diffraction:0
  • Spread:0(不相干)
技巧: 您可以使用设计工具中的 Game-Defined Auxiliary Sends Volume 来偏置耦合通路的音量。此音量将应用于所有相连 Room 的给定 Room 总线。

听者所在 Room 和听者之间的通路

此通路代表将听者包围其中的 Room 的漫反射能量。通路的输入端已应用距离衰减,所以此处不会再另外应用衰减。同时还将假定没有任何阻碍,因而其 Spread 接近于 100。


此页面对您是否有帮助?

需要技术支持?

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

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

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

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

开始 Wwise 之旅