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