肖劍波, 胡大斌, 趙 凱
(海軍工程大學動力工程學院,湖北 武漢 430033)
隨著計算機圖形學和圖形硬件的快速發展,計算機的處理能力不斷提高,利用計算機進行視景仿真下的航行訓練已成為航海訓練的發展趨勢。航海模擬器的視景系統為模擬器操縱者提供了一個實際訓練任務中的景象。視景系統顯示的內容包括水面、陸地地形、人文景觀(橋梁、碼頭、建筑物等)、目標船、助航設施、從船橋可以觀察到的本船船首等[1]。由于視覺可為人們提供70%以上的有用信息,因此視景系統是模擬器操縱者獲取信息的最直接、數量最大的來源,視景系統的好壞己成為評價航海模擬器成敗的關鍵。一個好的視景系統可以使操縱者具有身臨其境的感覺。
三維地形是虛擬自然環境中不可缺少的因素,也是視景系統的重要組成部分。逼真的三維地形場景讓人產生身臨其境的感覺,同時作為航行模擬中進行物標定位的重要組成,地形仿真的逼真度在航海模擬系統的視景仿真中具有非常重要的地位。地形建模還廣泛應用于地理信息系統、仿真系統、虛擬漫游、游戲娛樂和氣象數據可視化等多個領域中。
和其它的模擬訓練系統不同,航海模擬器中的繪制場景通常只包括沿海岸線的陸地、碼頭、建筑等,為實現航行訓練模擬系統的快速繪制,在保證繪制效果的情況下如何減少地形繪制場景的面片數目成為研究者所關注的重點。
在原有航海模擬器中,主要通過海圖、CAD圖等途徑獲取地形數據,但這幾種途徑對于大規模地形場景而言并不適用,因其處理周期長,且存在數據精確度不高等問題。隨著遙感技術的進步,基于DEM(digital elevation model)的三維地形可視化仿真研究不斷深入,DEM越來越廣泛地用來代替傳統地形圖中等高線對地形的描述。對于航行訓練模擬而言,為滿足航行訓練中的物標定位和導航需求,對DEM數據的精度要求較高,目前常規的DEM數據無法滿足需求,因而,尋求對DEM數據的插值來提高原始數據的精度。
地形數據插值主要包括有反距離加權插值法(Inverse Distance to a Power)、克里金插值法(Kriging)、最小曲率法(Minimum Curvature)、改進謝別德法(Modified Shepard’s Method)等。
克里金插值法的原理是:利用空間自相關性及原始數據與半方差函數的結構性,用半方差函數和變差函數來確定高程變量隨空間距離而變化的規律,以距離為自變量的變差函數,計算相鄰高程值關系權值,進而獲得空間任意點或塊最優的無偏的高程值[2]。其插值公式為

其中,Zj為未知樣點的值;λi為未知點周圍的已知采樣點的值;Zi為第i個已知采樣點相對于未知采樣點的權重;n為已知采樣點的個數。
該插值方法的關鍵在于權重系數的確定,在插值過程中根據某種優化準則來動態地決定變量的數值,從而使插值函數處于最佳狀態。同時,其考慮了已知采樣點與未知采樣點之間的空間位置關系,并且充分考慮到了各采樣點之間的相對位置關系,以合理分配其權值,所以運用此插值方法進行空間插值通常可以取得較好的效果。另外,通過引入變差函數,克里金插值方法可以輕易實現局部加權插值,克服了一般距離加權插值結果的不穩定性。
改進謝別德插值法利用距離倒數加權的最小二乘的方法,引入節點函數(插值點的二次多項式)的數據插值方法,其公式為[3]

其中,Zj為未知樣點的值;權導數,ijd為未知樣點與已知采樣點之間的距離;δ為平滑因子;iQ為二次曲面函數;p為權的方次;n為已知采樣點的個數。
針對DEM數據量較大且對插值后數據精度及質量要求較高的特點,且為了克服距離加權插值結果的不穩定性,同時兼顧插值精度及平滑度,將兩種插值方法所得的數據進行融合,以改善插值效果。
本 文 通 過 選 取 111.677°E~111.795°E 至27.429°N~27.547°N之間的區域(共有100x100個采樣點的高程數據,高程值最低為183m,最高為1483m)進行試驗,采用的原始數據為SRTM(Shuttle Radar Topography Mission)數據,為ASCII格式,數據精度為90M。為了便于比較分析,采用Surfer軟件對數據進行處理,先將ASCII格式的原始數據轉換為離散的數據,然后分別利用Surfer通過克里金插值法和改進謝別德插值法對離散數據進行格網插值。其中利用克里金算法插值時,算法模型選取塊效應算法,插值類型為Point,搜索角度為20″;利用改進謝別德算法插值時,平滑因子為1,搜索角度為20″。
將采用上述兩種插值方法得到的數據結果進行分析,相關統計參數如表1所示。

表1 不同插值方法比對表
由表1可知,在同等條件下,克里金插值法插值精度較高,插值結果相對比較穩定,但是計算量較大,耗時較長;而改進謝別德插值法,插值精度相對較低,尤其是在地形比較復雜時,特別是對地形地貌保持較好,而且算法簡單,插值速度快,節省時間情況下更為明顯,較適宜于大量數據插值。
考慮到以上兩種插值方法的特點,采用數據融合的方法,將所得插值數據進行融合,得到新的插值數據。設克里金插值結果為jZ,改進謝別德插值法為iZ,最后融合得到的插值結果為[4]

圖1 插值前后效果對比

其中iω、jω分別為其權值,且滿足

采用Surfer提供的Math工具,利用疊加的方式,可以將相同大小的數據融合到一起,可以充分利用這兩種插值方法的優點,兼顧插值的速度和精度,達到較好的插值效果。同時,Surfer軟件可以將所得插值數據繪制成三維帶線框架圖及等高線圖,方便實現插值效果分析。插值前后的效果對比如圖1所示。
對采用數據融合的插值算法進行插值的結果和上述兩類方法進行比較分析,數據融合的方法所耗時長為432s,其平均誤差為1.9236m,同時,通過圖1可以看出,對地形保持較好,且可以保證插值結果的穩定和效率。
在實時仿真應用中,虛擬仿真的規模不斷擴大,如何降低模型復雜度是實現復雜場景快速繪制的關鍵。目前圖形繪制引擎中常用的簡化方法包括可見性剔除算法(Visibility Culling)、層次細節算法(LOD)和基于圖像的繪制算法(IBR)等快速繪制技術[5]。其中層次細節算法應用最為廣泛,其通過逐次簡化景物的表面細節來減少場景的幾何復雜性,提高繪制效率。可見性剔除算法是通過評估一個繪制元素或一組繪制元素的可見性來剔除不可見的元素,從而減少送入渲染管道的繪制元素數量,提高速度。根據可見性評估的依據,可分為3類[6]:視域剔除(View-Frustum Culling),遮擋剔除(Occlusion Culling)和背面剔除(Back-Face Culling)。可見性剔除算法的實現均是在模型載入以后,在圖形繪制引擎中實時進行判斷并進行處理。對于航行訓練系統而言,大范圍地形的導入和加載成為視景仿真繪制的瓶頸,在進行大范圍場景的導入和切換時,通常會出現短暫的“滯留”現象,影響繪制速率。
本文參照可見性剔除算法,針對航行訓練的特點,提出了一種基于可見性判斷的地形高程點剔除算法,通過放射性搜索,對當前位置點的可見性進行判定,進而簡化當前模擬地形數據。
視域剔除算法(VFC)的核心思想是:判斷一個繪制元素是否位于視域平頭四棱錐(View Frustum,縮寫為VF)之外,如果在VF之外,則不可見剔除。為了簡化運算,通常采用場景繪制元素的包圍體(Bounding Volume,以下簡稱BV)作為替代進行可見性評估。在常用的場景圖結構中,每個節點都存儲了該節點的包圍體,通常包圍體有包圍盒和包圍球等形式。VFC算法的主要工作集中在VF與BV的位置關系[7]。
如圖2所示,如果在渲染過程中進行可見性判斷時,可以將當前視點視為固定點,視角方向以及范圍固定,從而可以確定需要判定的元素的包圍體是否在視域平頭四棱錐之內。本文的算法針對模型導入之前的數據簡化,因而采用反向的方式,以當前需要判定元素的位置點為中心,向各向放射“視線”,在視線到達海面(即在渲染過程中的視點位置)之前,如果“視線”在各個方向均存在一個高程點的高程信息(即該位置點的Z值)大于當前判定點的高程值,則表示該點在任何方向均不可見,可以判定該點在繪制中“無效”,因而在繪制時進行剔除處理。

圖2 可見性判斷示意圖
在大范圍地形建模中,地形通常按照一定的區塊進行建模,DEM數據的通用格式由邏輯記錄A、B、C 3部分組成,其中第1部分是文件頭記錄type A,主要記錄了DEM數據有關的信息;第2部分是斷面數據type B,分為斷面頭數據和DEM數據實體;第3部分是精度信息type C,可以省略。
其中,DEM的無效點格式通常采用一個無效數據值來表示,如本文中所應用的DEM數據中,在其數據頭中,標明所有高程值為-9999的點均為無效點,本文所用的DEM中的無效點均為海面位置點,表示DEM數據不包含海底水深數據。
一般的地形范圍建模,通常選取較大范圍的區域進行,而對于具有一定范圍的DEM,無法對其邊界進行上述的判定算法,我們通常將邊界設定為遮擋狀態,這樣當搜索“視點”得到DEM數據邊界時,將當前視線角度的判定結果設為1。為簡化處理,我們對邊界進行邊緣化處理,在DEM的范圍外加上一個遮擋框架,即將DEM數據的網格外推兩個單位,同時將內側的單元數據全部設置為該DEM數據區中的最大值,將網格的外側單元數據設置為海洋位置的無效值。
當進行放射搜索時,如果“視線”在所有方向均存在點的高度大于當前判定點的高度(如果判定點的高度小于視點的高度,則按照改進的算法進行判定),則表示視線或者的確被遮擋,或者視線在面向海域的位置被遮擋,而在其他方向均為海岸線內側的邊界區域,可以認為該點的遮擋關系為不可見,從而進行剔除處理。
船舶航行訓練和飛行仿真訓練以及其他訓練不同,在訓練過程中,船舶操縱的視角高度基本固定(為艦橋距離水面的高度,而在模擬訓練過程中針對某型船舶而言為固定值),所以在進行可見性判斷時,可以按照上述方法進行判定。但是在某些情況下,上述方式的判定結果可能有誤,如圖3所示。

圖3 特定情況會出現判定錯誤
其中如果視點的高度小于或者等于需要判定的位置點的高程,如圖中視點A及其以下位置,則上述判定方式正確;但是存在如下情況,當視點的高度高于判定位置點的高程點,且高于遮擋高程時,如圖3B所示,則判定點按照上述算法進行判定時不可見,但是實際情況則不同,如果將該點剔除則會出現地形的失真。因而需要對上述算法進行修正。
我們對高程點小于視點設定高度的位置點的判定方法按照如下方式進行判定:如果判定點的高程低于視點高度,則對從判定點出發的“視線”在與海面位置點交叉前的所有方向上的位置點的高程進行判斷,如果在所有的搜索方向,均存在一個點的高度值大于視點高度,則表示該判定點不可見,可以進行剔除處理。其相關實現的偽代碼如下:


地形數據主要包括幾何數據和紋理數據兩部分。在第1節中,我們介紹了通過數據融合的方式來進行DEM的插值處理,獲得高精度地形幾何數據。原始的DEM數據采用SRTM(Shuttle Radar Topography Mission)數據,并基于前面第2節中的放射搜索算法,剔除對海面視點無關的數據點。在航海模擬器地形建模中,通常的做法并沒有映射實際紋理數據,而是采用重復貼一張紋理的方法,這種方法雖然能基本滿足視景顯示的需求,但不能真實反映地形場景的細節,在視景仿真逼真度方面存在較大的缺陷。隨著遙感科技的快速發展,高清的衛星遙感影像資料已較容易獲取,因此可以通過衛星遙感影像獲取紋理數據。利用Google Earth提供的高清遙感照片,經過Global Mapper、Terra Vista、Creator等軟件的處理,構建了大規模地形場景。
地形場景的建模步驟如下:
1) 地形幾何數據的準備
對地形數據格式進行轉換,運用前面所述的插值方法進行插值處理,通過可見性剔除算法剔除視線無關點,生成建立三維地形的DEM數據。
2) 地形紋理數據的獲取
利用谷歌衛星圖片下載器軟件從Google Earth獲取地形區域相對應的紋理數據。由于Google Earth所獲得的衛星地圖存在拍攝時間和光照的差異,因而導出后的圖片需要再利用Photo shop軟件對紋理數據進行處理,調整對比度和色調等。
3) 構建地形幾何模型。結合利用前面已經處理好的DEM數據,導入到Terra Vista中進行三維地形建模,按照仿真的實際需要,在建模參數設置中設置各項參數,包括范圍、視角、LOD、文化特征等,然后生成FLT格式模型。
4) 紋理映射。將紋理數據導入到Terra Vista中,與生成的地形幾何模型進行映射。
5) 設置細節層次模型。將Terra Vista中的地形導入到Creator軟件中,添加海岸線及碼頭港口建筑等,并設置LOD。
為檢驗本文提出的可見性剔除算法的效果,本文選取一定范圍的地形區域作為實驗,對比剔除前后生成的地形文件的大小、面片數目以及頂點數目,并將數據導入渲染引擎中以測試地形載入和渲染幀率。相關測試地形區域在采用可見性剔除算法前后生成的地形數據對比如表2所示。

表2 剔除算法生成模型文件對比
本文渲染測試用視景仿真軟件平臺為Vega Prime 2.0,硬件配置為:Intel Core 2 Quad CPU Q9550 2.83GHz, 2GB內存,Geforce GTX 285顯卡,采用可見性剔除算法前后生成的模型文件導入渲染速率對比效果如表3所示。

表3 剔除算法渲染效果對比
實驗結果表明,在大范圍地形的渲染過程中,在應用本文所述可見性剔除算法后生成的地形模型在加載和渲染速率等方面均有較大的改善,且如果在此基礎上增加LOD層級結構,則對模型繪制幀率會有更大的提高。本文所述地形建模方法在“某型潛艇綜合訓練模擬系統”中得以應用,取得了較好的效果。
[1]李永進. 航海模擬器視景中大規模近岸海浪的模擬[D]. 大連: 大連海事大學, 2009.
[2]包世泰, 廖衍旋, 胡月明, 等. 基于Kriging的地形高程插值[J]. 地理與地理信息科學, 2005, 23(3):28-30.
[3]Zachary R, Detweiler, John B, el at. Interpolation methods for high-fidelity three-dimensional terrain surfaces [J]. Journal of Terramechanics, 2010, 47:209-217.
[4]萬家寧, 王 剛, 王 磊. 數據融合在陣地勘測中的應用研究[J]. 計算機仿真, 2008, (11): 17-20.
[5]達 來, 曾 亮, 李思昆. 基于GPU的地形遮擋剔除算法[J]. 系統仿真學報, 2006, 18(11): 3165-3171.
[6]張榮華. 基于多分辨率遮擋剔除的復雜地形繪制框架的研究[J]. 系統仿真學報, 2009, 21(17):5462-5466.
[7]Assarsson U, Mller T. Optimized view frustum culling algorithms for bounding boxes [J]. Journals of Graphics Tools, 2000, 5(1): 9-22.