專利名稱:基于平行空間的光線投射高度場(chǎng)可視化方法
技術(shù)領(lǐng)域:
本發(fā)明屬于高度場(chǎng)可視化(渲染)技術(shù),特別是一種基于平行空間的光線投射高度場(chǎng)可視化方法。
背景技術(shù):
高度場(chǎng)可視化(渲染)技術(shù)在地理信息系統(tǒng)、飛行模擬,游戲、影視等工業(yè)領(lǐng)域中有廣泛的應(yīng)用價(jià)值。按照目前的技術(shù),可以將高度場(chǎng)可視化分為兩類基于光柵化的方法和基于光線投射的方法?;诠鈻呕姆椒?,是通過(guò)將代表高度場(chǎng)的數(shù)字高程模型(DEM)數(shù)據(jù)轉(zhuǎn)化為三角形網(wǎng)格,然后通過(guò)某些簡(jiǎn)化準(zhǔn)則來(lái)減少三角形網(wǎng)格中三角形數(shù)目,最后將簡(jiǎn)化的三角形網(wǎng)格發(fā)送到圖形顯卡進(jìn)行渲染。這種方法的一個(gè)缺點(diǎn)就是對(duì)低分辨率高度場(chǎng)效率較高,高分辨率高度場(chǎng)速度明顯下降,另一個(gè)缺點(diǎn)是該方法多使用屏幕誤差容忍來(lái)簡(jiǎn)化三角形網(wǎng)格數(shù)目(I M. Duchaineau, M. ffolinsky, D. E. Sigeti, M. C. Miller, C. Aldrich, and Μ. B. Mineev-weinstein. ROAMing terrain: Real-time optimally adapting meshes. In Proceedings of IEEE Visualization, pages 81-88,1997.),因此得到的圖像多為近似的圖像(F. Losasso and H. Hoppe. Geometry clipmaps: Terrain rendering using nested regular grids. In Proceedings of ACM SIGGRAPHj pages 769 - 776,2004.), 精度不高,而提高精度往往會(huì)大大的降低執(zhí)行的效率?;诠饩€投射的技術(shù)是通過(guò)以視點(diǎn)位置向屏幕上每一個(gè)像素處投射一條光線,然后對(duì)這條光線使用迭代的方式來(lái)查找其與高度場(chǎng)的交點(diǎn),獲取交點(diǎn)處對(duì)應(yīng)的紋理坐標(biāo)來(lái)得到最終的圖像。這種方法的缺點(diǎn)就是對(duì)于解析率較低的數(shù)據(jù)來(lái)說(shuō),它的效率要低于基于光柵化方法,但是,它的一個(gè)重要的優(yōu)點(diǎn)就是由于這種方法是通過(guò)對(duì)屏幕上每一個(gè)像素進(jìn)行光線投射,很容易實(shí)現(xiàn)像素精度小于I像素的值染(無(wú)視覺(jué)誤差)(I. C. Dick, J. Kr ** uge, and R. Westerman. GPU ray-casting for scalable terrain rendering. In Proceedings of EUROGRAPHICS (Area Paper), 2009.
2.Jianxin Luo.,Guiqiang Ni.,Jinsong Jiang.,Yifeng Duan.,Guyu Hu. : Quad—tree atlas ray casting:a gpu based framework for terrain visualization and its applications. In Proceedings of The 24th International Conference on Computer Animation and Social Agents ( CASA 2011).),因此具有很高的圖像精度。按照渲染的域來(lái)分,高度場(chǎng)可視化方法也可以分為兩類平面高度場(chǎng)可視化與球形高度場(chǎng)可視化。平面高度場(chǎng)可視化方法使用平面高度場(chǎng)數(shù)據(jù)作為輸入,最終顯示的結(jié)果是在平面上。球形高度場(chǎng)的可視化方法是使用球形的數(shù)據(jù)作為輸入,最終顯示的結(jié)果是在球形域上面。由于在平面上進(jìn)行高度場(chǎng)可視化比較容易,現(xiàn)有的絕大多數(shù)的方法都是平面高度場(chǎng)可視化的方法。而在球面上進(jìn)行高度場(chǎng)可視化非常難,至今這個(gè)問(wèn)題仍然屬于一種沒(méi)有很好解決的狀態(tài),僅有的方法也都是使用基于光柵化的技術(shù)(I. Cignoni P., Ganovelli F.,Gobbetti E.,Marton F.,Ponchio F.,Scopigno R. : Planet-sized batched dynamic adaptive meshes (PBDAM). In Proceedings of IEEE Visualization(2003), pp. 147 - 155. 2 . Clasen M. , Hege H. : Terrain rendering using spherical clipmaps. In Proceedings of Eurographics/ IEEE-VGTC Symposium on Visualization (2006).),當(dāng)前尚未有基于光線投射的技術(shù)來(lái)實(shí)現(xiàn)球形高度場(chǎng)可視化的方法。
發(fā)明內(nèi)容
本發(fā)明的目的在于針對(duì)球形場(chǎng)景數(shù)據(jù)集,提供一種基于平行空間的光線投射高度場(chǎng)可視化方法,從而實(shí)現(xiàn)快速、高精度的高度場(chǎng)渲染,并獲得高質(zhì)量的圖像。實(shí)現(xiàn)本發(fā)明目的的技術(shù)解決方案為一種基于平行空間的光線投射高度場(chǎng)可視化方法,包括以下步驟
第一步,對(duì)四叉樹節(jié)點(diǎn)進(jìn)行截椎裁剪,挑選出可見(jiàn)四叉樹節(jié)點(diǎn),根據(jù)可見(jiàn)的四叉樹節(jié)點(diǎn),將硬盤上相應(yīng)的高度場(chǎng)數(shù)據(jù)塊讀取到內(nèi)存中,用戶在加載完高度場(chǎng)數(shù)據(jù)塊后構(gòu)建高度場(chǎng)塊邊界盒;
第二步,在構(gòu)建了高度場(chǎng)塊邊界盒以后,對(duì)高度場(chǎng)塊進(jìn)行渲染,具體如下
(O開啟顯卡的深度測(cè)試與前向面裁剪,然后渲染高度場(chǎng)塊邊界盒,得到邊界盒的背面,將邊界盒背面的參數(shù)坐標(biāo) (β’φΜ按照RGB的方式存儲(chǔ)到幀緩存中;
(2)開啟顯卡的深度測(cè)試與背向面裁剪,然后渲染邊界盒,得到邊界盒的正面,將邊界盒前面的參數(shù)坐標(biāo)(民識(shí)幻按照RGB的方式存儲(chǔ)到幀緩存中;
第三步,在片段著色器上面,以硬件插值的世界坐標(biāo)為當(dāng)前光線的起點(diǎn)位置,然后使用當(dāng)前片段的屏幕空間坐標(biāo)采樣背面緩存獲取光線結(jié)束位置坐標(biāo),通過(guò)獲取的開始與結(jié)束位置進(jìn)行并行空間光線跟蹤。本發(fā)明與現(xiàn)有技術(shù)相比,其具有顯著優(yōu)點(diǎn)一是具有極高的渲染速率。二是具有很高的圖像渲染質(zhì)量。圖4和圖5給出了在CPU為Intel (R) Core (TM) i7 950 (3.07GHz), 3GB內(nèi)存,顯卡為Nvidia Geforce GTX 570,2GB顯存的機(jī)器上進(jìn)行的對(duì)比試驗(yàn)結(jié)果,視口大小設(shè)置為1920*1680。本發(fā)明使用I像素屏幕誤差,PBDAM為2屏幕像素誤差,SCM算法本身沒(méi)有誤差控制。從圖4中可以看出[PSRC代表本發(fā)明的方法,平行空間空間光線投射算法(Parallel Space Ray Casting)。SCM :Spherical Clipmaps (Clasen 等,2006 年)。 PBDAM :Planet_sized batched dynamic adaptive meshes (Cignoni 2003)],本發(fā)明具有極高的精度和速度,在更小的誤差中(I像素)可以獲得平均73. 25fps的速率;而PBDAM 不僅誤差大(2像素),速率卻更低(48. 05fps) ;SCM方法盡管也能取得平均72. 22fps的速率,但是它的速率極不穩(wěn)定,速率下降的極快,而且該算法沒(méi)有給出誤差控制策略,因此,圖像質(zhì)量低。從圖5中可以看出[a):本發(fā)明的方法。b) PBDAM (Cignoni等,2003年)。c) Spherical Clipmaps (Clasen等,2006年)。],即使在試點(diǎn)很遠(yuǎn)的地方,本發(fā)明算法都可渲染出更多的細(xì)節(jié),因此具有極高的圖像質(zhì)量。下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)描述。
圖I是本發(fā)明的球形邊界盒計(jì)算方法。
圖2是本發(fā)明的兩遍邊界盒渲染算法。圖3是本發(fā)明方法的并行空間光線迭代算法的流程圖。圖4是本發(fā)明與同類算法性能比較示意圖。圖5是本發(fā)明與同類算法圖像質(zhì)量比較示意圖。
具體實(shí)施例方式高度場(chǎng)可視化中多使用二叉樹或是四叉樹結(jié)構(gòu)來(lái)管理高度場(chǎng)塊,本發(fā)明基于平行空間的光線投射高度場(chǎng)可視化方法使用的是四叉樹結(jié)構(gòu),包括以下步驟
第一步,對(duì)四叉樹節(jié)點(diǎn)進(jìn)行截椎裁剪,挑選出可見(jiàn)四叉樹節(jié)點(diǎn)(截椎裁剪為圖形學(xué)中基礎(chǔ)算法,可以在圖形編程的書中找到),根據(jù)可見(jiàn)的四叉樹節(jié)點(diǎn),將磁盤上的相應(yīng)的高度場(chǎng)數(shù)據(jù)塊讀取到內(nèi)存中。用戶程序在加載完高度場(chǎng)數(shù)據(jù)塊后,需要構(gòu)建邊界盒,過(guò)程見(jiàn)下一
止 /J/ O圖Ia顯示了一個(gè)球形的高度場(chǎng)塊AB,圖Ib圖形學(xué)中現(xiàn)有邊界盒計(jì)算方法,圖Ic 為本發(fā)明計(jì)算方法?,F(xiàn)有的圖形學(xué)中邊界盒計(jì)算方法多使用AABB邊界盒(如圖Ib所示), 這種方法對(duì)于球形地形來(lái)說(shuō)邊界盒過(guò)大,如光線從C到I的行進(jìn)距離Cl過(guò)長(zhǎng),算法迭代中將耗費(fèi)很長(zhǎng)時(shí)間。本發(fā)明使用如圖Ic所示的方法來(lái)構(gòu)建邊界盒,可以大大縮短光線行進(jìn)距離Cl的長(zhǎng)度(見(jiàn)圖lc),從而加速迭代,該邊界盒的構(gòu)建使用如下公式
d = CR + max H) /(cos γ)- R(I)
其中,d為邊界地面到邊界盒頂部高度,R為地球的半徑,maxH為當(dāng)前高度場(chǎng)塊的最大高度值,7為當(dāng)前高度場(chǎng)塊經(jīng)度或緯度角的一半(如圖lc)。第二步,在構(gòu)建了高度場(chǎng)塊邊界盒以后,就可以對(duì)高度場(chǎng)塊進(jìn)行渲染了,這里本發(fā)明提出一個(gè)快速完全運(yùn)行于GPU上兩遍渲染方法,圖2顯示該兩遍渲染方法的過(guò)程,具體如下
(O開啟顯卡的深度測(cè)試與前向面裁剪(設(shè)置相應(yīng)的OpenGL標(biāo)志位),然后渲染邊界盒 (由于前向面被裁剪掉,該步驟渲染得到邊界盒的背面,圖2a中的粗實(shí)線部分),將邊界盒背面的參數(shù)坐標(biāo)(氏識(shí)幻按照RGB的方式存儲(chǔ)到幀緩存中。(2)開啟顯卡的深度測(cè)試與背向面裁剪(設(shè)置相應(yīng)的OpenGL標(biāo)志位),然后渲染邊界盒(由于背向面被裁剪掉,該步驟渲染得到邊界盒的正面,圖2b中粗實(shí)線部分),將邊界盒前面的參數(shù)坐標(biāo)(民識(shí)A)按照RGB的方式存儲(chǔ)到幀緩存中。第三步,在片段著色器上面,以硬件插值的世界坐標(biāo)為當(dāng)前光線的起點(diǎn)位置;然后使用當(dāng)前片段的屏幕空間坐標(biāo)采樣背面緩存獲取光線結(jié)束位置坐標(biāo)。通過(guò)獲取的開始與結(jié)束位置進(jìn)行光線跟蹤。這里使用本發(fā)明提出的并行空間光線跟蹤算法。圖3為本發(fā)明并行空間光線跟蹤算法的計(jì)算過(guò)程,其具體如下。如圖3所示,以下步驟中,使用StartAO代表光線的起點(diǎn)位置的對(duì)象空間坐標(biāo),用 StartAP代表光線起點(diǎn)位置的參數(shù)空間坐標(biāo),用EndBO代表光線結(jié)束位置的對(duì)象空間坐標(biāo), 用EndBP代表光線結(jié)束位置的參數(shù)空間坐標(biāo),用IterBO代表當(dāng)前光線迭代位置的對(duì)象空間坐標(biāo),用IterBP代表光線當(dāng)前迭代位置的參數(shù)空間坐標(biāo)。I)計(jì)算迭代步驟數(shù)StepNum,并對(duì)光線進(jìn)行StepNum步迭代。迭代步驟計(jì)算使用
權(quán)利要求
1.一種基于平行空間的光線投射高度場(chǎng)可視化方法,其特征在于包括以下步驟 第一步,對(duì)四叉樹節(jié)點(diǎn)進(jìn)行截椎裁剪,挑選出可見(jiàn)四叉樹節(jié)點(diǎn),根據(jù)可見(jiàn)的四叉樹節(jié)點(diǎn),將硬盤上相應(yīng)的高度場(chǎng)數(shù)據(jù)塊讀取到內(nèi)存中,用戶在加載完高度場(chǎng)數(shù)據(jù)塊后構(gòu)建高度場(chǎng)塊邊界盒;第二步,在構(gòu)建了高度場(chǎng)塊邊界盒以后,對(duì)高度場(chǎng)塊進(jìn)行渲染,具體如下(O開啟顯卡的深度測(cè)試與前向面裁剪,然后渲染高度場(chǎng)塊邊界盒,得到邊界盒的背面,將邊界盒背面的參數(shù)坐標(biāo) Ψ崩按照RGB的方式存儲(chǔ)到幀緩存中;(2)開啟顯卡的深度測(cè)試與背向面裁剪,然后渲染邊界盒,得到邊界盒的正面,將邊界盒前面的參數(shù)坐標(biāo)(民¢5 按照RGB的方式存儲(chǔ)到幀緩存中;第三步,在片段著色器上面,以硬件插值的世界坐標(biāo)為當(dāng)前光線的起點(diǎn)位置,然后使用當(dāng)前片段的屏幕空間坐標(biāo)采樣背面緩存獲取光線結(jié)束位置坐標(biāo),通過(guò)獲取的開始與結(jié)束位置進(jìn)行并行空間光線跟蹤。
2.根據(jù)權(quán)利要求I所述的基于平行空間的光線投射高度場(chǎng)可視化方法,其特征在于通過(guò)如下公式構(gòu)建高度場(chǎng)塊邊界盒d -(R + max H.) /(cos γ)- R(I)其中,d為邊界地面到邊界盒頂部高度,R為地球的半徑,maxH為當(dāng)前高度場(chǎng)塊的最大高度值,7為當(dāng)前高度場(chǎng)塊經(jīng)度或緯度角的一半。
3.根據(jù)權(quán)利要求I所述的基于平行空間的光線投射高度場(chǎng)可視化方法,其特征在于并行空間光線跟蹤的步驟如下1)計(jì)算迭代步驟數(shù)StepNum,并對(duì)光線進(jìn)行StepNum步迭代,迭代步驟計(jì)算使用如下公式
全文摘要
本發(fā)明公開了一種基于平行空間的光線投射高度場(chǎng)可視化方法,對(duì)四叉樹節(jié)點(diǎn)進(jìn)行截椎裁剪,挑選出可見(jiàn)四叉樹節(jié)點(diǎn),根據(jù)可見(jiàn)的四叉樹節(jié)點(diǎn),將硬盤上相應(yīng)的高度場(chǎng)數(shù)據(jù)塊讀取到內(nèi)存中,用戶在加載完高度場(chǎng)數(shù)據(jù)塊后構(gòu)建高度場(chǎng)塊邊界盒;在構(gòu)建了高度場(chǎng)塊邊界盒以后,對(duì)高度場(chǎng)塊進(jìn)行渲染;在片段著色器上面,以硬件插值的世界坐標(biāo)為當(dāng)前光線的起點(diǎn)位置,然后使用當(dāng)前片段的屏幕空間坐標(biāo)采樣背面緩存獲取光線結(jié)束位置坐標(biāo),通過(guò)獲取的開始與結(jié)束位置進(jìn)行并行空間光線跟蹤。本發(fā)明具有極高的渲染速率;具有很高的圖像渲染質(zhì)量。
文檔編號(hào)G06T17/05GK102592312SQ201110447398
公開日2012年7月18日 申請(qǐng)日期2011年12月28日 優(yōu)先權(quán)日2011年12月28日
發(fā)明者倪桂強(qiáng), 羅健欣, 胡谷雨 申請(qǐng)人:中國(guó)人民解放軍理工大學(xué)