Wwise 中针对 Spatial Audio 所作的改进 – 第 2 部分:衍射

空间音频

Wwise 中针对 Spatial Audio 所作的改进 – 第 1 部分:距离建模和早期反射

声音以波的形式传播,并遵循波的行为特性,例如衍射便是其一。也就是说,声波在障碍物墙角附近或穿过开口之后会发生弯曲[14]衍射的大小取决于声音的波长及障碍物的尺寸。若障碍物的尺寸远小于波长,声音传播基本不受障碍物影响。相反,如果障碍物很大,在其后面可能会无法听到声音。这还导致低频声波在墙角附近的散布角度要大于高频声波。正因如此,从隔壁房间听到的说话声才总会有些闷[15]

unnamed (2)
1 - 声波在障碍物边缘附近因衍射作用而发生弯曲。

在探究声音设计师为何以及如何从实践角度运用衍射之前,我们有必要进一步阐释到底什么是衍射

声音传播模拟中基于波的方法与基于射线的方法

在我们前同事伯诺瓦·阿拉里 (Benoit Alary) 的博文中他对衍射做了阐释并介绍了如何采用基于射线方法法 (ray-based) 和基于波的方法法 (wave-based) 模拟声音传播以及两者之间的区别 [16]。简单来说,基于波的方法通常更为精确,其可自然地模拟声波的所有复杂行为。不过,在采用基于波的方法模拟声音传播时,往往需要知道给定位置和时间的声压,这样做对应着大量的 CPU 与内存消耗。与之不同,在采用基于射线方法模拟声音传播时,会使用射线来表示最终抵达听者的波前上的单个点,因而计算起来要轻松很多。虽然经典的射线模型通过投射射线并让其在表面上反射来对反射现象进行建模,但其往往会忽略诸如衍射这样的声波特性 [17]

我们可以检验基于波的方法的模型对声音传播的模拟,并通过对比来了解传统的基于射线方法的模型的不足。伯诺瓦在他的博文中采用基于波的方法对声音传播进行建模时引用了布莱恩·汉密尔顿 (Brian Hamilton) 生成的模拟动画 [18]。下面是据此截取的一帧静图。在该图中,橙色 X 标记位置发生了扰动,由此产生的波前开始向外传播,直至左侧遇到墙壁发生反射并传播到墙角另一端。这时,我们会看到墙角处出现了一个模糊的圆形波前。这就是衍射的结果

 

scrshot1_secondsource

2 - 依据 [18] 中引用的声波模拟动画截取的静图。橙色 X 标记代表发声体所在位置,波形外缘对应直达声的波前,内侧半缘对应来自于墙壁的反射,红色圆圈对应墙角位置的衍射。

基于射线衍射

虽然上面的例子中并没有专门进行模拟,但其实可基于传统的射线法构建显式衍射模型。这些模型有许多类。(对于感兴趣的读者,上面提到的Savioja等人的概述对它们进行了广泛的调查。)针对电子游戏,青格斯 (Tsingos) 2001 年结合均匀衍射几何理论 (UTD) 提出了用于模拟声音传播的射线模型 [19]UTD对光和电磁波的衍射进行建模,并预测光线在撞击边缘后的振幅和相位。它考虑到了楔形、入射光线角度和频率等因素。当然,跟所有模型一样,它依赖于若干假设。例如边缘应当无限长。但这在现实中是不可能的,在边缘较短时,模型的精度就不再那么精确了。

pasted image 0

3 - UTD的参数,由[19]Tsingos提出:声源 E 在楔形顶端发生衍射,UTD 预测其在听者位置 L 的振幅和相位。最终结果取决于入射距离 ρ、入射角度 αi、衍射距离 r、衍射角度 αd 和楔形外角 nπ

UTD 根据给定的楔形和发声体位置定义了三个区域:阴影区、可视区和反射区。下图在以上所用动画静图的基础上进行了标示。其中,橙色 X 标记代表声源所在位置。

pasted image 0 (1)

4 - 衍射区域。橙色 X 标记代表声源所在位置。在阴影区中,发声体在听者视线以外;在反射区中,发声体在听者视线以内,并且存在由楔形附近表面导致的镜面反射;在可视区中,发声体在听者视线以内,但不存在所述镜面反射。黄色圆圈标示了可视区中的衍射。

衍射应用实例

在障碍物后面听到声音直达路径的阴影区衍射

那么,我们为何要花费宝贵的 CPU 资源来计算衍射射线呢?最主要的目的是要解决直达路径的阴影区衍射问题。在采用传统的射线法时,阴影区中无法听到声音。青格斯表示“衍射对正确诠释声学环境来说很重要,尤其是在发声体和听者之间的直达路径被遮蔽的情况下”[19]。在现实生活中,正是因为存在衍射我们才能听到来自墙角后面的声音。与没有声音相比,这种效果显然更加合理。游戏可以通过各种方式来解决这一问题。通常,会运用基于射线投射的统计方法,同时相应地驱动声障相关的系数。

滚降的早期反射可视区衍射

可视区的衍射要比阴影区微弱很多,因为发声体本来就在听者视线之内。发声体直接产生的波前要比边缘衍射形成的波前响亮得多。由于这个原因,一些使用基于射线的方法的声学引擎甚至不屑于对可视区的衍射进行建模。

不过,对这种衍射进行建模还是有一定实际用处的。不妨回顾一下图 4。在可视区中,如果没有衍射,听众只能听到直达声。然而,正如黄色圆圈所强调的,你可以清楚地看到,由于衍射,反射波的波前延伸到了可视区。事实上,镜面反射区和无反射区之间的过渡还是有间隙的,并且可利用可视区的衍射来在此处两区域之间进行平滑滚降。从射线的角度来看,可视区衍射可以用 "衍射的反射射线 "来表示,如图5所示。

pasted image 0 (2)

5-基于射线的可视区衍射表示:W 相邻表面的反射射线从反射区-可视区边界扩散到可视区中。角度 α 可用于控制反射区和可视区之间的平滑过渡。

反射区衍射

反射区中也会出现衍射,但其会与直达声和镜面反射发生竞争,导致它甚至比可视区衍射还要微弱。它固然会产生一些干涉图样 ,但未足以对渲染的真实感有明显贡献。

所有这些现象的建模都有代价,而且很明显其回报会越来越少。另外,在本系列博文第 1 部分中,我们提到了设计师在应用距离衰减时的主观性。由此引发出一个重要的、开放的问题——在实际建模时,我们需要达到怎样的精确度呢?

Wwise 中的衍射

我们看到,即便像距离衰减这样非常明了的声学现象,也常常需要由设计师运用映射到音量和滤波器的各种曲线来重新诠释,方可获得所需的美学效果并确保声音和画面协调一致。我们决定对衍射采取同样的“创作者授权逻辑”。我们的目标是为声音设计者提供工具,使他们能够处理声障或有限的几何体,并让他们自己来定义声音会如何在边缘滚降。最终,我们选择了让 Wwise Spatial Audio 驱动抽象的衍射系数,而不是浪费 CPU 处理资源来计算复杂的 UTD 公式(因为本来就不怎么精确)。

目前,此系数直接通过射线与阴影区边界的夹角计算并用于阴影区衍射。也就是说,这当中忽略了入射角度、楔形外角和边缘长度等因素。

pasted image 0 (3)

6 - Wwise 中所用的衍射系数。直达路径的阴影区衍射角度从阴影区边界取值,可视区衍射(即反射的衍射)角度从反射区边界取值。

示例:利用声障模拟直达路径的阴影区衍射

您可以用 Wwise Spatial Audio 替代游戏驱动的声障系统来让其计算相应几何构造边缘附近的衍射路径。为此可针对所需声音勾选 Enable Diffraction 复选框。由此计算得出的衍射系数可用于驱动声障或 Diffraction 内置游戏参数进而映射到音量和滤波器曲线。

pasted image 0 (4)(a)

pasted image 0 (5)
(b)

pasted image 0 (6)
(c)

pasted image 0 (7)
(d)

7 - Wwise 中设置直达路径的阴影区衍射。(a) Positioning 选项卡内选中 Enable Diffraction(b) 在必要时,利用 Diffraction 来驱动整个工程的 Obstruction 曲线(默认初始化设置)。(c) Game Object 3D Viewer:两个衍射边缘的衍射系数分别为 ~34% 17%(未显示)。总体衍射系数为级联边缘的衍射系数之和 (~51.8%)。黄色 Emitter 对应游戏设定的实际发声体位置,因而与声音穿过障碍物的透射相关。紫色 Emitter 代表入射衍射射线的原点。(d) Voice Inspector 显示了由 Obstruction 驱动的 Bus Volume LPFObstruction 本身由 Diffraction 驱动。

示例:小巷尽头的可视区衍射

设想一下有个被墙壁包围的小巷。只要听者走出小巷,便不会再有来自其所发出声音的镜面反射。这可能会导致混响能量急剧下降,若只模拟了一阶反射,会表现得比现实中更加明显。这是因为在早期反射很少时,我们往往会夸大其音量,就像本系列博文第 1 部分中所做的那样。如上所述,我们可以利用可视区衍射来填补这类盲区,并允许在对应高与低反射密度的区域之间进行平滑过渡:你需要在 Wwise Reflect 中,编辑由衍射驱动的音量和滤波器曲线。

unnamed
(a)

pasted image 0 (8)
(b)

pasted image 0 (9)
(c)

pasted image 0 (10)
(d)

8 - (a) Game Object 3D Viewer 中显示小巷中间发出声音的听者。(b) Wwise Reflect 中实时显示对应的镜像声源。(c) 小巷尽头发出声音的听者右侧墙壁上衍射的反射抵达听者时带有 24.5% 的衍射。(d) Wwise Reflect 中的镜像声源叠加在由衍射驱动的曲线之上对衍射的反射进行额外的低通滤波处理。

衍射与其他现象

高阶反射

除衍射之外,还可通过启用高阶反射来填补盲区。一阶反射无法抵达听者,二阶和高阶反射或许能。各位不妨试试看哪种方式在声音品质和 CPU 成本方面最为适合。

pasted image 0 (11)

pasted image 0 (12)

pasted image 0 (13)

9 - 除衍射之外,还可利用高阶反射来实现小巷内外之间的平滑过渡。仔细看看在听者离开小巷时可见射线数量如何逐渐减少。

散射

在现实当中,上面例子中位于小巷尽头的听者还会听到反射声。因为墙壁表面不可能无限光滑,所以波的反射并不是完全镜面的。在采用基于射线的方法时,可通过散射来对此进行建模。散射是材料的一种属性,与其表面的粗糙度有关。它决定了产生的漫反射和镜面反射能量之间的比率(见图 10)。材料表面越粗糙,漫反射能量越多。Wwise Spatial Audio 目前尚未构建散射模型,所以设计师通常会夸大衍射的作用。

 

pasted image 0 (14)

10 - 散射:定义入射射线产生的漫反射(随机方向)和镜面反射之间的比率。

几何构造的影响

我们刚刚了解了如何利用各种声学模型来创造平滑过渡或填补盲区,或者对没有建模的现象加以补偿。但是,您通过自由映射声学参数(如衍射到体积和滤波)获得的所有灵活性都有一个限度。就拿凸曲面来说。在计算机中,它们总是被近似为众多片状的平坦表面。因此,会存在没有镜面反射的盲区。我们可以利用衍射来填补这些盲区。不过,对于给定曲面,最终结果会因所含三角形数量而略有不同。

再来举个例子。设想一下自己站在墙壁前面,墙上装有书柜或挂着书画和其他装饰品。所有细小的边缘都应该会产生衍射射线。现在想象一下,这些细节被缩小到只是看起来像表面的材料不是完全光滑。正如之前所述,我们通常会利用散射来对这种情况进行建模:从统计学上讲,由于墙壁微观部分的相对朝向,最终会生成很多条漫反射射线。直观地说,散射可能可以被视为发生在微观层面的衍射的宏观表象。

不过,在微观层面对衍射进行建模不大可能获得令人满意的散射效果,至少在 Wwise 中是这样,原因有二:

1. 即使是最高级别的游戏几何细节,也不可能做到忠实反映现实中的所有细小瑕疵,然而就是这些东西赋予了声音真实感。

2. 衍射模型被大大简化了,其效果可以自由解释。

相反,我们建议你在整个游戏中保持声音传播的几何形状在细节上的一致性,并使其合理简单。倘若发现镜面反射听起来不自然,然后想把它们弄得模糊一点,不妨改用 DSP 方式,来以较低的成本获得更好的效果。例如,尝试用Wwise Reflect串联一个滤波器,然后想出你自己的秘方! 

请继续关注本系列博文第 3 部分,来了解后期混响和 Wwise Spatial Audio 的未来开发。

参考文献、注释和延伸阅读

[14] Diffraction2020 7 27 日访问。https://en.wikipedia.org/wiki/Diffraction
[15] Deines E.Acoustic Simulation and Visualization AlgorithmsTU Kaiserslautern 论文第 14 页。2008 4 月。https://www.semanticscholar.org/paper/Acoustic-simulation-and-visualization-algorithms-Deines/b6c19b81f190198ba7bf0f4babae6c3217cb5d71
[16]  "Auralizing soundscapes through virtual acoustics." https://blog.audiokinetic.com/zh/auralizing-soundscapes-through-virtual-acoustics/.
[17] Savioja L. Svensson P.2015 年。Overview of geometrical room acoustic modeling techniques。《The Journal of the Acoustical Society of America》第 138(2) 期。第 708-730 页。https://research.aalto.fi/files/6761044/Overview_of_geometrical.pdf
[18] 参见 https://blog.audiokinetic.com/fr/auralizing-soundscapes-through-virtual-acoustics/ 中的“基于行波的声音传播建模”来查看完整的 GIF 动图。Roomerical 现在云端运行这些基于行波的房间声学模拟。2020 7 27 日访问。https://www.roomerical.com/
[19] Tsingos N.Funkhouser T.Ngan A. Carlbom I.2001 8 月。Modeling acoustics in virtual environments using the uniform theory of diffraction摘自第 28 届计算机图形与互动技术年会论文集(第 545-552 页)。https://www.researchgate.net/publication/2397824_Modeling_Acoustics_in_Virtual_Environments_Using_the_Uniform_Theory_of_Diffraction

路易斯-扎维尔·布法尼 (Louis-Xavier Buffoni)

研发总监

Audiokinetic

路易斯-扎维尔·布法尼 (Louis-Xavier Buffoni)

研发总监

Audiokinetic

路易斯-扎维尔·布法尼 (Louis-Xavier Buffoni) 现任 Audiokinetic 研发总监,主攻空间音频、声音合成、音频编程和机器学习。

 @xbuffoni

评论

留下回复

您的电子邮件地址将不会被公布。

更多文章

《NieR: Automata》的空间声学设计以及如何借助 Wwise 实现对多种游戏玩法的支持 – 第 1 部分

《NieR: Automata》是一款动作冒险类角色扮演游戏...

18.3.2019 - 作者:PlatinumGames Inc.

《使命召唤手游》的空间音频探索

当我们提起“空间音频”的时候,我们在聊什么?

15.6.2020 - 作者:腾讯天美工作室群

音频对象如何提高空间精度

这一系列博客文章源自2020年10月在GameSoundCon上发表的演讲。演讲目的是为创作者提供通过使用基于对象的音频渲染技术来完善他们新项目的视角和工具。而该技术能够实现尽可能自然的空间音频体验。...

25.5.2021 - 作者:西蒙.阿什比(Simon Ashby)

Impacter 与 Unreal | 利用游戏物理控制 Impacter 插件

简介 Impacter 是最近针对 Wwise 开发的一款撞击建模插件原型(详可参阅这篇博文)。在本文中,我将介绍如何使用 Impacter 来实现声音并整合到采用 Unreal Engine...

14.9.2021 - 作者:肖恩·索拉汉(SEAN SORAGHAN)

Wwise Spatial Audio 2023.1 新增功能 | 对 Aux Send 模型进行的完善

如果各位了解过 Wwise 2023.1 的新增功能,可能会注意到文档中有这么一句话:“对 Aux Send 模型进行的完善”。这个到底是什么意思呢?今天我们就来详细说说。在此,我会简要介绍对...

14.12.2023 - 作者:内森 哈里斯(NATHAN HARRIS)

《Scars Above》中的 Wwise Spatial Audio 实现流程

这篇文章是关于什么的?何为 Spatial Audio API?Spatial Audio API 工作流程Room 和 Portal素材组织和命名规范命名规范Wwise 对象组织Unreal...

12.6.2024 - 作者:Milan Antić

更多文章

《NieR: Automata》的空间声学设计以及如何借助 Wwise 实现对多种游戏玩法的支持 – 第 1 部分

《NieR: Automata》是一款动作冒险类角色扮演游戏...

《使命召唤手游》的空间音频探索

当我们提起“空间音频”的时候,我们在聊什么?

音频对象如何提高空间精度

这一系列博客文章源自2020年10月在GameSoundCon上发表的演讲。演讲目的是为创作者提供通过使用基于对象的音频渲染技术来完善他们新项目的视角和工具。而该技术能够实现尽可能自然的空间音频体验。...