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