楊剛
(陜西理工學(xué)院數(shù)學(xué)與計算機科學(xué)學(xué)院,漢中 723000)
地形,可以說是自然界最復(fù)雜的景物.因此,三維真實感地形的繪制一直是國內(nèi)外計算機圖形學(xué)領(lǐng)域關(guān)注的熱點[1].三維真實感地形圖能逼真地反映外部外部真實世界,它具有許多優(yōu)點如:可視化程度高、實用方便、存儲和查詢方便、可實時生成等.三維地形的模擬是開發(fā)可視系統(tǒng)中最基本也是最重要的技術(shù)之一.本文主要敘述三維地形可視化研究的現(xiàn)狀、趨勢及其此類系統(tǒng)開發(fā)的常用工具等.
早期,最簡單的地形仿真方法是由稀疏分布點的高程值構(gòu)成一些簡單的三角形平面,從而形成地形框架,并貼以紋理圖像.這種方法的顯示速度很快,但基本框架過于簡略,且有較強的卡通效果,因此地景的真實感受到影響[2].后來,三維地形生成也采用計算幾何方法,即利用一些常用的參數(shù)曲面,如Bezier曲面、B樣條曲面,通過插值、擬合生成所需要的三維地形.該方法不僅計算復(fù)雜、計算量大,且生成的物體一般具有光滑的表面、規(guī)則的形狀.但是,自然地形是粗糙的、不規(guī)則的,用這種方法無法生成令人滿意的、真實感效果好的自然地形.
目前,實際應(yīng)用中使用最多的方法是基于數(shù)字地形模型DTM(Digital Terrain Model)生成技術(shù).DTM數(shù)據(jù)是由規(guī)則網(wǎng)格地形圖上采樣所得的高程值組成,與飛機或衛(wèi)星上所拍攝的遙感紋理圖像相對應(yīng),這些紋理圖像在地形重構(gòu)時被影射到相應(yīng)的位置便得到逼真的地形圖.但這種算法的效率很低,因為這種算法在渲染時需將遙感獲得的紋理圖像以最高分辨率影射到對應(yīng)的多邊形,而多邊形和遙感圖像紋理像素的數(shù)量非常大,因此如果用DTM直接生成地形,對硬件要求非常高,需要對DTM數(shù)據(jù)進行一些簡化.數(shù)字地形模型中地形屬性為高程時稱為數(shù)字高程模型DEM(Digital Elevation Model),DEM是建立DTM的基礎(chǔ)數(shù)據(jù).DEM通常用地表規(guī)則網(wǎng)格單元構(gòu)成的高程矩陣表示,廣義的DEM還包括等高線、三角網(wǎng)等所有表達地面高程的數(shù)字表示.
(1)規(guī)則網(wǎng)格模型[3].規(guī)則網(wǎng)格,通常是指正方形、矩形、三角形等規(guī)則網(wǎng)格.規(guī)則網(wǎng)格將區(qū)域空間切分為規(guī)則的網(wǎng)格單元,每個網(wǎng)格單元對應(yīng)一個數(shù)值.數(shù)學(xué)上可以表示為一個矩陣,在計算機實現(xiàn)中則是一個二維數(shù)組.每個網(wǎng)格單元或數(shù)組的一個元素,對應(yīng)一個高程值.任何不是網(wǎng)格中心的數(shù)據(jù)點的高程值都可采用其周圍4個中心點的高程值的距離加權(quán)平均方法進行計算.
(2)等高線模型.等高線模型表示高程、高程值的集合是已知的,每一條等高線對應(yīng)一個已知的高程值,這樣一系列等高線集合和它們的高程值一起就構(gòu)成了一種地面高程模型.等高線通??捎枚S的鏈表來存儲,另外的一種方法是用圖來表示等高線的拓撲關(guān)系.這類圖可以改造成一種無圈的自由樹.圖1為一個等高線圖和它相應(yīng)的自由樹.
(3)不規(guī)則三角網(wǎng)(TIN)模型.不規(guī)則三角網(wǎng)TIN(Triangulated Irregular Network)是另外一種表示數(shù)字高程模型的方法,它既減少規(guī)則網(wǎng)格方法帶來的數(shù)據(jù)冗余;同時,在計算效率方面又優(yōu)于純粹基于等高線的方法.圖2是用不規(guī)則三角網(wǎng)生成的地形.
多年以來,人們對地形的生成從不同角度或利用不同的算法做出了大量的工作,也取得了許多成就.
圖1 地形的等高線圖和它所對應(yīng)的自由樹
圖2 用TIN模型生成的地形
國外在三維地形方面研究的比較早,Lindstrom等于1996年,首次針對Gird提出了多分辨率地形模型實時繪制算法[4],他的算法采用四叉樹結(jié)構(gòu),自底向上遞歸合并三角形直到屏幕投影誤差超出閾值,得到最終的地形LOD(Level of Detail)模型.其算法思想為以后一系列地形LOD模型算法打下了基礎(chǔ).2001年,Lindstrom等又提出了基于外存(out-of-core)的大規(guī)模地形可視化技術(shù)[5],使地形數(shù)據(jù)在自頂向下細分的過程中安排數(shù)據(jù)在內(nèi)、外存中調(diào)度.2002年,他又提出的SOAR(Stateless One-pass Adaptive Refinement)算法,類似于先前的幾種方法,在規(guī)則網(wǎng)格上采用基于視點的最長邊剖分方法,自頂向下逐步求精,每一幀均采用相同的步驟,并且把三角形條帶化、視區(qū)裁剪以及幾何過渡都集中在這一步驟,使得執(zhí)行起來更為方便.此外,Heckbert提出的一種通用的多分辨率LOD地景選擇方法、Eck提出的一種通用不規(guī)則網(wǎng)格表面細分方法[6]以及Staadt提出的一種基于小波分析的地形LOD層次細節(jié)模型生成方法[7].Luebke采用分級動態(tài)簡化法(HDS),并用視相關(guān)方法來對大的多邊形場景進行自適應(yīng)的簡化,HDS通過頂點對收縮操作建立的頂點層次樹結(jié)構(gòu)稱為頂點樹,這種頂點樹提供了一種整個場景的連續(xù)LOD表示方法.實時繪制時,HDS遍歷頂點樹,對場景中任何有效的多邊形進行繪制,并通過有效多邊形來確定屏幕空間誤差門限、輪廓邊界和三角形概算等.這些算法和技術(shù)在某種程度上,極大地促進了地形可視化領(lǐng)域的發(fā)展.總之,國外對地形可視化的研究比較早,取得的成果比較豐富,這里不再贅述.
國內(nèi)學(xué)者對地形的可視化研究比較晚,但近年來發(fā)展比較迅速,取得諸多成就.如涂超、毋河海、王新生發(fā)表了論文[8]:大規(guī)模地形快速渲染算法的研究,文中主要對原有的算法進行改進,目的在于減少繪制的三角形數(shù)量、處理的時間,以及合理地組織數(shù)據(jù);李鳳霞、王尚洋、黃都培發(fā)表的論文:大規(guī)模地形模型的多分辨率顯示技術(shù)研究,提出了一種基于塊的大地形模型多分辨率顯示技術(shù),用此技術(shù)生成的地形如圖3所示;武玉國、杜瑩、王曉明等發(fā)表的論文[9]:大規(guī)模地形TIN模型的LOD算法設(shè)計與實現(xiàn),主要利用LOD細節(jié)分層思想提出了一種地形TIN模型,重點解決不同分辨率TIN模型間的連續(xù)過渡問題;趙友兵、石教英、周驥等發(fā)表的論文:一種大規(guī)模地形的快速漫游算法,通過地形分塊和視見體投影三角形掃描算法實現(xiàn)快速裁剪,通過調(diào)整頂點的高度值消除裂縫,通過基于三角形的四叉分割實現(xiàn)連續(xù)細節(jié)層次地形簡化,簡化了算法實現(xiàn),提高了算法效率.除此之外,有些研究是主要針對提高三維模擬地形的真實感而展開的.例如:張繼賢等提出的利用小波進行多尺度地形的生成方法;另一類方法則注重根據(jù)地學(xué)圖形數(shù)據(jù)的精確描述,來進行真實地形的仿真,如薛安等提出的基于OpenGL實現(xiàn)真實感地形表現(xiàn)的研究.
圖3 用多分辨率模型生成的地形
近年來,通過增強預(yù)處理功能等手段,研究人員發(fā)展了很多減輕CPU實時計算負擔、充分利用GPU計算和繪制能力的算法[10].通過這些算法可以減輕CPU在地形模擬中的計算負擔,但GPU技術(shù)的發(fā)展推動了人們對更高質(zhì)量渲染畫面的追求,同時也受到了CPU計算能力的制約.這些緣由加上兩者之間的性能差距還在不斷擴大等因素,促使地形繪制領(lǐng)域的研究人員開始重新審視傳統(tǒng)的單純按照頂點最少原則設(shè)計的地形繪制算法.在這種背景下,以簡化地形網(wǎng)格和減少CPU計算負擔為雙重目標的GPU友好型算法成為一個的研究熱點.然而,有許多應(yīng)用并不需要針對某個特定地區(qū)的真實地形數(shù)據(jù)來進行仿真,而是希望可以靈活地生成不同特征的地形,以滿足不同的要求,或者是為了保證整個虛擬環(huán)境的真實感,需要臨時增加一個具有良好視覺效果的地形作為輔助環(huán)境建模,這時如果仍然采用基于DTM數(shù)據(jù)的地形生成方法顯得并不經(jīng)濟適用,但應(yīng)用分形技術(shù)生成地形可以解決這一問題,利用分形技術(shù)可以用盡量少的數(shù)據(jù)量來實現(xiàn)具有真實感虛擬地形的生成.
分形幾何是Mandelbort于1957年造出的一個名詞,分形幾何關(guān)注的是物體的隨機性、奇異性和復(fù)雜性,它試圖透過混亂現(xiàn)象和不規(guī)則構(gòu)型揭示隱藏在背后的局部與整體的本質(zhì)聯(lián)系和運動規(guī)律[11].分形幾何具有細節(jié)無限,以及統(tǒng)計自相似性的典型特性,它用遞歸算法使復(fù)雜的景物可用簡單的規(guī)則來生成,在現(xiàn)代的計算機圖形學(xué)中,分形幾何在對自然現(xiàn)象的真實繪制和建模方面起著重要作用.
分形布朗運動FBM(Fractional Brownian Motion)可用來模擬地形,許多分形地景建模方法都與這一數(shù)學(xué)模型有關(guān).分形布朗運動是現(xiàn)代非線性時序分析中的重要隨機過程,它能有效地表達自然界中許多非線性現(xiàn)象,也是迄今為止能夠描述真實地形的最好的隨機過程[12].FBM有多種不同的實現(xiàn)方法,根據(jù)實現(xiàn)方法的不同,F(xiàn)BM生成算法可細分為泊松階躍法、傅立葉濾波法、中點位移法、逐次隨機增加法和帶限噪聲累積法等.分形布朗運動的幾個實現(xiàn)方法中,中點位移法是標準的分形幾何法,時間復(fù)雜度僅是n的線性次項,可用作快速地景生成.它是利用細分過程中,在兩個點或多個點之間進行插值的方法來進行地景建模,因此中點位移法產(chǎn)生了真正的分形地表.但不同細分階段產(chǎn)生的點在相鄰區(qū)域中有不同的統(tǒng)計特性,這常會產(chǎn)生所謂的“折痕問題”.另外,由于這種算法地形的高程值是隨機產(chǎn)生的,生成的山脈地形形狀無法預(yù)測和控制.雖然中點位移法有這樣的缺陷,但因其實現(xiàn)非常容易,代碼簡單,可遞歸進行;可以合成任意分辨率地形;圖像對于放大縮小具有不變性.因此,此法已經(jīng)成為計算機模擬中一個有代表性的方法.
當前,關(guān)于三維地形生成的系統(tǒng)多在Visual C++開發(fā)環(huán)境下進行的,采用的圖形庫是OpenGL或Direct3D,但以O(shè)penGL為主.OpenGL是一個開放的圖形硬件的軟件接口,是SGI公司于1972年7月首次發(fā)布的作為三維圖形編程的接口,目前已成為國際上通用的開放式三維圖形標準[13].它集成了所有曲面造型、圖形變換、光照、材質(zhì)、紋理、像素操作、融合、反走樣、霧化等復(fù)雜的計算機圖形學(xué)算法,開發(fā)人員可利用這些函數(shù)對整個三維圖形輕松進行渲染,達到數(shù)字化現(xiàn)實生活景象的目的.
在Visual C++開發(fā)環(huán)境下進行OpenGL編程,就是要把OpenGL命令函數(shù)融入到Visual C++程序的事件機制之中,使之與程序的其它部分結(jié)合成一個整體.此類可視化系統(tǒng)的開發(fā)框架有:glut框架、Win 32 Application、Win 32 Console Application、基于MFC的OpenGL程序框架(具體又可以細分:基于對話框、基于單文檔、基于多文檔)等.
由上述可以看出地形可視化研究發(fā)展的趨勢如下:①對原算法進行改進,減少繪制數(shù)據(jù)的數(shù)量,進而提高繪制速度;②對改進算法或原算法產(chǎn)生的某些視覺效果缺陷進行修正、補償,從而得到更好的繪制效果;③對三維真實感地形生成的真實性進行研究,從而提高其真實感;④發(fā)展簡化地形網(wǎng)格和減少CPU計算負擔的GPU友好型算法.
除了前面提及的地形模擬研究的幾個發(fā)展趨勢外,地形的可控性(或可修改性)的研究也是一個熱點.在地形的可控性研究中多采用分形算法生成的地形.目前來說,針對可控性這個方向的研究較少,雖然康曉清等提出過基于融合曲面造型方法的預(yù)定形狀山脈地形生成,許社教等提出過基于散亂點網(wǎng)格化的可控地形圖技術(shù),但這些研究并不能徹底的解決分形地形不可控制和預(yù)測的缺點,如何將地形生成的真實感和可控性很好地結(jié)合是地形研究的另一個發(fā)展趨勢.
地形可視化研究的內(nèi)容十分豐富,如數(shù)字地形模型研究、地形的簡化、相關(guān)算法的改進、地形多分辨率模型的建立或改進、地形真實感的研究、GPU友好型算法研究、可控性地形研究、空間數(shù)據(jù)結(jié)構(gòu)的研究等.經(jīng)過人們多年不斷的努力,取得了許多可喜成果.但本領(lǐng)域仍然有一些遺留問題值得人們繼續(xù)研究和探索,如漫游地形的實時性顯示、地形數(shù)據(jù)壓縮、可控地形的研究問題等.
[1]和平鴿工作室.OpenGL高級編程與可視化系統(tǒng)開發(fā)高級編程篇(第二版)[M].北京:中國水利水電出版社,2006:140-141.
[2]范乃梅,熊 坤.基于OpenGL的三維地形的生成與簡化[J].鄭州輕工業(yè)學(xué)院學(xué)報(自然科學(xué)版),2006,21(3):84-87.
[3]高 穎,黃羅軍,許志國,黃建國.飛行模擬用三維數(shù)字地形動態(tài)修改技術(shù)研究[J].西北工業(yè)大學(xué)學(xué)報,2006,24(6):721-725.
[4]Lindstrom P,Koller D.Real-time,continuous level of detail rendering of height fields[A].In:Proceedings of SIGGRA PH’96[C],Held in New Orleans,Louisiana,August 1996.
[5]Peter Lindstrom,Valeiro Pascucci.Visualization of Large Terrains Made Easy[A].In:Proceedings of IEEE Visualization’2001 Conference[C],Held in Sen Diego California,October.2001.
[6]EckM,DeRose T,Duchamp Tetal.Multireso lution analysis of arbitrary meshes.In:Proceedings of SIGGRAPH’95[C],Held in Los Angles,California,August 1995.
[7]Staadt O,Gross M,Gatti R.Fast multiresolution surface meshing[A].In:Proceedings of IEEE Visualization’95 Conference[C],Held in Atlanta Georgia,October 1995.
[8]涂 超,毋河海,王新生.大規(guī)模地形快速渲染算法的研究[J].昆明理工大學(xué)學(xué)報,2002,27(1):1-5.
[9]武玉國,杜 瑩,王曉明,游 雄.大規(guī)模地形TIN模型的LOD算法設(shè)計與實現(xiàn)[J].系統(tǒng)仿真學(xué)報,2005,17(3):665-669.
[10]黃爭舸.虛擬自然場景建模和可視化的若干問題研究[D].杭州:浙江大學(xué),2000.
[11]高秀榮.基于FBM的可控性真實感地形的生成方法研究[D].青島:中國海洋大學(xué),2007.
[12]李慶忠,高秀榮.三維可控真實感地形生成方法研究[J].系統(tǒng)仿真學(xué)報,2008,20(11):2938-2941.
[13]李權(quán)國,劉鴻福.OpenGL在三維地形模型中的應(yīng)用[J].太原理工大學(xué)學(xué)報,2004,35(1):36-38.