51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2853|回复: 2
打印 上一主题 下一主题

被忽略的世界,现代游戏音频技术综述

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-8-14 11:50:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
 在游戏开发中,声音(Sound)的地位并不如图象那么重要。游戏开发者们会发费大部分的时间来增加3D图形的新功能和特效;但是,想要说服他们花更多的时间和金钱,来开发具有高质量音频效果的游戏可以说是非常的困难。同时,在硬件方面,玩家们也更乐意购买最新款式的3D图象加速卡,而对新的声卡似乎也并不是那么感冒。

  然而,随着显示卡的发展正在呈现出顶峰的状态,玩家对游戏也表现出越来越挑剔的姿态,认为优秀的游戏除了具有赏心阅目的图象和绚丽的特效外,音效也是不可缺少的,所以现在的形势似乎有急转的趋势 - 用户和开发者比以往任何时候都专著于音频系统的效果。在现代的游戏开发计划中,声音效果占据了40 %的预算,时间和人力。

  音效芯片制造商和3D音效的开发者们在竭力使用户和应用程序的开发者们相信:良好的3D音效将是现代多媒体电脑的主要组成部分。

  以前的音效是立体的,这是非常模糊的说法;在引如了3D Sound之后,我们全面进入了多通道音频效果的新纪元:4.1,5.1,和7.1通道。

  现在让我们走近3D音效,看它与多通道解决方案的雷同和区别。

3D 音效的概念

  3D 音效的概念是对听众周围3D空间的音源进行精确的定位。在虚拟游戏世界里,每个能够发出声音的物体都代表了1个音源。

  我们这里以Action发布的典型第一人称射击游戏"Vivisector:Beast Inside"(活体解剖者:人面兽心)为例深入浅出地解释本文中的问题。上面的图象里有观众和音源,其中有些音源是立体声的(例如背景音乐;在这个特别的游戏里,风和丛林的沙沙声都将是主要的环境(噪)声);怪物有8个音源;玩家的射击,脚步等作为1个音源;还有3个环境的音源(昆虫,小鸟等等)。

  为了在场景里获得更加逼真的音效,虚拟世界的3D 音效都被进行了深度的处理:模拟或者夸大现实世界的声音,这里使用到了各种各样的音频处理技术,例如:混响,反射,闭塞,阻碍物,远方传来的声音(音源与听众的距离).....等等。

  3D 音频技术:定位

  每个人能够感知到的声音都是不同的(这依赖于耳朵的形状,年龄和心理状态),因此在1项3D技术里关于不同的声卡或者处理效果不可能只有1个质量的选项。声音是否能够真实地再现,则主要依赖于声卡和扬声器,还有游戏中采用的音效处理引擎。

3D空间

  现在让我们看看3D 音效是如何产生的,我们首先要从2D Panning(定位) 开始讲起(目前这项技术仍然在ID Software 的Doom中被使用)。在这项技术中,每个单声道的音源都被当作立体声来运行,并且它们左-右声道的音量水平能够互相对调。这样虽然系统里没有垂直的定位,但它还是能够改变声音的效果(例如,进行高频的过滤),所以当声音从听众后面发出来的时候,他能够听到压抑的声音。

  现在硬件已经能够实现这种效果了。声卡能够使用HRTF(头部相关传输函数)技术在两个扬声器或者耳机中模拟音源的位置;通过过滤或者其它转换来模拟人类的听觉。

  HRTF(头部相关传输函数)- 使用两个耳朵决定音源在空间位置中传输的函数。在声音的传递过程中,我们的头和身体实际成了改变声音的障碍物,我们的耳朵藏在音源的后面,能够感知到声音信号的改变;接着声音信号会进入我们的脑子,并被解码来决定音源在空间中正确的位置。

HRTF(头部相关传输函数)

  在上图的你可以看到从左耳到右耳各有不同的3个HRTF(头部相关传输函数):音源定位,135度数和36度数。而这些数据的所有处理过程基本上都是一致的,通常的做法是在特殊的耳麦下使用特殊的方法把这些数据记录起来。Sensaura ,在平滑的法则下((例如,在2500 Hz的峰值,和5000 Hz的低谷下使用间隔)利用人工合成HRTF,而其它的公司通常都使用平均的HRTF。

  上面的HRTF系统由两个FIR 滤镜组成,而HRTF就是它们的传输函数。既然HRTF具有智能,那么我们储存容量巨大的HRTF似乎就显得浪费了,因为真实音源的定位能够通过HRTF插补来实现。
  逐渐没落的HRTF

  1、声音会发生严重的扭曲

  2、处理的进程非常慢

  3、如果音源是固定的,那么它们的位置将不能够精确地定位, 因为人的脑子需要移动的音源(音源的移动或者在听众脑海的移动)才能够知道音源在几何空间的精确定位。

  人们突然其来地向音源转过头去,这是常有的事情;而就在头转过去的一瞬间,脑海里就能够知道声音在空间的确切位置。在前后的HRTF函数之间,如果音源没有产生特殊的频率,那么脑海就会忽略这样的声音;相反,它会把这样的数据与记忆中的数据进行对比,并定位音源在空间中的位置。

  4. 耳机能够获得最理想的音频效果。耳机能够很好地解决把声音的信号从1个耳朵输送另外1个耳朵的问题。然而,大部分人并不是很喜欢耳机,即使是无线的型号。

  此外,玩家带上耳机之后,会使声音听起来更近一点,这个问题还有待解决。


最佳听音位置和串话干扰

  音响学的发展可以避免耳机出现的这些问题,然而新的难题又出现了:首先,不明确怎么使用扬声器生成立体声的声音。例如,在HRTF传输之后,怎么让声音信号的一部分在两个耳朵之间互相输送呢?当我们使用扬声器而不是耳机之后,两个耳朵就会获得相同的声音,这里解决该问题的办法就是串话干扰(crosstalk cancellation (CC))。

  在最佳听音位置(sweet spots)听众能够理想地听到所有的3D音频效果,而在其它的区域声音会发生失真。这样我们在倾听声音的时候就就需要选择正确的位置。对于一对音箱来说,有一个平衡、声带、细节、立体感最好的听音位置,称作Sweet Spot。录音和制作的时候始终在这一点对监听具有重要的意义。Sweet Spot通常位于一对立体声音箱中间,前方数英尺的地方。许多专家认为从高音头的上方到听音者的鼻尖构成一个虚幻的等边三角形,就是Sweet Spot的所在。因为受到许多客观条件的影响,这个位置可能有一些偏移,例如调音台面板的反射就会有影响,音箱的差异也会影响到Sweet Spot,一些音箱具有较宽大的最佳位置。准确的实际位置通常要经过连续的试听和调整来确定。Sweet Spot的范围越广阔,效果就越佳,这也是为什么开发者们在努力寻找能够扩展Sweet Spot覆盖范围的方法。


多扬声器的配置
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2008-8-14 11:51:50 | 只看该作者
 在多扬声器系统(4.1,5.1)里,声音从听众周围的扬声器里分布式的传出来;声音从不同的扬声器系统里传出来,听众就能够定位音源的所在了。 在规则来说,使用Panning就足够了,i.e.所有的扬声器同步地播放数个流(根据扬声器的数量),但是却在不同的音量水平 - 因此效果就产生了。例如,杜比数字(Dolby Digital)在5.1和7.1配置分别利用6和8个音频流。

  Sensaura MultiDrive, Creative(创新) CMSS(Creative 创新多音箱环绕)技术,能够使用4个或者更多的扬声器重现使用HRTF 函数的声音。

  Sensaura MultiDrive3D音效技术基本上都必须至少透过4声道以上喇叭来表现3D音效的定位临场感,而每一只喇叭所输出的音效内容都是不一样的。Creative 多音箱环绕(CMSS)技术可将任意的单声道或立体声音源处理为 360 度的音效。

  扬声器的每部分有前后两个半球。既然声场是基于HRTF函数,那么sweet spot允许听众每边的音源和前后轴的音源定位具有最佳的感知觉。随着覆盖角落的拓宽,Sweet Spot的空间也会变得足够大。

  没有串话干扰(crosstalk cancellation (CC)),音源的定位是不可能的。既然HRTF在MultiDrive技术上主要是用于4个以上的扬声器,那么在所有的4个扬声器上应用CC运算法则就显得非常必要了,但这需要音频处理芯片有非常强大的计算能力。

  在使用了HRTF之后,后置的扬声器也能够如前置的扬声器般获得精确的定位。前置的扬声器通常放在显示器的附近,重低音的单元则可以放在中心的地板上,而后置的扬声器可以放在听众喜欢的任何地方,但我相信没有人会把它放在身后吧。

  要记住,HRTF和CC用在4个扬声器系统的时候会需要非常强大的计算能力,所以厂家们想出了很多的应对方法。例如傲锐(Aureal,已经被创新给收购了)在后置扬声器上使用了Panning算法,因为对后置扬声器的定位并没有那么严格。

  NVIDIA在3D 音响上使用了Dolby Digital 5.1。在定位的时候,整个音频流会解码为AC-3格式,接着会以数字的格式输送到外部的解码器(例如,家庭影院)。

  最小/大 距离,空气效果,Macro FX(Min/Max Distance, Air Effects, Macro FX)

距离模式

  声音引擎的主要特点之一就是它的距离效果,音源的距离越远,声音就显得越安静。其中采取最简单的办法是在远距离的时候降低音量级;在声音开始淡出的时候,声音效果的设计师必须分配给它一个最少的距离。当声音在该距离范围之内,它仅改变方位;每当他穿越1米的距离,声音的强度将降低6 dB。在最远的距离之前,声音会一直减弱,而在最后声音会因为距离太远而听不见。在声音接近1个音量级的时候,引擎会把声音关掉以释放资源。最大的距离越远,听到声音的消逝也会越持久。 在大多数情况下,音量级是有对数相关性的。设计师能够鉴别较大的声音和安静的声音,音源也可以被区分为最小和最大的距离。例如,蚊子的声音在50cm之外就听不见了,而飞机引擎的声音在几公里之外还是能够清晰的听见。
  A3D EAX HF Rolloff

  A3D API 通过模块化高频率的衰减开扩展DirectSound3D的距离 - 与真实世界的相同,高频部分会依据相应的法则被大气吸收 - 每米大概0.05dB(选择的频率:默认为5000 Hz)。但在迷雾的天气,空因为气会更加厚,高频的衰减就会更加快。EAX3 允许处理低阶的模块化空气效果:这里分配了两个参考频率 - 低频和高频,它们的效果要依据环境的参数。

  MacroFX

  大部分HRTF的测量都是在远声场里执行的,这样能够简化计算,但如果音源是在1米之内(在附近的区域),HRTF将不能够充分地工作。这时候就出现了MacroFX,MacroFX 技术是用于重现接近区域发出的声音。MacroFX 算法适用于在接近区域的声音,而声音被定位为与听众似乎非常近,好象声音是从扬声器向听众传去,甚至穿透 他/她的耳朵。效果基于在听众周围所有空间声波传输的精确模块化,数据的传输使用了高效率的算法。

  该算法整合到了Sensaura引擎,并且在DirectSound3D 操控之下,i.e. 它对应用程序的开发者是透明的,能够利用它开发出大量新的特效。

  例如,在飞行模拟程序中,作为飞行员的听众能够听到空中交通控制员的对话,就像他戴了耳机一样。

  多普勒,大型音源效果(ZOOM FX),多听众(Doppler, Volumetric Sound Sources (ZOOM FX), Multiple Listeners)

  多普勒效应(Doppler effect):传输系统中因源与观察点间的有效传播距离,会随时间的改变,而引起观察到的波频率有所改变的现象。赛车或者飞行游戏将能够从Doppler effect 获益良多,而在射击中,它能够用在喧闹,激光或者等离子射击时候的声音效果,i.e.任何移动非常快的目标。

  大型音源效果

  大型音源(volumetric sources)效果让设计师们可以创造出大型的发声源,你可以这么想:一个人在跑步、或是一把小型武器开火的声音都算是非常小的声源;但如果是一群正在欢呼的人,一台巨大的发电机,或是一条往来频繁的高速道路,他们所发出的声音都是属与大范围的区域。更大和合成的音源与最佳音源相比能够获得更加逼真的效果。

  最佳音源能够很好地应用到宽大但是却在远方的物体,例如,移动的汽车。在现实生活中,当汽车接近的时候,听众的位置将不会再是最佳的音源位置。然而,DS3D模式的算法会认为它是最佳的音源,图画就没有那么逼真(i.e.它看起来像是1辆小的火车在接近而非是巨大的火车)。

  Aureal 首个在它的A3D API 3.0里应用到了大型音源;接着是Sensaura 在它的ZoomFX加入了对大型音源的支持。ZoomFX技术把几个音源定义为一块很大的对象(假设火车合成的音源能够由车轮,引擎,耦合的车厢等组成)。


多听众

  多听众(Multiple Listeners)是供游戏控制台(PlayStation 2,Xbox,GameCube)支持两个或更多玩家使用的新技术。例如在TV控制器的PS2游戏"GT赛车3"(Polyphony Digital Inc.)能够支持多个玩家,两个玩家都是在不同的电脑和游戏中的不同区域;因此,他们必须仅听到围绕在附近的声音。无疑,他们能够听到互相发出的声音,但这项技术简化了实现过程。不幸的是,目前还没有任何的硬件API支持多听众。这项技术也仅是使用在商业的声音API - FMOD中。等一下我们会说明它的细节。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2008-8-14 11:52:19 | 只看该作者
  3D 音响技术:声波追踪 VS 缠绕(wavetracing vs reverb)

多种音效技术

  在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)的过滤。


封闭

  在大部分情况下,1种类型的封闭(occlusion)就已经足够了 - 音源被定位为在看不见的障碍物后面。直接通路被遮挡住了,过滤的度数要依据几何的参数(厚度)和墙壁的制造材料。既然音源和和听众之间没有直接的接触,音源的回波也根据同样的原则被压抑了。


障碍

  Creative的API开发者使用了更加可行的概念,使用意味着直接通路被包住的障碍物 - 和听众没有直接的接触,但源和听众是在相同的房间内;接着,反射会以相同的形式传输到听众的耳里。


排斥

  使用得最多的是排斥。源和听众在不同的房间,但他们有直接的接触,直接的声音可以传到听众,但反射的声音会发生失真(依据材料的厚度,形状和属性)。

  总之,无论效果怎么的真实(使用Aureal A3D,Creative Labs EAX 或者手动选择你自己的音擎),都必须跟踪几何(完全或者部分声音)以找出是否与音源有直接的接触。这对性能有莫大的关联,这也是为什么在大多数情况下要为声音搭建最简单的几何空间(为了能够获得更加逼真的效果,特别是射击,3D RPG或者其它类似的游戏)。幸运的是,该类型的几何通常要经过处理,以找出碰撞 - 为了不在玩家的房间内跟踪整个路径。这就是为什么我们能够使用相同的几何结构来表现出更多的声音细节。

  环境渐变(Environments morphing)


环境渐变

  Creative Lab的另外一个解决办法是在2001年发布的EAX3。这是一个环境到另外一个环境的逐步转换参数的算法。上面的图片论证了两个效果的实现。

  首先进行的是位置转换:混响(reverb)参数会根据玩家在两个环境位置的绝对不同参数而逐渐地改变(在该情况下,户外的空间和户内的空间隔着金属的墙)。随着玩家与户外的更加临近,户外的回响参数就能够工作得更加有效率,反之亦然。

  接下来的类型是极限变化:当玩家穿越边界(BORDER)=1的区域,参数会自动地进行改变。
  环境渐变是与回响相关的最重要函数。但是目前在对已经预先设置的参数进行修改的时候会有点问题。即使没有使用到逐渐过渡,你也能够通过设置渐变因素等于0.5而使用这些函数形成一定的平均环境(例如,我们在户外的石头走廊),这样我们就能够得到不同声场的平均效果。

  在环境渐变被开发出来之前,游戏(例如游戏"食肉动物2"/Caivores 2)的效果并不能够通过使用不同的参数进行逐渐地(它们在EAX1和EAX2已经预先设定好了)改变。中间的环境有25个预先设定的变量组成。例如,有岩洞渐变到山谷的设定;而在听的过程中会选择石走廊作为中间的参数。现在有了环境渐变,你就可以避免很多纷繁复杂的处理工作了。
来源17173:http://news.17173.com/content/2005-4-10/n116_32433.html
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-16 04:28 , Processed in 0.072183 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表