一種數字地球上的全球海洋效果模擬方法
【專利摘要】本發明提供了一種數字地球上的全球海洋效果模擬方法,首先創建規則網格,將網格投影到世界坐標系中的一個基準平面上,采用正交投影的RTT輸出數字地球的高度信息圖Heightmap,根據高度場函數模擬海浪的運動過程,從Heightmap中獲取高度信息,計算頂點透明度,最后渲染網格。該方法可以實現在三維數字地球上模擬全球海洋效果;實現海洋與陸地的平穩過渡,較好的展現了海岸線效果;以透明度的方式展現水下可視程度,在近海處還能模擬水下沙灘效果;在模擬過程中產生的數據,能較好的應用于水面或水底目標的行進特效仿真,如艦船的尾浪、側浪等。
【專利說明】
一種數字地球上的全球海洋效果模擬方法
技術領域
[0001] 本發明屬于計算機三維模擬仿真領域,具體地說是一種數字地球上的全球海洋效 果模擬方法。
【背景技術】
[0002] 在實時計算機圖形學中,在三維數字地球上繪制一個逼真的大面積水面如海面的 需求越來越強烈。隨著圖形硬件的發展,當前的計算機也能夠繪制出實時的動態水面,這方 面的研究也成為了當前的熱點。
[0003] 如果我們想要繪制一個波動的水面,首先必須為它創建一個動態的、高分辨率的 多邊形表達。如果水面的面積很大,為了實現可量測性,通常要采取層次細節(L0D)的方法, 根據視點的高低遠近決定網格的層次,減少需要渲染的數據量。當前已經有許多這方面的 研究,但是采用L0D技術也存在一些不足,如需要預先計算不同的層次、層次間的接邊問題 等等。因此,本發明提出了基于投影網格的海面繪制算法。
【發明內容】
[0004] 本發明的目的在于提供一種數字地球上的全球海洋效果模擬方法,可以實現在三 維數字地球上模擬全球海洋效果,無需計算不同的層次、層次間的接邊問題;實現海洋與陸 地的平穩過渡,較好的展現海岸線效果;以透明度的方式展現水下可視程度,在近海處可以 模擬水下沙灘效果。
[0005]為達到上述發明目的,本發明所采用的技術方案是:一種數字地球上的全球海洋 效果模擬方法,包括以下步驟:
[0006] (1)在投影空間中創建一個規則網格,所述規則網格由n*n的頂點組成;
[0007] (2)建立世界坐標系;將網格投影到世界坐標系中的一個基準平面Sbase上,并基于 正交投影利用RTT輸出數字地球的高度信息圖He i ght胃;
[0008] (3)采用高度場函數模擬海浪的運動過程,得到代表高度的函數值,將所述頂點移 動到所述高度;
[0009] (4)將所述頂點進行逆變換獲取像素位置,再從Heights中獲取高度信息,實現海 岸效果,通過計算頂點的透明度模擬沙灘的透明效果;
[0010] (5)根據像素獲取高度信息,渲染網格。
[0011] 本發明提供的一種數字地球上的全球海洋效果模擬方法,相比較現有技術,較好 的解決了傳統層次細節(L0D)上存在的一些不足,優化了處理海浪的處理效率,提升了海洋 顯示效果;共享RTT(Render To Texture)階段,實現了三維數字地球上高程信息的快速輸 出,提升了軟件的效率;在海洋的繪制過程中,快速的提取高度信息,實現了海岸與陸地的 較好過渡,較好的展現了海岸線效果;能較好的模擬出沙灘等透明效果;能在三維數字地球 以世界坐標系模擬全球海洋效果,不再局限于局部地區上的水平模擬;模擬過程中產生的 數據可被用于海面或海底目標的運動效果展現,如艦船的尾浪、側浪等;模擬出的海洋效果 包括波浪的幾何表面、紋理顏色和光照效果,海面情況可以隨風力、水深等參數變化;能夠 支持水下觀察模式,具有光線反射、折射效果和水體顏色等調節參數。
【附圖說明】
[0012] 圖1是本發明的投影網格示意圖;
[0013] 圖2是本發明的投影矩陣示意圖;
[0014]圖3是本發明的縮放矩陣示意圖;
[0015] 圖4為本發明的流程圖。
【具體實施方式】
[0016] 下面結合附圖和【具體實施方式】,對本發明作更進一步的說明。
[0017] 該方法的具體實施步驟如下:
[0018] 1、創建一個規則網格。
[0019] 在投影空間中創建一個規則網格,使該網格所在的平面垂直于視線方向,并朝向 視點;該規則網格n*n的頂點組成,記頂點結構V= {Lng,Lat,Alt},其中Lng為經度、Lat為煒 度、Alt為高度;投影網格的具體生成算法為:
[0020] (11)通過攝像機位置、方向等參數生成攝像機的透視投影矩陣Mpmpative;
[0021] (12)通過檢查置換體與視截體是否有交集進行可見性判斷,如不可見則無需渲 染;
[0022] (13)創建一個新的攝像機,為保證不出現上面提出的問題,新攝像機在需要時會 調整位置和方向,稱該攝像機為投影器。使用新的位置和方向,通過標準方法為投影器創建 一個新的觀察矩陣M pvlew,這樣就可以用下式計算投影器的矩陣MprcuectOT:
[0023] Mprojector= [M pview * Mperspective ]
[0024] (14)創建投影空間中的網格。首先創建一個標準網格,其中x=[0、l],y=[0、l], 每個點的紋理坐標為U = X, V = y。然后計算可見體(視截體Vcamara和置換體Vdisplac^able的交 集)在投影空間內的范圍。構建一個縮放矩陣M rang(5將網格變換到需要的大小,將該縮放矩陣 應用到Mprojector上,其表達式為:
[0025] Mprojector-Mrange * [Mpview * Mperspective]
[0026] (15)對網格中的每個頂點,將z值分別設置為1和-1,得到兩個點。將這兩點變換到 世界空間中,兩點連線與參考平面的交點就是網格點在世界空間中的投影點,也就是需要 的頂點。
[0027] (16)根據地面高程數據將頂點移動到相應位置,渲染得到的網格。
[0028] 2、建立世界坐標系;將網格投影到世界坐標系中的一個基準平面Sbase上。在此過 程中,基于正交投影,利用RTT輸出三維數字地球的高度信息。
[0029] 我們將得到的網格經過觀察變換、投影變換后,點的"水平位置"將和我們開始創 造的規則格網相同,惟一的不同在于"深度",因為我們在世界坐標系中根據高度場移動頂 點,這種在世界坐標系中移動頂點的能力就是投影網格的目的。圖1所示為投影網格示意 圖。
[0030] (21)計算投影矩陣
[0031] 從"投影空間"投影到世界坐標系的方法是對網格中的每個點,連接它和視點的直 線將和"基準平面"有一個交點,這個交點就是該點的投影點的水平位置,如圖2所示。
[0032] Mprojector= [M pview * Mperspective ]
[0033] P world _ MprojectorP projector
[0034]式中,Mprojector為變換矩陣;Pworld為變換后世界空間中的點^projector為投影空間中 的點。
[0035] (22)計算縮放矩陣
[0036] 算法中,需要根據可見體的范圍對規則網格進行縮放變換。由于可見體是視截體 和置換體的交集,計算投影空間中X、y范圍的算法如下所述。
[0037] (a)計算視截體8個頂點在世界中的坐標。
[0038] (b)檢查是否有頂點在上下范圍平面之間。如果有,將該頂點加入到一個緩存中。
[0039] (c)計算構成視截體的12條線段與上下范圍平面Ssuper與Slower的交點,將所有 交點也加入到上面的緩存中。
[0040] (d)如果緩存為空,表明所有地面都不可見,無需渲染。
[0041] (e)獲取緩存中所有點在參考平面上的投影點。
[0042] (f)將投影點變換到投影器空間中,計算變換后所有點的坐標中x和y的最大最小 值(11^1、1111;[11、50]^1、5〇]1;[11)。根據1和7的最大最小值構造縮放矩陣社31^6為: i:孩fsssss: 錄. @
[0043] 濟_=丨;篇 P蓄1 ^ §. § 0 1 J
[0044] (23)計算數字地球RTT階段所用的矩陣
[0045] (a)計算觀察矩陣MRttview;
[0046] 記當前觀察者的世界坐標位置為向量VEye:
[0047] vEye=(x,Y,Z)
[0048] X、Y、Z是世界坐標系下的坐標,單位為米;
[0049] 記觀察點位置為向量VAt:
[0050] VEye= (〇,〇,〇)
[00511記相機姿態向量為VUP,該變量從三維相機繼承而來。
[0052] 建立臨時向量Vzaxis、Vxaxis、V yaxis,其分別通過以下公式計算得出:
[0053] Vzaxis - norillcl 1 ( V Eye-V at)
[0054] Vxaxis - normal (cross (Vup_Vzaxis)
[0055] Vyaxis - CrOSS (Vzaxis-Vxaxis ) i _6] _餘,-,氣 、3纖 ^ f! 丨--眾域 C^3s:as£i:s^.\25?s,i _ ~'透域 I、、'?鱗 l&s'.s.lsj'.s J 叉'
[0057 ]上述公式中,n 〇 r m a 1是標準的法向量歸一化函數,c r 〇 s s是標準化的向量叉積公 式,dot是標準的向量點積公式。
[0058] (b)正交投影矩陣Morth。
[0059] 記當前觀察者的世界坐標位置為向量VRttAt:
[0060] VRttAt=(X,Y,Z)X、Y、Z是世界坐標系下的坐標,單位為米;
[0061] 記DisEyeTciAt為觀察者到觀察點之間的距離,單位為米。
[0062] 記地球半徑為WorldRadiuso
[0063] 記世界上最高點高程為1^米,世界上最深處高度為_L2米,則有:
[0064] HeighMax=WorldRadius+Li,單位為米;
[0065] HeightMin=WorldRadius_L2,單位為米;
[0066] 記Pro jnear、Pro jfar分別表不最近與最遠裁剪面,則有:
[0067] Pro jNear - H1EIX(0 ? 1,DiSEyeToAt_HeigllMax);
[0068] ProjFar=max(10.0,DisEyeT〇At-HeightMin+WorldRadius);
[0069] 記臨時變量Hasl=max(0.1,DisEyeT〇At-HeightMin+WorldRadius);
[0070] 記臨時變量抱=111;[11(¥01'1(1[?£1(^,891'1:(2.0轉01'1(1[?£1(^*11&81+11&81*11&81));
[0071] 將 Hz 整數化,Hz = Hz*1000/1000;
[0072] 貝lj: ; 2/fBs -1> 9 0 S' rnn7〇1 .秘 j # 0 f L0073J = H: 8 B
[0074] (c)經過以上的計算,在數字地球正交投影渲染過程中,全局矩陣為:
[0075] Mresult -Mworld*MRttView*Mortho
[0076] (d)渲染輸出高度紋理圖
[0077]在該過程中,將Mresult送入像素渲染器中,在該渲染器片段輸出高度值,最終得到 高度紋理圖Texheight。
[0078] 3、模擬海浪運動
[0079] (31)采用高度場函數模擬海浪的運動過程,根據高度場函數移動頂點,根據當前 頂點所受風力、洋流方向以及波浪振幅等參數,將頂點移動到運算后的高度;本發明對海浪 譜的分析是基于海浪譜的線性疊加法。其基本思想是基于Honguet-Higgins模型:平穩海 況下的海浪視為平穩的具有各態歷經性的隨機過程,波動可以被看作是有無限多個振幅不 等、頻率不等、初相位不等,并且在 x,z平面上與x軸成不同角度的方向傳播的簡單余弦波疊 加而成。其公式如下: acv
[0080] ^ i" t
[0081] 其中,an是第n個余弦波的振幅;kn是第n個波的波數;0n是第n個波與x軸方向上的 方向角 n是第n個波的角頻率;t為時間;en是第n個波的隨機相位角。
[0082] 上述的公式實際上定義了t時刻水波的高度場。當t連續變化時,就得到了水波的 運動。將該波紋函數作為位移函數擾動景物表面,可產生所需水波的動態效果。本課題對于 n值限定在10,即采用10個余弦波疊加來模擬水波的高度場。
[0083] (32)能量分割
[0084] 確定了各組成波的下限頻率〇min和上限頻率〇max,然后在〇min和〇max之間進 行隨機選取各組成波的代表頻率,為了反映海浪的真實特性,應該選取足夠多的頻率,在保 證效率的前提下,本發明為了使所選的頻率更具有代表性以減少所要選的組成波的數目, 采用等能量間隔的方法對頻率進行分割。
[0085] 等能量分割法:它利用微小梯形面積累積的方法計算出譜線下的整體面積S,進而 確定AE的大小,通過面積固定確定邊界的方法確定新的頻率h,利用線性插值的方法求出 新的fi對應的譜密度s(i)。
[0086] 通過等能量分割的方法可以得到一組波的代表頻率《 ^ ? 2、《 3……(《 n = 2Jifn), 根據頻散關系S?n2 = gkn,就可以求出第n個波的波數kn,設第n個波的間隔頻率是A con,振 幅=、/2.s'(./:,) ,從而求出振幅an。方向角0 n和初始相位角e n為隨機給出。至此,通過對 海浪譜的分析可求出全部的海浪參數,實現了波浪運動的模擬。
[0087] 4、計算透明度信息
[0088]記波浪頂點位置為VverPos,世界矩陣為Mwcxrld,則在屏幕上輸出的像素坐標位置為:
[0089] SiTCeenpOS -VverPos^Mwor ld^MRttView^Mortho
[0090] 記Srceenpos中的橫向像素坐標位置為ScreenX,縱向像素坐標位置為ScreenY;
[0091] (41)獲取像素點的高度信息
[0092]根據ScreenX、ScreenY從高度紋理中獲取指定像素的高度值H;
[0093] (42)計算像素點的透明度 [0094]根據高度值計算出透明度Alpha;
[0095] Alpha = H/100,如果 Alpha 大于 1,則將 Alapha 賦值 1。
[0096] 5、渲染網格
[0097]本發明將在頂點著色器中實現海浪運動的效果,即是將原來CPU程序中的海浪波 動函數放到頂點著色器中使用渲染語言(GLSL)來實現。為此需要傳入一個表示時間Time的 變量。時間每一幀都會增加一次,并且加載到變量Time[0]中,這就使得頂點著色器可以執 行隨時間變化的計算。
[0098]此外,本程序還將向頂點著色器傳遞包括振幅、波數、角頻率、方位角、初始相位角 這些之前計算好的參數。
[0099]在繪制網格的代碼中也不必在y分量上有擾動(填0即可),一切都由著色器處理。 由于本發明并沒有對海浪做渲染操作,因此在片元著色器中并不需要做任何事情,只需一 個空的主函數即可。
[0100]本發明提供了一種三維場景中基于投影網格的海浪繪制方法,具體實現該技術方 案的方法和途徑很多,以上所述僅是本發明的優選實施方式,應當指出,對于本技術領域的 普通技術人員來說,在不脫離本發明原理的前提下,還可以做出若干改進和潤飾,這些改進 和潤飾也應視為本發明的保護范圍。本實施例中未明確的各組成部分均可用現有技術加以 實現。
【主權項】
1. 一種數字地球上的全球海洋效果模擬方法,其特征在于,該方法包括以下步驟: (1) 在投影空間中創建一個規則網格,所述規則網格由n*n的頂點組成; (2) 建立世界坐標系;將網格投影到世界坐標系中的一個基準平面Sbase上,并基于正交 投影利用RTT輸出數字地球的高度信息圖He i ght胃; (3) 采用高度場函數模擬海浪的運動過程,得到代表高度的函數值,將所述頂點移動到 所述高度; (4) 將所述頂點進行逆變換獲取像素位置,再從Heightmap*獲取高度信息,實現海岸效 果,通過計算頂點的透明度模擬沙灘的透明效果; (5) 根據像素獲取高度信息,渲染網格。2. 根據權利要求1所述的數字地球上的全球海洋效果模擬方法,其特征在于,該方法用 于平面或三維數字地球上的海浪模擬,所述世界坐標系為三維直角坐標系,包括X軸、y軸、z 軸。3. 根據權利要求1或2所述的數字地球上的全球海洋效果模擬方法,其特征在于,所述 模擬海浪的方法采用基于海浪譜的線性疊加法。4. 根據權利要求3所述的數字地球上的全球海洋效果模擬方法,其特征在于,所述基于 海浪譜的線性疊加法基于Honguet-Higgins模型,其公式為:其中,an是第η個余弦波的振幅;kn是第η個波的波數;θη是第 n個波與X軸方向上的方向 角;ω η是第η個波的角頻率;t為時間;εη是第η個波的隨機相位角;X是橫坐標;ζ是豎坐標。5. 根據權利要求1或2所述的數字地球上的全球海洋效果模擬方法,其特征在于,將所 述高度場函數放到頂點著色器中使用渲染語言實現海浪運動效果。6. 根據權利要求2所述的數字地球上的全球海洋效果模擬方法,其特征在于,所述步驟 (1)包括: (11) 通過原攝像機的位置、方向等參數生成攝像機的透視投影矩陣Mpe3rspe^tlre; (12) 通過檢查置換體與視截體是否有交集進行可見性判斷,如可見進行下一步驟,如 不可見則無需渲染; (13) 創建一個新攝像機為投影器,使用新的位置和方向,通過標準方法為投影器創建 一個觀察矩陣Mpv1ot,計算投影器的矩陣所述計算公式為: Mprojector- [Mpview * Mperspective] (14) 創建一個標準網格,所述標準網格的X= [0、1],y= [0、1],每個點的紋理坐標為u =x, v = y;計算可見體視截體和置換體的交集在投影空間內的范圍,構建一個縮放矩陣 Mrange3將網格變換到需要的大小,將該縮放矩陣應用到所述1_>。^上,其表達式為: Mprojector - Mrange * [Mpview * Mperspective] (15) 對于格網中的每個點,將z分別設置為1和-1,得到兩個點,將所述兩點變換到世界 坐標系中,兩點連線與參考平面的交點記為頂點; (16) 根據地面高程數據將頂點移動到相應位置,渲染得到的網格。7. 根據權利要求6所述的數字地球上的全球海洋效果模擬方法,其特征在于,所屬步驟 (2)中的投影包括: (21) 計算投影矩陣: Pworld MprojectorP projector 其中,Pwcxrld為變換后世界坐標系中的點;Pprojatar為投影空間中的點; (22) 計算縮放矩陣: (a) 計算視截體的8個頂點在世界坐標系中的坐標; (b) 檢查是否有頂點在上下范圍平面之間,若有,將該頂點加入到一個緩存中; (C)計算視截體的12條線段與上下范圍平面的交點,將所有交點也加入到上面的緩存 中; (d) 如果緩存為空,表明所有地面都不可見,無需渲染; (e) 獲取緩存中所有點在參考平面上的投影點; (f) 將投影點變換到投影器空間中,計算變換后所有點的坐標中X和y的最大最小值 (Xmax、Xmin、ymax、ymin),根據X和y的最大最小倌構造縮放矩陣Mramre為:8.根據權利要求1或2所述的數字地球上的全球海洋效果模擬方法,其特征在于,所述 步驟(2)中RTT階段所用的矩陣計算步驟包括: (a) 記當前觀察者的世界坐標位置為向量VEye3: VEye=(X,Y,Z) 記觀察點位置為向量VAt: Vvye= (0,0,0) 記相機姿態向量為Vup,所述Vup從三維相機繼承而來; 建立臨時向量Vzaxis、Vxaxis 、Vyaxis ? 其分別通過以下公式計算得出: Vzaxis - normal (VEye-Vat) VxaxisnoriTial ( CTOSS (Vup-Vzaxis ) \7 . -一。,"U · _U ·、 V yax]上述公式中,normal是標準的法向量歸一化函數,cross是標準化的向量叉積公式,dot 是標準的向量點積公式; (b) 記當前觀察者的世界坐標位置為向量VRttAt: VRttAt= (Χ,Υ,Ζ) 記DiSEyeTciAt為觀察者到觀察點之間的距離,記地球半徑為W〇rldRadi US,記世界上最高點 高程為Li,世界上最深處高度為-L2,則有: HeigtlMax - W〇rldRadius+Ll ; HeightMin - ff〇rIdRadius-L2 ; 記Pro jnear、Pro jfar分別表示最近與最遠裁剪面,則有: Pro JNear - ITiaX ( 0 · I,Di SEyeToAt-He igllMax); Pro JFar - ITiaX ( 10 · O,Di SEyeToAt-Ηθ ightMin+W〇rldRadius ); 記臨時變量Hasl=max(0 · I,DisEyeT〇At-HeightMin+WorldRadiUS); 記臨時變量版=111;!_11(1〇1'1(11^(1-,891^(2.0*1〇1'1(11^(1-*11&81+11&81*11&81)); 將 Hz 整數化,Hz = Hz*1000/1000; 則:正交投影矩陣Morth。為:(c) 全局矩陣的計算公式為: Mresult 一 Mworld^MRttView^Mortho 其中,Mworld為世界矩陣; (d) 將Mresult送入像素渲染器中,在該渲染器片段輸出高度值,最終得到高度紋理圖 TeXheight 〇
【文檔編號】G06T15/04GK105894563SQ201610260326
【公開日】2016年8月24日
【申請日】2016年4月25日
【發明人】李彭偉, 王穎, 強士卿, 楊華, 張曄嘉, 孫翌晨
【申請人】中國電子科技集團公司第二十八研究所