【摘要】本文利用Directsound 3D技術(shù)研究虛擬聲音系統(tǒng),系統(tǒng)仿真程序設(shè)計(jì)及主要編程思想利用Visual C + +平臺(tái)開(kāi)發(fā)示例程序3D sound, 實(shí)現(xiàn)虛擬環(huán)境實(shí)現(xiàn)聲音效果。
【關(guān)鍵詞】3D;sound
虛擬現(xiàn)實(shí)技術(shù)是近年來(lái)十分活躍的研究領(lǐng)域之一,是一系列高新技術(shù)的匯集,這些技術(shù)包括計(jì)算機(jī)圖形學(xué)、多媒體技術(shù)、人工智能、人機(jī)接口技術(shù)、傳感器技術(shù)以及高度并行的實(shí)時(shí)計(jì)算技術(shù),還包括人的行為學(xué)研究等多項(xiàng)關(guān)鍵技術(shù)。虛擬現(xiàn)實(shí)技術(shù)在軍事、航天、醫(yī)學(xué)、教育、娛樂(lè)等領(lǐng)域具有廣泛的應(yīng)用價(jià)值。為了讓用戶(hù)產(chǎn)生更加強(qiáng)烈的沉浸感,在生成’-圖形的同時(shí),還可以提供逼真的’-聲音效果。作為虛擬現(xiàn)實(shí)系統(tǒng)中必須的部分,虛擬聲音系統(tǒng)的研究也受到了極大的重視。DirectSound 3D是微軟公司所推出的,它利用聲音大小的比例調(diào)整多卜勒效應(yīng),來(lái)達(dá)到以軟件來(lái)模擬3D音效的效果,創(chuàng)立了在三維空間定位音效文件的標(biāo)準(zhǔn)方式。任何應(yīng)用程序透過(guò)它和支持DirectSound 3D的聲卡,便可以獲得所需的效果。由于這是許多聲卡廠商與微軟共同制定的,現(xiàn)在大部分的聲卡都支持這項(xiàng)技術(shù)。本文利用Directsound 3D技術(shù)實(shí)現(xiàn)虛擬環(huán)境實(shí)現(xiàn)聲音效果。
1.仿真原理
Directsound 3D是通過(guò)軟件模擬來(lái)實(shí)現(xiàn)3D音效的,所以要先講一下Dsound 的3D模擬空間。這個(gè)空間類(lèi)似現(xiàn)實(shí)空間,可以用笛卡兒坐標(biāo)系來(lái)描述Dsound 的3D空間,有x,y,z三個(gè)坐標(biāo)軸坐標(biāo)軸。
在這個(gè)模擬空間中Dsound提供了模擬的聲源對(duì)象和傾聽(tīng)者對(duì)象(listener),聲源和聽(tīng)者的關(guān)系可以通過(guò)三個(gè)變量來(lái)描述:在三維空間的位置,以及運(yùn)動(dòng)的速度,以及運(yùn)動(dòng)方向。
位置即聲源和聽(tīng)者在三維空間的所在位置,隨著兩者的相對(duì)位置不同,則聽(tīng)者便會(huì)聽(tīng)到不同的聲音效果。
速度為聲源和聽(tīng)者在三維空間中的移動(dòng)速度,此項(xiàng)特性同樣會(huì)改變兩者在空間的坐標(biāo),以產(chǎn)生不同的聲音效果。
聲源和聽(tīng)者相對(duì)運(yùn)動(dòng)的方向也會(huì)影響聽(tīng)者聽(tīng)到的聲音效果,因?yàn)槁曇羰蔷哂蟹较蛐缘?。這個(gè)下面會(huì)談到。
知道了3D聲源以及3D環(huán)境中的聽(tīng)者,那么怎么產(chǎn)生3D音效呢?一般來(lái)說(shuō),在產(chǎn)生3D音效的時(shí)候,主要有下面的幾種情況,一是聲源不動(dòng),而聽(tīng)者在模擬的3D空間進(jìn)行運(yùn)動(dòng),二是聽(tīng)者不動(dòng),讓聲源在模擬的3D空間進(jìn)行運(yùn)動(dòng),三是聽(tīng)者和聲音同時(shí)在運(yùn)動(dòng)。如下圖1、2所示。
Directsound給我們提供了聽(tīng)者和聲源對(duì)象的接口,我們可以通過(guò)上面提到的三種方式設(shè)置改變聲源或者聽(tīng)者的位置,運(yùn)動(dòng)速度和方向就可以形成3D音效了在3D環(huán)境中,我們通IDirectSound3DBuffer8接口來(lái)表述聲源,這個(gè)接口只有創(chuàng)建時(shí)設(shè)置DSBCAPS_CTRL3D標(biāo)志的Directsound buffer才支持這個(gè)接口,這個(gè)接口提供的一些函數(shù)用來(lái)設(shè)置和獲取聲源的一些屬性。在一個(gè)虛擬的3D環(huán)境中,我們可以通過(guò)主緩沖區(qū)來(lái)獲取IDirectSound3DListener8接口,通過(guò)這個(gè)接口我們可以控制著聲學(xué)環(huán)境中的多數(shù)參數(shù),比如多普勒變換的數(shù)量,音量衰減的比率。
2.設(shè)計(jì)方案
3.仿真結(jié)果
根據(jù)上述介紹的方法, 采用D irectSound維聲音程序初始界面具, 在V isual C+ + 6.0 中實(shí)現(xiàn)了程序的具體實(shí)現(xiàn)。通過(guò)下拉菜單可以測(cè)試三維聲音在不同角度的效果。這樣就可以利用D irectSound 技術(shù), 通過(guò)VC6. 0 編程對(duì)三維聲音進(jìn)行了實(shí)時(shí)仿真, 程序較好地實(shí)現(xiàn)了聲音的三維效果。
參考文獻(xiàn)
[1]B radley Bargen,Peter Donnelly Inside D irectX[M].北京:北京希望電子出版社,1999.
[2]何正偉,楊宏軍,花傳杰.實(shí)時(shí)三維聲音仿真系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用研究,2002,19(1):23225.
[3]劉衛(wèi)宏,陳培.V isual C++編程基礎(chǔ)[M].北京:北京希望電子出版社,2003.
[4]李鶴文,張文新.V isual C++多媒體開(kāi)發(fā)指南[M].北京:科學(xué)出版社,1996.