三維可視化中的地形建模與實現技術研究
1? 引言
20世紀60年代以后,地形可視化的概念隨著地理信息系統的出現而逐漸形成。隨后以地形地貌為研究重點的地形三維可視化技術在地理信息系統(GIs)、虛擬現實(VR)戰場環境仿真、娛樂游戲、地形的穿越飛行({1yin hr0ugh)土地管理與利用、水文氣象數據可視化等多個領域得到了廣泛的應用,越來越受到人們的關注。坩形可視化…是一門以研究數字地形模型 (Digital Terrain M0de1)或數 字高程域(Di gital Elevati0n Fie1d)的顯示、簡化、仿真等為內容的三維實體構造技術,是三維場景構造中的重要組成部分和研究重點。
本文在基于 OpenGL的i維地形實現技術基礎之上,針對不同的三維地形模型方法以及三維叮視化等關鍵技術展開了分析,重點研究了基于 3DsMAx和基于 0penGL的兩類一維地形建模和實現技術,并依據多邊形數目、每秒鐘幀數、內存使用以及 cPu效率等指標對其進行 了性能比較。最后,根據其性能對比的結果及其各 自的特點,給出了不同方法的適用場合,從而為實際工程應用中的地形建模和實現技術的選擇提供依據和指導。
2 三維地形建模與實現方法
2.1 地形建模
當前,利用 0penGL技術構造三維實體的常規建模方法有如下兩種 :
1)在三維形體構造軟件(如 3DsMAx等)中完成形體的構造 ,通過相應的方法將 3DSMAx建立的模型轉換為 0penGL中的頂點數組,最后在 0penGL下進行顯示;
2)0penGL編程實現三維地形建模 ,目前常用的方法是先根據特征點高程和地形的特征參數如平均高程、高程標準差等)構筑地形模型,再利用插值生成地形的細節 ,最后通過色彩和紋理處理形成完整的三維地形。
2.2 三維地形實現的基本方法
在實現過程中,首先得到 DEM H 數據(影像數據)通過相應的數據處理,將原始數據轉化為三維模型構造所需要的頂點數據;并利用變換后的數據進行模型構造,通過投影變換、視點變換等一系列的步驟,形成最初的三維地形;最后利用光照消隱以及紋理映射技術的后期加工和處理,真實感的三維地形最終成型。
基于 OpenGL技術的三維地形的基本實現過程如圖 1所示 ,而本文將重點論述基本過程中的三維數字地形模型構造的方法。下面將介紹利用 0penGL技術構建三維地形的建模技術和實現方法。
3 基于3DSMAX的地形建模與實現
首先,利用經過處理后的 DEM數據 ,在 3DsMAx軟件下建立數字地形 (3DsMAx建模的具體方法和步驟見相關技術文獻)。
通過 3DSMAx 建成的數字地形如圖2所示。當 3DsMAx模型建立完成之后 ,就需要將此模型轉換為 0pen- GL中的頂點數組。有三種方法可以實現上述的轉換:
1)直接對3DsMAx模型進行讀取,將各個信息放入對應的數組中;? ’
2)利用工具軟件如 Deep Exploration等,可 以將3DSMAX模型轉換為 C語言文件,并且在c語言文件中將模型信息存儲在數組中 ;
3)利用已經封裝好了的 3DsMAx文件讀取類進行模型轉換。如使用比較廣泛的 cIJoad3Ds類 J,它由專業的人員編寫并封裝好,通過包含它的頭文件和執行文件,并調用相應的函數即可完成.3d模型的轉換。
這三種方法各有優缺點。第一種方法優點是可以選擇對自己有用的信息進行存儲,將不關心的信息進行濾除,提高程序效率,缺點是使用者需要對.3d文件結構有較深的了解,并且需要進行大量的程序編寫,比較費時費力;第二種方法優點是不需要具備專業的.3d文件結構知識,直接通過軟件轉換,省時省力,缺點是大部分軟件只能將 3DsMAx中的頂點數據轉換成數組保存 ,但是將丟失紋理信息,如圖3所示 ;第三種方法較好的解決了前兩種方法的缺點,它既可以方便的對 3DsMAx模型進行轉換,又不會丟失紋理信息,如圖4所示。但是缺點是它將所有的信息完全的保存下來,這樣在 OpenGL渲染的時候會增加系統的運算量,降低程序效率。
利用第一種方法和第三種方法從實現技術上是一致的,都是通過對.3d文件的信息分類進行讀取,不同的是第一種方法需要自己編程,第三種方法利用已有的程序。而第二種與第三種方法相比,第二種方法雖然也將所有的頂點數據保存下來,但是可以有選擇的在 OpenGL中繪制有用的頂點。為了比較了該兩種方法對同一個.3d三維地形模型進行轉換時的效率,特選擇多邊形數目、每秒鐘幀數(Fps)、內存使用、cPu使用等指標來衡量,其對比結果如表 1所示 (其中用來測試的電腦配置如下:Pentium(R)M 1.4G處理器、內存為 512M,操作系統為 windows xP)。
綜上所述,對于.3d三維地形轉換的第二種方法不太適合對紋理要求較高的模型轉換中。對于使用第一種方法還是第三種方法應視不同情況來選擇:
1)當系統對實時性要求高而且地形大,并且開發時間寬裕時,選擇第一種方法 ;
2)當系統注重開發時問,并且可以容忍一定效率損失時,選擇第三種方法。[
4? 基于 openGL技術的地形建模與實現
① 基本地形建模
計算機圖形學中的所有光滑曲面最終都是由多邊形(主要是三角形)無限逼近得到的,因此建立三維地形模型叫的實質是構造用來逼近該曲面的空間三角網。利用準備好的數據點根據 Delaunay三角網的構網規則生成三角網,如圖5所示。
在生成三角網后,還需要注意組成三角網的各個三角面法向量的標注。因為生成地形的明亮程度除取決于光源和明暗處理方式外,還受到三角面點與面的法向量的影響。一般點的法向量取值為其周圍面法向量的均值。在圖 6中 P點的法向量即可表示為與其相鄰的四個面法 向量 N1、N2、N3、N4的和的平均值。
② LOD(Level 0f Defajls)技術地形建模
L0D技術是指為了更好地實現三維復雜模型的實時動態顯示,將三維物體用多種不同的精度表示,并根據觀察點位置的變換而選擇不同精度的模型予以成像的技術。一般來說,地形的數據量是很大的,利用一般的方法構建大型的地形需要消耗大量的內存并且也會嚴重的影響渲染速度。然而,并不是系統每次都必須耗費大量的內存和CPu來渲染大數據量的地形,因為當觀察點距離地面很遠時,地形的圖像在屏幕上占據很少的象素點,在這種情況下,用大量的多邊形面片去精確表示地形是不必要的。所以,系統只需要在觀察點離地面很近,需要精細的描述地貌的時候,才需要渲染大量的多邊形來逼近真實地形;而在觀察點遠離地面時,則可以簡化數據量來達到提高渲染效率和減少內存消耗的目的,也就是利用 IJ0D技術。利用 L0D技術進行地形建模的效果見圖7、圖8、圖9所示。
圖7、圖8、圖9分別是不同的細節層次下對同一組地形數據進行的地形建模,左圖是網格圖,右圖是實體圖。由左圖可以看出渲染的多邊形面片數明顯減少,而右圖的實體效果當視點離地面很遠的時候不會有明顯的變化。
為了具體的說明LOD技術帶來的效率提高,表2對比了不同的細節層次下渲染的多邊形數目、每秒鐘幀數(Fps)、內存使用、cpu使用的情況(測試條件同上)。通過表 2的性能對比可以得出,使用較低的細節層次在渲染效率的提高以及系統消耗的減少上都有優異的表現。這說明利用 L0D技術實現大規模三維地形具有實際的工程價值。
所以,在不同的觀察高度下對三維地形使用不同的細節層次,可以很 好的在不損 失視覺 效果的前提下提高程序效率。
5 性能對比
以上論述了兩類三維地形建模和實現技術,對這兩種不同的實現方法的優劣仍需對比研究。鑒于此,本文通過對這兩種方法渲染相同數量多邊形的 Fps、消耗內存以及 cPu效率等指標進行 比較 ,其中使用封裝好的 cLoad3D類來轉換3DsMAx文件。用來測試的電腦配置和上面的測試配置相同。性能對比的測試結果如表3所示。
由表 3可以得出,渲染相同數量多邊形,OpenGL編程建模比3DsMAx建模使用更少的內存消耗并且有更高的 Fps。所以程序如果偏向于追求程序執行效率,則使用 OpenGL編程建模為好。
然而,3DsMAx建模優點也是明顯的.使用 0penGL程序所構建的三維模型外觀上比較粗糙,而且建模的直觀性較差、修改模型時的效率也較低,同時建模過程比較繁瑣,編程量較大,而3DsMAx是專業的三維建模軟件,利用它可以方便的建立物體模型,且不需要編程便可很直觀地構建模型,模型外觀更精細,可以保留很多細節。當程序要求三維地形具有復雜精 細的外觀效果,應 當考慮使用 3DsMAx建模實現。
6 結論
本文從三維地形實現過程的角度出發,圍繞三維地形建模的實現方法展開研究,重點研究了 0penGL支持下的兩類三維地形 建模 和實現技術 ,并對其性能和優缺點進行了對比。
通過對兩種方法的性能和優缺點的比較和分析,得出不同方法的適用場合,從而為實際工程應用 中的地形建模和實現技術的選擇提供依據和指導:
1)系統在性能和效果上更傾向于性能,并且需要占用更小的內存和CPU,則適用 OpenGL編程實現;
2)系統在性能和效果上更傾向于效果,并且對細節方面有較高要求,紋理貼圖復雜多變 ,則適用 3DSMAx建模實現
評論
查看更多