随着 2019.2 的发布,我们对 Spatial Audio 做了很多改进。比如,我们参考光照技术提升了射线投射引擎的性能。对此,我们团队的克里斯托弗·托尼里 (Christophe Tornieri) 在 2019 年秋天举办的 AES NY 研讨会 [1] 上做了简要展示。藉此,可更加灵活地设定三角形数量、发声体个数和反射阶数。除此之外,还在 Wwise 中优化了 Spatial Audio 的集成。这样程序员和设计师设置起来更加方便,因而可将更多精力放在有创意的事情上。另外,我们团队的塔丽·凯克里基安 (Thalie Keklikian) [2] 在 WWWOE 上对此进行了展示。有兴趣的话不妨回看一下直播录像。
在发布之前,Audiokinetic 的 Spatial Audio Research 团队与产品总监西蒙·阿什比 (Simon Ashby) 进行了交流,探讨了其在使用新增功能对 Wwise Audio Lab 进行重新混音时的心得体会。对此,他满怀激动地表示:“它向用户呈现了一个独特的世界,一个真正充满生机和活力的世界。借助改进后的 Spatial Audio,可大幅增强游戏的沉浸体验。”在谈到相应工作流程时,他还说“我只是事先设定混音规则,具体如何执行由系统决定。”
之后,我们认真思考了 Spatial Audio 的构建以及声音设计和物理精度之间存在的矛盾。Wwise Spatial Audio 构建得确实非常精妙,也给予了声音设计师很大的操作空间。但是,声音传播遵循不变的物理法则。所以,为何还要费心让用户来调控呢?直接让系统自动实现不就行了吗?在本系列博文中,我会试着以应用实例的形式向各位展示我们当初在决定如何构建 Wwise Spatial Audio 时作出的一些思考。
距离建模
为了让游戏音频听起来自然逼真,设计师有时会刻意偏离物理法则。其中一个常见的例子就是距离建模。诚然,每款游戏声音引擎都会依据距离来调节声音。但是,所有声音都存在衰减,这一点是毫无二致的。比如,点声源的衰减遵循平方反比定律(即振幅与 1/r 成正比,或者换个说法——距离每增加一倍,振幅会降低 6 dB),因为能量在向外辐射时散布的范围会越来越大 [3]。距离越远,能量散布的作用越小。这时,因空气吸收而导致的衰减会占据主导 [4]。
不过,设计师一般会针对不同声音应用不同的曲线,而这些曲线从物理学上来说往往是不精确的。事实上,距离衰减是一种重要的声音设计手段。下面,我们来说说其中的一些缘由。
玩法设计
玩法设计比物理精度更加重要。比如,对白的衰减曲线通常比较平缓,确保从远处听来一样清晰可辨。
有限的动态范围
避开动态范围方面的限制。现实世界中的声音有非常大的动态范围 (0 ~ 190 dB SPL),而虚拟世界的音频只能通过扬声器或耳机来加以呈现。为此,设计师很可能会依据声音是否响亮对距离衰减曲线进行不同的设定。
(a)
(b)
图 1 - 响亮声音的距离衰减曲线。从理论上来说,曲线 (a) 更为精确。但设计师最终可能会选用像 (b) 那样的曲线,来将非常响亮的部分“挤压”到适当的动态范围内,以便在玩家所用声音系统中加以渲染。
游戏世界比例
3D 世界只是在画面上实施了优化,其听觉效果尚需进行专门的处理。比如,在 Wwise Audio Lab [5] 中,看似普通的客厅其实有 12 米深。空间跨度相当地大。为此,玩家的行走和奔跑速度分别被设为了 7.5 m/s 和 18 m/s。这跟现实中是不一样的。
图 2 - 从几何构造的坐标来看,Wwise Audio Lab 中的这个客厅有 12 米深。
录制的声音
录制的声音会包含部分其原本的环境特性。在制作声音时,我们会让它听起来像真实听到的那样,或者至少像希望听到的那样。不过,有时很难将确切的物理过程与声音传播和周围环境孤立开来。众所周知,声音内所含的混响量是距离感知当中的一个重要因数,它是以直达与混响声能比 (direct-to-reverberant ratio, DRR) 来度量的 [6]。事实上,听者在远离声源时,更多的是通过反射波而非直达波来感知声源。如果各位曾经去过消声室,会发现在里面一些典型的声音特征消失了。
我们很少有机会导入在消声室中录制的声音,而游戏系统通常会依据环境添加混响效果。这会对用于直达声或干湿比(对应于信号流的 DRR)的距离衰减曲线产生影响。
另一个与距离衰减相关的问题:为什么大家经常会在距离模型中应用高通滤波呢?从混音的角度来讲,在发送到混响效果器的信号越来越多时,去除低频部分可以避免使混音变得拖泥带水 [7]。不过,声学教科书中并没有对低频会随距离发生能量损耗有所提及[8]。
对于我们在游戏中运用距离衰减的方式,不知各位有没有什么其他想法?有的话欢迎告诉我们!
存在如此大的差别,那么面对更为复杂微妙的声学现象,要如何做到物理上是精确的呢?
早期反射
我们在前面章节中已经谈到了这个话题。在波前由发声体向外扩散并最终遇到障碍物时,其部分能量会被材料吸收(也就是说,其会穿过材料继续传播),而另一部分能量则会被反射。反射声相对于直达声在抵达时间上的延迟及其抵达方向可为听者提供很多有关环境形态的信息。最初的几次反射称为“早期反射”。它们在环境感知当中起着至关重要的作用,并且会对沉浸感和出头感产生很大的影响 [9]。
在 Wwise Spatial Audio 的驱动下,Wwise Reflect 插件 [10 & 11] 会对这些早期反射进行建模。照西蒙的话说,其可“通过反映房间特性来即时反馈有关所在位置和方位的详细信息”。对于 Wwise Reflect,我们的目标是以比完全由几何构造驱动混响更低的计算成本来呈现早期反射的互动感和沉浸感。
早期反射会因距离和空气与材料之间接触面上的能量损耗而产生衰减。声音设计师如何以及为何会通过一些手段提升反射建模的精度是一个非常有趣的话题。
(a)
(b)
图 3 - Wwise Reflect 借助 Wwise Spatial Audio 计算得出的数据对早期反射进行渲染。(a) Game Object 3D Viewer 中显示由 Wwise Spatial Audio 计算得出的早期反射路径;(b) Wwise Reflect 用户界面中实时显示对应的镜像声源。
早期反射声的距离衰减
距离衰减是自定义的,道理与直达声相同。对此,Wwise Reflect 专门提供有一套曲线。首先,总线上应用的插件很难探知音频源的 Attenuation ShareSet,而且其可能具有多个采用不同自定义距离衰减的音频源。所以问题或许比想象的更复杂。不过,凭借 Wwise 2019.2 中所作的改进,只需稍加变通便可解决这个问题。另外,设计师有时可能希望其与直达声有所不同。
然而我们并不清楚为什么音频创作者经常觉得有必要使得早期反射的距离衰减与他们创作的干声的距离衰减不同,反之依然。我猜想,在某些情况下,DRR(Direct-to-Reverberant Ratio)可能与此有关。有一项研究[12]表明,最初的几次反射在距离感知当中起着主导作用,但Wwise Reflect产生的信号肯定对DRR的 "混响侧 "也有所贡献。不过,Wwise Reflect 不会受传统的“距离驱动的发送电平”及 Auxiliary Bus的影响。原因是这样的简化模型并不适用于 Wwise Reflect——在使用Reflect时,每个反射声都有自己的距离。因此,声音设计者在设计早期反射的行为时,多少需要主动考虑如何弥补全局DRR的不足,因为他们设计的早期反射是伴有距离的。例如,当靠近声源时,设计者往往让反射比他们应该的更安静,以强调接近的感觉。相反,当远离声源时,设计者会让反射更明显,以便传达一些距离感。我认为,这种夸张的做法可以达到事半功倍的效果。事实上,由于理想的几何形状和性能的限制间的冲突存在调和上的困难,Wwise Reflect渲染的早期反射的数量要比现实小得多。无论如何,简化Wwise Reflect的距离模型是一个开放的问题,首先要做的是了解它与干声的距离模型有什么区别。因此,我们非常想知道是什么促使你做出设计决定的!
墙壁吸收
另一个可以实现事半功倍的例子是墙壁吸收。各个频段的吸收比率在日常材料相关文献中很容易查到。它们的吸收比率其实相当低(或者说,这些材料具有很强的反射性)。话虽如此,房间中的声波会在墙壁上反射好几百次,每次都会因为材料吸收而损失一点能量。所以,在某个频段内每次降低几个分贝可能会对混响的总计衰减时间和房间中感知到的音色产生很大影响。
与之相比,Wwise Spatial Audio 最多只会针对每条声波路径模拟四次反射;在 2019.2 之前,想模拟两次都很难;在 Wwise 中,材料吸收是通过 Acoustic Texture 来模拟的。利用 Acoustic Texture,设计师可设置比实际材料更大的吸收系数以突出环境的声学属性,从而确保将墙壁材料的特性真正融入到所生成的音频中。
Materials |
Absorption coefficients by frequency (Hz) |
||
125 (~Low) |
500 (~Mid Low) |
2,000 (~Mid High) |
|
Painted concrete |
.10 |
.06 |
.09 |
Brick |
.03 |
.03 |
.05 |
Heavy curtains |
.15 |
.55 |
.70 |
图 4 - Factory Reflect Acoustic Textures 中 Curtains 和 Brick 材料的设定值与 Wikipedia 页面所述的实际值 [13]。注意,Wwise 中的系数采用的是百分比形式。其中,Concrete 比较接近。Brick 具有相似的频谱形态,但总的来说吸收性更强。至于 Curtains,则做了比较夸张的调整。
Reflection Send
Wwise 2019.2 中为声音新增了 Reflection Send 属性。这样方便针对给定声音选择所需的 Wwise Reflect ShareSet 或其他各种效果器,同时设定要为其馈送多少声音。不过为什么我们需要这样做呢?无论性质如何,实际声音都会按照相同的强度反射不是吗?试想一下,有时你可能希望让某些声音反射表现得更明显一些,以此来强化游戏的玩法或叙事(设想一下空荡走廊中的脚步声)。或者,有时你可能需要削弱某个声音的反射表现,因为其已经嵌入了很多混响。除此之外,你可能还希望通过更多的信号处理来调节声音的反射。无论怎样,我希望各位能借助我们系统的灵活性来充分发挥自己的创意。
图 5 - Wwise 设计工具中的 Early Reflection Send
在本系列的下一篇博文中,我们会继续探讨 Wwise 中针对 Spatial Audio 所作的改进,并介绍另一重要声学现象(衍射)的应用示例。
评论