虚拟场景中的3D音频的分析与实现

摘要:本文从我国的虚拟场景中音频制作现状出发,分析了虚拟场景中的3D音频的产生因素及各种音效实现技术现状,最后介绍了Directx8.0技术并用DirectSound8实现3D声音播放的例子,通过使用Directx8.0其中的DirectSound8实现虚拟场景的3D音频效果,使声音听上去更为真实。

关键词:虚拟场景;3D音频;DirectX 8.0

引言:在虚拟现实的场景中,声音效果是必不可少的,没有其他任何元素能取代声音的作用和表现力,但目前国内虚拟场景中的音频制作现状令人担忧,在国内虚拟场景中的音频制作主要是游戏音频制作。国内的游戏音频制作是从单机时代开始的,那时有很多专业音乐制作人加入到游戏音频制作中,但随后的单机游戏泡沫破灭,很多音乐制作人离开了游戏业,客观上导致了国内的游戏音频制作一直处于非专业性的现状,这样国内的游戏音频制作采取“外包”形式来制作,这样游戏音乐与游戏内涵很难融合一个整体,所以虚拟场景中的音频制作是比较滞后的。本文讨论一下在虚拟场景中的音频的有关问题,以引起大家对虚拟场景的音频的关注。

一、3D音频产生因素的分析

虚拟现实系统要求计算机实时提供一个三维场景,使用户可以在其中自由的漫游,并能操纵虚拟世界中一些虚拟物体。随着虚拟现实技术的发展,用户对虚拟场景的操作不仅仅限于漫游,还要有3D音频效果,通过声音提示和模拟,以产生更高层次的真实感。在增强现实系统中,声音信息一方面可以为实时叠加到真实世界中的虚拟场景伴音,产生视觉和听觉的叠加效应,达到声像融合,另一方面可补充由于视野所限、视景未显示到的信息,使人可监控、识别来自任何方位的信息,不仅仅是视野内的方位信息。用户应该能够听到虚拟场景中从它所处的位置发出的声音,当虚拟场景发生位置改变时,用户应该能够听到声音随之发生的变化。这就是增强现实环境下的声音仿真所要达到的主要效果,利用数字信号处理技术和多媒体技术相结合,开发计算机实时音响系统,能产生逼真的三维声音效果,在虚拟场景中到底3D音频产生机制是什么和怎样解决7大致有以下几个方面需解决:

1 3D定位

现实中的声音传播是依靠声波作为媒介,人的耳朵就是声音的接收器,每个人的耳朵都有各自的特性,可以在不同情况下反映声音的真实情况。现实中的声音产生,如人的声音是通过声带,而计算机中是通过声卡和扬声器来完成的。虚拟场景中3D声音定位主要也是通过耳朵来分辨的。他的基本原理包括以下几个方面:

(1)、耳间时延量差。从声源发出的声音到人的两只耳朵的距离是不同的,因此人从不同的角度听到声音的时间是不同的,通过耳间时延可以毫不困难的能分辨不同的方位,以及所处的大概距离。

(2)、两耳音量差。从声源发出的声音到人的两只耳朵的距离是不同的,声音在传播的过程中遇到的障碍物也不同,声音的衰减情况也不同,因此从不同的角度两耳听到声音的大小是不同的,通过耳间声音的大小可以毫不困难的能分辨不同的方位,以及所处的大概距离。

(3)、消音。耳朵的外形和方向导致声音从后边到达比从前边到达的消音要稍多一些,另外,如果声音来自右(左)边在声音到达左(右)耳之前也会被头部消音

(4)、耳廓效应。

耳廓对不同方向到达的声音的音调和同步性引起了细微的变化。

在虚拟场景中,这些效应我们可以借助采用的HRTF(头部相关传输函数)算法的声卡芯片来实现,HRTF英文全写Head Related Transfer Function,就是在三维立体空间里,人耳监测和分辨出声音来源的方法。如果用户在声音的交汇点处,由于人的大脑只能分辨左右的区别,分辨不出前后方位产生的细微差别。解决的方法是在声音系统中,增加一个增强前后差别的办法,把前后方位变化产生的差异弥补回来,利用声音芯片进行处理,然后发送经过计算的环绕声音数据到新增的环绕扬声器。因此我们可以借助多扬声器配置来解决

2 音效的距离效果

现实中,发声源距离用户越远声音越小,越近声音越大,在虚拟场景中,最简单的设计方法,在远距离时降低音量级,必须确定出一个最小距离,当声音在该距离范围之内,距离越远用户所听到的声音级就按照距离的比例消减。所以在设定最远距离之前,声音会一直减弱,直至最后声音会因为距离太远而听不见,目前可以借助动态的3DEAXHFRolIoff和Macro Fx技术,动态的3DEAXHFRolloft技术应用程序接口进行模块化的高频率衰减,利用这种衰减机制扩展Di rectSound3D的模拟声效距离,与现实世界的声音类似;Macro FX技术比较适用于近声场,使音源在听众耳朵里听起来特别近,使用Macro Fx技术对周围声波进行精确模块化,并对数据的传输时使用高效率的算法。

3 音频的环境模拟

为了把音效完全融合到虚拟场景里面,给人亲临其境般的3D音效,必须计算环境和声源的交互作用。

(1)声波追踪技术

随着声音的传播,声波与环境具有相互干涉的作用。声源发射出的声波,具有以下几种不同的途径被人耳所感知:声波直接从声源传入人耳:声波经过某个界面的反射后被人耳感知;声波进入人耳之前,经过多次的界面之间的反射;在声源与人耳之间存在隔音设备或遮挡物体,其结果使人耳无法感知声源播放的声音。声波追踪算法根据声波在空间中的传输方式,从声源出发,发射声波并依据场景的三维几何属性进行描述,计算声波在空间中反射、折射等不同的传播途径与衰减程度,最终获得人耳所感知的各个方向的声音。经过声学设计的环境,使用声波跟踪算法能够过得逼真的混合三维音效,但是现在“声波追踪”技术的应用还相当有限,在硬件的支持方面也有不足,想得到真实的声音效果是比较困难的。

(2)声音的封闭效果

声音的封闭效果在目前的虚拟场景中有广泛的应用,最简单的是角色身处一个比较宽阔的山洞中时,封闭效果尤为明显,声音的封闭效果可以通过调低音量,模拟发出低音来实现,但低音量调过低,效果会有很大影响,因此更加实际的实现办法是使用低通过滤的方法。

(3)声音的障碍效果

是声源和人耳之间存在遮挡物,但声源和人耳在同一区间中,因此反射将被人耳感知,最为典型的例子是在角色和声源之间有一根柱子,虽然声音无法直接从柱子中穿透,但由于房间中的回声角色仍然听得到这个声音,但它和声音直接传递的效果是不同的。

(4)声音的排斥效果

声源和听众在不同的房间,但它们有直接的接触,直接的声音可以传到听众,但反射的声音会发生失真这种失真的具体情况,他依据音源和玩家之间的障碍物的材料厚度、形状和属性来决定。

(5)多重声音效果

利用多重声音效果,可以同时为游戏加入多种声

音效果,玩家可以同时接收到声音的封闭、障碍和排斥效果,也可以是虚拟场景增加声音失真以及环境的渐变效果。

上述音频都需要场景几何之间的声波传播计算。由于真正的三维几何声波传播计算耗费资源。因此虚拟场景中用于声音计算的几何通常非常简单,最简单的三维音效是立体声。

二、Directsound模拟3D音效

虚拟场景中声音效果开发如果应用了先进接口程序和API,那么整个开发将事半功倍。但遗憾的是现在可供选择的音频引擎并不多,应用最广泛的就是Di rectSound。利用Di rectSound能够提供用户对方位的判断、增加场景的沉紧感、暗示情节的发展。

1 DirectX 8.0简介

DirectX是微软公司开发的具有广泛用途的应用程序接口。它提供了一整套的多媒体接口方案。DirectX开发之初,是为了弥补Windows 3.1系统对图形、声音处理能力的不足,而今已发展成为对整个多媒体系统的各个方面都有决定性影响的接口。DirectX从推出到今天版本已经由1.0到9.0。它其实是一种接口标准。利用该标准开发出的游戏程序,并不关心硬件的,底层操作的细节问题,能对硬件的性能进行最大限度的控制和利用,从而实现游戏操作上的提速。

下面以Di rectX8,0组件为研究对象,以VB6,0为应用程序开发平台,介绍一下如何实现游戏的声音混合的技术。Di rectX8组件构成:Di rectX8对象包含有Di rectGraph-ics8(Direct3D+DirectDraw)、Directln-put8、Di rectPl ay8、Di rect Sound8、Di rectShow8、Di rect Setup8等多个组件。Di rect G raphics8包含Direct3D和Direct Draw两部分。Direct3D:是一个三维图形包,它提供一个高级的保留模式接口,这使得你能够实现一个完整的三维系统。它还包含一个低级的即时模式接口,使得应用程序获得对渲染管线的完全控制。Direct Draw负责二维图形的绘制。Directlnput8:为游戏杆、鼠标、键盘和游戏控制器等输入设备提供支持。DirectPlay8:提供调制解调器链接或网络来与应用程序相连的支持。DirectSound8:提供硬件和软件的声音混合与回放。DirectSetup8:为DirectX提供了一个简单的安装过程。它简化了更新显示和音频驱动程序的过程,并且确保没有硬件或软件冲突的存在。

2 利用DirectSound8进行声音播放的实现

利用DirectSound8结合VB来进行声音文件的播放,遵循以下的流程:

Step 1:加载DirectX8.0组件库到VB设计环境中。方法是:选择“工程”菜单下的“引用”,选DirectX 8 for Visual BasicType Library,单击”确定”按钮。如果用户找不到该项,说明系统没有安装DirectX8.0。可到微软的官方网站{http:///china/)去下载directX8.0的安装程序;

Step2:新建Di rectX对象实例。SetDx8=NewDirectX8.0:

Step3:从Dx8中创建出Di rect-Sound8对象。SetDx Sound=Dx8.DirectSoundCreate(””);

Step4:Di rectX8对其属下的Dj rect-Sound8组件做了如下规定,必须设置同应用程序进程的合作模式才可以进行声音的播放。在VB中,实现的代码如下:“Mound.SetCooperativeLevelforml.hWnd,DSSCLPRIORITY”,通过执行Set CooperativeLevel函数就实现了Direct8与名称为Form 1的窗体建立了合作关系,换句话说,Dx Sound用Form 1作为声音播放的载体。

Step5::填充DSBUFFERDESC结构。DsBUFFERDEsc结构作为接下来的步骤的函数的参数来调用,其作用是填写声音播放的具体模式。具体来说,DS-BuFFERDEsc结构的1Flag属性具有下列参数:DsBcAPS_CTRLFREQuENcY:表示声音的频率可以被改动;DsBcAPS_cTRLPAN:表示声音可以从左声道被移动到右声道;DsBcAPS_CTRLuOLuME:表示音量的大小可以被改动;DSBCAPS_STATIc:设置声音播放缓冲方式为静态缓冲。

Step6:在进行前面几步的准备后,接着就到了PIay工作了。然而,矛盾的是,Di rectsound8对象并没有提供Play方法。必须要用到Di rectsound8对象的create sound Buffer From Fi le、create sound—Buffer或create sound Buffer From Resource等方法来创建一个Directsoundsec-ondaryBuffer8对象。该对象是一个声音缓冲区对象,利用该对象的Play方法才能实现声音的播放。

根据本案例程序设计的安排,在利用DirectSound8进行创建声音缓冲区对象时,选择了create sound Buffer From File方法。该方法的含义是从外部声音文件中进行创建。利用类型为Directsoundsecondary—Buffer8的对象数组来混音,在变量声明处,定义了一个类型为DirectSoundSecondaryBuffer8的对象不定数组:DimDsB( )As Di rectsound—SecondaryBuffer8,利用DirectX8.0可以实现虚拟场景的3D音频效果,使声音听上去更为真实。

结束语

本文从我国的虚拟场景中音频设计现状出发,分析了虚拟场景中的产生3D音频的因素及对各种音频模拟实现技术的分析,最后介绍Directx8.0技术和用Directsound8进行声音播放的实现的例子。通过使用其中的Directsound8实现虚拟场景的3D音频效果,使声音听上去更为真实。

新闻:微捷码宣布推出28nm及28nm以下IP特征表征新标准SiliconSmart ACE

微捷码(Magma)日前宣布推出业界标准slliconSmart产品线新产品——下一代知识产权参数特征化及建模工具SiliconsmartACE。通过利用全新的加速电路引擎技术和内嵌的超快FineSimSPICE仿真器,全自动SiliconSmart ACE流程提供了较其它工具更精确的模型和更短的特征化周期,树立了28nm及28nm以下工艺节点设计IP特征化及建模新标准。

SiliconSmart AcE可自动处理简单标准单元及超复杂定制单元或宏单元的晶体管级网表静态结构分析;利用这项分析结果来建立完整的特征化约束,然后再利用经过芯片加工厂验证的高度精确,超快FineSim SPICE仿真器来提高时序、功耗、噪声以及基于统计学的静态时序分析(SSTA)模型生成的整体速度。SiliconSmart ACE不仅提供了较其它工具更快的特征化功能,而且它还支持所有业界标准模型格式并包括了这些模型验证流程,从而使得用户能在微捷码系统内无缝地启用第三方工具来验证所生成的模型。

微捷码的专有电路功能识别、仿真激励生成以及FineSimSPICE仿真技术是Siliconsmart AcE的核心,在微捷码特征化解决方案简化设置、增加特征化速度及改善模型签核质量方面起到了很好作用。

利用先进算法,SiliconSmart AcE可自动识别出标准单元和复杂电路的功能并进行建模,产生适用于所有时序的有效仿真激励集。通过去除耗时的手工分析,SlliconSmart ACE可显着缩短横跨广泛工艺点、供电电压、温度的复杂组件设置和特征化所需的时间。

siliconSmart AcE的智能化拓扑驱动式仿真激励生成(VG)技术提供了独特的基于结构的仿真激励优化和一款固有的仿真感应式约束加速算法。这些功能可去除仿真激励的冗余并避免不必要仿真,同时还可保持特征化的精度。

siliconSmart ACE支持所有商用SPICE仿真器,包括微捷码的Finesim SPICE。当结合FineSim sP JcE使用时,siliconSmart AcE经过优化的仿真激励生成功能可在完全无损精度的前提下,提供较之前siliconSmart生成快上一个数量级的速度。

推荐访问:音频 虚拟 景中 分析