唐 勇,毛菊珍,呂夢(mèng)雅,張利衛(wèi)
(1.燕山大學(xué)信息科學(xué)與工程學(xué)院,河北秦皇島066004;2.河北省計(jì)算機(jī)虛擬技術(shù)與系統(tǒng)集成重點(diǎn)實(shí)驗(yàn)室,河北秦皇島066004)
不同屬性煙霧融合過程可視化建模與實(shí)時(shí)繪制
唐 勇1,2,?,毛菊珍1,2,呂夢(mèng)雅1,2,張利衛(wèi)1,2
(1.燕山大學(xué)信息科學(xué)與工程學(xué)院,河北秦皇島066004;2.河北省計(jì)算機(jī)虛擬技術(shù)與系統(tǒng)集成重點(diǎn)實(shí)驗(yàn)室,河北秦皇島066004)
為了快速精準(zhǔn)繪制真實(shí)世界中各種各樣的多煙霧融合現(xiàn)象,提出一種基于歐拉法的實(shí)時(shí)有效的煙霧融合模型。首先,提出域劃分算法,從結(jié)構(gòu)層解決了多煙霧自由隨機(jī)運(yùn)動(dòng)的描述問題;其次,利用GPU的并行能力大幅提高了N?S方程求解速度,獲得多達(dá)7種不同屬性煙霧融合過程的實(shí)時(shí)繪制;再次,實(shí)現(xiàn)Ray?casting(光線投射)算法,清晰地表現(xiàn)出煙霧融合的擴(kuò)散細(xì)節(jié);最后,調(diào)節(jié)溫度、速度、擴(kuò)散系數(shù)和濃度等煙霧運(yùn)動(dòng)影響因子,靈活控制煙霧融合過程。實(shí)驗(yàn)表明,所做工作能夠快速真實(shí)地模擬不同屬性煙霧的融合。
歐拉法;煙霧融合;域劃分算法;GPU;光線投射
對(duì)煙霧、水面、海洋等自然現(xiàn)象進(jìn)行模擬是計(jì)算機(jī)圖形學(xué)(CG)研究中非常具有挑戰(zhàn)性的課題。模擬沒有規(guī)則外觀形狀且運(yùn)動(dòng)極其復(fù)雜的煙霧非常困難。從Stam J等人開始人們對(duì)單股煙霧和煙霧與固體障礙物交互問題上做了大量研究[1?2]。2008年,浙江大學(xué)周昆提出用光線補(bǔ)償算法實(shí)時(shí)渲染煙霧[3],獲得高品質(zhì)細(xì)節(jié)。2013年,斯坦福大學(xué)Zhu B等人實(shí)現(xiàn)用動(dòng)態(tài)自適應(yīng)網(wǎng)格突出表現(xiàn)煙霧局部有趣的細(xì)節(jié)[4]。2014年,美國(guó)威斯康星大學(xué)Setaluri R等人提出一種新的稀疏均勻網(wǎng)格結(jié)構(gòu),通過優(yōu)化數(shù)據(jù)存儲(chǔ)方式來加快煙霧模擬速度[5]。以上只是對(duì)單股煙霧進(jìn)行模擬,而并未對(duì)多種煙霧融合進(jìn)行研究。
近年來,研究者對(duì)多種流體混合模擬的研究越來越感興趣,2006年,高麗大學(xué)Roh B和Kim C用拉格朗日粒子方法實(shí)現(xiàn)兩股交互式運(yùn)動(dòng)的煙霧[6],但交互過程基于固定路徑不能進(jìn)行實(shí)時(shí)控制。同年,Zhu H等提出了雙流體格子玻爾茲曼方法(TFLBM)來模擬兩種流體之間的混溶相互作用[7],然而,TFLBM在處理流體自由表面時(shí)無法保持穩(wěn)定。2010年,Kim B使用粒子水平集方法模擬獲得流體光滑界面[8],但容易損失細(xì)節(jié)表現(xiàn)。2014年,清華大學(xué)Ren B等提出一種基于SPH模擬方法的混合模型處理多個(gè)流體的交互運(yùn)動(dòng)[9],在多流體模擬研究中有顯著成效與巨大貢獻(xiàn),但針對(duì)大量粒子模擬將會(huì)降低實(shí)時(shí)性,最大幀率為4.049 fps。唐勇等人[10?11]對(duì)煙霧模擬進(jìn)行了大量研究,并取得了一定成果。
當(dāng)前對(duì)流體模擬的研究多集中于表現(xiàn)單股煙霧的真實(shí)性與實(shí)時(shí)性,以及可混合或不可混合水體之間的交互,而鮮有對(duì)多股煙霧間交互式運(yùn)動(dòng)的模擬。為此,本文提出一種基于歐拉法的實(shí)時(shí)有效的煙霧融合模型,針對(duì)空氣中煙霧交互融合模擬的難點(diǎn),快速精準(zhǔn)模擬真實(shí)世界中各種各樣的多煙霧融合現(xiàn)象。
煙霧融合運(yùn)動(dòng)是研究的重點(diǎn),實(shí)時(shí)性與真實(shí)感是最高目標(biāo)。最核心的任務(wù)是建立合理的煙霧融合模型。
1.1 建立煙霧融合控制方程組
流體模擬時(shí)依賴微分方程來描述流體的運(yùn)動(dòng)規(guī)律。N?S(Navier?Stokes)方程是用來計(jì)算流體力學(xué)的經(jīng)典模型。為模擬空氣中的煙霧融合,對(duì)基本N?S方程進(jìn)行改進(jìn)。同時(shí),采用易于在可編程GPU上求解的流體模擬方法—?dú)W拉法來模擬。由于煙霧粘性很小,粘性項(xiàng)可以忽略,因而,可將簡(jiǎn)化的N?S方程即歐拉方程表示如下:
式中,p表示壓力,ρ表示密度,f表示外力,u表示速度矢量,u=(ux,uy,uz)。
方程(1)是由牛頓第二定律推得的流體動(dòng)量方程,保證動(dòng)量守恒。方程(2)是在流體密度為常數(shù)時(shí),根據(jù)質(zhì)量守恒定律得到的流體質(zhì)量守恒方程。
為了形象生動(dòng)地將煙霧融合的動(dòng)態(tài)效果繪制出來,加入隨速度場(chǎng)流動(dòng)的密度場(chǎng)方程:
式(1)中外力f的影響使煙霧運(yùn)動(dòng)更加有趣,本文將外力描述為浮力fbuoy、漩渦力fconf以及融合力ffusi的合成,所以外力表示為
完成流體動(dòng)力學(xué)基本N?S方程的以上改進(jìn),為科學(xué)準(zhǔn)確描述煙霧融合過程建立了數(shù)學(xué)基礎(chǔ)。
1.2 域劃分算法的數(shù)學(xué)描述
煙霧融合控制方程組建立之后,如何劃分求解域、子求解域間融合力的實(shí)現(xiàn)便成為下一步需要解決的問題。在現(xiàn)有笛卡爾網(wǎng)格上自定義劃分區(qū)域網(wǎng)格的方法實(shí)現(xiàn)在整個(gè)求解域中復(fù)合不同的力場(chǎng),實(shí)現(xiàn)多種煙霧間的相互作用,真實(shí)自然表現(xiàn)煙霧融合現(xiàn)象。
求解域劃分為三維網(wǎng)格空間,為保證多種煙霧受力融合,對(duì)三維網(wǎng)格空間進(jìn)行自定義劃分,劃分方式如圖1所示,其中虛箭頭線代表每個(gè)區(qū)域的速度矢量,實(shí)箭頭線代表一個(gè)時(shí)間步后更新的速度矢量。
圖1(a)中為完成兩種煙、一定角度相遇交互,笛卡爾網(wǎng)格被劃分為3個(gè)子求解域,速度變化為
圖1(b)中為完成3種煙霧環(huán)流融合狀態(tài),笛卡爾網(wǎng)格被劃分為4個(gè)子求解域,每個(gè)域的速度受相鄰域速度影響變化為
式中,uim為分力場(chǎng)作用后的速度,ai為速度衰減因子,其中i=1,2,3。將更新的速度代入煙霧融合基本方程組求解。
圖1 煙霧融合速度分布圖Fig.1 Multiple?smoke fusion velocity distribution
域分解算法實(shí)現(xiàn)整個(gè)求解域上多個(gè)力場(chǎng)相互作用,形成不同的速度流,很好地表現(xiàn)了多種煙霧的自由隨機(jī)運(yùn)動(dòng)。
1.3 數(shù)值化煙霧融合控制方程
完成區(qū)域劃分,實(shí)現(xiàn)子求解域間的融合力,接下來須對(duì)控制方程進(jìn)行數(shù)值求解,即計(jì)算每一時(shí)刻整個(gè)流場(chǎng)的變化,完成煙霧融合模擬。具體過程如下:
1)初始化速度場(chǎng)u0和密度場(chǎng)ρ0。
2)煙霧的上升速度受到溫度的影響,溫度越高,氣體上升越快;另外,煙霧微粒受到重力的影響會(huì)向下運(yùn)動(dòng)。計(jì)算熱浮力影響后的速度場(chǎng)
其中,α、β為非負(fù)系數(shù),Tamb是當(dāng)前環(huán)境溫度,方向?yàn)閦=(0,1,0)。
3)自定義劃分笛卡爾網(wǎng)格空間,施加融合力,運(yùn)用1.2節(jié)方法更新速度場(chǎng)u2=um。
4)網(wǎng)格中的物理量需要相互傳遞,在每個(gè)時(shí)間步平流所有網(wǎng)格中的速度到新的位置
此時(shí)這個(gè)新位置的速度更新為u3=u2。
5)平流過程導(dǎo)致煙霧融合運(yùn)動(dòng)的一些細(xì)節(jié)消失,引入漩渦力進(jìn)行補(bǔ)償,重新添加因平流而去除的漩渦,保證煙霧運(yùn)動(dòng)更加真實(shí)自然。
式中,ε是漩渦系數(shù),控制漩渦強(qiáng)度;h是網(wǎng)格大小,限制網(wǎng)格精細(xì)程度。
6)同樣因平流過程會(huì)造成速度場(chǎng)的發(fā)散,所以要滿足不可壓縮流體散度自由將速度場(chǎng)更新為
其中,u(i,j,k)代表網(wǎng)格點(diǎn)(i,j,k)處的速度。
7)因壓力梯度作用使速度場(chǎng)更新,用雅克比迭代法求解泊松方程得到
8)最后,結(jié)合壓力和速度場(chǎng)得到散度自由的速度u7,并代入式(4)完成密度隨速度的平移。
利用可編程GPU同時(shí)處理多個(gè)網(wǎng)格,并行求解N?S方程,相較于CPU模擬速度有了顯著提高,同時(shí)引入MacCormack方法來求解N?S方程對(duì)流項(xiàng),簡(jiǎn)化求解過程,減少計(jì)算時(shí)間,進(jìn)一步提高煙霧融合模擬的實(shí)時(shí)性。并且,在整個(gè)計(jì)算過程中靈活調(diào)整溫度、密度、擴(kuò)散系數(shù)等煙霧融合運(yùn)動(dòng)影響因子,實(shí)時(shí)創(chuàng)造各種煙霧融合效果。
在GPU上實(shí)現(xiàn)Cg語言編程,采用體繪制技術(shù)中傳統(tǒng)的 Ray?casting(光線投射)算法進(jìn)行渲染。為實(shí)現(xiàn)煙霧融合效果,利用公式
對(duì)不同種類的煙霧渲染不同的顏色,并使顏色屬性隨濃度平流。式中,Ci為渲染后的煙霧顏色,C0i為光線穿越物體獲取的顏色數(shù)據(jù),αi為透明度,且Ai是光線吸收因子,i代表不同種類的煙。
將n種煙霧進(jìn)行融合,用公式
對(duì)Ci求和,實(shí)現(xiàn)融合煙霧顏色屬性的累加。
算法基于射線掃描過程,符合人類認(rèn)知規(guī)律,易于理解,計(jì)算簡(jiǎn)單,并且可以實(shí)時(shí)繪制出靈動(dòng)有趣的煙霧融合效果。
實(shí)驗(yàn)在Windows操作系統(tǒng)下進(jìn)行,使用Unity3d開發(fā)平臺(tái)結(jié)合GPU建立了實(shí)時(shí)有效的不同屬性煙霧融合模型。
圖2為不同場(chǎng)景不同狀態(tài)煙霧的融合效果。圖2(a)是一團(tuán)煙霧滲入一股煙霧之中并隨之騰升的現(xiàn)象,這個(gè)過程中這一小團(tuán)煙霧將逐漸地被稀釋與擴(kuò)散,圖2(b)是兩個(gè)橫向容器中冒出的不同屬性煙霧等比例的融合為一種屬性煙霧的過程,圖2(c)是在室外高空環(huán)境中,在風(fēng)場(chǎng)的作用下煙霧的融合效果,改變風(fēng)速與風(fēng)向?qū)⒏淖兤浣蝗谶\(yùn)動(dòng)態(tài)勢(shì),產(chǎn)生靈活多變的效果,圖2(d)是七色彩虹煙霧由下到上低速流動(dòng)于一個(gè)密閉空間中,在這一過程中每股煙相遇相融在一起,圖中可看出每股煙霧的邊界有明顯的融合效果。
圖3中為兩股煙霧受45°角的力的作用碰撞在一起產(chǎn)生的效果,圖3(a)中由于力的大小相同,所以碰撞融合過程中形成兩個(gè)相同大小,互為反向的漩渦,圖3(b)中為施加不同大小力的煙霧碰撞融合效果。
圖4(a)是文獻(xiàn)[9]中不同液體混合實(shí)驗(yàn)效果,圖4(b)是本文中不同煙霧融合效果。文獻(xiàn)[9]中液體混合實(shí)驗(yàn)非常真實(shí)自然,本文對(duì)其方法進(jìn)行改進(jìn)并應(yīng)用到煙霧融合實(shí)驗(yàn)中,得到了更加靈動(dòng)有趣的效果。
圖2 不同場(chǎng)景不同狀態(tài)煙霧融合效果Fig.2 Different attribute smoke fusion in different scene
圖3 煙霧碰撞融合Fig.3 Smoke collision and fusion
圖4 實(shí)驗(yàn)效果圖對(duì)比Fig.4 Comparison of the experimental effects
多煙霧融合可視化繪制在分辨率為64×128× 64的網(wǎng)格上模擬,幀率如表1所示。
文獻(xiàn)[9]采用基于SPH的粒子方法模擬,其方案可容易地集成到現(xiàn)有的最先進(jìn)的SPH模擬器中,表2為不同粒子數(shù)的多種液體交互的幀率。通過圖4、表1與表2的對(duì)比可看出,本文已經(jīng)獲得逼真的多煙霧融合效果,而且?guī)蔬h(yuǎn)高于文獻(xiàn)[9]的最大幀率。
表1 不同精度網(wǎng)格上多種煙霧融合的幀率Tab.1 Frame rate of multiple?smoke fusion on different resolution grids
表2 文獻(xiàn)[9]中不同粒子數(shù)的多種液體交互幀率Tab.2 Frame rate under different particle numbers and phase numbers in reference[9]
針對(duì)不同屬性煙霧融合過程可視化尚難滿足實(shí)時(shí)性、且真實(shí)感有待提升的問題,優(yōu)化流體力學(xué)模型并結(jié)合歐拉法提出求解域劃分算法,快速穩(wěn)定地捕捉到煙霧相遇后的運(yùn)動(dòng)態(tài)勢(shì),大大提高了煙霧融合過程模擬的真實(shí)性與實(shí)時(shí)性;將 Ray?casting算法求解移植到可編程渲染管線GPU中,快速逼真且清晰明朗地展現(xiàn)了煙霧融合過程的可視化效果;最后,通過多種數(shù)值實(shí)驗(yàn)驗(yàn)證,實(shí)時(shí)性大大提高,融合細(xì)節(jié)表現(xiàn)充分。在模擬多達(dá)7種不同濃度、不同質(zhì)量的煙霧在真實(shí)環(huán)境中受力融合現(xiàn)象時(shí),也能滿足實(shí)時(shí)性要求。
[1]Stam J.Stable fluids[C]//Proceedings of Computer Graphics,Annual Conference Series,ACM Siggraph,Los Angeles,1999:121?128.
[2]Fedkiw R,Stam J,Jensen H.Visual simulation of smoke[C]//Proceedings of Computer Graphics,Annual Conference Series,ACM Siggraph,Los Angeles,2001:15?22.
[3]Zhou Kun,Ren Zhong.Real?time smoke rendering using compensa?ted ray marching[J].ACM Transactions on Graphics,2008,27(3):1?12.
[4]Zhu B,Lu W,Cong M,et al.A new grid structure for domain ex?tension[J].ACM Transactions on Graphics,2013,32(4):1?12.[5]Setaluri R,Aanjaneya M,Bauer S,et al.SP Grid:A sparse paged grid structure applied to adaptive smoke simulation[J]. ACM Transactions on Graphics,2014,33(6):1?12.
[6]Roh B,Kim C.Controllable multi?phase smoke with lagrangian particles[C]//24th Computer Graphics International Conference,Hangzhou,China,2006:115?123.
[7]Zhu H,Liu X,Liu Y,et al.Simulation of miscible binary mixtures based on lattice Boltzmann method[J].CAVW Computer Animation and Virtual Worlds,2006,17(3/4):403?410.
[8]Kim B.Multi?phase fluid simulations using regional level sets[J]. ACM Transactions on Graphics,2010,29(6):1?8.
[9]Ren B,Li C,Yan X,et al.Multiple?fluid SPH simulation using a mixture model[J].ACM Transactions on Graphics,2014,33(5):1?11.
[10]唐勇,吳娛,呂夢(mèng)雅,等.一種改進(jìn)的自適應(yīng)漩渦限制實(shí)時(shí)煙霧模擬[J].小型微型計(jì)算機(jī)系統(tǒng),2012,33(12):2676?2679.
[11]唐勇,李萍,呂夢(mèng)雅,等.一種實(shí)時(shí)模擬煙霧的新方法[J].燕山大學(xué)學(xué)報(bào),2011,35(1):65?68.
Visualization modeling and real?time rendering for fusion process of different property multi?smoke
TANG Yong1,2,MAO Ju?zhen1,2,Lü Meng?ya1,2,ZHANG Li?wei1,2
(1.School of Information Science and Engineering,Yanshan University,Qinhuangdao 066004,China;2.The Key Laboratory for Computer Virtual Technology and System Integration of Hebei Province,Qinhuangdao,Hebei 066004,China)
In this paper,a real?time and effective Euler approach is introduced for multiple?smoke fusion.First of all,the domain de?composition algorithm is presented to solve the free random movement problem of multiple?smoke fusion in structural layer.Second?ly,the speed of solving N?S equations is improved by the GPU,and as many as seven different attributes of smoke fusion process is got.Thirdly,the spread of smoke fusion details is shown clearly through realization Ray?casting algorithm.Finally,more smoke's in?teresting fusion details is got by controlling the smoke flow impact factors,such as temperature,speed,diffusion coefficient,concen?tration,etc.So the method can simply and effectively simulate real?time multiple?smoke fusion.
Euler approach;smoke fusion;domain decomposition algorithm;GPU;Ray?casting
TP391.9
A
10.3969/j.issn.1007?791X.2015.05.011
1007?791X(2015)05?0448?05
2015?06?22 基金項(xiàng)目:國(guó)防重大專項(xiàng)資助項(xiàng)目(2014AT09)
?唐勇(1964?),男,四川遂寧人,博士,教授,博士生導(dǎo)師,主要研究方向?yàn)橛?jì)算機(jī)動(dòng)畫、計(jì)算機(jī)圖形學(xué)、虛擬現(xiàn)實(shí)技術(shù)及其應(yīng)用,Email:tangyong@ysu.edu.cn。