關(guān) 閉

新聞中心

EEPW首頁 > 工控自動化 > 設(shè)計(jì)應(yīng)用 > 關(guān)于三維可視化中的地形建模與實(shí)現(xiàn)技術(shù)研究

關(guān)于三維可視化中的地形建模與實(shí)現(xiàn)技術(shù)研究

作者: 時(shí)間:2010-01-25 來源:網(wǎng)絡(luò) 收藏

 1 引言

本文引用地址:http://2s4d.com/article/163299.htm

  20世紀(jì)60年代以后,的概念隨著地理信息系統(tǒng)的出現(xiàn)而逐漸形成。隨后以地貌為重點(diǎn)的在地理信息系統(tǒng)(GIs)、虛擬現(xiàn)實(shí)(VR)戰(zhàn)場環(huán)境仿真、娛樂游戲、地形的穿越飛行({1yin hr0ugh)土地管理與利用、水文氣象數(shù)據(jù)等多個(gè)領(lǐng)域得到了廣泛的應(yīng)用,越來越受到人們的關(guān)注。坩形可視化…是一門以數(shù)字地形模型 (Digital Terrain M0de1)或數(shù) 字高程域(Di gital Elevati0n Fie1d)的顯示、簡化、仿真等為內(nèi)容的實(shí)體構(gòu)造,是場景構(gòu)造中的重要組成部分和重點(diǎn)。

  本文在基于 OpenGL的i維地形基礎(chǔ)之上,針對不同的三維地形模型方法以及三維叮視化等關(guān)鍵技術(shù)展開了分析,重點(diǎn)研究了基于 3DsMAx和基于 0penGL的兩類一維地形技術(shù),并依據(jù)多邊形數(shù)目、每秒鐘幀數(shù)、內(nèi)存使用以及 cPu效率等指標(biāo)對其進(jìn)行 了性能 比較。最后,根據(jù)其性能對比的結(jié)果及其各 自的特點(diǎn),給出了不同方法的適用場合,從而為實(shí)際工程應(yīng)用中的地形技術(shù)的選擇提供依據(jù)和指導(dǎo)。

  2 三維地形與實(shí)現(xiàn)方法

  2.1 地形建模

  當(dāng)前,利用 0penGL技術(shù)構(gòu)造三維實(shí)體的常規(guī)建模方法有如下兩種 :

  1)在三維形體構(gòu)造軟件(如 3DsMAx等)中完成形體的構(gòu)造 ,通過相應(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é) ,最后通過色彩和紋理處理形成完整的三維地形。

  2.2 三維地形實(shí)現(xiàn)的基本方法

  在實(shí)現(xiàn)過程中,首先得到 DEM H 數(shù)據(jù)(影像數(shù)據(jù))通過相應(yīng)的數(shù)據(jù)處理,將原始數(shù)據(jù)轉(zhuǎn)化為三維模型構(gòu)造所需要的頂點(diǎn)數(shù)據(jù);并利用變換后的數(shù)據(jù)進(jìn)行模型構(gòu)造,通過投影變換、視點(diǎn)變換等一系列的步驟,形成最初的三維地形;最后利用光照消隱以及紋理映射技術(shù)的后期加工和處理,真實(shí)感的三維地形最終成型。

  基于 OpenGL技術(shù)的三維地形的基本實(shí)現(xiàn)過程如圖 1所示 ,而本文將重點(diǎn)論述基本過程中的三維數(shù)字地形模型構(gòu)造的方法。下面將介紹利用 0penGL技術(shù)構(gòu)建三維地形的建模技術(shù)和實(shí)現(xiàn)方法。

  

 3 基于 3DSMAX的地形建模與實(shí)現(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中的頂點(diǎn)數(shù)組。有三種方法可以實(shí)現(xiàn)上述的轉(zhuǎn)換:

  1)直接對3DsMAx模型進(jìn)行讀取,將各個(gè)信息放入對應(yīng)的數(shù)組中; ’

  2)利用工具軟件如 Deep Exploration等,可 以將3DSMAX模型轉(zhuǎn)換為 C語言文件,并且在c語言文件中將模型信息存儲在數(shù)組中 ;

  3)利用已經(jīng)封裝好了的 3DsMAx文件讀取類進(jìn)行模型轉(zhuǎn)換。如使用比較廣泛的 cIJoad3Ds類 J,它由專業(yè)的人員編寫并封裝好,通過包含它的頭文件和執(zhí)行文件,并調(diào)用相應(yīng)的函數(shù)即可完成.3d模型的轉(zhuǎn)換。

  這三種方法各有優(yōu)缺點(diǎn)。第一種方法優(yōu)點(diǎn)是可以選擇對自己有用的信息進(jìn)行存儲 ,將不關(guān)心的信息進(jìn)行濾除,提高程序效率,缺點(diǎn)是使用者需要對.3d文件結(jié)構(gòu)有較深的了解,并且需要進(jìn)行大量的程序編寫 ,比較費(fèi)時(shí)費(fèi)力;第二種方法優(yōu)點(diǎn)是不需要具備專業(yè)的.3d文件結(jié)構(gòu)知識,直接通過軟件轉(zhuǎn)換,省時(shí)省力,缺點(diǎn)是大部分軟件只能將 3DsMAx中的頂點(diǎn)數(shù)據(jù)轉(zhuǎn)換成數(shù)組保存 ,但是將丟失紋理信息,如圖3所示 ;第三種方法較好的解決了前兩種方法的缺點(diǎn),它既可以方便的對 3DsMAx模型進(jìn)行轉(zhuǎn)換,又不會丟失紋理信息,如圖4所示。但是缺點(diǎn)是它將所有的信息完全的保存下來,這樣在 OpenGL渲染 的時(shí)候會增加系統(tǒng)的運(yùn)算量,降低程序效率。

  

  

  利用第一種方法和第三種方法從實(shí)現(xiàn)技術(shù)上是一致的,都是通過對.3d文件的信息分類進(jìn)行讀取,不同的是第一種方法需要自己編程,第三種方法利用已有的程序。而第二種與第三種方法相比,第二種方法雖然也將所有的頂點(diǎn)數(shù)據(jù)保存下來,但是可以有選擇的在 OpenGL中繪制有用 的頂點(diǎn)。為了比較了該兩種方法對同一個(gè).3d三維地形模型進(jìn)行轉(zhuǎn)換時(shí)的效率,特選擇多邊形數(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)對實(shí)時(shí)性要求高而且地形大,并且開發(fā)時(shí)間寬裕時(shí),選擇第一種方法 ;

  2)當(dāng)系統(tǒng)注重開發(fā)時(shí)問,并且可以容忍一定效率損失時(shí),選擇第三種方法。[

4 基于 openGL技術(shù)的地形建模與實(shí)現(xiàn)

 ?、?基本地形建模

  計(jì)算機(jī)圖形學(xué)中的所有光滑曲面最終都是由多邊形(主要是三角形)無限逼近得到的,因此建立三維地形模型叫的實(shí)質(zhì)是構(gòu)造用來逼近該曲面的空間三角網(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í)動態(tài)顯示 ,將三維物體用多種不同的精度表示,并根據(jù)觀察點(diǎn)位置的變換而選擇不同精度的模型予以成像的技術(shù)。 一般來說,地形的數(shù)據(jù)量是很大的,利用一般的方法構(gòu)建大型的地形需要消耗大量的內(nèi)存并且也會嚴(yán)重的影響渲染速度。然而,并不是系統(tǒng)每次都必須耗費(fèi)大量的內(nèi)存和CPu來渲染大數(shù)據(jù)量的地形,因?yàn)楫?dāng)觀察點(diǎn)距離地面很遠(yuǎn)時(shí),地形的圖像在屏幕上占據(jù)很少的象素點(diǎn) ,在這種情況下,用大量的多邊形面片去精確表示地形是不必要的。所以,系統(tǒng)只需要在觀察點(diǎn)離地面很近,需要精細(xì)的描述地貌的時(shí)候 ,才需要渲染大量的多邊形來逼近真實(shí)地形;而在觀察點(diǎn)遠(yuǎn)離地面時(shí),則可以簡化數(shù)據(jù)量來達(dá)到提高渲染效率和減少內(nèi)存消耗的目的,也就是利用 IJ0D技術(shù)。利用 L0D技術(shù)進(jìn)行地形建模的效果見圖7、圖8、圖9所示。

  

  圖7、圖8、圖9分別是不同的細(xì)節(jié)層次下對同一組地形數(shù)據(jù)進(jìn)行的地形建模,左圖是網(wǎng)格圖,右圖是實(shí)體圖。由左圖可以看出渲染的多邊形面片數(shù)明顯減少,而右圖的實(shí)體效果當(dāng)視點(diǎn)離地面很遠(yuǎn)的時(shí)候不會有明顯的變化。

  為了具體的說明LOD技術(shù)帶來的效率提高,表2對比了不同的細(xì)節(jié)層次下渲染的多邊形數(shù)目、每秒鐘幀數(shù)(Fps)、內(nèi)存使用、cpu使用的情況(測試條件同上)。通過表 2的性能對比可以得出,使用較低的細(xì)節(jié)層次在渲染效率的提高以及系統(tǒng)消耗的減少上都有優(yōu)異的表現(xiàn)。這說明利用 L0D技術(shù)實(shí)現(xiàn)大規(guī)模三維地形具有實(shí)際的工程價(jià)值。

 所以,在不同的觀察高度下對三維地形使用不同的細(xì)節(jié)層次,可以很 好的在不損 失視覺 效果的前提下提高程序效率。

  

  5 性能對比

  以上論述了兩類三維地形建模和實(shí)現(xiàn)技術(shù),對這兩種不同的實(shí)現(xiàn)方法的優(yōu)劣仍需對比研究。鑒于此,本文通過對這兩種方法渲染相同數(shù)量多邊形的 Fps、消耗內(nèi)存以及 cPu效率等指標(biāo)進(jìn)行 比較 ,其中使用封裝好的 cLoad3D類來轉(zhuǎn)換3DsMAx文件。用來測試的電腦配置和上面的測試配置相同。性能對比的測試結(jié)果如表3所示。

  

  由表 3可以得出,渲染相同數(shù)量多邊形,OpenGL編程建模比3DsMAx建模使用更少的內(nèi)存消耗并且有更高的 Fps。所以程序如果偏向于追求程序執(zhí)行效率,則使用 OpenGL編程建模為好。

  然而,3DsMAx建模優(yōu)點(diǎn)也是明顯的.使用 0penGL程序所構(gòu)建的三維模型外觀上 比較粗糙,而且建模的直觀性較差、修改模型時(shí)的效率也較低,同時(shí)建模過程比較繁瑣,編程量較大,而3DsMAx是專業(yè)的三維建模軟件,利用它可以方便的建立物體模型,且不需要編程便可很直觀地構(gòu)建模型,模型外觀更精細(xì),可以保留很多細(xì)節(jié)。當(dāng)程序要求三維地形具有復(fù)雜精 細(xì)的外觀效果,應(yīng) 當(dāng)考慮使用 3DsMAx建模實(shí)現(xiàn)。

  6 結(jié)論

  本文從三維地形實(shí)現(xiàn)過程的角度出發(fā),圍繞三維地形建模的實(shí)現(xiàn)方法展開研究,重點(diǎn)研究了 0penGL支持下的兩類三維地形 建模 和實(shí)現(xiàn)技術(shù) ,并對其性能和優(yōu)缺點(diǎn)進(jìn)行了對比。

  通過對兩種方法的性能和優(yōu)缺點(diǎn)的比較和分析,得出不同方法的適用場合,從而為實(shí)際工程應(yīng)用 中的地形建模和實(shí)現(xiàn)技術(shù)的選擇提供依據(jù)和指導(dǎo):

  1)系統(tǒng)在性能和效果上更傾向于性能,并且需要占用更小的內(nèi)存和cPu,則適用 OpenGL編程實(shí)現(xiàn);

  2)系統(tǒng)在性能和效果上更傾向于效果,并且對細(xì)節(jié)方面有較高要求,紋理貼圖復(fù)雜多變 ,則適用 3DSMAx建模實(shí)現(xiàn)



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉