方 堃 王 晶 史蓓蕾
(海軍工程大學(xué)計算機(jī)工程系 武漢 430033)
和國際先進(jìn)水平相比,我國海纜敷設(shè)施工的速度慢、效率低、故障率高。產(chǎn)生這種差距的主要原因是海纜船船載設(shè)備的信息化程度低,具體體現(xiàn)在信息采集、信息集成、信息利用、輔助決策等方面。傳統(tǒng)的海纜敷設(shè)方法主要是通過機(jī)械儀表進(jìn)行海纜敷設(shè)相關(guān)參數(shù)的查看,通過作業(yè)員的經(jīng)驗判斷對海纜敷設(shè)進(jìn)行人工控制。隨著我國對海纜敷設(shè)的需求日益增長,提高海纜敷設(shè)的信息化水平,加快敷設(shè)速度是亟待解決的關(guān)鍵問題,因此,針對新型海纜船研制并裝備海纜作業(yè)指揮顯示系統(tǒng)勢在必行。
筆者采用二三維一體化GIS技術(shù)、三維虛擬仿真技術(shù)與工業(yè)自動化技術(shù),研制出一套集作業(yè)規(guī)劃、作業(yè)實施與作業(yè)分析等功能于一體的輔助決策系統(tǒng)。其中對海纜敷設(shè)狀態(tài)的三維動態(tài)實時顯示應(yīng)用了Direct 3D交互式實時3D顯示技術(shù),取得了良好的三維顯示效果。該系統(tǒng)有利于施工人員了解海纜、埋設(shè)犁等海下設(shè)備的狀態(tài),對敷設(shè)施工具有積極的意義。
Direct 3D是微軟公司在Windows操作系統(tǒng)上基于通用對象模式COM(Common Object Mode)所開發(fā)的一套3D繪圖API編程接口,是微軟公司DirectX SDK集成開發(fā)包中的重要部分,適合多媒體、娛樂、即時3D動畫等廣泛和實用的3D圖形計算,與OpenGL同為電腦繪圖軟件最常用的兩套繪圖編程接口。
自1996年發(fā)布以來,Direct 3D以其良好的硬件兼容性和友好的編程方式得到了廣泛的認(rèn)可,現(xiàn)在幾乎所有的具有3D圖形加速的主流顯示卡都對Direct 3D提供良好的支持。其與Windows操作系統(tǒng)兼容性好,可繞過圖形顯示接口(GDI)直接進(jìn)行支持該API的各種硬件的底層操作,大大提高了3D繪圖的速度。
本系統(tǒng)使用Direct 3D作為底層圖形API,實現(xiàn)場景模型、動畫、動態(tài)光照和水面特效等的高度真實感和實時渲染效果。
三維顯示模塊的核心功能包括場景管理(Scene Manage)、對象系統(tǒng)、序列化(Serialization)、數(shù)據(jù)與外部工具的交互、底層三維數(shù)據(jù)的組織和表示。由于3D引擎可能會用來管理一些龐大的3D世界,在這個世界中物體與物體之間通常存在一些相關(guān)、從屬、影響與被影響關(guān)系,如何組織這些關(guān)系,并確切地將這些關(guān)系與3D引擎的其他功能聯(lián)系起來,就是場景管理需要完成的一方面工作;另一方面,為了讓海量的多邊形數(shù)據(jù)能流暢的顯示出來,場景管理還需要另一種組織結(jié)構(gòu)來進(jìn)行隱藏面剔除工作。
如果將大片面積的海面以及海底的三角形逐一渲染出來,會因為面數(shù)太多而降低效率。如何很好地表示出包含著成千上萬物體的復(fù)雜場景,是設(shè)計系統(tǒng)必須要考慮的。這也是場景管理需要做的,給場景提供良好的層次關(guān)系,以便更好地進(jìn)行篩選(Culling)和隱藏面消除(Hidden surface removal)。
首先要涉及到的概念是空間細(xì)分,空間細(xì)分考慮整個物體空間并且根據(jù)物體的空間占有(Object occupancy)對空間中的每一個點進(jìn)行分類??梢园咽澜缈臻g中的物體細(xì)分為體素(voxel),再對體素進(jìn)行分類。八叉樹(octree)是一種描述三維空間的樹狀數(shù)據(jù)結(jié)構(gòu),它可以描述一個三維場景內(nèi)物體的分布情況,并簡單地將體素安排在層次結(jié)構(gòu)中。八叉樹的每個節(jié)點表示一個正方體的體積元素,每個節(jié)點有八個子節(jié)點,將八個子節(jié)點所表示的體積元素加在一起就等于父節(jié)點的體積。
場景管理在預(yù)處理的時候建立一棵樹,這里可以忽略物體的表示方法,而把焦點集中在場景的劃分上。在樹建立起來之后,通過實時遍歷這棵樹來發(fā)現(xiàn)是否有兩個物體占據(jù)了同一個空間而發(fā)生沖突,或者一個物體的空間是否不在視見約束體之內(nèi)。這樣,所有篩選等操作都可以簡化為對樹的遍歷,這是一個線性時間的操作。
系統(tǒng)使用了八叉樹進(jìn)行場景管理使得整個區(qū)域的海面和地形得以流暢地顯示。
圖1 海纜線形坐標(biāo)圖
海纜在水下由于受到自身重力、海水浮力、兩端張力、海水推力和摩擦力等多種力的作用而顯曲線形。
設(shè)海纜觸底點為原點,高度方向為縱坐標(biāo),船體方向為橫坐標(biāo),海纜線形的坐標(biāo)圖如圖1所示。
海纜埋設(shè)時海纜觸底點就是海纜埋設(shè)犁的位置。海纜線形方程如式(1)所示
其中:H表示海纜觸底點的水深,單位是m;S表示海纜觸底點到海纜布放機(jī)(在海纜船尾部)之間的水平距離,單位是m;L表示水中海纜的長度,即海纜觸底點到海纜布放機(jī)之間的海纜長度,單位是m;α表示海纜布放機(jī)處海纜的角度;β表示海纜觸底點處海纜的角度。
海纜線形方程滿足以下條件:
1)原點位置,當(dāng)x=0時,y=0;
2)海纜布放機(jī)位置,當(dāng)x=S時,y=H;
4)海纜布放機(jī)處海纜的角度,y′(S)=tanα;
5)海纜觸底點處海纜的角度,y′(0)=tanβ;
6)由于重力作用,海纜上任何點都不可能提供向上的力,所以海纜線形方程是嚴(yán)格增函數(shù),即y′(x)>0,x∈[0,S]。
由這些約束條件形成的方程稱為約束條件方程。約束條件方程組如公式2所示。
繪制海纜曲線需要更新海纜入水到海纜達(dá)到海底的各個關(guān)鍵點的位置,系統(tǒng)通過繪制插值曲線的方式顯示軌跡。為了便于查看,系統(tǒng)可以設(shè)置顯示一段時間之內(nèi)的不同時間點的海纜狀態(tài)。
在離散數(shù)據(jù)的基礎(chǔ)上補(bǔ)插連續(xù)函數(shù),使得這條連續(xù)曲線通過全部給定的離散數(shù)據(jù)點。插值是離散函數(shù)逼近的重要方法,利用它可通過函數(shù)在有限個點處的取值狀況,估算出函數(shù)在其他點處的近似值。插值:用來填充圖像變換時像素之間的空隙。
常見的插值方式有以下幾種:
1)多項式插值
這是最常見的一種函數(shù)插值。在一般插值問題中,若選取Φ為n次多項式類,由插值條件可以唯一確定一個n次插值多項式滿足上述條件。從幾何上看可以理解為:已知平面上n+1個不同點,要尋找一條n次多項式曲線通過這些點。插值多項式一般有兩種常見的表達(dá)形式,一個是拉格朗日插值多項式,另一個是牛頓插值多項式。
2)埃爾米特插值
對于函數(shù)f(x),常常不僅知道它在一些點的函數(shù)值,而且還知道它在這些點的導(dǎo)數(shù)值。這時的插值函數(shù)P(x),自然不僅要求在這些點等于f(x)的函數(shù)值,而且要求P(x)的導(dǎo)數(shù)在這些點也等于f(x)的導(dǎo)數(shù)值。這就是埃爾米特插值問題,也稱帶導(dǎo)數(shù)的插值問題。從幾何上看,這種插值要尋求的多項式曲線不僅要通過平面上的已知點組,而且在這些點(或者其中一部分)與原曲線“密切”,即它們有相同的斜率??梢姲柮滋夭逯刀囗検奖绕鹨话愣囗検讲逯涤休^高的光滑逼近效果。
3)分段插值與樣條插值
為了避免高次插值可能出現(xiàn)的大幅度波動現(xiàn)象,在實際應(yīng)用中通常采用分段低次插值來提高近似程度,比如可用分段線性插值或分段三次埃爾米特插值來逼近已知函數(shù),但它們的總體光滑性較差。為了克服這一缺點,一種全局化的分段插值方法——三次樣條插值成為比較理想的工具。
4)三角函數(shù)插值
當(dāng)被插函數(shù)是以2π為周期的函數(shù)時,通常用n階三角多項式作為插值函數(shù),并通過高斯三角插值表出。
系統(tǒng)顯示的海纜狀態(tài)和軌跡,是對海纜進(jìn)行多次埃爾米特插值的結(jié)果。其定義如下:
f為[a,b]上充分光滑函數(shù),對給定的插值定節(jié){xi}ni=0,及相應(yīng)的重數(shù)標(biāo)H(x)∈Pn滿足式(3)。
則稱H(x)為f(x)關(guān)于節(jié)點{xi}ni=0及重數(shù)標(biāo)號{mi}ni=0的Hermite插值多項式。
系統(tǒng)使用配置文件設(shè)置插值的曲率以及顯示的軌跡數(shù),基本還原了真實的海纜實時和歷史狀態(tài)。另外,系統(tǒng)還提供了地下剖面圖的顯示,通過剖面視點的配合,可以清楚的看到海纜深入到地下的哪個地質(zhì)層。
埋設(shè)施工時的海纜形狀大致如圖2所示。
從幾何模型上來看,水面和地面是一樣的。水面可以看做普通的均勻網(wǎng)格,不同之處在于地形中頂點高度是固定的,而水面是動態(tài)的。
此外,對于水面來說,還有許多特殊的光學(xué)效果。包括水面動畫、Bump Mapping、反射和折射和菲涅爾效果。
第一步是要讓水面運動起來。對均勻網(wǎng)格,須計算出每個頂點的位置和法線。如果僅模擬比較平靜的水面,甚至只須計算法線,這也是目前真實感圖形軟件中常見的做法。
僅使用法線來模擬水面的好處是可以極大的簡化幾何模型,最簡單的情況下,一個網(wǎng)格就能代表整個水面,甚至不必?fù)?dān)心如何處理LOD計算。它的實現(xiàn)思想就是bump mapping,區(qū)別在于這里使用動態(tài)的normal map??梢詫崟r計算出每條法線的位置,也可以從預(yù)先處理好的normal map中獲得這些信息。顯然,適用后者計算量可以減少很多。
另外,系統(tǒng)使用了Gerstner Wave計算水面的波動。從數(shù)學(xué)角度來看,Gerstner Wave并不比普通的正余弦波動方程復(fù)雜,但它的波形卻更像水波。對于正余弦波來說,波峰和波谷波的弧度都是均勻的,而實際上水波的波峰要尖一些,波峰則要圓滑。不同時刻,水平位置也是不同的,因此可以正確模擬出這種效果。多個Gerstner Wave相互疊加,就能模擬出相當(dāng)不錯的水面。有了水面高度,進(jìn)一步對方程求導(dǎo),就能計算出法線。3DGerstner Wave的3D波動方程如式(4)所示。
式中:(x,y)代表頂點的坐標(biāo)位置,w為角速度,k為波矢量,l為波數(shù),x0為頂點的初始位置。
僅僅依靠上述所說的方法來計算水面頂點位置和法線還不夠,它們受到網(wǎng)格間距精度限制,只能模擬波長較長的波。這樣的水面太過于平和,而顯得不夠真實。因此,需要添加Bump Mapping來增加細(xì)節(jié)和高頻波浪。
水面的反射和折射的思想都一樣,以水面為裁減平面,分別把場景渲染為折射和反射貼圖,然后投影到水面上。在渲染反射貼圖時,需要以水平面為參考面,把攝像機(jī)鏡像翻轉(zhuǎn)到水面之下。投影紋理時,這里需要用到頂點位置作為參數(shù),來動態(tài)調(diào)整紋理坐標(biāo),反映出水波的流動效果。
對水面來說,當(dāng)觀察者和水面的角度越小時,反射效果越明顯,角度越大時,折射效果越明顯,稱為菲涅爾效果。所以需要更具觀察者的角度來計算反射,折射貼圖,以及水面顏色的混合方式。
在Direct 3D中,霧化是通過將景物顏色與霧的顏色,以隨物體到觀察點距離增加而衰減的混合因子混合而實現(xiàn)的。兩種霧化方法:頂點霧化和像素霧化。三種霧化公式:線性霧化,指數(shù)霧化,指數(shù)平方霧化。兩種霧化處理:基于深度的霧化處理和基于范圍的霧化處理。基于深度是指兩個點之間的深度(Z)差值,基于范圍則是兩點間的直線距離。系統(tǒng)使用了線性像素霧化,實現(xiàn)了海洋的大氣環(huán)境。實現(xiàn)效果如圖3所示。
圖2 海纜水下線形圖
圖3 水面渲染效果圖
本系統(tǒng)可在施工前利用路由勘測測得相關(guān)數(shù)據(jù),并根據(jù)相應(yīng)的海洋數(shù)據(jù)和海纜敷設(shè)的物理特性建立海纜敷設(shè)路由的數(shù)學(xué)模型,再選擇合適的優(yōu)化算法對模型進(jìn)行求解。以此作為海纜實際施工的主要依據(jù)。但是由于海纜敷設(shè)路由的數(shù)學(xué)模型無法解析而且太復(fù)雜,特別是有模型中存在多個隨機(jī)量,很難用傳統(tǒng)的優(yōu)化算法求解??梢允褂没诜抡娴膬?yōu)化方法進(jìn)行優(yōu)化,最常見的方法是蒙特卡洛法。
[1][美]Peter J.Kovach.Direct3D技術(shù)內(nèi)幕[M].李曄,等譯.北京:清華大學(xué)出版,2001.
[2]茅忠明,王行駿,陳瑋.基于DirectX軟件包進(jìn)行三維圖形的開發(fā)應(yīng)用[J].上海理工大學(xué)學(xué)報,2002(1):48-52.
[3]樊翠,王麗芳.基于D3D的三維游戲引擎的設(shè)計與實現(xiàn)[J].科學(xué)技術(shù)與工程,2006(10):1431-1435,1450.
[4]高宇,魏迎梅,吳玲達(dá).大規(guī)模外存場景的交互繪制[J].計算機(jī)輔助設(shè)計與圖形學(xué)學(xué)報,2007(6):792-797.
[5]陳小玲,姚勝初.基于GIS組件的海底光纜與管線信息系統(tǒng)開發(fā)[J].計算機(jī)時代,2006(1):28-29.
[6]吳超,葛彤.拖曳式海底電纜埋設(shè)系統(tǒng)作業(yè)監(jiān)測與導(dǎo)航[J].船海工程,2006(2):101-104.
[7]連璉,王道炎,王玉娟,等.噴沖式灘海埋纜系統(tǒng)的設(shè)計[J].上海交通大學(xué)學(xué)報,2001,4(4):537-540.
[8]王衛(wèi)昀.海底光纜系統(tǒng)設(shè)計及線路余量的考慮[J].電信工程技術(shù)與標(biāo)準(zhǔn)化,2006(3):34-37.
[9]胡乃平,甄治武.基于.NET平臺的海纜埋設(shè)機(jī)監(jiān)控軟件的設(shè)計和實現(xiàn)[J].工業(yè)控制計算機(jī),2011(6):27-30.
[10]柴毅,唐婭,李楠.基于GIS的通信光纜故障檢修保障系統(tǒng)[J].重慶大學(xué)學(xué)報,2004,27(8):65-68.
[11]李楠,郭茂耘.GIS在通信光纜故障定位中的應(yīng)用[J].激光雜志,2005,26(4):73-74.
[12]王紅霞,周學(xué)軍,王平.海底通信光纜故障的定位與維修[J].電線電纜,2006(1):29-31,36.
[13]石磊.基于GIS的光纜線路綜合管理系統(tǒng)[J].電信網(wǎng)技術(shù),2006(4):68-70.