图9:多种音效技术
在1997-1998年,每个芯片制造商都加大力度开发它们认为有前途的音频技术。Aureal,当时业界的领先者,将赌注放在极限真实的游戏上,它采用的技术为"声波追踪"(Wavetracing)。Creative 则认为使用缠绕的预前运算会更有更好的效果,于是它便开发了EAX。Creative 在1997年收购了Ensoniq / EMU:专门研究开发和制造音效芯片的公司 - 这也是为什么它在当时拥有缠绕技术的原因。Sensaura 出现在市场的时候,它使用了EAX作为基础,命名为EnvironmentFX版本的技术实际上就是:MultiDrive, ZoomFX 和MacroFX。NVIDIA是最迟进入该领域的厂家 - 它为3D 声音的定位实现了唯一的真实的Dolby Digital 5.1解码。
声波追踪 (Wavetracing)
为了把音效完全融合到游戏里面,必须要计算出声环境和它与音源的交互作用。随着声音的传播,声波与环境具有干涉的作用。声波能够以几种不同的途径传输到听众的耳朵:
-
直接通道(direct path)
-
1st 次序反射(1st order reflection)
-
2nd 次序或者晚期反射(2nd order or late reflection)
-
封闭(occlusion)
Aureal 的声波追踪算法通过分析3D空间的几何描述,然后决定声波在实时模式传输的方法,接着它们会被反射,抑或通过3D环境的无源物体。
几何引擎在A3D的接口程序来说是非常独特的机制,它能够模块化声音的反射和穿越障碍物。它从几何的水平上来处理数据:线,三角形和四边形(声频几何)。
声频多边形有它自己的位置,大小,形状和制造材料的属性。它的形状位置与音源紧密相关,听众能够感觉到每个独立的声音是被反射、穿越或者围绕着多边形。材料的属性则能够决定传输的声音声是被整个吸收或者被反射了。
图象几何结构的数据库能够通过转换器,在游戏水平被装载的时候把所有的图形多边转换为声频多边形。 全局反射或者封闭的值可以通过设置参数进行修改。另外,它还可以在高级模式处理多边型转换算法,和以独立的卡文件形式把音频几何数据库给储存起来,然后在游戏装载的时候进行文件的交换。
最后,声音就能够获得更加正式的效果:混合的3D声音,经过声学设计的房间和环境,声音信号能够在听众的耳朵里精确再现。Aureal实现的环境模式并不是太理想,即使是Creative 最新版本的EAX也是如此。
无论如何“声波追踪”技术所分配的用于计算反射的硬件流是非常有限的。这就是为什么说获得真实的声音效果还有很长的路要走。例如,目前它对迟反射的处理能力不足,就更不要说图形化声音的处理了。另外,声波追踪技术不够敏捷;并且实现的时候需要巨大的资源开支。这也是为什么你不能够对EAX技术的纹理渲染置之不理了。3D图形目前还没有使用到基于光线追踪方法来实现实时的渲染。
封闭
现在让我们来研究封闭效果。在原理上来说,它可以通过调低音量来实现,但更加实际的实现办法是使用低通过(low-pass)的过滤。
图11:封闭
在大部分情况下,1种类型的封闭(occlusion)就已经足够了 - 音源被定位为在看不见的障碍物后面。直接通路被遮挡住了,过滤的度数要依据几何的参数(厚度)和墙壁的制造材料。既然音源和和听众之间没有直接的接触,音源的回波也根据同样的原则被压抑了。
图12:障碍
Creative的API开发者使用了更加可行的概念,使用意味着直接通路被包住的障碍物 - 和听众没有直接的接触,但源和听众是在相同的房间内;接着,反射会以相同的形式传输到听众的耳里。
图12:排斥
使用得最多的是排斥。源和听众在不同的房间,但他们有直接的接触,直接的声音可以传到听众,但反射的声音会发生失真(依据材料的厚度,形状和属性)。
总之,无论效果怎么的真实(使用Aureal A3D,Creative Labs EAX 或者手动选择你自己的音擎),都必须跟踪几何(完全或者部分声音)以找出是否与音源有直接的接触。这对性能有莫大的关联,这也是为什么在大多数情况下要为声音搭建最简单的几何空间(为了能够获得更加逼真的效果,特别是射击,3D RPG或者其它类似的游戏)。幸运的是,该类型的几何通常要经过处理,以找出碰撞 - 为了不在玩家的房间内跟踪整个路径。这就是为什么我们能够使用相同的几何结构来表现出更多的声音细节。
环境渐变(Environments morphing)
Creative Lab的另外一个解决办法是在2001年发布的EAX3。这是一个环境到另外一个环境的逐步转换参数的算法。上面的图片论证了两个效果的实现。
-
首先进行的是位置转换:混响(reverb)参数会根据玩家在两个环境位置的绝对不同参数而逐渐地改变(在该情况下,户外的空间和户内的空间隔着金属的墙)。随着玩家与户外的更加临近,户外的回响参数就能够工作得更加有效率,反之亦然。
-
接下来的类型是极限变化:当玩家穿越边界(BORDER)=1的区域,参数会自动地进行改变。
环境渐变是与回响相关的最重要函数。但是目前在对已经预先设置的参数进行修改的时候会有点问题。即使没有使用到逐渐过渡,你也能够通过设置渐变因素等于0.5而使用这些函数形成一定的平均环境(例如,我们在户外的石头走廊),这样我们就能够得到不同声场的平均效果。
在环境渐变被开发出来之前,游戏(例如游戏"食肉动物2"/Carnivores 2)的效果并不能够通过使用不同的参数进行逐渐地(它们在EAX1和EAX2已经预先设定好了)改变。中间的环境有25个预先设定的变量组成。例如,有岩洞渐变到山谷的设定;而在听的过程中会选择石走廊作为中间的参数。现在有了环境渐变,你就可以避免很多纷繁复杂的处理工作了。