毛健 ,蘇笛
(1.天津師范大學城市與環境科學學院,天津 300387;2.南京師范大學虛擬地理環境教育部重點實驗室,江蘇南京 210046)
地理場景三維可視化是指運用計算機圖形圖像處理技術,突破傳統的二維平面圖的表現方式,將地理空間數據以三維立體的方式顯示,以便人們更形象、真實地理解現象,發現規律和傳播知識。其廣泛應用于數字城市、軍事場景模擬、地理教育、文物古跡保護等領域[1,2]。本文根據幾個已經完成的虛擬校園、城市三維可視化系統項目,總結既有經驗,對其中關鍵問題進行探討,得出一些有益的結論。
目前我們已建立的三維可視化系統有:完全基于底層開發的八里臺數字校園三維可視化系統(圖1),以及基于ArcGlobe平臺的高新區城市三維可視化系統(圖2)等。系統研發的流程主要包括:數據采集與處理、三維建模、可視化平臺的研發以及相關功能的實現。需要的數據主要有:CAD地形圖數據、地面影像數據、建筑紋理數據以及其他相關的屬性數據;三維建模的方法一般有:基于編程技術的建模和可視化軟件建模。可視化平臺有:自主開發的平臺和第三方軟件平臺。

圖1 八里臺三維可視化系統

圖2 高新區三維可視化系統
數據采集處理的規范化是減少數據重復采集及返工現象,保證數據采集有條不紊的關鍵。同時數據質量的好壞也直接影響三維建模的質量與速度,以及最終的可視化效果。數據采集處理的規范化主要包括:
(1)數據坐標系統的統一化。涉及空間坐標信息的數據,如CAD地形圖、遙感影像數據以及DEM數據等,應基于統一的坐標系統。
(2)數據命名規則化。在紋理影像數據采集之前,需利用CAD圖對采集區域進行分期、分塊,并采用統一的規則對建筑物命名,如2-A-12,其中2表示第2期項目數據,A表示第A塊區域,12表示在該區域中建筑物的序號,這樣就能保證建筑物命名的唯一性。采集時,應按建筑物不同側面,記錄各自的紋理照片。采集后對數據進行整理,以建筑物名稱為主文件夾,以建筑物的每個側面為次文件夾,將相應的建筑物CAD數據與紋理照片導入文件夾中,以便紋理處理與建模。處理后的紋理應按一定的規則命名,且名稱長度不應超過8個字符,如N-1,其中N表示建筑物北側,1為紋理序號,且統一格式為JPG、PNG(透明紋理)。完成建模的三維模型,其名稱應與建筑物相同,并將模型數據與紋理數據放置在以所屬建筑物名稱命名的文件夾中,以供三維可視化平臺調用。數據采集處理的規范化對于大區域的數字城市建設有著重要的意義。
紋理貼圖的質量是可視化效果的關鍵,它決定了表達模型精細特征的精度,特別是對于大區域三維城市建模,其模型精度一般要求不高,而高質量的紋理數據能極大地提高城市三維模型的細節層次和真實感。但是紋理質量亦不能過高,高精度的紋理會導致數據量的增加,影響系統運行效率。因此,紋理的處理應遵循以下幾個原則:
(1)紋理照片拍攝時,應選擇晴朗或陰天天氣,相機偏色調整成自然色。要保證影像清晰,如果因拍攝時的抖動等因素造成影像模糊,必須重新拍攝。同時相機分辨率不低于1 000萬像素。
(2)紋理最大不能超過512×512像素,最小不能小于32×32像素。紋理尺寸長、寬均是2n像素大小。這是因為目前的絕大多數顯卡為了加速繪制填充的速度,僅支持該尺寸的紋理映射。如果紋理的尺寸不采用2n,將嚴重影響系統的顯示速度。
(3)同一建筑物各個面的色調均衡,差別不能太明顯。圖3為紋理貼圖的一個實例處理過程。

圖3 紋理貼圖處理流程
透明紋理技術是通過紋理技術和融合技術共同實現的[3]。融合技術是指通過指定源和目的地顏色值相結合的融合函數,使部分場景表現為半透明。在三維可視化場景中,往往會需要建立樹木,鏤空柵欄等復雜的模型,如果對其實際建模,將會導致工作量與數據量的劇增。而采用透明紋理映射技術不僅建模簡單,而且能更好地模擬物體細節,同時實現了更高的逼真度和運行速率的平衡。透明紋理的制作,一般使用Photoshop軟件,將紋理處理成鏤空的png格式。同時使用可視化軟件,如3ds Max,建立面片模型,在貼圖時,采用透明紋理的貼圖方式,并選擇雙面顯示。圖4為樹木的透明紋理模型。

圖4 樹木的透明紋理模型
地形繪制技術是地理場景三維顯示中,地形構建的關鍵。為了精確、逼真的表達真實地形,就需要海量的地形數據,但是這些數據的實時繪制與管理超出了一般圖形處理系統的能力[4]。地形繪制技術為解決海量的地形數據與有限的計算機處理能力之間的矛盾提供了有效的途徑。主要包括以下幾個方面:
(1)地形和紋理數據的分塊組織。由于地形數據量龐大,計算機不可能一次性地將所有的數據調入內存,因此必須采取地形數據分塊技術。分塊大小一般以256×256為宜,而且紋理分塊大小最好和地形分塊大小相匹配。
(2)構建地形層次模型(LOD)。在三維場景漫游過程中,場景的可視范圍會隨著視點的升高而變小,當視點在離地面很遠位置時,就沒有必要用高分辨率的地形數據來顯示。因此,整體的地形數據應采用金字塔模型管理(如圖5),設金字塔的頂層為第0級,越往下,層次級別越高,相應的地形數據分辨率也越高;相鄰層次級別的地形數據分塊數目成4倍關系。在加載地形數據時,近視點部分顯示高分辨率數據,遠視點部分則顯示低分辨率數據。因此,需對地形數據(包括地形高程數據和紋理數據)采用分塊、分層的方法建立多分辨率數據。并針對每一個數據分塊按照四叉樹結構進行組織,進行四叉樹LOD分割。

圖5 金字塔模型管理
(3)視野可視范圍的裁剪。由于大規模三維地形場景范圍很大,而人的視野有限,因此在實時漫游時只需讀取視野范圍內的地形塊并進行繪制。在進行大范圍三維地形漫游時,可以根據當前視點的位置及視點方向等參數進行挑選,剔除視域不可見部分,從而減小處理的數據量,提高整個系統的渲染效率(如圖6)。

圖6 地形可視化效果
在三維地理場景中的物體,是以具有幾何物體特征的電子數據虛構而成。這樣,不同的虛擬物體就可能占有一樣的空間,但由于不是實體存在,具有穿透性,或者以一種非現實的途徑相互穿插。而現實世界里物體占據一定的空間,動態物體與靜態物體之間或者動態物體與動態物體之間總會發生碰撞[5]。因此,三維可視化系統一個最重要功能,就是能快速進行三維場景中物體間的碰撞檢測。三維可視化系統中進行碰撞測試,通常采用的方法是包圍盒法。常見的包圍盒有包圍球(Sphere)、沿坐標軸的軸向包圍盒(AABB)、方向包圍盒(OBB)、離散方向多面體(K-DOP)等。層次包圍盒的碰撞檢測的代價可用下面的代價函數來評估:

其中,T代表碰撞檢測算法耗費的總時間;Nv是要進行測試的包圍體對的個數;Cv是檢測一對包圍體需要的時間;Np是參與相交測試的基本幾何元素對的個數;Cp是一對原子物體進行碰撞檢測所要耗費的時間;Nu是物體運動時需要更新的節點數量;Cu是更新每個節點要耗費的時間。根據這個公式,可以推測,理想的包圍盒應滿足如下要求:
(1)包圍體應盡可能地逼近物體,以減少Nv,Np和Nu;
(2)包圍盒之間的相交測試應盡可能地快,以減少Cv;
(3)物體運動時節點更新應盡可能地快,以減少Cu。
包圍盒技術在具體的使用中,應首先使用體積略大但是幾何特性相對簡單的包圍盒來近似接近幾何形狀復雜的物體對象,然后構造層次結構逼近物體的幾何模型,直至獲得物體的全部幾何特性,這樣可以限制計算的復雜度,提高檢測碰撞精度。下面基于C++編寫的代碼片段為判斷是物體是否包含:

本文基于既有的項目經驗,對目前常用的三維可視化系統的建立方法進行了介紹,并詳細分析關鍵問題和技術,提出了一些有益的建議。但是常用方法建立的三維可視化系統也存在一定問題,如三維建模周期太長;系統空間分析功能較為薄弱;人機交互設備較為單一等。可以預見的是,隨著三維激光掃描、基于多幅影像的三維重建等技術的日益成熟,三維建模的周期勢必將大大縮短。同時,隨著人機交互技術的不斷發展,如虛擬現實頭盔,手勢和語音識別技術等,將會給人們帶來具有高沉浸感、交互感以及真實感的虛擬現實環境。
[1]尹小君,趙慶展,寧川等.城市虛擬地理環境的研究與實現[J].計算機應用與軟件,2011,28(5),91~93.
[2]廖婷,康鳳,紀方.桌面虛擬漫游系統的研究與設計[J].計算機與信息技術,2011(04),24~26.
[3]李從信,劉井麗,彭雙根.透明紋理技術在實時渲染中的應用[J].大慶石油學院學報,2006,30(4),120~122.
[4]李道遠,李英成,肖金城.大范圍城市三維模型管理技術研究[J].測繪科學,2011,36(5),70~72.
[5]羅冠,郝重陽,樊養余.一種基于可能碰撞集的碰撞檢測方法[J].中國圖象圖形學報,2003,8(A),1067 ~1071.