《電子技術應用》
您所在的位置:首頁 > 其他 > 業界動態 > 基于OpenGL的三維地形可視化的研究與實現

基于OpenGL的三維地形可視化的研究與實現

2009-09-21
作者:劉 清 邢 航 黃 珍

  摘? 要: 針對三維地形可視化開發中的幾個關鍵技術進行了詳細的研究和討論,并以OpenGL開發語言為基礎,分析了實現三維地形地貌可視化的基本步驟。

  關鍵詞: 三維地形? 投影變換? 紋理映射? 動態顯示

?

  隨著計算機及圖形圖像技術的發展,地形可視化的應用越來越廣泛。三維地形可視化是研究數字地形模型(Digital Terrain Model,DTM)或數字高程域(Digital Height Field)中顯示、簡化、仿真等內容的學科。常用的三維開發語言主要有OpenGL、Direct3D、VRML等。由于OpenGL與3DS、3Dmax相比具有可實時交互操作的優點,所以更適合于空間信息的三維構建,因此它的應用最為廣泛。本文介紹在某一實時監控項目的開發中,基于OpenGL實現的三維地形地貌可視化的開發技術和實現方法。

1? 三維地形建模

  三維地形的建模是三維地形可視化的核心內容。本文首先探討了三維地形可視化中地形建模的方法,然后討論了三維可視化過程中的幾個關鍵技術。

1.1 數字地面模型

  數字地面模型DTM是在一定的地域范圍內按一定的規則獲取和記錄一些點的高程而形成的用來描述地形的數字模型[2]。常用的地面取點方式有二種:一種是非等間隔取點,即根據地面的變化率決定取點的位置和疏密。在高度變化較緩的區域取點相對較少,反之較多;另一種是等間隔取點,即取點的行列間隔是固定不變的。在數據存儲上,前者節約空間且獲取的地形信息較多,但數據結構復雜,運算處理困難;后者雖然數據結構簡單,特別是每個點有隱含坐標,使運算處理較為容易、編程實現比較方便,但容易丟失一些地形信息,有時存在冗余數據。

  DTM數據實質上是空間離散點的集合,生成三維地形的過程就是用這些離散點逼近地形曲面的過程。目前三維地形模型大多采用數字地面模型生成。本文中DTM數據由等間隔取點所得到的高程值構成。

1.2 三維地形建模方法

  計算機圖形學中,利用多邊形構造曲面時應考慮以下因素:

  (1)保持多邊形的方向一致性(通常每個多邊形均取逆時針方向)。

  (2)盡量選用三角形來逼近,這樣可以保證多邊形上的所有點共面。

  (3)避免構造過程中出現T型點,因為T型點將導致繪制時出現裂痕。解決辦法是增加一條指向T型點的邊。

  (4)避免使用狹長三角形,應盡量選用各邊長度接近的三角型。狹長三角形會使繪制的結果顏色變化太尖銳。

  (5)要正確處理好圖像質量和繪制速度的矛盾,因此應選用適當的多邊形數目。

  由于OpenGL只能處理凸多邊形,加上對上述因素的考慮,本文在設計開發過程中主要采用把整個地形曲面化分為多個小的三角曲面,然后由這些三角曲面拼接成整個地形曲面的方法。拼接方法如圖1所示。

?

?

  為了達到地形曲面的光滑,應使各三角曲面拼接處的法向量不產生突變。本方法的重點在于求各點的法向量。法向量同時還關系到每個頂點所能獲得的光照量,從而影響整個場景的視覺效果。OpenGL本身并未提供計算法向量的函數,計算法向量的工作必須自己完成,這樣就具有更大的靈活性。本文采用最常用的平均平面法向量法。

  在三維視圖中,每一個面都有二個方向,因此計算三角面法向量時必須按相同的順序(順時針或逆時針方向)從三角面取二條有向邊,計算其叉積,然后將該叉積進行單位化,就得到該三角面的法向量。而求每個頂點的法向量時將頂點周圍六個三角面的法向量的平均值作為該頂點的法向量即可。在OpenGL中再通過插值,可求得三角曲面上每一點的法相量,從而獲得一塊光滑的三角曲面。

2? 三維地形的可視化

  在OpenGL中實現三維地形可視化的基本過程如圖2所示。其中,參數設置主要包括光源性質、光源方位、顏色模式、明暗處理方式、紋理映射方式的設置等。這些參數設置都可以通過OpenGL的相關函數來實現。視口變換就是將三維空間坐標映射為計算機屏幕上的二維平面坐標,用glViewport()實現。以下就其中的光照計算、投影變換和紋理映射技術進行重點分析。

?

?

2.1 光照計算

  根據所求的頂點法向量,可以求出各個頂點處的光強值。假設地形表面為一個漫反射體,光源為無窮遠處的點光源,根據朗伯余弦定理,任一地形點的光強為:

  

  其中:L為點光源單位入射向量;N為所求點的法線向量;I0、Ie分別為環境光和入射光的光強;K0、Kd為環境和入射光的反射系數。

2.2 投影變換

  在OpenGL中,投影變換分為正交投影和透視投影二種。二種投影變換的顯著區別是視景體的不同。在透視投影中(如圖3),視景體是一個棱錐的平截臺體,即為一個被平行于地面的平面裁掉頂端的棱錐。同樣一個物體,距離視點較近比遠離視點時在視景體中占據更大的比例,因此在平截臺體的粗端將顯得大一些。由于這種投影方法類似于人眼的視覺機制,通常用于強調真實感的場合,所以在三維地形可視化中采用透視投影。

  圖3中近平面P1和遠平面P2為矩形且互相平行。視點到近平面的距離為n,到遠平面的距離為f。設近平面左下角點a1的三維空間坐標為(l,b,n),右上角點c1的三維空間坐標為(r,t,n),則透視投影變換可用下列矩陣P表示:

  

?

?

  透視投影變換實際上就是用矩陣P乘三維空間點的坐標運算。

2.3 紋理映射

  紋理映射是把紋理影像“貼”到由DTM數據所構成的三維模型上,它是建立具有真實感的三維地形地貌的重要手段。紋理映射的關鍵是實現影像與DTM之間的正確套合,使每個DTM網格點與其所在的影像位置一一對應,保證紋理在變換時與所附著的曲面保持適當的關系。對于原始影像,可以根據成像時的幾何關系,利用共線方程解算出每一個DTM網格點所對應的像坐標,將其作為紋理映射時的紋理坐標依據。

  紋理映射有二個問題需要重點考慮。①內存與速度之間的矛盾。由于加入了圖像紋理,使得著色算法變得復雜化,明顯影響了三維地形的顯示速度。如果在三維地形多分辨率模型中加入多分辨率的紋理,即將圖像分成多級分辨率,然后根據視點的變化來選擇其中的分辨率,這就更增加了內存與速度之間的矛盾。②大尺寸圖像的疊加問題。通常軟件系統(如OpenGL)只支持1024×1024的圖像尺寸。如果有一個高分辨率的圖像,圖像尺寸是4096×4096,則需要將大圖像分成較小的尺寸(如512×512),同時將地形也相應分成較小的地形塊,將圖像塊與地形塊疊加后,再將它們拼接起來。為了防止拼接縫的產生,在設計分塊時讓塊與塊之間保留少量的重疊。紋理映射時,OpenGL會自動根據周圍像點的像素值來決定拼接處像點的像素值,從而避免拼接縫的產生。OpenGL中紋理映射的基本操作步驟如下:

  (1)定義紋理。用glTexImage2D()函數說明所映射的紋理內容,其中包括紋理數據的指針、紋理的大小、紋理的類別(灰度或色彩)等。簡單的紋理是一個圖像。

  (2)紋理控制。用來說明紋理以何種方式映射到三維模型表面上,OpenGL提供的函數為glTexParameter*()。可以把紋理作為象素的最終顏色,用紋理覆蓋原有的象素段;也可以把光照與紋理后的效果結合起來,調整或放大象素段的顏色。另外也可以用基于紋理值的一個固定顏色與象素段顏色混合。

  (3)使用紋理映射。在繪制場景前,先調用glEnable(GL_TEXTURE_1D)或glEnable(GL_TEXTURE_2D)函數,允許使用一維和二維紋理映射。在紋理映射過程中,可以用紋理來調整三維模型的顏色或將紋理與三維模型原來的顏色進行融合,其調整函數為glTexEnv*()。

  (4)繪制場景。定義三維模型頂點的紋理坐標與幾何坐標。幾何坐標決定了頂點在屏幕上的繪制位置,紋理坐標決定紋理圖像中哪一個紋理單元賦予該頂點,其調整函數為glTexCoord*()。在曲面上只繪制一份紋理圖案,則四個角坐標分別為(0,0)、(1,0)、(0,1)、(1,1)。

  需要注意的是:紋理映射只能在RGBA模式下使用,不適用于顏色索引模式。計算紋理坐標必須準確,否則將導致紋理變形。

3? 三維地形實時動態顯示

  三維地形僅僅靜態顯示還不夠,它需要交互式地實時動態顯示。除了必要的硬件之外,OpenGL所特有的顯示列表和雙緩存機制也為實現三維景觀的實時動態提供了有力的保證。

  顯示列表是OpenGL為了提高程序的運行效率而引入的“批處理”技術,是預先存儲的、用于稍后執行的一組OpenGL命令序列。激活一個顯示列表后,就可按照顯示列表中預先排好的次序執行其存儲的命令。顯示列表是不可修改的,一旦建立,OpenGL就將其處理成適合于圖形硬件的格式,而且可以避免在繪圖過程中因主機計算量過大而影響圖形生成的速度,從而提高了效率。雙緩存技術提供前后二個緩存,在顯示前臺緩存內容的一幀圖像時,后臺正在繪制下一幀的圖像;后臺繪制完成后,交換前后臺緩存,不斷地循環,實現地形的實時動態顯示。OpenGL中雙緩存是通過調用auxSwapBuffers()函數實現的。

  地形實時動態顯示一般有二種方式:一種是視點固定、目標移動,目標本身的變化包括目標的平移、旋轉和縮放等。這種顯示方式較容易實現,而且平行投影和透視投影二種投影方式都可以采用。另一種是目標固定、視點移動。這種顯示方式實現起來較復雜,因為目標固定、視點沿路徑運動,因此必須采用透視投影才能達到仿真效果。本文中三維地形的動態顯示即采用第二種方式。

4? 結束語

  根據上文介紹的技術,在CPU為PⅢ800、內存為128MB、Windows2000環境下,以VC6.0為開發平臺、OpenGL為工具,進行了水下三維地形的動態顯示仿真。所繪制的某一水下地形顯示地形地貌效果良好。本文的研究還很基礎,對于三維數據的采集、壓縮、插值、建模、顯示速度等方面還有許多問題有待進一步研究。

?

參考文獻

1? 王永明.地形可視化.中國圖像圖形學報.2000;(6)

2? 郭文普,孫繼銀.視景生成中的幾個關鍵技術.系統仿真學報,2001;(11)

3? 吳剛.ZZC02雷達裝甲車系統軟件的研制.成都:電子科技大學碩士學位論文,2001

4? 柴小文,王金巖,田翼.三維數字地形圖生成技術研究.航空電子技術,2002;(12)

5? 戴晨光,朱述龍.利用OpenGL實現三維地形的快速動態顯示.測繪通報.1998;(6)

6? 高武俊,張繼賢,張永紅.基于OpenGL的三維地形可視化研究.測繪通報,2002(增刊)

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
一区二区三区久久久| 亚洲精品日韩在线观看| 在线成人中文字幕| 国产美女精品视频| 国产精品免费一区二区三区观看| 欧美日韩日本视频| 欧美日韩八区| 欧美人与性动交cc0o| 欧美精彩视频一区二区三区| 欧美成人精品1314www| 久久夜色精品国产噜噜av| 久久av免费一区| 久久久精品一区二区三区| 久久av资源网站| 久久精品日韩欧美| 久久只精品国产| 模特精品裸拍一区| 欧美大片免费久久精品三p| 六月婷婷久久| 欧美激情成人在线| 欧美精品在线视频| 欧美日本精品在线| 欧美日韩三级视频| 欧美性久久久| 国产欧美婷婷中文| 国产亚洲成av人片在线观看桃| 国产午夜亚洲精品理论片色戒| 国产欧美一区二区三区另类精品| 国产欧美一区二区精品忘忧草 | 国产精品私房写真福利视频| 国产精品高潮呻吟久久av黑人| 国产精品久久久久免费a∨| 国产精品综合不卡av| 国产一区二区福利| 精品粉嫩aⅴ一区二区三区四区| 亚洲成人在线观看视频| 91久久久久久国产精品| 亚洲美女毛片| 一区二区三区四区在线| 亚洲欧美日韩另类| 亚洲国产精品久久| 夜夜嗨一区二区| 亚洲欧美日韩国产精品| 久久精品国产欧美亚洲人人爽| 久久婷婷蜜乳一本欲蜜臀| 欧美国产一区二区在线观看| 国产精品igao视频网网址不卡日韩| 国产精品嫩草影院av蜜臀| 国产一区二区三区在线免费观看| **性色生活片久久毛片| 9i看片成人免费高清| 午夜欧美精品久久久久久久| 久久精品一区二区三区不卡牛牛| 亚洲精品四区| 性欧美长视频| 欧美电影免费观看高清完整版| 欧美三区不卡| 国内成人精品一区| 亚洲精品中文字幕在线观看| 午夜精品视频| 一区二区av在线| 久久精品国产第一区二区三区| 欧美激情欧美狂野欧美精品 | 亚洲欧美一区二区激情| 亚洲激情偷拍| 午夜精品美女自拍福到在线| 免费在线看一区| 国产精品永久| 亚洲理伦在线| 久久精品国产久精国产爱| 亚洲少妇自拍| 另类人畜视频在线| 国产精品一区二区三区乱码| 亚洲高清视频在线观看| 亚洲欧美卡通另类91av| 一本久道综合久久精品| 久久人体大胆视频| 国产精品日本精品| 亚洲激情图片小说视频| 欧美一区二区三区免费视| 亚洲色图综合久久| 欧美不卡视频| 国产亚洲综合性久久久影院| 99这里只有久久精品视频| 亚洲黄色免费电影| 久久精品视频导航| 国产精品嫩草99a| 亚洲免费电影在线| 亚洲国产高清在线| 欧美一站二站| 欧美视频专区一二在线观看| 亚洲激情视频在线播放| 久久精品免费| 久久国产一区二区三区| 国产精品第一区| 亚洲免费激情| 亚洲精品欧美| 免费亚洲婷婷| 一区二区三区我不卡| 亚洲欧美日本伦理| 亚洲一区在线看| 欧美日韩免费视频| 亚洲国产精品久久久久秋霞影院 | 久久久99爱| 国产日韩一区二区三区| 亚洲特色特黄| 亚洲无玛一区| 欧美日韩免费高清| 日韩一级大片| 一区二区三区视频观看| 欧美精品色网| 亚洲精选视频免费看| 亚洲精品综合久久中文字幕| 久久综合色一综合色88| 黑人操亚洲美女惩罚| 欧美在线免费观看视频| 久久精品五月| 国产一区高清视频| 欧美在线免费视频| 久久久99爱| 黑丝一区二区三区| 亚洲第一色中文字幕| 久久婷婷av| 一区久久精品| 亚洲区国产区| 欧美精品一区二区在线观看| 亚洲高清av| 99re66热这里只有精品3直播| 欧美激情片在线观看| 亚洲欧洲精品一区二区三区不卡 | 亚洲美女在线视频| 亚洲视屏在线播放| 欧美视频一区在线| 亚洲天堂免费观看| 欧美亚洲色图校园春色| 国产区在线观看成人精品| 欧美一区二区三区久久精品茉莉花 | 99re6热在线精品视频播放速度 | 一区二区三欧美| 亚洲欧美激情视频在线观看一区二区三区| 欧美新色视频| 午夜国产欧美理论在线播放| 久久精品女人的天堂av| 精品999在线观看| 亚洲精品一二| 欧美色一级片| 午夜精品久久99蜜桃的功能介绍| 久久精品视频免费观看| 樱桃国产成人精品视频| 亚洲伦伦在线| 国产精品wwwwww| 午夜一级在线看亚洲| 麻豆国产精品777777在线| 亚洲日韩欧美一区二区在线| 亚洲一区二区三区高清| 国产丝袜美腿一区二区三区| 亚洲精品久久久久久久久久久| 欧美日韩调教| 午夜一区不卡| 欧美激情在线狂野欧美精品| 一区二区三区精品在线| 久久久久久网址| 亚洲精品在线视频观看| 欧美一区二区三区视频在线| 激情五月婷婷综合| 在线一区二区日韩| 国产在线观看91精品一区| 一本色道久久| 国产日韩欧美综合一区| 亚洲美女网站| 国产午夜久久| 一区二区三区国产在线观看| 国产欧美综合在线| 日韩视频在线一区二区三区| 国产精品一区=区| 亚洲日本欧美天堂| 国产麻豆9l精品三级站| 亚洲精品欧美日韩| 国产农村妇女精品一二区| 亚洲精品美女| 国产欧美一区二区三区另类精品| 亚洲精品一区二区在线观看| 国产精品无码专区在线观看| 亚洲人成人77777线观看| 国产精品海角社区在线观看| 亚洲国产美女| 国产农村妇女精品一二区| 亚洲美女中出| 国内视频精品| 午夜欧美大尺度福利影院在线看 | 日韩一级精品视频在线观看| 国产婷婷色综合av蜜臀av| 99精品99久久久久久宅男| 国产一区二区三区在线观看免费| 亚洲图片在线| 亚洲观看高清完整版在线观看| 欧美在线在线| 中国女人久久久| 欧美精品在线极品| 久久精品一区二区三区中文字幕|