江玉玲,彭國均
(集美大學(xué) a.誠毅學(xué)院;b.航海學(xué)院,福建 廈門 361021)
近年來,隨著GIS技術(shù)、計算機圖形圖像處理技術(shù)和虛擬現(xiàn)實技術(shù)的快速發(fā)展,在虛擬仿真實驗室中已經(jīng)實現(xiàn)了陸上地形的三維可視化,并廣泛應(yīng)用于數(shù)字城市建設(shè)、航空航海模擬器、海域規(guī)劃等領(lǐng)域。但由于早期技術(shù)水平的限制,對海底地形的研究只停留在粗略漫游階段,對海底地形細節(jié)層次化建模效果不盡如人意?,F(xiàn)在航道港口建設(shè)、海底工程建設(shè)、海洋資源規(guī)劃以及海底作戰(zhàn)等都需要人們對海底地形有詳細的了解,因而建立可精準測量海底水深和能體現(xiàn)細節(jié)層次的海底地形三維模型成為當今海底地形研究的熱點。
本文在航海虛擬仿真實驗室對陸上、海島、海岸、港口可視化建模的基礎(chǔ)上,進一步對海底地形進行研究,從海底地形數(shù)據(jù)獲取、處理,TIN地形算法,OpenFlight數(shù)據(jù)格式海底地形模型的建立,分層設(shè)色紋理制作等方面進行技術(shù)探討[1-15]。以廈門港某海域為例,建立了體現(xiàn)細節(jié)層次的海底地形OpenFlightt數(shù)據(jù)模型,以期對后續(xù)的海底地形可視化和海底漫游打下基礎(chǔ)。
構(gòu)建仿真度高的海底地形模型的首要條件是需要有真實的高精確度的海底地形數(shù)據(jù)。一般海底地形數(shù)據(jù)是指海底水深數(shù)據(jù)。目前測量海底水深數(shù)據(jù)的主要方法有:①利用回聲測深技術(shù)測量水深,這種方法測量效率低、精度低,目前較少使用;②機載激光測深技術(shù),一般測量水深小于50 m范圍的區(qū)域,測量精度高,成本低;③ 星載測深技術(shù),適用于深水海區(qū)測量,精度高,但成本也高;④電子海圖數(shù)據(jù)化,數(shù)據(jù)獲取方便、成本低,但提取出的數(shù)據(jù)分布散亂、間距大,需要合適的插值算法進行插值,精度受制于原始海圖的精度;⑤ 多波速測深技術(shù),能夠高效率、高精度地測量水深,并且分辨率高,利用其采集的水深數(shù)據(jù)繪制的海底地形高程圖能夠反映水下地形的細部特征,近年來已經(jīng)廣泛應(yīng)用于河流、海域、港口的測量,但其獲取的數(shù)據(jù)保密性高[1]。本文以廈門某海域為例,水深數(shù)據(jù)來源于海洋部門的多波速測深系統(tǒng)海底地形數(shù)據(jù)。測量所獲得的數(shù)據(jù)需要經(jīng)過坐標變換及投影轉(zhuǎn)換、網(wǎng)格化插值、數(shù)字化成圖等步驟最終才能被利用。
本文從海洋部門獲取的是CAD格式數(shù)據(jù),必須對數(shù)據(jù)進行二次處理。首先從CAD文件中提取水下地形特征的的三維坐標X、Y、Z,其中:X表示水深點緯度;Y表示精度;Z表示高程值,若用負值表示,值越小,表示的水深越深。提取的水深點數(shù)據(jù)保存為后綴名為txt的文本文件。由于在獲取數(shù)據(jù)時測量不同位置的深度基準面可能會不同,所以需要進行深度基準面的統(tǒng)一。本文統(tǒng)一采用92廈門坐標系,水深基準采用理論最低潮面,高層基面采用1985年國家高層基面。同時,海底地形復(fù)雜,測量困難,測量出的水深點可能有噪點,因而需對其進行去噪預(yù)處理。具體方法是:劃出一個區(qū)域,選定一特定點O,將區(qū)域內(nèi)的采樣水深點與O點的Z值相比較,當兩點Z值差超過一個已設(shè)定好的定值時認為其為噪聲點,并將其剔除。
當前,地形數(shù)字高程模型主要采用規(guī)則格網(wǎng)模型(Grid DEM)、等高線模型(Contour DEM)和不規(guī)則三角網(wǎng)模型(TIN DEM)等3種方法表示[2]。其中,不規(guī)則三角網(wǎng)用一系列互不交叉的連續(xù)的三角網(wǎng)來描述地形表面。它能按地形特征如山脊、山谷線、地形變化線等表示數(shù)據(jù)高程特征,同時TIN能以不同層次的分辨率描述地形表面,有效減少了數(shù)據(jù)冗余,目前已成為一種主流建模方式[3]。海底地形類似陸地地形起伏不定,因而海底地形模型的構(gòu)造方式也可以參照陸上地形的方法。本文選用TIN構(gòu)造海底地形數(shù)字高程模型。
在所有TIN三角網(wǎng)的構(gòu)網(wǎng)方法中,狄洛尼(Delaunay)三角網(wǎng)的最小角最大,而且經(jīng)過局部最優(yōu)化法則(LOP)優(yōu)化后,它的三角形總是自動逼近等邊三角形,同時能保證三角形的唯一性和邊長之和最小[4],在模擬地形方面最真實,因此常被用于生成TIN模型。根據(jù)三角網(wǎng)生成步驟的不同,主要有分治算法、逐點插入法、三角網(wǎng)生長法等算法[5]。
逐點插入法在1977年由Lawson提出,后來經(jīng)過一系列的改進,由Bowyer、Watson提出了從點到影響域到三角形重連的方法,具體步驟如下:①定義一個凸包,將其屬性設(shè)為包含所有數(shù)據(jù)點;②在凸包范圍內(nèi)中建立一個原始Delaunay三角網(wǎng);③插入一個新數(shù)據(jù)點P;④ 找到P的影響區(qū)域形成空洞,再將P與空洞內(nèi)的三角形頂點相連,利用局部最優(yōu)化法則(LOP)優(yōu)化,形成一系列新的三角形;⑤重復(fù)以上2個步驟,直至處理完所有點。圖1為逐點插入法的具體過程。
圖1 逐點插入法的具體過程
由于在現(xiàn)有的虛擬仿真實驗室中,虛擬漫游系統(tǒng)并不能直接識別TIN模型,因而還需進行模型轉(zhuǎn)換,即將TIN模型轉(zhuǎn)換為現(xiàn)有仿真實驗室系統(tǒng)中可識別的三維地形模型。
目前,TIN實現(xiàn)三維可視化有幾種方法:一種是直接使用底層圖形庫OpenGL,這種方法自由但編程復(fù)雜,工作量大;另一種是將TIN模型轉(zhuǎn)換為OpenFlight模型。OpenFlight是有邏輯的層次分明的場景數(shù)據(jù)庫,數(shù)據(jù)模型精確可靠,其數(shù)據(jù)格式已成為虛擬仿真中的工業(yè)標準,可用商業(yè)建模軟件Multigen Creator創(chuàng)建。本文采用第2種方法,即將TIN格式的地形文件轉(zhuǎn)換為OpenFlight格式模型[14],從而實現(xiàn)海底地形的可視化。
實際海底地形生成是從海底地形數(shù)據(jù)的獲取到生成OpenFlight格式的FLT三維地形模型文件,并經(jīng)過紋理處貼圖處理的過程。在這個過程中,涉及到數(shù)據(jù)格式的轉(zhuǎn)換和數(shù)據(jù)優(yōu)化處理等問題。構(gòu)建三維海底地形的基本流程如圖2所示。
將TIN格式的數(shù)據(jù)轉(zhuǎn)換成OpenFlight格式需要通過 ArcGIS、3DMax、Multigen Creator等軟件進行,基本過程如下:通過ArcGIS的3D分析功能ArcScene將本文的TIN文件導(dǎo)出為wrl文件[6]。由于地形一般覆蓋的面積比較大,生成的地形模型數(shù)據(jù)量大,為了提高計算機處理速度,需要把地形分塊。在ArcGIS中把文件進行分塊處理。wrl文件是純ASCII文件,可用文本編輯器打開和編輯,但它不是三維文件,需要選擇三維建模軟件將其進行場景模型輸出。三維建模軟件3DMAX可將wrl文件轉(zhuǎn)換為stl文件。stl文件是一種三維模型文件格式,它由多個三角形面片的定義組成。每個三角形面片的定義包括三角形各個頂點的三維坐標及三角形面片的法矢量[13]。最終,在三維建模軟件Multigen Creator中導(dǎo)入stl文件,并將其轉(zhuǎn)換為OpenFlight格式的flt文件。數(shù)據(jù)轉(zhuǎn)換基本流程見圖3。
圖2 構(gòu)建三維海底地形的基本流程
圖3 數(shù)據(jù)轉(zhuǎn)換基本流程
根據(jù)以上流程,構(gòu)建廈門港某海域的海底地形OpenFlight模型,如圖4所示。
圖4 廈門港某海域海底地形OpenFlight模型
數(shù)據(jù)優(yōu)化主要是對轉(zhuǎn)換來的OpenFlight數(shù)據(jù)庫進行調(diào)整和優(yōu)化,主要包括:
1)刪除冗余面。主要是刪除一些與陸上地形重合的三角形面片。三角面片數(shù)量的多少直接關(guān)系到計算機處理速度,所以對重復(fù)冗余的面要盡量找出并刪除。
2)調(diào)整數(shù)據(jù)庫層級結(jié)構(gòu)。由于海底地形包含范圍廣,在建模前一般將數(shù)據(jù)分塊,這有利于后續(xù)仿真系統(tǒng)漫游時根據(jù)視點的遍歷范圍調(diào)用分塊模型。然而對于分塊模型就存在模型數(shù)據(jù)庫組織的問題。根據(jù)子節(jié)點和組節(jié)點關(guān)系劃分,可用3種類型組織模型數(shù)據(jù)庫:線型結(jié)構(gòu)、空間結(jié)構(gòu)以及邏輯結(jié)構(gòu)。在實際應(yīng)用中,根據(jù)不同情況采用不同的數(shù)據(jù)組織方式[9-11]。
3)調(diào)整模型的細節(jié)層次(LOD)。根據(jù)視點遍歷范圍,對于距離遠的地形,采用粗糙細節(jié)層次模型;對于距離近的地形,采用精細的模型。
根據(jù)圖4可以看出:海底地形模型中包含大量的三角面片。三角面片的密集度越高,說明在此處的水深采樣點越多,數(shù)據(jù)越詳細。在地形三維模型創(chuàng)建后,還需要對地形進行紋理映射,以提高地形的真實度。目前大部分紋理數(shù)據(jù)來源于衛(wèi)星圖片、遙感圖片、航拍圖片等[7,15],但用這些方法獲得海底地形的圖片難度很大,并無實際意義。為了直觀顯示海底地形,本文提出了根據(jù)海底地形的高低起伏,用分層設(shè)色的方法來制作海底地形的紋理,并進行紋理貼圖以表現(xiàn)其地形變化[8]。
在ArcGIS中,根據(jù)海底地形文件的水深高低設(shè)置區(qū)域顏色。水深越深,顏色設(shè)置越藍;水深越淺,顏色設(shè)置越向淺藍靠近。顏色設(shè)置如圖5所示。最終,在ArcGIS中截取設(shè)置好顏色的地形文件,保存為RGB格式的文件,長寬均為2的N次冪,單位為像素。在紋理貼圖時,要注意地形模型的位置和紋理圖片位置的對應(yīng)。最終,貼好分層設(shè)色紋理后的海底地形模型如圖5所示。采用分層色階圖形紋理,能夠讓人們在后續(xù)的海底漫游中對海底水深有直觀的感覺。圖5中深顏色部分表示水深較深的航道。
圖5 分層設(shè)色海底地形紋理映射
在現(xiàn)有虛擬仿真模擬實驗技術(shù)的基礎(chǔ)上,以廈門港某海域為例,利用TIN三角網(wǎng)構(gòu)建技術(shù)構(gòu)建海底高程地形,經(jīng)過數(shù)據(jù)轉(zhuǎn)換得到OpenFlight三維地形模型;采用分層設(shè)色制作海底紋理,最終構(gòu)建了能夠體現(xiàn)細節(jié)層次的海底地形三維模型。以此方法構(gòu)建的廈門海底三維模型已應(yīng)用于“廈門港三維海域管理信息系統(tǒng)”中,效果良好。但是所構(gòu)建的海底地形包含三角形面片數(shù)量大,加載地形時間長,在模型的調(diào)度處理上還有待進一步的研究。
[1]范瑞杰.真實感海底地形三維可視化實現(xiàn)技術(shù)[D].鄭州:解放軍信息工程大學(xué),2013.
[2]侯波.真實感三維地形造型及可視化[D].成都:電子科技大學(xué),2004.
[3]沈春林.基于DirectX的三維數(shù)字地形真三維顯示關(guān)鍵技術(shù)的研究[D].南京:南京航空航天大學(xué),2005.
[4]許多文.不規(guī)則三角網(wǎng)(TIN)的構(gòu)建及應(yīng)用[D].南昌:江西理工大學(xué),2010.
[5]吳梅君.基于散亂點云的煙盒結(jié)構(gòu)光視覺檢測系統(tǒng)設(shè)計與研究[D].南京:南京理工大學(xué),2013.
[6]周世波,許建鋒.基于ArcGIS和Creator的三維地形建模[J].集美大學(xué)學(xué)報:自然科學(xué)版,2009(3):269-273.
[7]尹冬麗.大場景三維景觀數(shù)據(jù)的組織與可視化研究[D].阜新:遼寧工程技術(shù)大學(xué),2011.
[8]韓李濤,范克楠.三維地形顏色漸變渲染的光滑過渡方法研究[J].地球信息科學(xué),2015(1):31-35.
[9]劉海洋.三維地形生成的關(guān)鍵技術(shù)研究[D].哈爾濱:哈爾濱工程大學(xué),2012:30-35.
[10]阿特爾.基于GPU的三維地形真實感繪制技術(shù)研究[D].長春:吉林大學(xué),2013:8-10.
[11]蘇永芝,劉黨輝,張振偉.基于MultiGen Creator的航天發(fā)射場三維模型優(yōu)化技術(shù)[J].系統(tǒng)仿真學(xué)報,2013(8):1816-1819.
[12]王乘,周均清,李利軍.Creator可視化仿真建模技術(shù)[M].武漢:華中科技大學(xué)出版社,2005.
[13]3D模型文件格式之STL詳解[EB/OL].[2014-05-21].http://www.cdu.net.cn/3D/2014-04-15/703.html.
[14]陳真,費立凡,鄧敏.ArcGIS和Creator各自支持的TIN之間的轉(zhuǎn)換[J].地理空間信息,2006(4):34-36.
[15]黃超超,凌永順,呂相銀.地形紋理映射方法研究[J].計算機仿真,2005(1):209-212.