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