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