鄧定勝
摘要:文章以怎樣才能在大規(guī)模場景中渲染出高效率和高真實(shí)感的煙霧效果為出發(fā)點(diǎn),以GPU渲染管線流程為可編程基礎(chǔ),利用以納維一斯托克斯流體動力學(xué)方程(Navier-Stokes equations:簡稱NS方程)為基礎(chǔ),用大規(guī)模場景中的煙霧形態(tài)表現(xiàn)為密度場,通過基于光照的計(jì)算和硬件加速的體繪制算法來實(shí)時(shí)模擬場景中的煙霧效果。在實(shí)時(shí)渲染過程中,隨機(jī)的加入風(fēng)的擾動來使渲染效果更加真實(shí)。實(shí)驗(yàn)表明,該方法能高效真實(shí)的渲染出煙霧模擬效果,具有較高的繪制效果和真實(shí)感。
關(guān)鍵詞:GPU;體繪制;NS方程;實(shí)時(shí)煙霧模擬;物理模擬
中圖分類號:TP31 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2019)32-0245-03
近年來,隨著計(jì)算機(jī)硬件的發(fā)展,特別是圖形硬件的蓬勃發(fā)展,使得在微型機(jī)上繪制圖形的速度和質(zhì)量有了顯著的提升。但是由于繪制場景越來越復(fù)雜,致使很多自然效果模擬出來不夠真實(shí)和高效。這里,大規(guī)模場景中煙霧模擬的真實(shí)渲染就是其中的熱點(diǎn)研究之一。
灰蒙蒙的霧霾、浮動的云彩、奔騰的海浪、激情燃燒的火焰等流體現(xiàn)象的模擬在虛擬現(xiàn)實(shí)、歌舞劇場、電影特效、電子游戲等領(lǐng)域具有重要作用,能有效襯托環(huán)境氣氛,而流體模擬的計(jì)算開銷較大,難以保證實(shí)時(shí)效果;而且煙霧運(yùn)動規(guī)律復(fù)雜,形狀也隨機(jī)發(fā)生變化,所以如何真實(shí)模擬煙霧效果很是一個(gè)值得挑戰(zhàn)的課題,具有非常實(shí)現(xiàn)的意義。
1煙霧模擬算法
要渲染出高真實(shí)感的煙霧效果,先前圖形學(xué)研究者們已經(jīng)提出了很多方法。煙霧的模擬技術(shù)要考慮到場景中所有表面與煙霧顆粒相互的效果,相對于只考慮煙霧顆粒之間的相互作用要繁雜得多,計(jì)算量也大很多。
1.1煙霧模擬的方法與設(shè)計(jì)方案
煙霧模擬的方法與設(shè)計(jì)方案主要包括三大部分:
1)基于粒子系統(tǒng)的煙霧模擬:該模擬是流體類物體模擬的經(jīng)典模擬方式之一,采用粒子系統(tǒng)繪制出煙霧顆粒,并且利用物理運(yùn)動學(xué)的運(yùn)動規(guī)律來控制粒子的運(yùn)動,但是現(xiàn)在的繪制場景中都較為復(fù)雜和大規(guī)?;@樣生成的粒子數(shù)就很多,使得渲染頻率急劇降低。
2)基于紋理方法的煙霧模擬:該模擬采用紋理映射的方式在場景中進(jìn)行煙霧紋理的貼圖,典型的方法為紋理滾動技術(shù)的應(yīng)用,這樣雖然彌補(bǔ)了粒子系統(tǒng)繪制效率的問題,但是煙霧的真實(shí)感卻降低了。
3)基于數(shù)學(xué)物理模型的模擬方法:該模擬方法正是本文用來模擬大規(guī)模場景中煙霧效果的方法。
1.2煙霧生成技術(shù)
煙霧生成技術(shù)的核心主要有如下兩個(gè)方面:
1)煙霧運(yùn)動和形態(tài)的模擬,也就是煙霧運(yùn)動模型;
2)煙霧繪制:煙霧繪制技術(shù)依賴于煙霧模擬模型的選擇。
文章從這兩個(gè)方面著手,對比分析了最近國內(nèi)外在煙霧技術(shù)領(lǐng)域的所得成果,同時(shí)也結(jié)合了大規(guī)模場景的實(shí)時(shí)性要求,決定采用流體運(yùn)動學(xué)模型,將煙霧形態(tài)變現(xiàn)為三維空間的密度場,然后通過基于光照計(jì)算和硬件加速的體繪制技術(shù)對密度場進(jìn)行模擬渲染,進(jìn)而通過仿真獲得具有真實(shí)感的煙霧實(shí)時(shí)效果。
1.3歐拉法和拉格朗日模擬算法
描述流體現(xiàn)象最為完整的方程是納維一斯托克斯方程,流體力學(xué)中描述流體運(yùn)動的物理量有兩種方法:歐拉法和拉格朗日法。Ns方程根據(jù)描述方法的不同,也具有不同的形式。
1.3.1歐拉法
也稱為空間描述法,它著眼于空間點(diǎn),認(rèn)為流體的物理量依據(jù)空間點(diǎn)及時(shí)間發(fā)生變化,即把流體物理量表示為歐拉坐標(biāo)及函數(shù)。這種方法是從研究流體所占據(jù)的空間中各個(gè)固定點(diǎn)處的運(yùn)動著手,分析被運(yùn)動流體所充滿的空間中每一個(gè)固定點(diǎn)上流體的速度、壓強(qiáng)、密度等參數(shù)隨時(shí)間的變化,以及研究由某一空間點(diǎn)轉(zhuǎn)到另一空間點(diǎn)時(shí)這些參數(shù)的變化,是一種基于網(wǎng)絡(luò)的方法。這里給出常用的不可壓粘性NS方程組的歐拉公式:
這種方法就是對于各個(gè)相對獨(dú)立的粒子進(jìn)行力的分析,通過積分計(jì)算出這些粒子在下一個(gè)時(shí)刻的位置和其他狀態(tài)量。
拉格朗日法的優(yōu)點(diǎn)是容易表達(dá),不需要對整個(gè)空間進(jìn)行處理,況且容易做到質(zhì)量守恒,而且也比較容易實(shí)施控制,然而,拉格朗日法對于平滑運(yùn)動界面的重建難于處理,況且自由界面拓?fù)涞母淖儽仨毑捎脧?fù)雜的算法才能構(gòu)造出其表面幾何,計(jì)算量也隨著粒子數(shù)的增多而增大。
拉格朗日法和歐拉法雖然各有優(yōu)缺點(diǎn),但是為了更真實(shí)地模擬流動,拉格朗日的粒子算法往往要結(jié)合基于網(wǎng)格的歐拉算法一并使用,比如得到廣泛應(yīng)用的半拉格朗日算法,進(jìn)而加強(qiáng)交互控制。
2新型的基于物理模型的煙霧模擬求解算法
要做到在GPu上求解方程,本文擬采用配置網(wǎng)格來離散化求解集。
2.1求解擴(kuò)散項(xiàng)
由于粘性的液體對流動具有某種阻礙,會影響速度的擴(kuò)散,從某種角度來看,它描述了相鄰單元間的質(zhì)量交換,即流入和流出,粘性擴(kuò)展的偏微分方程為:
4實(shí)驗(yàn)仿真
此煙霧模擬的效果對比是通過在CPU和GPU上渲染的幀率來實(shí)現(xiàn)的,其渲染的幀率對比如表1和圖1所示。對比表1和圖1不難發(fā)現(xiàn),利用GPU渲染煙霧效果法能夠?qū)崿F(xiàn)實(shí)時(shí)性要求,比CPU渲染煙霧的效果實(shí)時(shí)陛和穩(wěn)定性要好;通過體繪制煙霧模擬算法后,仿真效果如圖2所示。
5總結(jié)
文章以煙霧模擬物理模型為基礎(chǔ),通過實(shí)時(shí)體繪制算法在GPU上成功實(shí)現(xiàn)了煙霧模擬的實(shí)時(shí)渲染,達(dá)到自動生成看起來比較自然真實(shí)的煙霧效果的目的,從而達(dá)到煙霧渲染效果的實(shí)時(shí)性和真實(shí)性。