




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于GPU的實(shí)時(shí)霧效模擬摘 要:霧效模擬在三維仿真領(lǐng)域中是一個(gè)重要的研究方向,在復(fù)雜的三維仿真系統(tǒng)中模擬霧效對(duì)系統(tǒng)的實(shí)時(shí)性和真實(shí)性都提出了較高的要求。在分析傳統(tǒng)霧效模擬方法的根底上,提出了一種基于GPU的實(shí)時(shí)霧效模擬方法。根本思想是建立一個(gè)表示霧隨高度漸變的指數(shù)函數(shù),然后根據(jù)提出的算法公式在GPU上實(shí)時(shí)計(jì)算出霧濃度,最后將所計(jì)算出的霧效因子與片元顏色進(jìn)展混合計(jì)算。實(shí)驗(yàn)證明,該方法可以實(shí)時(shí)生成真實(shí)感較強(qiáng)的霧效。關(guān)鍵詞:平流霧;霧密度;霧效因子;GPU;實(shí)時(shí)性中圖分類號(hào): TP391.9文獻(xiàn)標(biāo)志碼:AReal-time simulation of fog on GPUHU Gui-ju1, WU
2、Zhi-hong1,2, WANG Dan-xia11. College of Computer Science, Sichuan University, Chengdu Sichuan 610064, China;2. Key Laboratory of Fundamental Synthetic Vision Graphics and Image for National Defense, Sichuan University, Chengdu Sichuan 610064, China)Abstract:Fog simulation is an important research to
3、pic in the field of three-dimensional simulation. It puts forward high requirements on real-time performance as well as realistic rendering results for complex three-dimensional simulation system. By analyzing the traditional simulation methods of fog, the authors proposed a Graphic Processing Unit
4、(GPU)-based method to simulate the fog effect in real-time. The basic idea was to employ an exponential function to simulate the fade of fog with height. Then a GPU implementation of this formula was presented. And finally the fog color was blended with the fragment color according to the fog factor
5、. The experimental results show that the proposed method can generate strongly realistic fog in real-timeKey words:advection fog; fog density; fog factor; Graphic Processing Unit (GPU); real-time0 引言霧效對(duì)增強(qiáng)三維繪制場(chǎng)景的真實(shí)感起著很重要的作用,特別是當(dāng)其運(yùn)用于戶外場(chǎng)景模擬時(shí),能制造出很好的環(huán)境氣氛1。真實(shí)感霧效不僅廣泛應(yīng)用于大場(chǎng)景游戲、電影特效、動(dòng)畫和廣告等領(lǐng)域中,還被大量應(yīng)用于軍事演習(xí)仿真、機(jī)
6、場(chǎng)塔臺(tái)模擬機(jī)等仿真系統(tǒng)中。特別是在航空領(lǐng)域的應(yīng)用中,由于霧是航空事故的最大誘因,大霧中飛行員看不清跑道,易使飛機(jī)偏離跑道或過(guò)早過(guò)晚接地,從而導(dǎo)致空難。同時(shí),濃霧也會(huì)使航空港癱瘓2717。因此,霧效模擬在航空領(lǐng)域仿真訓(xùn)練中具有極其重要的作用。根據(jù)霧的形成過(guò)程不同,可以分為輻射霧、平流霧、上坡霧和蒸發(fā)霧等。根據(jù)氣象學(xué)家的統(tǒng)計(jì)分析,一般是在夜間或早晨時(shí)出現(xiàn)輻射霧,然后隨著氣溫的升高輻射霧逐漸變成了平流霧。同時(shí),霧也受高度的影響,一般霧只在接近地面的數(shù)百米空間中生成。但在計(jì)算機(jī)圖形學(xué)領(lǐng)域,對(duì)霧的仿真模擬最常見(jiàn)的是模擬全局霧,即假設(shè)整個(gè)場(chǎng)景被覆蓋在均勻密度的霧中,只考慮霧隨著視點(diǎn)到物體的間隔 變化而變化
7、。這種簡(jiǎn)易方法可以滿足一般的應(yīng)用,如游戲等,但對(duì)航空領(lǐng)域這些比較專業(yè)的應(yīng)用行業(yè),這種沒(méi)有結(jié)合氣象學(xué)專業(yè)知識(shí)的方法不能真實(shí)地模擬出自然環(huán)境中的霧效。為了模擬出真實(shí)的自然環(huán)境霧,需要對(duì)常見(jiàn)自然霧進(jìn)展統(tǒng)計(jì)分析。由李秀連等人2提供的統(tǒng)計(jì)數(shù)據(jù)表可知,在重霧日天氣下,平流霧持續(xù)時(shí)間最長(zhǎng),對(duì)環(huán)境的影響最大。所謂平流霧,就是指當(dāng)暖空氣流到冷地面上降溫而凝結(jié)成的霧2720,是一種能見(jiàn)度在1km左右的持續(xù)性濃霧3。因此,如何模擬生成平流霧,對(duì)自然環(huán)境霧效模擬起著重要的作用。雖然OpenGL提供霧效模擬的接口函數(shù),但它并不能很好地模擬自然環(huán)境霧。粒子系統(tǒng)是另外一種經(jīng)常使用的霧效模擬方法,文獻(xiàn)4-9使用粒子系統(tǒng)生成霧
8、效,但隨著粒子數(shù)的增加,達(dá)不到實(shí)時(shí)性要求。為更好地表達(dá)真實(shí)性和實(shí)時(shí)性,本文提出了一種基于GPU的實(shí)時(shí)模擬和渲染平流霧的方法,并對(duì)該方法的實(shí)現(xiàn)流程進(jìn)展了詳細(xì)介紹。1 傳統(tǒng)霧效模擬方法分析1.1 基于OpenGL的方法OpenGL生成霧效時(shí),使用霧效混合因子將霧的顏色和片元的顏色混合起來(lái)10。OpenGL提供的霧效混合函數(shù)可以進(jìn)展霧效模擬,也可以通過(guò)指定霧坐標(biāo)來(lái)顯示不同的霧效果。OpenGL的霧效模擬是根據(jù)下面三個(gè)霧方程之一進(jìn)展計(jì)算的:f=e-dc(1)f=e-(dc)2(2)f=(end-c)/(end-start)(3)其中:c為視點(diǎn)坐標(biāo)系內(nèi)視點(diǎn)到物體的間隔 ;d為霧的濃度;start,end
9、分別為霧開(kāi)始和完畢的位置。 f的值會(huì)被裁剪到0,1,并按如式(4)和已有片元顏色Cr和霧的顏色Cf混合而得到片元的最終顏色C。C=fCr+(1-f)Cf(4)OpenGL雖然可以通過(guò)計(jì)算視點(diǎn)和片元之間的間隔 來(lái)生成全局霧效果,或者通過(guò)設(shè)置霧坐標(biāo)來(lái)生成體積霧效果,卻不能從高度上表達(dá)出層次霧效果,即OpenGL生成霧方法滿足不了霧的層次漸變性要求。JCAB在2001年GDC會(huì)議上提出的生成霧方法,實(shí)現(xiàn)了全局霧和體積霧的混合運(yùn)用,但由于是基于CPU計(jì)算的11,無(wú)法運(yùn)用于大場(chǎng)景模擬多種霧效果中,不能滿足實(shí)時(shí)性要求。3期胡貴菊等:基于GPU的實(shí)時(shí)霧效模擬撲慊應(yīng)用 30卷1.2 粒子系統(tǒng)模擬霧方法由于采用
10、OpenGL傳統(tǒng)方法生成霧,不能在同一個(gè)場(chǎng)景中生成多層霧效果,一種解決方法是采用粒子系統(tǒng)多層堆積模擬形成體積霧。目前根據(jù)三維繪制引擎如OSG等提供了粒子系統(tǒng)模塊,雖然生成的霧比較真實(shí),但這些方法大都是基于CPU計(jì)算的,當(dāng)粒子的數(shù)目到達(dá)一定的數(shù)量后(5B000個(gè)以上,見(jiàn)圖1),由于CPU負(fù)荷過(guò)大,出現(xiàn)畫面遲鈍現(xiàn)象,運(yùn)行效率明顯降低,根本上達(dá)不到實(shí)時(shí)要求。圖片圖1 基于OSG粒子系統(tǒng)模擬霧生成圖2 基于GPU繪制實(shí)時(shí)霧算法2.1 根本思想由于基于CPU計(jì)算的霧模擬方法,一般只考慮霧濃度和霧坐標(biāo),而沒(méi)有考慮霧隨著高度的變化而發(fā)生漸變的現(xiàn)象,不能從高度上表達(dá)出霧的層次效果,滿足不了復(fù)雜三維場(chǎng)景對(duì)霧效的
11、需要。本文提出一種基于GPU的模擬繪制平流霧的算法,將霧隨高度的變化而發(fā)生漸變的現(xiàn)象通過(guò)一個(gè)指數(shù)函數(shù)加以表達(dá),并通過(guò)在GPU上實(shí)時(shí)地計(jì)算一個(gè)曲線積分來(lái)表示霧的濃度。2.2 平流霧算法偕柙謔瀾繾標(biāo)系內(nèi)視點(diǎn)位置為Ow,由視點(diǎn)發(fā)出的視線上任意一點(diǎn)P可以表達(dá)為如下的參數(shù)方程:P(t)=Ow+Dwt(5)其中Dw是視線的方向。假設(shè)Dw采用單位向量,那么參數(shù)t有明確的幾何意義,即視線上的點(diǎn)P到視點(diǎn)O的間隔 。如今假設(shè)霧的密度函數(shù)為(x,y,z),從視點(diǎn)O到世界坐標(biāo)系中的任意一點(diǎn)(xp,yp,zp)的霧濃度可以通過(guò)第一類曲線積分進(jìn)展計(jì)算:D=l (x,y,z)ds(6)由于世界坐標(biāo)系中的任意一點(diǎn)都可以由式(
12、5)進(jìn)展參數(shù)化,即:xp=Owx+Dwxtyp=Owy+Dwytzp=Owz+Dwzt(7)因此式(6)可以轉(zhuǎn)化為如下定積分:l (x,y,z)ds=t2t1 (x,y,z)(Dwx)2+(Dwy)2+(Dwz)2dt其中:t1,t2分別對(duì)應(yīng)點(diǎn)Ow和(xp,yp,zp)在參數(shù)方程(7)下對(duì)應(yīng)的參數(shù)值。一個(gè)簡(jiǎn)單的事實(shí)是,將Ow代入式(7)后,發(fā)現(xiàn)不管D怎么取值,其對(duì)應(yīng)的t1=0,而t2的取值取決于怎么設(shè)置Dw。Dw最簡(jiǎn)單的取值方式是直接令Dw=Ow-(xp,yp,zp)(8)那么(xp,yp,zp)在參數(shù)方程中對(duì)應(yīng)的t2=1。綜合式(7)、(8),那么式(6)可以表達(dá)為如下定積分:l (x,y,
13、z)ds=10 (x,y,z)(Dwx)2+(Dwy)2+(Dwz)2dt最后,式(4)中的霧效因子可以通過(guò)如式(8)計(jì)算得到:f=el (x,y,z)ds=e1 0(x,y,z)(Dwx)2+(Dwy)2+(Dwz)2dt(9)如今來(lái)考察使用不同霧的密度函數(shù)得到的不同結(jié)果。假設(shè)使用均勻密度的霧,即:(x,y,z)=d(10)其中d為一個(gè)常數(shù)。將式(10)代入式(9)可以計(jì)算均勻密度霧下的霧化因子:f=e-d(Dwx)2+(Dwy)2+(Dwz)2(11)注意在式(8)下,(Dwx)2+(Dwy)2+(Dwz)2的實(shí)際幾何意義就是點(diǎn)(xp,yp,zp)到視點(diǎn)Ow的間隔 。比較式(1)和(11)
14、可知,這兩個(gè)公式實(shí)際上是一樣的。因此在采用式(1)的情況下,OpenGL實(shí)際上是假設(shè)霧的密度是常數(shù),這也印證了在1.1節(jié)中的闡述。為了模擬霧隨著高度而漸變的物理現(xiàn)象,采用如下的霧密度公式:(x,y,z)=de-cz(12)其中:c是一個(gè)常數(shù),代表霧隨著高度的衰減因子;(x,y,z)代表場(chǎng)景中任一點(diǎn)處的霧密度;z由霧的位置所決定,表示霧的高度。將式(12)代入式(9),可以最后得到帶有高度衰減的定積分:l (x,y,z)ds=10 (x,y,z)(Dwx)2+(Dwy)2+(Dwz)2dt=de-cOz(Dwx)2+(Dwy)2+(Dwz)21-e-cDzwcDzw(13)最后結(jié)合式(13)與式
15、(9),得到霧效因子f:f=el (x,y,z)ds=ede-cOz(Dwx)2+(Dwy)2+(Dwz)21-e-cDzwcDzw(14)2.3 平流霧的參數(shù)描繪諞隕系男鶚鮒,實(shí)際使用了式(12)中的兩個(gè)參數(shù)d和c來(lái)描繪平流霧。這兩個(gè)參數(shù)的值對(duì)最后計(jì)算得到的霧化因子f有決定性的影響。但在詳細(xì)應(yīng)用中,這兩個(gè)參數(shù)的意義都不是十清楚顯,用戶更習(xí)慣使用霧的能見(jiàn)度和高度來(lái)進(jìn)展表述。用戶習(xí)慣使用能見(jiàn)度來(lái)描繪霧的濃度,而不是使用(12)中代表霧在零高度下的密度值。為了便于用戶更方便地控制霧,本文提出使用如下方法來(lái)完成能見(jiàn)度到d的轉(zhuǎn)換。在零高度下,霧的密度就是常數(shù)d,即式(10)。假定用戶指定的能見(jiàn)度為v,
16、那么可以認(rèn)為在間隔 視點(diǎn)v處的物體的霧化因子為0。根據(jù)式(4),那么在這個(gè)時(shí)候像素的顏色完全由霧的顏色決定,而物體本來(lái)的顏色對(duì)像素的最終顏色沒(méi)有奉獻(xiàn),即:f=e-dv=(15)其中為趨向于0的常數(shù)。根據(jù)式(13),可以得到常數(shù)d和能見(jiàn)度v之間的轉(zhuǎn)換式:d=ln(MAX)v(16)其中MAX是為了求解式(13)而采用的一個(gè)非常大的數(shù)。同樣,用戶對(duì)霧隨著高度變化的衰減常數(shù)c也沒(méi)有一個(gè)直觀的認(rèn)識(shí),在實(shí)際應(yīng)用中用戶更常采用的描繪是霧的高度h。為了在霧的衰減因子c和霧的高度h之間建立聯(lián)絡(luò),本文認(rèn)為根據(jù)式(12),霧在高度h處的密度為0,即:e-ch=(17)類似地,可以求得c的表達(dá)式:c=ln(MAX)
17、h(18)根據(jù)式(16)和(18),用戶對(duì)平流霧的描繪就可以采用更直觀的能見(jiàn)度和高度。3 平流霧的詳細(xì)實(shí)現(xiàn)在計(jì)算平流霧的霧化因子的過(guò)程中,需要計(jì)算每個(gè)像素對(duì)應(yīng)的點(diǎn)在世界坐標(biāo)系中到視點(diǎn)的間隔 ,并根據(jù)2.2節(jié)中定義的公式來(lái)完成霧化因子的計(jì)算。OpenGL無(wú)法滿足上述功能,同時(shí)由于運(yùn)行效率的原因,也不能在CPU上完成上述計(jì)算。因此,利用現(xiàn)代GPU12的可編程性,將上述算法完全實(shí)如今GPU上。在vertex shader部分,完成固定圖形管線除了必須完成將物體頂點(diǎn)坐標(biāo)由物體坐標(biāo)系轉(zhuǎn)換到窗口坐標(biāo)系,還需要將頂點(diǎn)轉(zhuǎn)化到世界坐標(biāo)系中。但是OpenGL Shading Language中只提供了gl_Mod
18、elViewMatrix將頂點(diǎn)坐標(biāo)轉(zhuǎn)換到視點(diǎn)坐標(biāo)系,要將頂點(diǎn)轉(zhuǎn)換到世界坐標(biāo)系,還需要知道Model矩陣。由于View矩陣在每幀都是固定的,并且可以通過(guò)gluLookAt()函數(shù)中的設(shè)置計(jì)算得到。得到的View矩陣Mview通過(guò)uniform參數(shù)傳遞進(jìn)vertex shader,通過(guò)如下計(jì)算便可以得到Model矩陣Mmodel:Mmodel=(Mview)-1Mmodelview其中Mmodelview是model-view矩陣。通過(guò)Mmodel可以將頂點(diǎn)坐標(biāo)轉(zhuǎn)換到世界坐標(biāo)系中,并將其放入gl_TexCoord0中傳入fragment shader。在fragment shader中,根據(jù)傳入的
19、世界坐標(biāo)系下的坐標(biāo)和霧化因子的計(jì)算公式,便可計(jì)算得到霧化因子,最后根據(jù)式(4)進(jìn)展顏色混合計(jì)算。4 實(shí)驗(yàn)結(jié)果實(shí)驗(yàn)環(huán)境在單臺(tái)PC機(jī)(AMD Athlon 64 X2 Dual Core Processor 4400+; 2B048MB RAM; NVIDIA GeForce 7800 GTX)上進(jìn)展,實(shí)驗(yàn)環(huán)境系統(tǒng)為塔臺(tái)模擬機(jī)系統(tǒng)。為實(shí)現(xiàn)基于GPU的實(shí)時(shí)霧效模擬,在Visual Studio 2021下使用OSG圖形系統(tǒng)實(shí)現(xiàn)主程序部分,使用著色器語(yǔ)言GLSL實(shí)現(xiàn)基于GPU的相應(yīng)程序。采用本文方法后,其幀率結(jié)果如表1所示。分析表1,可見(jiàn)采用該方法模擬霧效后,系統(tǒng)已經(jīng)具有很好的實(shí)時(shí)性。其實(shí)驗(yàn)效果如圖2
20、5。其中圖2是沒(méi)有啟用霧效時(shí)的場(chǎng)景圖,圖3是全局霧效果,圖4是平流霧效果圖,圖5是改變霧濃度后場(chǎng)景圖。表格(有表名)5 結(jié)語(yǔ)本論文在基于OpenGL傳統(tǒng)模擬霧方法的根底上,對(duì)OpenGL霧方程進(jìn)展改進(jìn),提出一種實(shí)現(xiàn)平流霧的算法,然后利用OSG與基于GPU的GLSL程序?qū)崿F(xiàn)了平流霧效果,并將其運(yùn)用到復(fù)雜三維場(chǎng)景塔臺(tái)模擬機(jī)系統(tǒng)中,開(kāi)發(fā)出了真實(shí)感強(qiáng)的霧化效果,并到達(dá)了系統(tǒng)的實(shí)時(shí)性要求,實(shí)驗(yàn)驗(yàn)證了可以將該方法運(yùn)用于室外大場(chǎng)景仿真系統(tǒng)中。在將來(lái)的研究中,可以結(jié)合視點(diǎn)、物體和霧三者之間的關(guān)系,根據(jù)本文提出的算法對(duì)霧效方程進(jìn)展改進(jìn)運(yùn)用,可以模擬生成輻射霧等多種霧效。參考文獻(xiàn):1湛永松,楊明浩,石民勇,等.保
21、持自然特征的煙霧快速生成系統(tǒng)J.系統(tǒng)仿真學(xué)報(bào),2007,19(19):4460-44642李秀連,陳克軍,王科,等.首都機(jī)場(chǎng)大霧的分類特征和統(tǒng)計(jì)分析J.氣象科技,2021,36(6):717-7233熊秋芬,江元軍,王強(qiáng),等.北京一次濃霧過(guò)程的邊界層構(gòu)造及成因討論J.氣象科技,2007,35(6):781-7864EBERT D S, PARENT R E. Rendering and animation of gaseous phenomena by combining fast volume and scanline a buffer techniques C/ Proceedings o
22、f the 17th Annual Conference on Computer Graphics and Interactive Techniques. New York: ACM Press, 1990: 357-3665STAM J. Stable fluids C/ Proceedings of the 26th Annual Conference on Computer Graphics and Interactive Techniques. Los Angeles, California, USA: ACM Press, 1999: 121-1286FEDKIW R, STAM J, JENSEN H. Visual simulation of smoke C/ Proceedings of the 28th Annual Conference on Computer Graphics and Interactive Techniques. Los Angeles,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物樣本檢測(cè)分析協(xié)議
- 2025至2030年太陽(yáng)架項(xiàng)目投資價(jià)值分析報(bào)告
- 5 建立良好的公共秩序 第一課時(shí) 公共生活需要秩序 教學(xué)設(shè)計(jì)-2023-2024學(xué)年道德與法治五年級(jí)下冊(cè)統(tǒng)編版
- 2025年前后輪圈支架汽缸項(xiàng)目可行性研究報(bào)告
- 2025至2030年中國(guó)迷幻草莓冰淇淋數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年迷彩自粘彈性繃帶項(xiàng)目可行性研究報(bào)告
- 2025至2030年CPVC高壓電力電纜護(hù)套管項(xiàng)目投資價(jià)值分析報(bào)告
- 人教版初中歷史與社會(huì)七年級(jí)上冊(cè) 3.3.2 水上都市-威尼斯教學(xué)設(shè)計(jì)
- 2025年高強(qiáng)封閉母線項(xiàng)目可行性研究報(bào)告
- 2025年鐵管編藤沙發(fā)項(xiàng)目可行性研究報(bào)告
- 3.1產(chǎn)業(yè)轉(zhuǎn)移對(duì)區(qū)域發(fā)展的影響(第1課時(shí)) 【知識(shí)精研】高二地理課件(湘教版2019選擇性必修2)
- 2025年醫(yī)院實(shí)習(xí)協(xié)議書樣本
- 2025年湖南工程職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)試近5年常考版參考題庫(kù)含答案解析
- 2024年云南中煙工業(yè)有限責(zé)任公司招聘筆試真題
- 2024年山東輕工職業(yè)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 三一重工全面預(yù)算管理
- 小公司財(cái)務(wù)報(bào)銷制度及報(bào)銷流程
- 《環(huán)境感知技術(shù)》2024年課程標(biāo)準(zhǔn)(含課程思政設(shè)計(jì))
- 礦山用電安全培訓(xùn)課件
- 2025年中考語(yǔ)文一輪復(fù)習(xí):八年級(jí)上冊(cè)知識(shí)點(diǎn)梳理
- 航空物流運(yùn)輸服務(wù)標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論