在許多模擬人類活動的虛擬現實應用中,虛擬地形環境的建立是一項十分重要的基礎性工作。由于虛擬地形環境所面臨的是海量的地形數據和地面紋理數據,因此利用這些地理空間數據建立一個逼真的、立體的、可交互的虛擬地形環境并實現具體應用是一項復雜的工程。近年來,一方面航空航天遙感技術和數字攝影測量技術的迅速發展,使得從遙感立體圖像中自動獲取數字高程模型(DEM)并制作數字正射影像已經成為現實。國際上許多數字攝影測量系統中有關DEM自動提取和數字正射影像自動生成的技術已經成熟,這為地形環境虛擬現實研究提供了直觀真實且現勢性強的基礎數據;另一方面,計算機及其相關技術的飛速發展為我們帶來了高速運算的CPU,大容量的內存和硬盤,高性能圖形加速顯示卡以及基于計算機的立體觀察設備,為虛擬現實所必須的海量數據計算和圖像的快速實時動態立體顯示提供了保證。上述兩方面的結合為地形環境虛擬現實的研究與應用帶來了前所未有的機遇,也必將促進地形環境虛擬現實技術及其應用的進一步發展。有關DEM自動提取和數字正射影像自動生成的原理在文獻中已有詳細論述,本文著重論述利用DEM數據和正射影像,運用OpenGL構造真實三維地形模型的有關原理以及在PC機上實現動態立體顯示的有關技術。
1 利用OepnGL構造真實三維地形模型的原理及方法
利用DEM數據和地面紋理數據構造三維地形模型是地形環境虛擬現實中的關鍵步驟。近幾年來,隨著計算機技術和計算機圖形學的飛速發展,IBM公司、DEC公司、SUN公司、HP公司、Microsoft公司和SGI 公司在GL(Graphics Library)的基礎上聯合推出了新的三維圖形標準OpenGL,并迅速得到了廣泛的認可與運用。OpenGL實際上是一種圖形與硬件的接口,它獨立于硬件設備,窗口系統和操作系統。OpenGL所具有的模型參數設置、紋理映射、自動消隱、雙緩存、顯示列表等多項功能為逼真三維模型的構建與顯示創造了條件。DEM數據可通過數字影像的自動相關來獲取,而正射影像則可以運用數字攝影測量中的數字微分糾正和影像鑲嵌技術對遙感影像進行處理而得到。利用OpenGL構造真實三維地形模型的原理如下:
1) 基礎數據的準備與預處理。DEM數據一般采用規則的格網格式, 這有利于數據的存儲與計算。但是地形起伏不大的區域(如平坦地區或水域),規則格網格式的DEM中將會存在大量的冗余數據,直接影響到三維模型構造和紋理映射的運算速度,因此從規則格網DEM數據中提取最能表示地形起伏特征的重要格網點來簡化DEM數據就顯得十分必要,然后再以重要格網點為基礎構建TIN 三角網或方格網來表示地形。對于數字正射影像,則需要用數字圖像處理技術來改善影像的質量,以有利于在立體觀察中獲得最佳的視覺效果。
2) 基本參數的設置與計算。三維地形表面的頂點坐標由DEM數據確定。根據格網頂點的坐標計算出每一格網面的法向量值用于產生地形表面的明暗效應。在用 OpenGL繪制三維地形模型和進行紋理映射前,需要用專門的OpenGL函數設定相關的參數。其中包括光照方式、光源位置、顏色模式、明暗處理方式、紋理映射方式等。在此基礎上設定視點和觀察方向的初值,再分別運用OpenGL的模型變換函數、投影變換函數以及視口變換函數進行模型變換、投影變換和視口變換,將三維地面坐標轉換成計算機屏幕坐標,并運用OpenGL所具有的Z緩存自動消隱功能就能構造出三維地形模型。
3) 真實紋理映射。用正射影像進行紋理映射是建立逼真虛擬地形環境的重要手段。紋理映射的基本思路是把正射影像“貼”到由DEM數據所構成的三維模型上。
用OpenGL函數進行紋理映射的基本步驟為:
(1) 定義紋理:用glTexImage2D*()函數說明所映射的紋理內容。其中包括紋理數據的指針、紋理的大小、紋理的類別(灰度或彩色)等。
(2) 紋理控制:說明紋理以何種方式映射到三維模型表面上。OpenGL提供了多種映方式,其中包括紋理濾波、重復與縮限,其調用函數為glTexParameter*()。
(3) 說明紋理的映射方式:在紋理映射過程中,可以用紋理來調整三維模型的顏色或者將紋理與三維模型原來的的顏色進行融合,其調用函數為glTexEnv*()。
(4) 定義三維模型頂點的紋理坐標與幾何坐標,繪制場景:幾何坐標決定了頂點在屏幕上的繪制位置,紋理坐標決定紋理圖像中哪一個紋素賦予該頂點,其調用函數為glTexCoord*()。
通過三維地形模型構造和真實紋理映射就可獲得十分逼真的三維地形景觀圖,其基本流程可用圖1來表示:
2 基于PC計算機的實時動態立體顯示技術
三維立體動態顯示是虛擬現實中的關鍵技術。由上述方法在計算機屏幕上所生成的三維地形景觀圖實際上是一個2.5維的景觀圖,只有在引入動態立體顯示技術后,觀察者才能真正感受到虛擬現實所具有的強烈的臨場感和親自控制的參與感。
目前,三維復雜模型的動態顯示,從技術上按照由易到難的順序,可以分為三個層次:第一是逐幀計算圖像、逐幀顯示圖像、逐幀記錄并連續播放;第二是逐幀計算圖像,將結果存放在計算機內存中,計算完畢后再連續顯示并連續記錄。盡管這種方法避免了逐幀記錄的麻煩,但是和第一個層次的方法一樣,圖像仍然是逐幀計算的,并不要求實時計算。對于以上兩種方法,由于圖像都是逐幀計算好的,因此,在動態顯示時,視點和觀察方向不能改變,因而使漫游的靈活性受到限制。與前兩個層次不同的是,在第三個層次中,圖像是根據視點及觀察方向實時計算、實時顯示的,因而,可以做到對三維復雜環境漫游的實時交互控制,使漫游的靈活性不受限制。這就是三維復雜模型的實時動態顯示,也是本文所采用的方法。
我們知道,形成人工立體視覺必須具備下列條件:
1) 所觀察的兩張像片必須有一定的左右視差;
2) 兩眼必須分別觀察一張像片(即分像);
3) 像片所放置的位置必須使相應視線成對相交(即消除上下視差)。基于上述考慮,如果在計算機顯示屏上沿水平方向交替顯示左右兩幅視圖,并且使觀察者的左右兩眼分別只能觀察到左右視圖,則就可以產生立體視覺。產生上述條件的方法較多。本文介紹的是利用液晶眼鏡,在顯示屏與觀察者之間分別設置一個像場遮光同步快門,該液晶快門受邏輯控制電路控制。邏輯控制電路的同步信號取自于計算機的顯示接口。在顯示屏顯示左視圖期間,打開左眼液晶快門并關閉右眼液晶快門;在顯示屏顯示右視圖期間,打開右眼液晶快門并關閉左眼液晶快門,從而獲得立體視覺。
采用上述方式時,顯示卡必須能夠先后交替顯示左右視圖,并且有足夠的顯示內存以容納高分辨率的彩色圖像和為實現圖像漫游提供所必須的空間。為了克服圖像閃爍,所采用顯示器的顯示幀頻為120Hz。在本文研究過程中,具有左右視差的兩幅視圖的實時顯示是通過軟件來控制實現的。在立體顯示過程中,用鼠標和鍵盤操作來實時更改視點位置和觀察方向以實現對地形環境漫游的交互控制。整個立體顯示過程可用圖2來表示。
3 實驗與結論
按照本文論述的原理和方法,利用DEM數據和數字正射影像,我們成功實現了基于微機的地形環境虛擬現實研究。本文實驗是在PentiumⅡ計算機 (CPU 233MHz×2,內存128M,硬盤8.0GB,AGC-GL Pro圖形加速卡)上進行的。操作系統為Windows NT4.0,開發語言為Visual C++5.0。通過實驗可以得出如下結論:
1) 利用OpenGL生成三維地形景觀圖,可以避免大量的數據建模運算,因而具有很快的生成速度。當正射影像為4M,DEM為100×100格網,屏幕分辨率為1024×768時,立體影像顯示幀頻達20幀/秒,可滿足實時動態觀察的需要。
2) 在立體觀察過程中,通過改變模型旋角,能實時實現多視角條件下的虛擬地形觀察,如圖3所示;通過交互改變視點位置能實現三維地形的實時縮放與漫游,并能實時模擬沿線觀察和飛行通過某一區域,真正具有很強的臨場感和參與感。
本文鏈接:http://www.duo1680.com/industry/615.html
本文標簽: