潘立武,朱坤華,吳慧玲
(河南牧業(yè)經(jīng)濟學院,河南鄭州450011)
?
基于Bézier曲線的三維河流仿真研究
潘立武,朱坤華,吳慧玲
(河南牧業(yè)經(jīng)濟學院,河南鄭州450011)
摘要:模擬河流和湖海等大面積水域本身就是個具有挑戰(zhàn)性的問題,尤其是對具有復雜河網(wǎng)的河流的三維仿真。針對具有多個交匯點的復雜河流的仿真,在Hendrickx提出的實時河網(wǎng)渲染的基礎(chǔ)上,提出了一種基于Bézier曲線和法向貼圖的三維河流仿真改進方法,改用一種快速三角網(wǎng)相交檢測方法提高了河流的渲染速度,同時在GPU架構(gòu)上實現(xiàn)了河水的渲染,顯著改進了其效率。
關(guān)鍵詞:Bézier曲線;河流仿真;三角形相交;法向貼圖;三維仿真
0引言
紋理方法就是僅僅通過紋理貼圖實現(xiàn)河流仿真,由于紋理貼圖實現(xiàn)簡單且效率高,但缺乏動態(tài)效果[1,2]。水面波動法采用多個隨機正弦波疊加來實現(xiàn)水體表面高程動態(tài)變化的效果,克服了基本紋理方法模擬水面是一個平面的缺陷。但需要較多的控制點來構(gòu)建大范圍大尺度水面,存在曲面波形難以控制和增加計算量的問題[3]?;诹骱瘮?shù)的方法通過計算河流表面水流速度場,然后使用速度場驅(qū)動河流內(nèi)部的PoissonDisk采樣點實現(xiàn)河水的實時仿真[4,5],但該方法難以適應(yīng)大范圍的復雜河網(wǎng)的河流仿真?;诩y理圖像的流場可視化方法[6]以流場中粒子的運作為核心,通過用背景圖像的運動變形代替流體粒子運動,從而用宏觀圖形來表達用微觀粒子所表示的流場,該方法適合于流態(tài)復雜多變、細節(jié)較多的局部區(qū)域,能展示出流場的更多細節(jié),對流場數(shù)據(jù)的適應(yīng)性好。不足之處是計算量較大,需要流場網(wǎng)格數(shù)據(jù)和水動力學模型計算結(jié)果。
對于諸多的河流仿真方法,每種都有自己的優(yōu)缺點和適用范圍,需要開發(fā)人員在實際建模中選擇合適的方法,甚至綜合使用多種方法。針對傳統(tǒng)紋理映射方法實現(xiàn)大規(guī)模河流仿真不能滿足復雜環(huán)境條件下逼真水流的問題,基于Hendrickx等[7]提出的基于Bézier曲線和流線法向貼圖的河流實時仿真方法,本文提出一種改進的方法,該方法在滿足視覺要求的前提下能實現(xiàn)實時交互,尤其適合具有復雜河網(wǎng)的河流仿真。
原理
Hendrickx等[7]提出了基于Bézier曲線和流線法向貼圖的河流實時仿真方法,原理如下。
1.1二次Bézier曲線
對給定點P0,P1,…,Pn,n次Bézier曲線C(t)定義如式(1)所示:
(1)
式中,Bk,n(t)是基函數(shù),定義如下:
作為太陽能光伏發(fā)電系統(tǒng),其系統(tǒng)結(jié)構(gòu)和參數(shù)是非常強大和復雜的,因為在技術(shù)和功能設(shè)計上,要利用發(fā)電系統(tǒng),將太陽能在短時間內(nèi)轉(zhuǎn)化成電能裝置。太陽能光伏發(fā)電系統(tǒng)中,主要包含了一些常見并重要的光伏電池組件、電力轉(zhuǎn)換裝置、蓄電池組及變壓器等,要保證這些組件能正常運行,并對其工作情況進行監(jiān)控和管理,就必須使用電氣自動化技術(shù)。通過電氣自動化技術(shù),將直流光伏電能轉(zhuǎn)換為交流電能,在輸送到電網(wǎng)中,為社會提供電力支持。電氣自動化在太陽能光伏發(fā)電中是一種不可缺少的技術(shù),更是一項偉大的技術(shù)。
(2)
根據(jù)式(1),二次方Bézier曲線可表示為給定點P0,P1,P2和基函數(shù)B的路徑C(t)可以定義如式(3)所示:
(3)
即可表示為C(t)=(1-t)2P0+2t(1-t)P1+t2P2。本文的Bézier曲線的繪制等相關(guān)算法都是基于上述公式。
1.2方法原理
(1)繪制河網(wǎng)河段。將河流按照流向分成多個段,逐河段對河流中心采樣,得到每個河段對應(yīng)的一系列采樣點,以這些采樣點為二階Bézier曲線的控制點,在給定繪制內(nèi)寬度的條件下,繪制河網(wǎng)。將多個河段通過Bézier曲線進行平滑連接,構(gòu)成研究的河流對象,如圖1所示。這樣就可將所有的采樣點以Bézier曲線相連接,形成河流河網(wǎng)。
圖1 Bézier河段和投影像素到曲線示意
(2)渲染河段。通常渲染Bézier曲線是沿著曲線按照頻率固定的采樣得到一系列幾何形(多為四邊形),將采樣的幾何形平鋪到渲染區(qū)域。使用這種方法的缺點是,為了得到平滑的渲染效果,需要大量采樣,將極大增加渲染頂點的數(shù)量,難以滿足實時要求。本文提出的方法僅渲染Bézier河段的包圍四邊形,只使用四邊形的4個頂點進行計算,如圖1所示。由于該方法具有較好的并行性,非常適合在GPU上實現(xiàn)計算。根據(jù)投影點的位置和位移確定紋理坐標,實現(xiàn)法向紋理貼圖,通過GPU可實現(xiàn)河流水面的各種渲染效果。由于使用較少的頂點數(shù),對大規(guī)模河網(wǎng)河流,也不需要使用LOD技術(shù),其渲染的性能主要依賴于在屏幕空間總的可視水面大小。
使用二次Bézier曲線的方法能準確描述復雜的河網(wǎng)及河流交匯,通過對交匯的兩個二次Bézier河段進行比較,確定河段中重疊的部分并將將重疊部分放入同一個河段進行渲染,河段重疊部分的判定是影響該方法效率的一個重要因素。其原理是通過構(gòu)造河段三角形網(wǎng)格,比較重疊河段的所有構(gòu)成三角形判定2個河段的2個三角形是否相交,進一步確定重疊部分的所有三角形。原始的Bézier曲線河流仿真使用蠻力方法(bruteforcemethod)對構(gòu)成交匯的河段的所有三角形進行兩兩比較,進行相交檢測,該方法由于比較的次數(shù)較多,效率不高。本文使用基于PhilippeGuigue和OlivierDevillers提出的快速三角形相交測試算法[8],對三角形重疊判定進行改進以提高計算效率。
2.1算法原理
文獻[8]中提出的算法是利用三角形各頂點構(gòu)成行列式值正負的幾何意義來判斷三角形中點、線、面之間的相對位置關(guān)系的。使用一個由4×4矩陣(三維)的行列式表示每個頂點的方向,將2個三角形之間的相交簡化為檢測8個方向?qū)?yīng)的符號問題。對二維平面中的2個三角形,該算法的原理如下。
給定a、b、c 3個點,其坐標分別為a=(ax,ay),b=(bx,by),c=(cx,cy),定義行列式如下:
(4)
其幾何意義是:如果[a,b,c]>0,表示a,b,c三個點沿著abc組成的邊界形成逆時針排列順序;如果[ a,b,c]<0,表示a,b,c三點構(gòu)造順時針順序;如果[a,b,c]=0,則表示a,b,c三點在一條直線上[8-10]。因此,如圖2所示三角形abc被分別劃分為正負2個不同區(qū)域。
圖2 a、b和c劃分的正負兩個區(qū)域
根據(jù)式(4),可以確定一個點和一個三角形的位置關(guān)系,如圖3所示,最終可以判斷任意一個三角形T1(p1,q1,r1)是否和圖3中的三角形T2(p2,q2,r2)相交,詳情請參閱文獻[8]。
圖3 p1和三角形三條邊對應(yīng)區(qū)域的符號
2.2算法改進
基于文獻[8]提出的快速三角形相交測試算法采用包圍盒方法,能首先排除掉大量不相交三角形面片,然后再對包圍盒中的三角形進行快速相交測試,能顯著提高系統(tǒng)的運行效率。本文采用層次多包圍盒進一步改進包圍盒技術(shù),首先使用圓形包圍盒先進行第1次相交判斷、接著使用矩形包圍盒進一步判斷,最后使用三角形包圍盒進行相交判斷,對相交的三角形包圍盒進行多次分裂求交,直到每個三角形包圍盒僅包含1個三角形時使用三角形相交測試算法[11]。算法流程如圖4所示。
圖4 改進算法的流程
算法主要實現(xiàn)步驟為:①對有相同控制點的2個河段,分別建立三角形網(wǎng)格進行細分。②建立圓形包圍盒。比較圓形包圍盒,如果沒有重疊部分,則結(jié)束;如有重疊部分,進入下一步比較。③對模型的矩形包圍盒進行比較,如果沒有重疊部分,則結(jié)束;如有重疊部分,進入下一步比較。④求出模型的相交部分。對相交部分中屬于一個模型的一個三角形和另一個模型中的各三角形進行相交測試。如相交,則標識該三角形以便合并和進行渲染。否則,排除該三角形,重復進行下一個三角形的相交測試。⑤對剩余部分的模型循環(huán)步驟②③④,直到所有相交的三角形都被標識出來。
3仿真結(jié)果
如圖1所示,d為投影點到Bézier曲線的距離,如果d大于或小于河流寬度的一半,則這樣的投影點將被丟棄。L為沿Bézier曲線到所要的投影點之間的弧長,增加一個時間獨立的的偏移t,可得投影點的紋理坐標(u,v)為(d,L+t)。這樣可以使用少量的頂點數(shù),獲得平滑的渲染曲線。使計算弧長L運行在河段的水面上進行的紋理貼圖,最終渲染效果見圖5。
圖5 最終渲染效果
傳統(tǒng)的Bézier曲線紋理鑲嵌方法對有連接交匯的曲線是不適合的,因為對每個曲線段產(chǎn)生的幾何形在交匯出是重疊的,并且這些交匯的曲線段不允許進行復雜的混合。本文的方法對重疊的部分通過比較用一個大的包圍四邊形進行合并,這個大的四邊形中的每個像素點將投影到每個重疊的河流河段,經(jīng)比較,如果投影點位于多個河流段的重疊交匯處,則使用基于到這些段的距離的插值方法最終的渲染結(jié)果,如圖5是河流交匯處的渲染效果。
三角形相交測試算法改進前后的比較如圖6所示,取三角形個數(shù)分別為512、1 024、2 048、4 096,經(jīng)實驗比較,隨著三角形數(shù)目的不斷增多,改進后的三角形相交測試算法具有更快的運行速度、性能優(yōu)于改進前的算法。
圖6 三角形相交測試算法改進前后的對比
4結(jié)論
本文提出了一種改進的Bézier曲線和法向貼圖的三維河流仿真方法,使用Bézier曲線描述河流的形態(tài),采用四邊形劃分河流河段,便于繪制復雜的河流河網(wǎng)和實現(xiàn)紋理貼圖,通過像素投射到Bézier曲線上執(zhí)行渲染,使用GPU實現(xiàn)并行計算和渲染效果的實現(xiàn)。通過改進的快速三角形相交測試算法在保證渲染逼真的可視化效果的同時,有效的提高了系統(tǒng)的運行速度,能滿足復雜河流河網(wǎng)實時仿真的需求。
參考文獻:
[1]張尚弘, 易雨君, 王興奎. 流域虛擬仿真模擬[M]. 北京: 科學出版社, 2011.
[2]馬駿, 朱衡君, 龔建華. 基于Cg和OpenGL的實時水面環(huán)境模擬[J]. 系統(tǒng)仿真學報, 2006, 18(2): 395- 400.
[3]葉海建, 劉旭東, 羅輝. 南水北調(diào)視景仿真系統(tǒng)中動態(tài)水環(huán)境的模擬[J]. 中國農(nóng)業(yè)大學學報, 2003, 8(4): 58- 62.
[4]YUQ,NEYRETF,BRUNETONE,etal.Scalablereal-timeanimationofrivers[C]//ComputerGraphicsForum.BlackwellPublishingLtd., 2009, 28(2): 239- 248.
[5]冉劍, 丁瑩. 基于Poisson圓盤分布的河流仿真技術(shù)[J]. 北京航空航天大學學報, 2012, 38(12): 1649- 1652.
[6]VanWIJKJJ.Imagebasedflowvisualization[C]//ACMTransactionsonGraphics(TOG).ACM, 2002, 21(3): 745- 754.
[7]HENDRICKXQ,SMELIKR,BIDARRAR.Real-timerenderingofrivernetworks[C]//Proceedingsofthe2010ACMSIGGRAPHSymposiumonInteractive3DGraphicsandGames.NewYork:ACM. 2010.
[8]GUIGUEP,DEVILLERSO.Fastandrobusttriangle-triangleoverlaptestusingorientationpredicates[J].Journalofgraphicstools, 2003, 8(1): 25- 32.
[9]許強, 呂曉峰, 馬登武. 三角形和三角形相交測試技術(shù)研究[J]. 計算機仿真, 2006, 23(08): 76- 78, 145.
[10]武紅玉, 趙秋宇. 三角形與三角形相交測試的改進算法[J]. 許昌學院學報, 2012(2): 29- 32.
[11]張少麗, 王毅剛, 邊浩. 一種提高三角網(wǎng)格模型求交效率的算法[J]. 計算機工程, 2010, 36(17): 213- 215.
(責任編輯王琪)
收稿日期:2015- 05- 28
基金項目:河南省高等學校重點科研項目(15B520009);河南省科技廳重點科技攻關(guān)(152102210320);河南省教育技術(shù)裝備與實踐教育研究重點項目(GZS026);河南省牧業(yè)經(jīng)濟學院科技創(chuàng)新團隊(HUAHE2015006)
作者簡介:潘立武(1971—),男,河南杞縣人,系統(tǒng)分析師,博士,研究方向為系統(tǒng)集成、軟件開發(fā)、嵌入式等.
中圖分類號:TP391.9
文獻標識碼:A
文章編號:0559- 9342(2016)04- 0086- 04
ResearchofThree-dimensionalRiverSimulationBasedonBézierCurve
PANLiwu,ZHUKunhua,WUHuiling
(HenanUniversityofAnimalHusbandry&Economy,Zhengzhou450011,Henan,China)
Abstract:The simulation of rivers and lakes with large scale and scope water is a challenge, especially for three-dimensional river simulation with complex river network. Focusing on complex river simulation with multiple junctions of river network, an improved three-dimensional real-time river simulation method is proposed based on Bézier curves and normal map of river flows according to Hendrickx’ research results. However, the original method presented by Hendrickx uses a simple and violence comparison method for intersection detection of triangle river networks. A fast triangulation-intersection-detection method is employed herein to improve the rendering speed of river, and meanwhile, the rendering of river water is realized by using GPU technology. The result of simulation shows that the rendering and running efficiency has a significantly improvement.
Key Words:Bézier curve; river simulation; triangles intersect; normal map; three-dimensional simulation