姚 遠,邵振峰
(1.武漢大學遙感信息工程學院,湖北武漢430079;2.武漢大學測繪遙感信息工程國家重點實驗室,湖北武漢430079)
地球表面約70%的面積是海洋,其具有豐富的資源,同時是天然的交通平臺,因此成為各國爭奪的對象,我國主張的管轄海域面積約為300萬km2[1],遼闊的海域中分布著數量龐大的海島。近年隨著海洋權益爭奪的日益加劇,數字地球中的海洋部分日漸被人們關注。要發(fā)展數字海洋技術,海島及海洋的時空動態(tài)建模是數字地球中不可或缺的組成部分,眾多學者對此進行了研究[2-6],并推動數字地球加速由靜態(tài)向動態(tài)發(fā)展。由海島、海浪和潮汐等組成的海洋動態(tài)環(huán)境在海島測繪工程、海洋資源環(huán)境調查等領域也具有重要的應用價值。
目前國內外對海浪建模的主要方法可概括為:基于幾何模型、基于水動力學模型、基于譜的分析、基于Perlin噪聲、基于粒子系統(tǒng)等[7]。基于幾何模型的方法計算量較小,實時性好,但海浪表面真實感較差,適合大范圍的海浪生成;基于水動力學模型的方法模擬的海浪非常接近真實的物理現(xiàn)象,但計算量非常大,實時性差;基于海浪譜的模型模擬的海浪雖具有一定的真實感,但視覺上具有明顯的重復感;基于Perlin噪聲的模型[8]可以產生真實感較強的海面,但由于噪聲計算的復雜性,只適合小面積的海浪生成;基于粒子系統(tǒng)[9]可以對流體的飛沫和破碎進行非常真實地建模,但是由于建模效果與粒子數量成正比,在海島這樣的尺度上實時性較差。各種模型在效率和效果上各有優(yōu)缺點,現(xiàn)階段還難以兼顧海浪模擬的實時性與真實感。在數字地球中,海洋動態(tài)環(huán)境的漫游視點高度變化較大,即尺度變化較大,尚沒有一種模型能夠較好地適用。因此,根據人類對運動和立體的視覺感知特性,在不同尺度上分別采用最適合的模型對海浪建模,是現(xiàn)階段最為可行的方法。
本文針對海島及周邊海洋動態(tài)環(huán)境的特點,主要采用了基于幾何模型和基于Perlin噪聲模型相結合的方法,實現(xiàn)了動態(tài)海洋環(huán)境中海浪的多尺度三維表示,并在此基礎上與靜態(tài)的三維海島模型進行交互,建立了海島在海浪影響下的動態(tài)三維模型。
海島數據主要由海島及其周邊海底地形數據、影像數據、海圖歷史數據等組成,各類數據還存在水平基準、高程基準和數據格式不一致的問題。以下就各類數據的特點、建模方法及如何解決不一致問題進行分析。
1)海島地形數據。海島地形數據主要通過數字高程模型(DEM)表達,它是用一組有序數值陣列形式表示海島地面高程的一種實體地面模型。DEM主要分為規(guī)則格網和不規(guī)則三角網,二者之間可以通過插值互相轉化[10]。海島地形數據的獲取手段較多,主要的數據來源有衛(wèi)星遙感影像、航空攝影、合成孔徑雷達(synthetic aperture radar,SAR)、激光雷達(light detection and ranging,LiDAR)等。目前,民用衛(wèi)星高分辨率遙感影像的分辨率達到0.5 m左右;星載SAR的分辨率可以達到1 m左右,機載SAR和LiDAR的分辨率都可以達到分米級,為海島地形數據獲取提供了豐富的數據源。
2)海島周邊海底地形數據。海底地形的原始數據通常是離散和分布不規(guī)則的,通過預處理和插值可以得到海底地形的數字高程模型[11]。海底地形數據一般通過多波束和側掃聲納測深技術測量水深,建立海底的數字地形模型[12]。高精度的GPS、電羅經和姿態(tài)傳感器的應用,使平面位置多波束測深數據的精度達到了亞米級。一般來說,海島水深數據投影方式采用高斯-克呂格投影,坐標系統(tǒng)為大地直角坐標系,高程系統(tǒng)為1985國家高程基準,深度采用理論深度基準面。理論深度基準面是一種水位基準面,水深測量通常在動態(tài)升降的水面上進行,因此不同時刻測量同一點的水深是不同的,這個差數隨各地的超差大小而不同。為了修正測得水深中的超高,必須確定一個起算面——深度基準面,把不同時刻測得的某點水深歸算到這個面上。
3)海島影像數據。海島影像數據主要包括數字正射影像圖(DOM)等。對海島影像數據進行轉換后可得到可用于海島三維地形的紋理。
由于海島陸地數據與海底地形數據的獲取方式不同,通常的地形數據與海底地形數據是獨立的,因此需要對陸地數據和海底數據進行整合,得到完整的海陸一體化數據。海島數據整合主要有以下幾個部分:①平面基準的統(tǒng)一。通過坐標變換將水深數據與陸地數據投影到統(tǒng)一的坐標系中。②高程基準的統(tǒng)一。陸地高程基準采用1985國家高程基準,而水深基準采用理論深度基準面,對垂直測量基準的統(tǒng)一,既可以從水深基準轉換到陸地高程基準,也可以從陸地高程基準轉換到水深基準。③海陸數據格式的統(tǒng)一。陸地數據和實測水深數據有不同的數據模型,通常要對海陸數據進行格式的統(tǒng)一。
對經過水平測量基準統(tǒng)一、垂直測量基準統(tǒng)一和海陸數據格式統(tǒng)一后的海陸數據進行整合,得到海陸一體化數據。但是由于海陸數據邊界不一致,海陸交界區(qū)域會出現(xiàn)無數據縫隙,采用插值方法得到縫隙的數據,生成一體無縫的海島及其周邊區(qū)域的DEM;然后通過投影變換、視點變換等處理,并利用光照消隱及紋理映射等技術渲染到屏幕上形成最終的效果,如圖1所示。
圖1 海島及其周邊區(qū)域三維模型效果圖
海浪無論從時間上還是從空間上都具有不規(guī)則性,用數學方法來描述海浪,真實再現(xiàn)其復雜多變的特征十分困難。目前國內外對海浪建模的方法可概括為:基于幾何模型、基于物理模型、基于譜的分析、基于Perlin噪聲、基于粒子系統(tǒng)等。在中尺度上,凸凹紋理映射可以實時地產生面積較大、具有一定立體感但實際為平面的水面,在小尺度上基于Perlin噪聲可以實時地產生小面積、真實感較強的三維水面。
幾何模型中的凸凹紋理映射[13]是一種紋理混合方法,它能通過一張表示物體表面凸凹程度的紋理產生凸凹不平的顯示效果。如圖2所示,凸凹紋理映射通常由3張紋理圖組成,其中,左上圖像表示物體表面原始紋理顏色,左下圖像表示物體表面凸凹的高度起伏值,右方圖像表示周圍鏡面反射或漫反射光照的環(huán)境映射圖。
圖2 凸凹紋理映射示意圖
本文將凸凹紋理映射應用于海浪的模擬,用高度圖對表面法向量進行擾動,并且加入X和Z方向的隨時間變化的偏移量,對凸凹紋理進行偏移,使其看起來不僅具有凸凹感,而且隨著時間動態(tài)變化,從而形成海浪動態(tài)波動的效果。
Perlin噪聲函數是能夠在空間中產生連續(xù)噪聲的函數。利用二維Perlin噪聲產生隨機紋理的方法構造運動海浪的三維高度場函數的方法如下[8]:
1)首先構造一個長度為1的噪聲生成器,(float)rand()/RAND_MAX。
2)對于平面上任意點(x,y),假設其落在4個相鄰噪聲控制點(x0,y0)、(x0,y1)、(x1,y0)和(x1,y1)所圍成的區(qū)域內。計算每個控制點到(x,y)的向量與該控制點梯度的點積,得到它們對(x,y)處噪聲的影響值
式中,g1為(x0,y0)的梯度;g2為(x1,y0)的梯度;g3為(x0,y1)的梯度;g4為(x1,y1)的梯度。
3)分別對m和n、u和v進行三次調和插值,插值結果為A和B
4)同理在y方向對上述所得A和B進行插值,即得到最終輸出的Perlin噪聲值Z
5)對二維Perlin噪聲進行分形疊加,通常取A=1/2,噪聲參數為二維向量,則二維噪聲分形面為
利用Perlin噪聲函數,輸入網格點的坐標值,可以計算出每個網格點的Perlin噪聲值,將得到的噪聲值作為該點的水面高度值。為了得到連續(xù)動態(tài)變化的高度場,可以加入時間參數進行坐標變換。
為了同時滿足海浪模擬的實時性與真實感要求,本文根據視點高低,將海浪場景分為大、中、小尺度場景。在大尺度場景中視點很高,人眼距離太遠,無法觀察到海浪的運動變化及立體,在海面貼上靜態(tài)紋理即可;在中尺度海浪場景中視點較高,人眼可以觀察到海浪的運動,但無法分辨海浪是二維平面還是三維曲面,因此采用實時性較好的基于凸凹紋理映射的模型來模擬海浪;在小尺度海浪場景中視點較低,海面范圍較小,人眼不僅能觀察到海浪的運動,還能夠觀察到海浪是三維曲面,因此采用真實感較好但只適用于小范圍的基于Perlin噪聲的模型來模擬海浪。
人眼在觀察外界物體時,除了能夠感知物體的大小、形狀、顏色、明暗外,還能夠感知物體的遠近、深度等。立體視覺閾值指觀察者能分辨空間中兩點間最短的空間深度距離,是人眼區(qū)別二維平面與三維立體的主要依據[14]。人眼對海浪的立體感知能力除視距外,還和海浪的高度有關,即海浪振幅也為上述的立體視覺閾值參數。通過相關立體視覺銳度閾值、兩眼距離、視距和海浪高度的關系,可得到三維海浪的最高視點距離L1max與浪高H的關系
式中,Δθ為立體視覺銳度,一般取10';b為兩眼間的距離,一般取值為65 mm。
人的運動知覺直接依賴于物體運動的速度,物體運動的速度太慢或太快都不能產生運動知覺,運動知覺下閾是指能察覺單位時間內物體運動的最小視角范圍(角速度)[15]。在其背景上有可參考的靜止物體時,則這個物體移動的最小角速度為1~2'/s即可感知它在運動[16]。代入ωmin=1',t=1 s即可得產生運動知覺的最大視距與物體運動速度的關系
根據《海洋調查規(guī)范(第2部分:海洋水文觀測)》(GB/T 12763.2—2007)[17]對海浪等級進行的劃分(范圍取值按中值計算),代入式(5)、式(6)計算出不同浪級下的場景閾值,見表1。
表1 不同浪級的立體視覺及運動知覺閾值
有了具體閾值后,可以根據海浪不同浪級建立多尺度海浪模型,具體流程如下:
1)建立網格模型并初始化,設置網格精度。
2)設置各尺度海浪場景切換的視點閾值,在小尺度場景中利用Perlin噪聲模型生成海浪高度場,在中尺度場景中利用凸凹紋理映射生成法向量,在大尺度海浪場景中利用靜態(tài)紋理生成靜態(tài)海面,模擬真實海浪。
3)利用模型生成的海浪高度場或法向量進行網格更新,達到動態(tài)海浪效果。
4)海浪渲染,對海浪進行繪制,生成動態(tài)三維海浪。
在三維建模領域中,海陸交互一般有兩種表示方法:一種將地形和海面分別看做一個曲面,海陸交互即海島與三維曲面的交互;另一種采用粒子系統(tǒng)交互,將水體分成一個個微小的粒子,外界對粒子及粒子之間存在各種作用力。由于粒子系統(tǒng)中每個粒子均要參與各種作用力的計算,計算量隨著粒子的增加而迅速增大,在海島這樣的尺度下需要海量的粒子才能取得較好的建模效果,這樣就無法做到實時交互。而三維曲面交互計算量相對較小,可以達到實時性要求,對于中小尺度的海陸交互動態(tài)建模來說仍然是較為理想的方法。具體方法包括以下6個步驟:
在小尺度上采用Perlin噪聲生成海浪的三維高度場,加入時間參數以得到連續(xù)動態(tài)變化的海浪高度場。
海陸交互后得到淹沒區(qū)的二值圖像,通過邊緣提取算法提取海陸邊界。簡單的邊緣提取方法是將海面標記為1,陸地標記為0。從二值圖像左上角的點開始,逐點判斷,若該點為海面點,它的8鄰域(或4鄰域)存在陸地點,則視為邊界點,直至遍歷完整幅圖像。
目前比較常見的方法有基于海洋邊界矢量數據的海陸判斷算法和基于衛(wèi)星影像的海陸判斷算法。這些方法都是通過海洋邊界預先計算好陸地與海洋區(qū)域,然后通過海浪格網點坐標確定是否為海洋區(qū)域或陸地區(qū)域,即海洋區(qū)域和陸地區(qū)域是固定的。但是真實的海浪是動態(tài)變化的,海陸邊界也是動態(tài)變化的,若要得到準確的海陸范圍,必須根據海浪的動態(tài)變化,進行實時的計算?;谝陨纤觯疚牟捎梅N子蔓延算法,對海陸范圍變化進行實時判斷。
以海陸邊界作為邊緣進行邊界擴充處理,設置邊界擴充半徑,得到平滑區(qū)域。提取的海陸邊界只是一個邊緣輪廓,需要在邊界的基礎上加寬平滑區(qū)域,可采用邊界擴充算法處理。邊界擴充算法是以邊界為基礎,選定大小為N×N的窗口,N即為擴充半徑,對邊界點進行逐點擴充,直到遍歷完所有邊界點。設置平滑區(qū)域半徑,得到待平滑的近岸區(qū)域。
真實的海浪在近岸區(qū)域必定會有衰減,浪高和浪速與深海地區(qū)有明顯不同。要實現(xiàn)真實海浪的建模,必須對近岸海浪波進行平滑處理,使海浪在近岸地區(qū)的高度比較平滑。海浪覆蓋的區(qū)域網格可被看做一幅圖像,采用圖像平滑方法對近岸海浪進行平滑。
對最終與海島交互后的海浪進行實時建模與表達,主要采用三角網的形式建立實時的三維海浪曲面,并繪制相應紋理和加入光照效果。
根據立體視覺和運動知覺,按照浪級計算大、中、小尺度海浪場景的切換閾值,模型根據視點高度值,判斷當前處于何種尺度的海浪場景,并選用相應的海浪模型,設置對應參數生成該尺度下的海浪。圖3是視點從高到低,各尺度海浪場景的試驗結果。其中,圖3(a)、圖3(b)、圖3(c)是人眼無法辨識海浪的運動及立體的大尺度場景,在不同視點高度時采用不同分辨率的靜態(tài)衛(wèi)星圖片進行靜態(tài)建模;圖3(d)、圖3(e)、圖3(f)是中尺度下的3層基于凸凹紋理映射的動態(tài)平面海浪建模,其網格精度隨視點降低而升高,以避免當視點拉近時海面因分辨率太低而變得模糊;圖3(g)、圖3(h)是基于Perlin噪聲的小尺度下的動態(tài)三維海浪建模試驗結果。
海底顯示錯誤判別和處理同樣是在平滑區(qū)域內進行,因此必須選取合適的平滑半徑。圖4(a)為未平滑的結果,海浪與海島交互時,海島的尖峰及海底露出的情況比較嚴重;圖4(b)為平滑半徑為5個格網基本單元時的結果,有一定改善;圖4(c)為平滑半徑為25個基本單元時的結果,基本沒有尖峰和海底露出的情況。試驗表明,在一定范圍內,平滑區(qū)域越大,交互效果越好。
圖3 多尺度海浪建模與表示
圖4 海島在海浪影響下的動態(tài)交互
從二維到三維、從靜態(tài)到動態(tài)、從單對象無交互到多對象間復雜交互建模是大的發(fā)展趨勢。本文在海浪動態(tài)三維建模及海陸交互建模上進行了有益的探索,首先提出了一個動態(tài)海浪多尺度表示模型,采用多模型相結合的方法,根據視點高度對海浪場景進行更加細致的層次劃分和建模,能夠同時滿足海浪建模的實時性與真實感要求。在基于海陸動態(tài)交互的基礎上,筆者對海島在海浪影響下進行動態(tài)建模,為海陸交互建模提供了一個可行的途徑。
[1]國家海洋局海洋發(fā)展戰(zhàn)略研究所課題組.中國海洋發(fā)展報告[M].北京:海洋出版社,2010.
[2]薛存金,周成虎,蘇奮振,等.面向過程的時空數據模型研究[J].測繪學報,2010,39(1):95-101.
[3]覃如府,葉娜,許惠平,等.GIS系統(tǒng)中多維海洋數據可視化研究[J].同濟大學學報:自然科學版,2009,37(2):272-276.
[4]劉賢三,張新,梁碧苗,等.海洋GIS時空數據模型與應用[J].測繪科學,2010,35(6):142-144,133.
[5]GALLEGO G,YEZZIA,F(xiàn)EDELEF,et al.A Variational Stereo Method for the Three-dimensional Reconstruction of Ocean Waves[J].IEEE Transactions on GeoScience and Remote Sensing,2011,49(11):4445-4457.
[6]NILST,MATTHIASM,SIMON S,et al.Real-time Breaking Waves for Shallow Water Simulations[C]∥Proceedings of 15th Pacific Conference on Computer Graphics and Applications.Maui:[s.n.],2007:39-46.
[7]李蘇軍,楊冰,吳玲達.海浪建模與繪制技術綜述[J].計算機應用研究,2008,25(3):666-669.
[8]謝攀,康鳳舉,蘇曼.基于Perlin噪聲的海面仿真在Vega Prime中的應用[J].計算機應用研究,2009,11(26):4386-4389.
[9]MULLER M,CHARYPAR D,GROSSM.Particle-based Fluid Simulation for Interactive Applications[C]∥Proceedings of Siggraph Symposium on Computer Animation.San Diego:ACM,2003:154-159.
[10]李志林,朱慶.數字高程模型[M].2版.武漢:武漢大學出版社,2000.
[11]丁海燕,姜艷媛,項慧麗.海底地形數據處理與DEM生成[J].地理空間信息,2009,7(5):23-31.
[12]高金耀,金翔龍,吳自銀.多波束數據的海底數字地形模型構建[J].海洋通報,2003,22(1):30-38.
[13]高榮華,孔德慧,尹寶才.描述凸凹紋理的改進方法[J].中國科學:F 輯 信息科學,2009,39(1):154-158.
[14]張以謨.應用光學[M].3版.北京:電子工業(yè)出版社,2008.
[15]王曉鈞.基礎心理學[M].烏魯木齊:新疆人民出版社,2005.
[16]周愛保.實驗心理學[M].北京:清華大學出版社,2008.
[17]中華人民共和國國家質量監(jiān)督檢驗檢疫總局,中國國家標準化管理委員會.GB/T 12763.2—2007海洋調查規(guī)范(第2部分:海洋水文觀測)[S].北京:中國標準出版社,2007.