陳聲柳
(集美大學 誠毅學院,福建 廈門 361021)
隨著計算機技術和圖形圖像技術的發(fā)展,虛擬現實技術得到了飛速發(fā)展,虛擬現實已成為21世紀新興而熱門的技術。視景仿真技術是虛擬現實技術的一項重要應用,其應用廣泛,已經在動漫游戲、廣告宣傳、建筑設計、航天模擬、船舶操縱等領域發(fā)揮了重要作用。得益于虛擬現實技術的發(fā)展,船舶操縱模擬器提供了越來越逼真的三維港口視景,很大程度上提高了船員操縱訓練的臨場感受。
Creator是美國MultiGen Paradigm公司推出的交互式可視化三維建模工具,其采用針對實時應用優(yōu)化的OpenFlight數據格式,提供強大的多邊形建模、矢量建模、大面積地形生成功能,以及各種便利的建模工具[1]。Creator的OpenFlight格式模型文件,已成為虛擬現實建模領域事實上的業(yè)界標準,其生成.flt格式的文件,可以與當前許多主流的虛擬現實開發(fā)環(huán)境兼容。與CAD等建模軟件相比,Creator主要考慮在滿足實時性的前提下如何生成逼真的面向仿真的大范圍場景。本文主要基于實驗室的船舶操縱模擬器平臺,結合應用Creator實際建模的經驗,介紹港口三維建模的幾個關鍵技術。
要構建一個港口三維模型,需要港口地形數據和三維實體數據。數據來源有紙質海圖或電子海圖、港口總體規(guī)劃資料、港口工程設計圖(CAD)及相關文檔資料、地形高程數據、衛(wèi)星遙感圖像以及港口實地的景物照片。建模工作開始前需對這些數據進行處理轉換提取建模所需的信息。
一個訓練港口的創(chuàng)建,首先需要海圖數據。海圖包含了港口建模所需要的主要信息,如港口的地理位置、地形的形狀、邊界、導航系統(tǒng)等。海圖有紙質海圖和電子海圖,兩種都可以獲得需要的信息數據。紙質海圖可以通過掃描、幾何校正、數字化后提取相應的信息數據[2],紙質海圖提取數據過程繁雜。相比而言,從電子海圖中提取數據更為方便可靠,可以節(jié)省很大的工作量,而且S57電子海圖已經開始普及,很容易獲取。另外可用的還有C-Map電子海圖。S57海圖包含了很多信息,應用模擬器系統(tǒng)提供的Fitutil工具提取數據,只要提取陸地數據即可。提取后的數據導入到Creator中,由于海圖數據或提取工具等原因,導入Creator中的陸地多邊形必須進行編輯矯正后方可使用[3]。
對于已做過海圖更新的碼頭,導入的陸地多邊形就已經包含碼頭的形狀和位置信息。未更新的碼頭和在建的碼頭則要通過工程設計圖(CAD)及相關文檔資料采集數據。如果碼頭的相關文檔資料包含了碼頭詳細的位置和形狀信息,可以依據數據直接在Creator中進行繪制,否則必須通過坐標轉換工具獲取碼頭形狀參數數據,將CAD中的碼頭各頂點參數位置轉換為WGS84坐標數據。Creator支持CAD的.dxf文件格式,更為方便的是設置好CAD設計圖的比例尺,保存為.dxf格式,導入到Creator中再進行移位定位,然后再依圖繪制碼頭多邊形即可。
Creator數據庫采用樹狀的層次化結構來存儲三維模型,按照從上到下的順序為根節(jié)點、組節(jié)點、體節(jié)點、面節(jié)點。視景驅動軟件是按照從上到下、從左到右的順序依次遍歷數據庫節(jié)點,進行模型繪制。節(jié)點的層級結構和組織方式在很大程度上決定了模型數據庫的實時性能。模型數據庫可以按照線性結構、邏輯結構、空間結構3種形式來組織[4]。
線性結構是把所有體節(jié)點共同放在同一個組節(jié)點下,有時甚至面節(jié)點不經過體節(jié)點分類組織直接歸屬到組節(jié)點下。該結構形式簡單,適合于單一場景,對于復雜場景來說,會嚴重影響場景繪制效率。
邏輯結構是將所有體節(jié)點按照模型類別分類規(guī)則分別放在不同的組節(jié)點下。例如,房屋作為體節(jié)點,所有房屋體節(jié)點歸屬到房屋組節(jié)點。邏輯結構模型數據庫,在建模過程中便于模型編輯和修改,但會影響到模型繪制效率。
空間結構是按照模型的空間位置來組織數據庫,該結構數據庫雖然不利于數據庫整體編輯,但是便于數據庫模型的繪制。驅動系統(tǒng)可以快速判斷模型區(qū)域是否在當前可視范圍內,不用遍歷數據庫中所有節(jié)點,大大提高了仿真系統(tǒng)的運行速度。空間結構適合于大場景模型數據庫。
在一般三維建模過程中,比如虛擬校園、航天發(fā)射等,數據庫按照邏輯結構分類比較合適。用于模擬器訓練港口三維區(qū)域為大范圍場景,地形區(qū)域廣闊,實體模型復雜,這給建模和模型渲染帶來很大困難。數據庫組織已不是一種組織結構或兩種結構單純地結合就足夠了。
實際模型數據庫總體采用空間結構,并充分利用外部引用技術,把整個港口區(qū)域分成各個小區(qū)域,每個小區(qū)域獨立為一個.flt子文件,對于復雜的小區(qū)域在其子文件中進行二次細分,每個小區(qū)域范圍保留大于2nm×2nm,然后在各個簡單小區(qū)域文件中進行實體建模。各個子文件模型數據庫按照邏輯結構分類,在小區(qū)域場景中的眾多小模型獨立歸屬于一個LOD節(jié)點,便于系統(tǒng)地繪制和剔除。航標助導航系統(tǒng)作為一個獨特的系統(tǒng),不歸屬于任何一個區(qū)域,作為獨立.flt子文件,同樣由外部引用節(jié)點掛載。.flt主文件僅掛載各個子文件的外部引用節(jié)點,不包含任何細節(jié)模型。如此組織數據庫可有效地緩解計算機的解算和渲染壓力,加速建模進程,還便于港口模型的管理以及后期港口碼頭的增加修改。圖1為數據庫組織結構。
(1)Creator自帶地形生成工具制作地形。描述地形的原始數據包括數字高程模型、文化特征數據及地表的數字正射影像數據[5]。地形模型數據庫構建中首先要獲得真實地形的高程數據??商峁└叱虜祿馁Y源有數字高程模型DEM、數字地形高度數據DTED或第三方資源。Creator提供的多種轉換工具(readusgs,image2ded,float2ded等)將這些資源轉換成其專用數據DED標準格式。Creator的Terrain模塊還可以采用基于地理經緯度坐標的紋理映射技術,將數字正射影像作為紋理映射到地形表面,從而形成與真實地貌一致的地形模型。
此處以ASTER GDEM高程數據為例。ASTER GDEM是目前公開的最高精度高程數據。下載的高程數據為img文件,通過Global Mapper轉化為DEM文件,利用Creator的DED轉化工具轉化為DED文件導入Creator中。在打開的地形創(chuàng)建窗口中選擇需要生成地形的區(qū)域,對高程等高線進行適當插入編輯創(chuàng)建LOD,經地圖投影類型選擇和地形轉換算法選擇以及最小三角化面片大小設置,即可生成三維地形。最小三角化面片大小設置為最高層細節(jié)下的面片設置,關系到整個地形精度以及三角面片數量[6]。圖2為Creator的創(chuàng)建地形窗口截圖,實例選取的是ASTER GDEM經度118°E、緯度24°N的高程數據,圖中顯示的為選取放大后的廈門港區(qū)域。
圖1 數據庫組織結構Fig.1 Database organization
圖2 Creator的地形創(chuàng)建菜單Fig.2 Creator terrain menu
以這種方式生成地形,由于數據精度原因,很多的小島嶼沒有生成,對那些島嶼必須進行手動建模。其次,Creator生成的地形三角形面片包括水面部分,刪除這些面片后岸線鋸齒化嚴重,必須進行矯正。由于高程數據的中心點和海圖導入的教練站海圖的中心點不同,還必須對生成的三維地形進行移動定位、區(qū)域截取等工作,才能和教練站中的海圖數據相對應。如圖3所示為Creator生成的地形。
圖3 Creator的地形創(chuàng)建工具生成的地形Fig.3 Terrain built by Creator menu
(2)導入高程數據直接三角化的方法。在從海圖導入的flt中僅保留陸地節(jié)點,在陸地多邊形區(qū)域上,對高程數據進行抽樣提取,導入到Creator中,導入后的高程數據以點狀形式沿垂直方向分布于所選各個陸地或島嶼多邊形上。SRTM3是NASA公開的3弧秒(90m)精度高程數據,是目前使用最多的高程數據。90m精度SRTM3數據作為地形原始數據,不需要抽樣提取,只要進行定位直接導入Creator即可。如圖4所示為陸地多邊形上導入高程數據。
圖4 陸地多邊形上導入高程數據Fig.4 Elevation data import on land polygon
對于部分沒有高程數據的島嶼,參考海圖上的經緯度和高程信息,進行手動增加。高程數據編輯完后,對陸地多邊形和高程數據點進行三角化。對生成的地形模型進行再次編輯,在背向港口以及山峰的另一側,船舶以任何角度向岸線靠近視線都無法達到的地形面片可以刪除;如此可以有效減少地形面片數量,提高模型運行速度。由于三角化過程把陸地面片包括進去了,所以生成的地形含有更多的信息,岸線也與海圖精確對應。如圖5所示為直接三角化生成的地形。
圖5 導入高程數據三角化生成的地形Fig.5 Terrain built by triangulation
直接參與三角化生成的島嶼會與實際相差較大,對于航行不作重大參考的島嶼可以采取這種方法。個別獨特重要的島嶼也可以進行獨立建模,但是要花費更多的時間和精力,還要占用更多的模型面片數量。
實體模型建模是三維建模的基礎,實體模型豐富了場景的細節(jié),同時增加了場景的復雜度。Creator提供模型結構、材質、色彩、紋理等的選擇處理,以增加模型的逼真度,同時提供了降低模型復雜度的關鍵技術,這些技術并不以降低模型逼真度為代價,個別更有利于模型細節(jié)的表達。Creator實體建模技術主要有以下幾方面。
(1)層次細節(jié)(LOD)技術。LOD是一組代表模型數據庫中同一物體而又具有不同細節(jié)程度的模型對象。不同細節(jié)程度版本模型的多邊形復雜度也不一樣,細節(jié)程度越高模型對象所包含的多邊形數量也越多[7]。實體建模中會遇到許多橋吊、燈塔等含大量多邊形的復雜模型。如果全部加載給系統(tǒng)會帶來很大負擔,使用LOD技術后,只有在視點接近時才進行模型精細繪制,其他情形下則用低分辨率模型進行替換。這樣即保證了場景的視覺效果,又提高了場景運行速度。對于碼頭上的碰墊、纜樁也應用LOD技術進行處理,船舶視點接近時繪制,遠距離情況下剔除。
(2)實例化(Instance)技術。一個實例指模型數據庫中某個模型對象的一個參考副本。模型對象的實例跟模型拷貝看起來一模一樣,但實例并沒有復制模型對象,僅僅是指向數據庫中模型對象的指針。通過實例化創(chuàng)建模型副本并不增加模型數據庫的多邊形數量,節(jié)省了內存和存儲空間,還改善了實時系統(tǒng)的處理能力。實例化技術是數據庫中房屋、橋吊、纜樁、碰墊等重復實體模型的關鍵建模技術。
(3)公告牌(Billboard)技術。公告牌指在實時仿真過程中模型多邊形始終保持面對視點。常用于創(chuàng)建場景中類似于電線桿或樹木等具有對稱性的物體。比如,在場景中創(chuàng)建一棵樹,只要以原點為中心,建立適當大小的垂直矩形平面,貼上樹木的透明紋理,系統(tǒng)漫游時就可以看到一棵很逼真的樹。
(4)透明紋理技術。透明紋理技術是通過紋理技術和融合技術共同實現的。融合技術指通過源和目的地顏色值相結合的融合函數,使最后的效果中部分場景表現為透明。透明紋理技術在三維場景構建中應用廣泛。房屋建筑和橋梁的欄桿、路燈、樹木等景觀都可以應用透明紋理建模。場景構建中樹墻紋理的應用,不但可以很大程度上減小模型復雜度,還能得到比三維建模更逼真的視覺效果。圖6為樹木和樹墻紋理。
圖6 透明紋理Fig.6 Transparent texture
港口三維是在電子海圖技術的基礎上制作的三維模型,其精確地給出港口地物、地形和地貌環(huán)境,是個大場景復雜數據庫。對大規(guī)模仿真場景的構建,除了要達到仿真的逼真度要求外,還要考慮系統(tǒng)資源的占用性和實時性。Creator作為大場景模型數據庫構建軟件的佼佼者,擁有強大的可視化建模技術、良好的擴展性和兼容性,很好地解決了模型視覺效果和系統(tǒng)資源消耗之間的矛盾,實現了真實性和實時性的平衡。
[1] 仇小鵬,楊平利,蔣陽.仿真建模利器—MultiGen Creator[J].計算機仿真,2007,24(5):279-282.
[2] 劉如飛,季迎春,洪鵬煜,等.基于 Multiguen Creator的連云港市港口三維場景可視化研究[J].海洋信息,2009(4):1-4.
[3] 陳聲柳.Polaris船舶操縱模擬器練習海域的設計制作[J].廣州航海高等??茖W校學報,2011,19(4):21-23.
[4] 王曉東,畢開波.基于 Multiguen Creator的飛行場景模型數據庫優(yōu)化技術[J].系統(tǒng)仿真學報,2007,19(12):2716-2719.
[5] 張曦,王國權,龔國慶.基于 Multiguen Creator場景模型的建立[J].北京機械工業(yè)學院學報,2006,21(2):21-25.
[6] 王乘,周均清,李利軍.Creator可視化仿真建模技術[M].武漢:華中科技大學出版社,2005.
[7] 張帆,史瓊芳,達漢橋.Creator應用于虛擬城市三維建模的關鍵技術與實踐[J].測繪工程,2005,14(4):55-57.
[8] 劉付程,阮亞念,馮麗仙,等.基于ArcGIS的連云港港區(qū)海陸一體化三維地形建模[J].淮海工學院學報:自然科學版,2012,21(1):55-58.