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