包雪怡
摘要:在3D水下場(chǎng)景渲染中融入流場(chǎng)的模擬可視化是增強(qiáng)現(xiàn)實(shí)領(lǐng)域近年來(lái)研究工作的重點(diǎn)之一。水下流場(chǎng)模擬可視化框架,包括流場(chǎng)模擬和可視化渲染繪制兩部分。流場(chǎng)模擬基于N-S方程,溫度為唯一的輸入?yún)?shù)。為了更準(zhǔn)確描述水體溫差、密度不均勻?qū)е碌膶?duì)流現(xiàn)象,浮力作為流上下浮動(dòng)的外力項(xiàng);同時(shí),通過(guò)波浪擾動(dòng)項(xiàng)描述流和水面波動(dòng)的一致性??梢暬秩纠L制部分,采用基于紋理的直接體渲染(Direct Volume Rendering, DVR)和一維的轉(zhuǎn)移函數(shù)(transfer-function)描述流場(chǎng)特征,展現(xiàn)時(shí)變流場(chǎng)數(shù)據(jù)(溫度,速度,壓強(qiáng)等)??蚣芡ㄟ^(guò)GPU引擎對(duì)上述算法進(jìn)行加速,結(jié)合上帝之光實(shí)時(shí)模擬可視化時(shí)變流場(chǎng)的擾動(dòng)效果,滿足場(chǎng)景實(shí)時(shí)交互可視化渲染繪制需求。
關(guān)鍵詞:水下場(chǎng)景;流場(chǎng)模擬;體渲染;可視化;增強(qiáng)現(xiàn)實(shí)
中圖分類號(hào):TP319.41? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2019)19-0223-03
穿過(guò)水面的光線會(huì)與水中粒子發(fā)生碰撞形成上帝之光和焦散等奇妙的光學(xué)現(xiàn)象。同時(shí)溫度、密度和壓強(qiáng)等的變化會(huì)引起水體內(nèi)對(duì)流和擴(kuò)散等現(xiàn)象。隱藏在這些現(xiàn)象下的本質(zhì)就是流體動(dòng)力學(xué)。流模擬需要昂貴的計(jì)算開(kāi)銷,而且渲染繪制流體不能依賴傳統(tǒng)的基于光柵化渲染平臺(tái)實(shí)現(xiàn),因此實(shí)時(shí)流動(dòng)態(tài)模擬可視化渲染繪制仍然是一個(gè)具有挑戰(zhàn)性的課題。
本文構(gòu)建水下流場(chǎng)模擬可視化框架,實(shí)現(xiàn)水下場(chǎng)景中流擾動(dòng)過(guò)程的模擬和可視化渲染繪制。模擬陽(yáng)光穿透水面和水流發(fā)生相互作用時(shí)產(chǎn)生的復(fù)雜的光學(xué)現(xiàn)象,結(jié)合體渲染和后處理體積光生成算法增強(qiáng)流特征。
文章從下面幾部分介紹相關(guān)工作:流場(chǎng)模擬可視化框架,包括流場(chǎng)模擬N-S方程求解、基于紋理的直接體渲染,實(shí)驗(yàn)結(jié)果分析、未來(lái)的改進(jìn)方向等。
1 研究背景
流場(chǎng)模擬技術(shù)可歸納為兩個(gè)范疇:基于粒子的拉格朗日方法和基于網(wǎng)格的歐拉方法。本文流場(chǎng)模擬采用基于網(wǎng)格的歐拉方法。
Stam [1]是第一位采用網(wǎng)格歐拉方法模擬流現(xiàn)象的研究者。歐拉流場(chǎng)模擬方法遵循克林形式(Chorin-style),采用操作符分割方法和對(duì)流-投影方法來(lái)對(duì)流施加不可壓縮的條件限制。傳統(tǒng)的對(duì)流-投影框架采用半拉格朗日對(duì)流方法,該方法可提供無(wú)條件的穩(wěn)定性。近十年來(lái)許多基于該框架的方法被提出用以處理不同的流場(chǎng)模擬問(wèn)題。Kang et al. [2] 引進(jìn)了一個(gè)GFM(GhostFluidMethod)方法模擬多種狀態(tài)的不可壓縮流體,該方法被Hong and Kim[3]采用對(duì)流體的表面變化進(jìn)行追蹤,采用半拉格朗日對(duì)流和粒子集(PLS)擴(kuò)展了該方法。Kang et al.[4]擴(kuò)展了GFM,模擬可融合和不可融合的流之間的相互作用?;诰W(wǎng)格的流場(chǎng)模擬方法也被用來(lái)模擬高粘度的流現(xiàn)象。Carlson et al.[5]在MAC(Mark And Cell)框架上采用一個(gè)隱式的粘度方程來(lái)模擬高粘度的流和融化效果。Goktekin et al[6]采用黏性和塑性系數(shù)模擬粘彈性的流現(xiàn)象。最近,Larionov et al[7]在一個(gè)壓力-粘度求解器中采用基于網(wǎng)格的離散化方法來(lái)模擬高粘度的牛頓流體。
為兼顧性能和渲染質(zhì)量,本文采用基于屏空間的體渲染方法來(lái)渲染時(shí)變3D流體數(shù)據(jù)。
2 流場(chǎng)模擬可視化框架
本文框架包含大量的紋理渲染技術(shù),由可編程著色器實(shí)現(xiàn),N-S方程求解的流體動(dòng)力學(xué)運(yùn)算采用CUDA加速。為渲染一個(gè)真實(shí)的水下場(chǎng)景以增強(qiáng)流體渲染的視覺(jué)沖擊力,框架還包括水面的建模和渲染、水下焦散和上帝之光的模擬??蚣芙Y(jié)構(gòu)如圖1所示:
2.1流體動(dòng)力學(xué)方程求解
本文采用基于網(wǎng)格的流場(chǎng)模擬方法對(duì)N-S方程進(jìn)行求解。為了展現(xiàn)水下流和水面一致的波動(dòng),在N-S方程中加入波浪擾動(dòng)和浮力兩個(gè)外力項(xiàng)。波浪擾動(dòng)項(xiàng)描述風(fēng)對(duì)水體的推動(dòng)而形成的加速度,浮力項(xiàng)模擬水體中溫差引起的對(duì)流現(xiàn)象。框架實(shí)現(xiàn)的流場(chǎng)模擬被限制在一個(gè)3D的立方體區(qū)域內(nèi)。假設(shè)流的體積在水中的特定深度保持不變,水中流的運(yùn)動(dòng)可以由不可壓縮流體的N-S方程來(lái)描述:
2.2直接體渲染
流體數(shù)據(jù)集(速度和溫度)存儲(chǔ)在3D數(shù)組中,數(shù)據(jù)集的每一幀采用公式(1)得到的速度場(chǎng)進(jìn)行更新,采用DVR技術(shù)可視化渲染時(shí)變流體數(shù)據(jù)。公式(14)計(jì)算沿視線方向累積光強(qiáng)和模糊度,其中[Ci]是樣本點(diǎn)顏色,[Aj]是模糊度,用來(lái)模擬光線到達(dá)樣本點(diǎn)j的衰減狀況:
3 結(jié)論
水下流場(chǎng)模擬可視化框架采用OpenGL和GLSL實(shí)現(xiàn)??蚣軐?duì)渲染海面和水下光照采用的法線貼圖方式實(shí)現(xiàn)參數(shù)化控制。計(jì)算量最大的部分是流體動(dòng)力學(xué)方程的求解。其中FFT法線貼圖的計(jì)算在Cuda上進(jìn)行。在一張64╳64的2D網(wǎng)格上生成FFT波浪,在一張64╳64╳[64]的網(wǎng)格上模擬流和采用DVR可視化流特征。為了兼顧效果和性能,在低分辨率的網(wǎng)格上生成波浪高度場(chǎng),采用高分辨率的法線貼圖渲染水面。當(dāng)法線貼圖的分辨率增加后,海面會(huì)呈現(xiàn)更多高頻的波浪,水下也可以看到更多波動(dòng)的細(xì)膩光束,如圖8所示。為了求解流體動(dòng)力學(xué)方程,本文采用30次雅各比迭代來(lái)求解擴(kuò)散項(xiàng),采用50次迭代進(jìn)行投影操作。根據(jù)實(shí)驗(yàn)結(jié)果,在計(jì)算擴(kuò)散項(xiàng)時(shí),采用20次以上的迭代可以得到比較小的誤差。在本文的模擬中,[?x]=[?y=?z]=1/64=0.0156,dt = 0.1,粘度系數(shù)[γ]=0.001。
參考文獻(xiàn):
[1] Stam J. Stable Fluids[C].Siggraph,1999,99:121-128.
[2] Kang M, Fedkiw R P, Liu X D. A boundary condition capturing method for multiphase incompressible flow[J]. Journal of Scientific Computing,2000,15(3):323-360.
[3] Hong J M, Kim C H. Discontinuous fluids[C].ACM Transactions on Graphics (TOG).ACM,2005,24(3):915-920.
[4] Kang N, Park J, Noh J, et al. A hybrid approach to multiple fluid simulation using volume fractions[C].Computer Graphics Forum.Wiley/Blackwell(10.1111),2010,29(2):685-694.
[5] Carlson M, Mucha P J, Van Horn III R B, et al. Melting and flowing[C].Proceedings of the 2002 ACM SIGGRAPH/Eurographics symposium on Computer animation.ACM,2002:167-174.
[6] Goktekin T G, Bargteil A W, O'Brien J F. A method for animating viscoelastic fluids[C].ACM Transactions on Graphics (TOG).ACM,2004,23(3):463-468.
[7] Larionov E, Batty C, Bridson R. Variational stokes: a unified pressure-viscosity solver for accurate viscous liquids[J].ACM Transactions on Graphics (TOG),2017,36(4):101.
[8] Mitchell J. Light shafts: Rendering shadows in participating media[C].Game Developers Conference,2004.
【通聯(lián)編輯:朱寶貴】