眼明,耳也聪——小议游戏的3D音效技术
技术空间
前言:以前,对于一款游戏,厂商、玩家都将目光集中在3D图形特效之上,似乎将游戏音效遗忘了。但随着电脑硬件的发展,玩家对游戏也越来越挑剔,在欣赏逼真的三维游戏显示效果同时,还需要三维的声音来体现和增强身临其境的感觉。因此,众多3D音效技术越来越成为我们关注的对象。
一、游戏中3D音效定位技术——HRTF算法
现实生活中,音源的位置是不断变化的,要表现这样复杂的音源运动,立体声就无能为力了。于是,人们最先开发了Dolby多声道技术来实现这一点。但是当时由于种种原因,Dolby多声道技术无法做到大规模普及。为此,3D音频开发者们推出了名为HRTF的技术,用普通双声道立体声模拟3D音效。
HRTF的英文全称为“Head Related Transfer Function”,即“头部相关传输函数”。它的原理是使用特殊的麦克风记录下耳道内部不同位置接收到的声波,然后将这些数据汇总,建立一个复杂的数学模型,这样我们就可以通过模型模拟出3D音效。不过要明白HRTF定位原理,首先必须明白人脑是如何利用耳朵来判断音源的位置。
大家都知道,当声音被外耳察觉时会通过耳道传递到耳膜,在这个时候,鼓膜背部会转换机械能量为生物和电能量,然后通过神经系统传送到大脑。大脑听觉神经元都记录有曾听过的任何声音数据,这些神经元具有快速分辨不同声波内容的能力,同时,由于两耳之间存在一定的距离,因此两个耳朵对不同方向的声音的反应存在一定延迟。

比如音源在左边的话,这时声波会首先到达左耳,经过一定延迟后声音才会到达右耳,而如果音源从我们正前方传来,那么声波会同时到达双耳。人耳对声音感知上的差异我们称为“Interaural Time Difference”(简称为ITD,两侧时间延迟差),人脑神经也正是通过ITD来分辨不同方位的声音。同时在声音的传递过程中如果声音被物体挡住,声音音量会有所衰减,两个耳朵听到的声音大小也会有所不同。想象一下,如果声音从我们的左方传来,那么我们的左耳觉察到的声音保留了原始声音,而我们的右耳察觉到的声音的音量会减小,因为我们的头吸收了一部分音量。这样所造成的听觉差异称为“Interaural Amplitude Difference”(两侧幅度差,简称为IAD),理论上我们可以对人耳听到的从360°的空间中任意一点传来的振幅进行测量,将其相对关系描绘为IAD数据库。不过ITD和IAD只能帮助大脑分辨音源的方向,而不能描述音源从正前方和正后方传来的区别。按照频率分析的观点,当不同的音源从不同的角度传来,它们肯定会在鼓膜上产生不同频率的振动。正是因为耳郭的存在,造成从前面和从后面传来的声音在鼓膜上的振动频率截然不同,这样我们就能分清音源是从正前方,还是从正后方传来了。
二、用HRTF模拟3D音效
正是根据人听觉的原理,开发者将ITD、IAD和耳郭振动频率这三个元素作为HRTF库的主要参数,并利用人头模型在回声环境下的三维空间内从不同位置测量、录制20Hz到20kHz波段的不同类型声波,而录制完成后的不同类型声波就是HRTF原始数据。然后厂商通过数学公式精确计算出HRTF参数——这个过程就是将ITD、IAD和耳郭振动频率数据编成一个数据库。这时我们只需通过HRTF合成仿真电路,就可以利用两个音箱或耳机实现虚拟的3D音频效应。比如可以感受从前方/后方,上方/下方或者是三维空间内任意方位传来的声音。不过,这种虚拟的3D音频定位存在一个缺点,那就是“耳不能专用”——即在使用两个音箱时,双耳会明显地听到从两个音箱发出来的声音,而且如果聆听者来回走动,干扰会变得更严重(即串音干扰)。针对这个问题,开发者发现可以同时发送已计算好的抵消信号到聆听者的耳朵来抵消串音干扰,这有点像通过反制措施将多余的声音消灭掉——这样的措施就叫串音抵消。

不过,串音抵消存在一定局限性,比如聆听者必须坐在和两音箱呈三角形——Sweet spots位置,同时聆听者不能随意转动脑袋,否则ITD会变得不够精确。此外,音箱的摆放必须和聆听者耳朵相同的高度,不能在聆听者近前或者近后有反射材料,比如隔板和墙等等,否则反射的声波会干扰大脑的方位辨别能力。针对这个问题,后来厂商们通过增加一对环绕音箱来解决:让前置音箱处理前置的数据,让环绕音箱处理环绕的数据,这样声音从不同的音箱系统里传出来,听众就能够定位音源的所在了。
HRTF 3D音效定位算法已经得到数以千计的游戏支持,但是HRTF不是一个完美的解决方案——不能精确定位是它的最大缺点,即使是引入了环绕音箱。正因为如此,不同厂家在基于HRTF算法的基础上推出了各具特色的3D音效技术如A3D。不过,创新放弃了传统的3D音效定位方式,推出全新EAX将3D音效提升到更高水准。
三、创新的环境音效——EAX
EAX(Environmental Audio Extensions)的中文名称叫做环境音效扩展,它是创新在Direct Sound 3D基础上加以扩展后提出的3D音效技术。这种技术最大的特点不是3D定位的准确性,其音效的3D定位实际上是由DirectSound3D来完成的。它更多地是强调三维环境声效的真实性和临场性,非常注重环境对于三维声音的影响。因为在不同的环境下,同一种声音给人带来的感觉是不同的,比如在山洞里的说话声和在广场上的说话声给人的感觉是完全不同的。
与传统的3D音效定位技术不同,EAX使用 X, Y, Z 坐标以及混响和反射信号来确定空间信息的方式建立音频效果,这些坐标作为用于传输音源和效果以勾画音频场景的基本框架,若使用超过两个音箱,从而扩展其音频范围,就能创建更为逼真的音频效果,使体验更加强烈和逼真。EAX通过支持多音箱提高听音质量,同时这样处理还可以实现串音抵消的效果,从而让游戏中的声音犹如真正出自不同的音源。它也能产生声学特性,让人感觉声音在不同的空间如房间、会议厅、洞穴等中传播。不过,至少我们必须获得距离、空间大小和混响等辅助信息才能重现“真实”的音响效果。毕竟用户需要的不只是 3D 定位音效,因为人耳听到的不仅仅是各声音的来源,它也能从许多音频信息中判断音源的距离等特性。
不过与其它3D音效定位技术相比,EAX的最大优势还在于可以实时处理3D混响。虽然不少3D音效技术都支持混响效果,但过去大家只重视3D音效的定位,而忽视实时运算,比如每个声卡都可以提供3D混响效果,但音效却显得有些呆板。其实要真正实现实时混响效果并不简单,有诸如各种反射、空间材质、空间大小等等一大堆东西要考虑,除了要求声卡处理能力强外,还要求有好的算法。所以此前许多声卡可以设置混响,但往往只能在MIDI上简单实现,没有几个能真正应用于实时变化的游戏当中。比如,在游戏中,我们击毁了一辆坦克,前方就会飞来一架飞机;若是炸毁了一个堡垒,飞机就会从后面飞过来,这时MIDI效果就不可能完成准确的定位了,只有通过实时运算才能让大家打游戏时有身临其境的感觉,而EAX能实现这样的运算处理。
早期版本的EAX1.0只有简单的几条函数而已,只能进行简单的混响处理,在声音的定位方面并不十分精准,在高度对抗的第一人称游戏中,用户很难用脚步声来判断敌人的方位,运动物体左右移动声音轨迹明显,而前后移动则轨迹要模糊得多。后来在增强原有的3D定位指令基础上,EAX2.0有效地提高了2声道的音箱和耳机的3D定位效果,增加了声场中Z轴方向的定位支持,也就是说当游戏中的物体上下移动时我们可以凭借声音来判断轨迹了。而EAX3.0又加强了定位反射束、远距离回声的反射等一批非常有用的指令函数,并引入了一个环境到另外一个环境的逐步转换参数的算法:混响参数会根据玩家在两个环境位置的绝对不同参数而逐渐地改变——两个不同环境位置之间存在一个临界混响参数,当玩家从一个环境渐渐向另一个环境过渡时,临近的环境混响参数利用率会更高,而当玩家穿越不同边界临定的区域时,参数会自动地进行改变。而在此前游戏中不同的混响参数是在EAX1.0和EAX2.0中已经预先设定好,在游戏中只能实现不同声场的平均效果。可以说,EAX3.0的逐步转换参数的算法让混响处理更具实时性。
四、EAX4.0的特色技术
值得一提的是,在为游戏开发的EAX ADVANCED HD 3D环绕音效规格中,创新在EAX3.0基础上引入了环境位移、复合环境等功能,可以在实时状态下实现复杂环境无缝过渡和多种音效的即时合成和渲染。而在最新的EAX ADVANCED HD 4.0版本(简称EAX4.0)中,增加了工作室质量效果、多效果插槽以及多环境和区域效果等几个全新的特性。
其中利用多效果插槽功能,可以让游戏开发者很容易地将多个环境效果同时插入到一个场景中,这样玩家能够同时听到几个环境的声音,或者增加逼真的环境渐变效果。在EAX4.0中,每个音源和聆听者都有自己的环境;从音源传过来的声音在它自己和听众的环境中扩散;封闭、障碍和排斥效果同时在音源和聆听者上得以应用。因此我们能够获得环境和听众之间声音的互相干扰作用。而多环境和区域效果则将3D音频技术提升到新的水准——绝对真实模拟现实中的环境效果。在现实生活场景中,我们所听到的声音不仅受到周围环境的影响,而且还要受到“实时”环境的影响。因为音源所处的环境不相同,所以聆听者听到的声音受到环境的影响也不同。比如大街上的汽车轰鸣声和你身旁电脑传出的音乐应该具有不同的混响效果,这些在以前EAX版本中是很难表现出来的,而利用多环境,游戏开发者可以很方便地在游戏中营造出更接近现实的混响效果。目前许多游戏如《古墓丽影·黑暗天使》(特别音效版)和《彩虹六号3》都支持这些规格。

可以说,EAX 超越了传统的3D 定位音效,可以在游戏中营造出更接近真实世界的音响效果。不过EAX最具意义的是采用函数指令,可以像Intel的ESS指令集一样,只需将几条函数指令加入到硬件设计中就可以实现强大的功效。同时由于是DirectSound3D的扩展,EAX的调用方式基本上和DirectX相一致,对于用惯了DirectX编程的人来说,简直就是小菜一碟,一个典型应用的实现只需要不多的代码。这也正是越来越多的开发商采用EAX的最大原因,反正花的功夫并不多,又能在游戏的特性列表和卖点上大加一条,何乐而不为呢?
结语:
3D音频技术发展到今天,已经达到了一个很高的高度。但随着创新相继收购A3D、Sensaura 3D,形成了创新一家独大的垄断局面,也造成了这一领域技术的发展相对其它硬件技术的发展要慢不少。虽然游戏的3D音效技术绝不会因为终于达到了令人可以接受的效果,就满足地停下了发展的脚步,如今问题的关键在于创新准备如何将手中的所有技术融合到EAX中,重新唤起业界对3D音效的狂热与痴迷……