方 堃 王 晶 史蓓蕾
(海軍工程大學計算機工程系 武漢 430033)
和國際先進水平相比,我國海纜敷設施工的速度慢、效率低、故障率高。產生這種差距的主要原因是海纜船船載設備的信息化程度低,具體體現在信息采集、信息集成、信息利用、輔助決策等方面。傳統的海纜敷設方法主要是通過機械儀表進行海纜敷設相關參數的查看,通過作業員的經驗判斷對海纜敷設進行人工控制。隨著我國對海纜敷設的需求日益增長,提高海纜敷設的信息化水平,加快敷設速度是亟待解決的關鍵問題,因此,針對新型海纜船研制并裝備海纜作業指揮顯示系統勢在必行。
筆者采用二三維一體化GIS技術、三維虛擬仿真技術與工業自動化技術,研制出一套集作業規劃、作業實施與作業分析等功能于一體的輔助決策系統。其中對海纜敷設狀態的三維動態實時顯示應用了Direct 3D交互式實時3D顯示技術,取得了良好的三維顯示效果。該系統有利于施工人員了解海纜、埋設犁等海下設備的狀態,對敷設施工具有積極的意義。
Direct 3D是微軟公司在Windows操作系統上基于通用對象模式COM(Common Object Mode)所開發的一套3D繪圖API編程接口,是微軟公司DirectX SDK集成開發包中的重要部分,適合多媒體、娛樂、即時3D動畫等廣泛和實用的3D圖形計算,與OpenGL同為電腦繪圖軟件最常用的兩套繪圖編程接口。
自1996年發布以來,Direct 3D以其良好的硬件兼容性和友好的編程方式得到了廣泛的認可,現在幾乎所有的具有3D圖形加速的主流顯示卡都對Direct 3D提供良好的支持。其與Windows操作系統兼容性好,可繞過圖形顯示接口(GDI)直接進行支持該API的各種硬件的底層操作,大大提高了3D繪圖的速度。
本系統使用Direct 3D作為底層圖形API,實現場景模型、動畫、動態光照和水面特效等的高度真實感和實時渲染效果。
三維顯示模塊的核心功能包括場景管理(Scene Manage)、對象系統、序列化(Serialization)、數據與外部工具的交互、底層三維數據的組織和表示。由于3D引擎可能會用來管理一些龐大的3D世界,在這個世界中物體與物體之間通常存在一些相關、從屬、影響與被影響關系,如何組織這些關系,并確切地將這些關系與3D引擎的其他功能聯系起來,就是場景管理需要完成的一方面工作;另一方面,為了讓海量的多邊形數據能流暢的顯示出來,場景管理還需要另一種組織結構來進行隱藏面剔除工作。
如果將大片面積的海面以及海底的三角形逐一渲染出來,會因為面數太多而降低效率。如何很好地表示出包含著成千上萬物體的復雜場景,是設計系統必須要考慮的。這也是場景管理需要做的,給場景提供良好的層次關系,以便更好地進行篩選(Culling)和隱藏面消除(Hidden surface removal)。
首先要涉及到的概念是空間細分,空間細分考慮整個物體空間并且根據物體的空間占有(Object occupancy)對空間中的每一個點進行分類。可以把世界空間中的物體細分為體素(voxel),再對體素進行分類。八叉樹(octree)是一種描述三維空間的樹狀數據結構,它可以描述一個三維場景內物體的分布情況,并簡單地將體素安排在層次結構中。八叉樹的每個節點表示一個正方體的體積元素,每個節點有八個子節點,將八個子節點所表示的體積元素加在一起就等于父節點的體積。
場景管理在預處理的時候建立一棵樹,這里可以忽略物體的表示方法,而把焦點集中在場景的劃分上。在樹建立起來之后,通過實時遍歷這棵樹來發現是否有兩個物體占據了同一個空間而發生沖突,或者一個物體的空間是否不在視見約束體之內。這樣,所有篩選等操作都可以簡化為對樹的遍歷,這是一個線性時間的操作。
系統使用了八叉樹進行場景管理使得整個區域的海面和地形得以流暢地顯示。

圖1 海纜線形坐標圖
海纜在水下由于受到自身重力、海水浮力、兩端張力、海水推力和摩擦力等多種力的作用而顯曲線形。
設海纜觸底點為原點,高度方向為縱坐標,船體方向為橫坐標,海纜線形的坐標圖如圖1所示。
海纜埋設時海纜觸底點就是海纜埋設犁的位置。海纜線形方程如式(1)所示

其中:H表示海纜觸底點的水深,單位是m;S表示海纜觸底點到海纜布放機(在海纜船尾部)之間的水平距離,單位是m;L表示水中海纜的長度,即海纜觸底點到海纜布放機之間的海纜長度,單位是m;α表示海纜布放機處海纜的角度;β表示海纜觸底點處海纜的角度。
海纜線形方程滿足以下條件:
1)原點位置,當x=0時,y=0;
2)海纜布放機位置,當x=S時,y=H;
4)海纜布放機處海纜的角度,y′(S)=tanα;
5)海纜觸底點處海纜的角度,y′(0)=tanβ;
6)由于重力作用,海纜上任何點都不可能提供向上的力,所以海纜線形方程是嚴格增函數,即y′(x)>0,x∈[0,S]。
由這些約束條件形成的方程稱為約束條件方程。約束條件方程組如公式2所示。

繪制海纜曲線需要更新海纜入水到海纜達到海底的各個關鍵點的位置,系統通過繪制插值曲線的方式顯示軌跡。為了便于查看,系統可以設置顯示一段時間之內的不同時間點的海纜狀態。
在離散數據的基礎上補插連續函數,使得這條連續曲線通過全部給定的離散數據點。插值是離散函數逼近的重要方法,利用它可通過函數在有限個點處的取值狀況,估算出函數在其他點處的近似值。插值:用來填充圖像變換時像素之間的空隙。
常見的插值方式有以下幾種:
1)多項式插值
這是最常見的一種函數插值。在一般插值問題中,若選取Φ為n次多項式類,由插值條件可以唯一確定一個n次插值多項式滿足上述條件。從幾何上看可以理解為:已知平面上n+1個不同點,要尋找一條n次多項式曲線通過這些點。插值多項式一般有兩種常見的表達形式,一個是拉格朗日插值多項式,另一個是牛頓插值多項式。
2)埃爾米特插值
對于函數f(x),常常不僅知道它在一些點的函數值,而且還知道它在這些點的導數值。這時的插值函數P(x),自然不僅要求在這些點等于f(x)的函數值,而且要求P(x)的導數在這些點也等于f(x)的導數值。這就是埃爾米特插值問題,也稱帶導數的插值問題。從幾何上看,這種插值要尋求的多項式曲線不僅要通過平面上的已知點組,而且在這些點(或者其中一部分)與原曲線“密切”,即它們有相同的斜率。可見埃爾米特插值多項式比起一般多項式插值有較高的光滑逼近效果。
3)分段插值與樣條插值
為了避免高次插值可能出現的大幅度波動現象,在實際應用中通常采用分段低次插值來提高近似程度,比如可用分段線性插值或分段三次埃爾米特插值來逼近已知函數,但它們的總體光滑性較差。為了克服這一缺點,一種全局化的分段插值方法——三次樣條插值成為比較理想的工具。
4)三角函數插值
當被插函數是以2π為周期的函數時,通常用n階三角多項式作為插值函數,并通過高斯三角插值表出。
系統顯示的海纜狀態和軌跡,是對海纜進行多次埃爾米特插值的結果。其定義如下:
f為[a,b]上充分光滑函數,對給定的插值定節{xi}ni=0,及相應的重數標H(x)∈Pn滿足式(3)。

則稱H(x)為f(x)關于節點{xi}ni=0及重數標號{mi}ni=0的Hermite插值多項式。
系統使用配置文件設置插值的曲率以及顯示的軌跡數,基本還原了真實的海纜實時和歷史狀態。另外,系統還提供了地下剖面圖的顯示,通過剖面視點的配合,可以清楚的看到海纜深入到地下的哪個地質層。
埋設施工時的海纜形狀大致如圖2所示。
從幾何模型上來看,水面和地面是一樣的。水面可以看做普通的均勻網格,不同之處在于地形中頂點高度是固定的,而水面是動態的。
此外,對于水面來說,還有許多特殊的光學效果。包括水面動畫、Bump Mapping、反射和折射和菲涅爾效果。
第一步是要讓水面運動起來。對均勻網格,須計算出每個頂點的位置和法線。如果僅模擬比較平靜的水面,甚至只須計算法線,這也是目前真實感圖形軟件中常見的做法。
僅使用法線來模擬水面的好處是可以極大的簡化幾何模型,最簡單的情況下,一個網格就能代表整個水面,甚至不必擔心如何處理LOD計算。它的實現思想就是bump mapping,區別在于這里使用動態的normal map。可以實時計算出每條法線的位置,也可以從預先處理好的normal map中獲得這些信息。顯然,適用后者計算量可以減少很多。
另外,系統使用了Gerstner Wave計算水面的波動。從數學角度來看,Gerstner Wave并不比普通的正余弦波動方程復雜,但它的波形卻更像水波。對于正余弦波來說,波峰和波谷波的弧度都是均勻的,而實際上水波的波峰要尖一些,波峰則要圓滑。不同時刻,水平位置也是不同的,因此可以正確模擬出這種效果。多個Gerstner Wave相互疊加,就能模擬出相當不錯的水面。有了水面高度,進一步對方程求導,就能計算出法線。3DGerstner Wave的3D波動方程如式(4)所示。

式中:(x,y)代表頂點的坐標位置,w為角速度,k為波矢量,l為波數,x0為頂點的初始位置。
僅僅依靠上述所說的方法來計算水面頂點位置和法線還不夠,它們受到網格間距精度限制,只能模擬波長較長的波。這樣的水面太過于平和,而顯得不夠真實。因此,需要添加Bump Mapping來增加細節和高頻波浪。
水面的反射和折射的思想都一樣,以水面為裁減平面,分別把場景渲染為折射和反射貼圖,然后投影到水面上。在渲染反射貼圖時,需要以水平面為參考面,把攝像機鏡像翻轉到水面之下。投影紋理時,這里需要用到頂點位置作為參數,來動態調整紋理坐標,反映出水波的流動效果。
對水面來說,當觀察者和水面的角度越小時,反射效果越明顯,角度越大時,折射效果越明顯,稱為菲涅爾效果。所以需要更具觀察者的角度來計算反射,折射貼圖,以及水面顏色的混合方式。
在Direct 3D中,霧化是通過將景物顏色與霧的顏色,以隨物體到觀察點距離增加而衰減的混合因子混合而實現的。兩種霧化方法:頂點霧化和像素霧化。三種霧化公式:線性霧化,指數霧化,指數平方霧化。兩種霧化處理:基于深度的霧化處理和基于范圍的霧化處理。基于深度是指兩個點之間的深度(Z)差值,基于范圍則是兩點間的直線距離。系統使用了線性像素霧化,實現了海洋的大氣環境。實現效果如圖3所示。

圖2 海纜水下線形圖

圖3 水面渲染效果圖
本系統可在施工前利用路由勘測測得相關數據,并根據相應的海洋數據和海纜敷設的物理特性建立海纜敷設路由的數學模型,再選擇合適的優化算法對模型進行求解。以此作為海纜實際施工的主要依據。但是由于海纜敷設路由的數學模型無法解析而且太復雜,特別是有模型中存在多個隨機量,很難用傳統的優化算法求解。可以使用基于仿真的優化方法進行優化,最常見的方法是蒙特卡洛法。
[1][美]Peter J.Kovach.Direct3D技術內幕[M].李曄,等譯.北京:清華大學出版,2001.
[2]茅忠明,王行駿,陳瑋.基于DirectX軟件包進行三維圖形的開發應用[J].上海理工大學學報,2002(1):48-52.
[3]樊翠,王麗芳.基于D3D的三維游戲引擎的設計與實現[J].科學技術與工程,2006(10):1431-1435,1450.
[4]高宇,魏迎梅,吳玲達.大規模外存場景的交互繪制[J].計算機輔助設計與圖形學學報,2007(6):792-797.
[5]陳小玲,姚勝初.基于GIS組件的海底光纜與管線信息系統開發[J].計算機時代,2006(1):28-29.
[6]吳超,葛彤.拖曳式海底電纜埋設系統作業監測與導航[J].船海工程,2006(2):101-104.
[7]連璉,王道炎,王玉娟,等.噴沖式灘海埋纜系統的設計[J].上海交通大學學報,2001,4(4):537-540.
[8]王衛昀.海底光纜系統設計及線路余量的考慮[J].電信工程技術與標準化,2006(3):34-37.
[9]胡乃平,甄治武.基于.NET平臺的海纜埋設機監控軟件的設計和實現[J].工業控制計算機,2011(6):27-30.
[10]柴毅,唐婭,李楠.基于GIS的通信光纜故障檢修保障系統[J].重慶大學學報,2004,27(8):65-68.
[11]李楠,郭茂耘.GIS在通信光纜故障定位中的應用[J].激光雜志,2005,26(4):73-74.
[12]王紅霞,周學軍,王平.海底通信光纜故障的定位與維修[J].電線電纜,2006(1):29-31,36.
[13]石磊.基于GIS的光纜線路綜合管理系統[J].電信網技術,2006(4):68-70.