專利名稱:一種3d地形渲染方法和渲染裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及3維(3D )技術(shù)領(lǐng)域,特別涉及一種3D地形渲染方法和渲 染裝置。
背景技術(shù):
3D地形渲染是指對3D模型化的地形進行著色、頂點變換、貼圖等操 作。在3D地形渲染中,為了減輕渲染的處理負擔(dān),出現(xiàn)了一種細節(jié)層次 (LOD, Level Of Detail)技術(shù)。LOD技術(shù)將地形渲染劃分為多種不同精細 級別,離視點較近即視距較小的地形使用較高的細節(jié)進行渲染,離視點較遠 即視距較大的地形使用較低的細節(jié)渲染。
在3D地形渲染中, 一般是先把完整地形分成等大的小地形塊,每個地 形塊根據(jù)其平面網(wǎng)格模型和頂點數(shù)據(jù)來進行渲染。平面網(wǎng)格模型是一個類似 圍棋棋盤的格子模型,網(wǎng)格中每個交點都具有一組頂點數(shù)據(jù),頂點數(shù)據(jù)中包
含高度、亮度、色度等數(shù)值。平面網(wǎng)格模型越精細,網(wǎng)格中包含的頂點越多, 細節(jié)越高。例如16x16、 8x8、 4x4、 2x2、 lxl的不同精細程度的平面網(wǎng)才各 ;漠型可以對應(yīng)0~4共5種不同的LOD級別。
現(xiàn)有的3D地形渲染時,首先要加載預(yù)先編輯好的完整地形中所有地形 塊的各種LOD級別下的平面網(wǎng)格模型和相應(yīng)的頂點數(shù)據(jù),然后根據(jù)地形塊 的視距計算出在該視點下每個地形塊的LOD級別,并根據(jù)LOD級別,選用 對應(yīng)的平面網(wǎng)格模型及相應(yīng)的頂點數(shù)據(jù)對地形塊進行渲染。這種預(yù)先編輯好 平面網(wǎng)格模型和相應(yīng)的頂點數(shù)據(jù)的渲染方法又可稱為靜態(tài)LOD渲染。
同一個地形塊的LOD級別是隨著視距的變化而變化的,視距越大其 LOD級別越低,視距越小其LOD級別越高,以平衡視覺效果與計算量。但是,由于同一個地形塊的不同的LOD級別對應(yīng)的平面網(wǎng)格模型和頂點數(shù)據(jù) 是不同的,當(dāng)LOD級別變化時,該地形塊的頂點高度、亮度、色度等參數(shù) 將會發(fā)生突變,使渲染出來的地形塊的幾何形態(tài)、光照、顏色等可能會突然 改變,從而使渲染出來的3D地形產(chǎn)生明顯的地形"跳動"現(xiàn)象,嚴(yán)重影響 渲染效果。
發(fā)明內(nèi)容
本發(fā)明實施例提供一種3D地形渲染方法,可以消除地形"跳動"現(xiàn)象。 本發(fā)明實施例提供一種3D地形渲染裝置,可以消除地形"跳動,,現(xiàn)象。 為達到上述目的,本發(fā)明的技術(shù)方案具體是這樣實現(xiàn)的 一種3D ;也形渲染方法,該方法包4舌 根據(jù)碎見距確定地形塊當(dāng)前的層次細節(jié)LOD級別;
根據(jù)視距和預(yù)設(shè)的所述地形塊當(dāng)前LOD級別對應(yīng)的漸變區(qū)間計算漸變 參數(shù),使用漸變參數(shù)對所述地形塊的頂點高度值進行修正;
選取比所述地形塊當(dāng)前LOD級別高一精度級別的網(wǎng)格模型并使用所述 修正后的頂點高度值對地形塊進行渲染。
一種3D地形渲染裝置,該裝置包括
LOD確定模塊,用于根據(jù)視距確定地形塊當(dāng)前的LOD級別; 數(shù)據(jù)修正模塊,用于根據(jù)視距和預(yù)設(shè)的所述地形塊當(dāng)前LOD級別對應(yīng)
的漸變區(qū)間計算漸變參數(shù),使用漸變參數(shù)對所述地形塊的頂點高度值進行修
正;
渲染模塊,與所述數(shù)據(jù)修正模塊和LOD確定模塊相連,用于選取比所 述LOD確定模塊確定的地形塊當(dāng)前LOD級別高 一精度級別的網(wǎng)格模型并使 用所述數(shù)據(jù)修正模塊修正后的頂點高度值對地形塊進行渲染。
由上述的技術(shù)方案可見,本發(fā)明的3D地形渲染方法和裝置,根據(jù)視距 確定地形塊當(dāng)前的層次細節(jié)LOD級別;根據(jù)視距和預(yù)設(shè)的所述地形塊當(dāng)前 LOD級別對應(yīng)的漸變區(qū)間計算漸變參數(shù),使用漸變參數(shù)對所述地形塊的頂
6點高度值進行修正;選取比所述地形塊當(dāng)前LOD級別高一精度級別的網(wǎng)格 模型并使用所述修正后的頂點高度值對地形塊進行渲染。該方法和裝置使修 正后的地形塊數(shù)據(jù)根據(jù)視點變化而連續(xù)變化,即使地形塊的LOD級別發(fā)生 變化,也不會產(chǎn)生地形"跳動"現(xiàn)象,另外,通過使用頂點著色器Vertex Shader 實現(xiàn)地形塊數(shù)據(jù)的動態(tài)修正,渲染效率很高。
圖1為本發(fā)明實施例的3D地形渲染方法流程圖2為高精度地形塊模擬低精度地形塊的原理示意圖3為本發(fā)明實施例的3D地形渲染裝置示意圖4為本發(fā)明實施例的LOD確定模塊具體結(jié)構(gòu)示意圖5為本發(fā)明實施例的數(shù)據(jù)修正模塊具體結(jié)構(gòu)示意圖。
具體實施例方式
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下參照附圖并舉 實施例,對本發(fā)明進一步詳細說明。
本發(fā)明主要是采用比地形塊的當(dāng)前LOD級別高 一精度級別的LOD級別 對應(yīng)的地形塊數(shù)據(jù),通過連續(xù)漸變方式對地形塊進行渲染,使用高精度的地 形塊模型模擬低精度的地形塊,當(dāng)高精度的地形塊和低精度的地形塊的形態(tài) 完全一樣時,地形塊的LOD級別才變?yōu)榈途取?br>
圖1為本發(fā)明實施例的3D地形渲染方法流程圖,如圖1所示,該流程 包括
步驟101,才艮據(jù)^L距確定地形塊當(dāng)前的LOD級別。
確定LOD級別的具體方法可以為預(yù)先為每個LOD級別設(shè)置一個漸變 區(qū)間,通過判斷地形塊的視距落在哪個漸變區(qū)間內(nèi),確定該地形塊的LOD 級別。例如預(yù)先設(shè)置0 100的視距為LOD0級,也就是最高精度,101 200 的視距為1級,201~300為2級,以此類推;具體LOD級別分為多少級,每級的漸變區(qū)間任意。當(dāng)然,確定LOD級別還可以采用現(xiàn)有其他方式,這
里不再贅述了。
步驟102,才艮據(jù)浮見距和預(yù)i殳的所述地形塊當(dāng)前LOD級別對應(yīng)的漸變區(qū) 間計算漸變參數(shù),使用漸變參數(shù)對所述地形塊的頂點高度值進行修正。
對地形塊的渲染需要用到多種數(shù)據(jù),例如頂點數(shù)據(jù)中的頂點高度值、頂 點亮度值、頂點色度值等,其中頂點高度值用于3D地形的幾何形態(tài)的渲染, 也是產(chǎn)生圖像"跳動"的主要因素,因此這里以頂點高度值的修正為例。漸 變參數(shù)的計算和具體的數(shù)值修正方法將在下文中詳細描述。
步驟103,選取比所述地形塊當(dāng)前LOD級別高一精度級別的網(wǎng)格模型 并使用所述修正后的頂點高度值對地形塊進行渲染。
由于現(xiàn)有的靜態(tài)LOD渲染方法中,每個地形塊在所有LOD級別下的地 形數(shù)據(jù)都是預(yù)先編輯好的,在進行3D地形渲染前,這些地形塊數(shù)據(jù)都要載 入到緩沖中。本步驟中,將調(diào)用高一精度級別LOD,即更高精度的地形塊 網(wǎng)格模型來模擬確定的地形塊,當(dāng)然,如果當(dāng)前地形塊的LOD級別已經(jīng)是 最高級了,那么調(diào)用的還是最高級的網(wǎng)格模型。本步驟中的渲染仍然采用任 意現(xiàn)有技術(shù)即可,只是用于渲染的頂點高度值需要使用修正后的數(shù)值。
下面將詳細闡述本發(fā)明的原理及漸變參數(shù)的計算和具體的數(shù)值修正方法。
圖2為高精度地形塊模擬低精度地形塊的原理示意圖,如圖2所示一 個高精度地形塊(圖2中為一個精度4x4的地形塊),其中虛線部分的頂點 高度在精度4x4時為Hl,而當(dāng)?shù)匦螇K精度變?yōu)?x2時其高度為H2,現(xiàn)有地 形渲染方法中,當(dāng)該地形塊的LOD級別變化時,虛線部分的頂點高度將會 發(fā)生突變,而本發(fā)明實施例中,通過一個漸變過程,讓其高度H1改變到H2 是漸變完成的,觀察者就不會感到明顯的突變了。具體實現(xiàn)時,本發(fā)明實施 例中預(yù)先為每一個LOD級別設(shè)置一個漸變區(qū)間,然后根據(jù)4!U巨和漸變區(qū)間 計算一個漸變參數(shù)t,其取值范圍為
,然后根據(jù)這個漸變參數(shù)對 Hl進行修正,修正后的頂點高度值H為
8H = H1十(H2-Hl)x t;
其中,H為修正后的地形塊數(shù)據(jù)中的頂點高度值,Hl為高精度時的頂 點高度值,H2為低精度時的頂點高度值;t為漸變參數(shù)。 其中漸變參數(shù)t的計算方法可以為 t= ( S-S0) /Sl;
其中,t為漸變參數(shù),S為地形塊與視點的距離,SO為低精度時地形塊 所設(shè)置的漸變區(qū)間的起始值,Sl為漸變區(qū)間中起始值和終止值之間的差值 也就是漸變區(qū)間的區(qū)間范圍。
例如設(shè)置視距為0 100時LOD級別為0即精度為16x16,視距為 100-200時LOD級別為1,其精度為8x8,那么當(dāng)其漸變參數(shù)t在視距為150 時的值t = ( 150-100 ) / ( 200-100 ) = 0.5。這里還要注意一點就是要保證LOD 級別的下一級和上一級之間所設(shè)置的漸變區(qū)間的端點值應(yīng)該能連接上,即所 有LOD級別之間設(shè)置的漸變區(qū)間是連續(xù)的不應(yīng)有間隔。設(shè)置漸變區(qū)間兩端 的端點zf直可以相同,如果相同,則在確定LOD級別時,可以^l奪LOD級別確 定為精細程度高的。
上述漸變參數(shù)和定點高度值的修正公式是原理公式,對于上述原理公式 的各種變形公式也是可以實現(xiàn)的,其原理是利用漸變參數(shù)對定點高度值進行 修正,其他利用該原理設(shè)計的具體公式還有很多,這里就不——贅述了。
另外,在本發(fā)明實施例的具體實現(xiàn)時,因為地形塊的模型在事先已經(jīng)構(gòu) 建好了,其中頂點高度值等已經(jīng)事先存到頂點緩沖內(nèi),那么在具體進行地形 渲染時,可以把修正高度值的計算放到顯卡的Vertex Shader去做,由于現(xiàn) 有顯卡的頂點處理能力非常強,多計算一下高度值,對渲染速度幾乎沒有影 響,從而達到較高的渲染效率。具體使用Vertex Shader實現(xiàn)定點高度值修 正的方法i口下
因為在Vertex Shader內(nèi) 一次能同時處理4個浮點數(shù),因此可以把地形 的LOD級別設(shè)置為0~4共5級,級別數(shù)字越小表示精度越高。LOD級別變 換時最多只能變換l級,也就是說LOD級別變換總共有0~1, 1~2, 2 3,3~4。其中0為最高精度,4為最低精度。設(shè)最低精度時變?yōu)閘xl的網(wǎng)格, 那么最高精度的網(wǎng)格應(yīng)該是16x16。所以需要事先把地形分為16x16的小地 形塊,同時在存儲頂點數(shù)據(jù)時,除了頂點高度值外,還要存儲0~1, 1 2, 2~3, 3~4,四個LOD級別變換的高度差,用于在Vertex Shader內(nèi)最后計算 高度值。頂點的高度差值,用一個32位的浮點數(shù)就可以存儲。
在頂點緩沖數(shù)據(jù)準(zhǔn)備好后,在Vertex Shader計算前還需要兩個參數(shù) MorphStart和MorphRange。其中MorphStart表示漸變區(qū)間的起始值,相當(dāng) 于上述的S0, MorphRange表示漸變區(qū)間的區(qū)間范圍,相當(dāng)于上述的SI 。這 兩個參數(shù)都是一個4維的向量,用來描述4個LOD級別的變換。
最后在Vertex Shader內(nèi)計算頂點的高度值的^^式如下
首先計算4種LOD級別變換時的漸變參數(shù)
float4 morph = saturate((viewDist — MorphStart)/MorphRange);
其中,float4 morph表示4種LOD級別變換時的漸變參數(shù),viewDist為 視距,MorphStart為所述漸變區(qū)間的起始值,MorphRange為所述漸變區(qū)間 的區(qū)間范圍;saturate函數(shù)的功能是把取值范圍限制在閉區(qū)間
內(nèi)。
然后計算4種LOD級別變換時的修正值,并以最高精度的頂點高度值 為基準(zhǔn),與4個修正值進行疊加,得到頂點在當(dāng)前LOD級別變換下修正后 的高度值
float height = h0 + dot(moprh, hDiff);
其中,float height表示頂點在當(dāng)前LOD級別變換下修正后的高度值, h0為最高精度LOD級別的頂點高度值,moprh為漸變參數(shù),hDiff為LOD 級別變換時的頂點高度差,可以取上述0 1, 1~2, 2~3, 3~4,四個精度變 換的高度差,dot函數(shù)的功能是將m叩rh和hDiff做點積計算,相當(dāng)于 morph.xxhDiff.x+moprh.yxhDiff.y+morph.zxhDiff.z+morph.wxhDiff.w, 即 4 組morph值與hDiff值分別相乘后再相加。
上述公式的含義和原理與步驟103中描述的漸變參數(shù)和對頂點高度值 的1奮正7>式實際上是一樣的,只不過具體在Vertex Shader內(nèi)實現(xiàn)時,采用了高度值疊加修正的方式,即分別計算頂點在4種LOD級別變換時的漸變 參數(shù)和修正值,并以最高精度LOD級別的頂點高度值為基準(zhǔn),與4個修正 值進行疊加,得到頂點在當(dāng)前LOD級別變換下修正后的高度值。
以進行LOD級別1~2的變換為例,此時視距是落在LOD級別2的漸變 區(qū)間之間,此時分別計算4種精度變換時的morph值,即(viewDist _ MorphStart)/MorphRange,最終float4 morph的結(jié)果將為(1, t, 0, 0 ),其中 1為0 1變4臭時的morph ^直,t為1~2變4灸時的morph ^f直,之后分別是2~3 及3~4變換時的morph值。2~3, 3~4變換時,由于一見距小于LOD級別3和 4的漸變區(qū)間,即(viewDist — MorphStart)為負數(shù),經(jīng)過saturate函數(shù)處理后 morph值變?yōu)?,而0~1時,viewDist大于LOD級別0的漸變區(qū)間,因此 (viewDist - MorphStart)/MorphRange的Y直大于1,經(jīng)過saturate函凄史處^里后 morph值變?yōu)?,然后使用dot函數(shù)進行運算,即4種精度變換時的頂點高 度差hDiff分別與其對應(yīng)的morph值相乘后再相加,得到當(dāng)前-見距下,4種 精度變換疊加的修正值,再與最高精度的高度值相加,正好得到最后需要的 修正后的高度值。
上述的公式的巧妙之處在于將對4種精度變換時的參數(shù)修正計算進行 了統(tǒng)一,無需考慮當(dāng)前變換為4種精度變換中的哪一種,且使用了現(xiàn)有的函 數(shù),因此在Vertex Shader中應(yīng)用時只需多出5條左右的指令,運行效率很 高。當(dāng)然也可以采用對4種精度變換進行判斷后再計算修正參數(shù)的方式實 現(xiàn)。
利用Vertex Shader計算漸變參數(shù)和對頂點高度值的修正時,可以利用 現(xiàn)有函數(shù)實現(xiàn)上述原理公式的計算,本例僅為較佳的實施方式,其他實現(xiàn)上 述原理公式計算的方法還有很多,可以根據(jù)具體需要而定,這里就不再贅述 了。
圖3為本發(fā)明實施例的3D地形渲染裝置示意圖,如圖3所示,該裝置 包括
LOD確定模塊301,用于根據(jù)視距確定地形塊當(dāng)前的LOD級別;數(shù)據(jù)修正模塊302,用于根據(jù)視距和預(yù)設(shè)的所述地形塊當(dāng)前LOD級別 對應(yīng)的漸變區(qū)間計算漸變參數(shù),使用漸變參數(shù)對所述地形塊的頂點高度值進 行修正;
渲染模塊303,與所述數(shù)據(jù)修正模塊302和LOD確定模塊301相連, 用于選取比所述LOD確定模塊301確定的地形塊當(dāng)前LOD級別高 一精度級 別的網(wǎng)格模型并使用所述數(shù)據(jù)修正模塊302修正后的頂點高度值對地形塊 進行渲染。
圖4為本發(fā)明實施例的LOD確定模塊具體結(jié)構(gòu)示意圖,如圖4所示, 所述LOD確定模塊301包括
區(qū)間設(shè)置單元401 ,用于預(yù)先為每個LOD級別設(shè)置一個漸變區(qū)間;
LOD判定單元402,與所述區(qū)間設(shè)置單元401相連,通過判斷一見距所處 的漸變區(qū)間,確定該地形塊的LOD級別。
圖5為本發(fā)明實施例的數(shù)據(jù)修正模塊具體結(jié)構(gòu)示意圖,如圖5所示,所 述數(shù)據(jù)修正模塊302包括
漸變參數(shù)計算單元501,用于根據(jù)公式t二 (S-S0) /Sl計算漸變參數(shù);
其中,t為漸變參數(shù),S為視距,SO為所述漸變區(qū)間的起始值,Sl為所 述漸變區(qū)間的區(qū)間范圍;
高度修正單元502,與所述漸變參數(shù)計算單元501相連,用于根據(jù)公式 H=H1+ ( H2-H1 ) x t對地形塊的頂點高度值進^^奮正;
其中,H為修正后的頂點高度值,HI為比所述地形塊當(dāng)前LOD級別高 一精度級別的LOD級別對應(yīng)的頂點高度值,H2為所述地形塊當(dāng)前LOD級 別對應(yīng)的頂點高度值;t為漸變參數(shù)。
較佳地,數(shù)據(jù)修正模塊302可以釆用頂點著色器實現(xiàn),例如所述LOD 級別分為5級,共4種LOD級別變換;
漸變參數(shù)計算單元501具體可以根據(jù)公式float4 morph = saturate((viewDist — MorphStart)/MorphRange),計算頂點在4種LOD級別變 換時的漸變參數(shù);
12其中,float4 morph表示4種LOD級別變換時的漸變參數(shù),viewDist為 視距,MorphStart為所述漸變區(qū)間的起始值,MorphRange為所述漸變區(qū)間 的區(qū)間范圍;saturate函數(shù)是把耳又值范圍限制在閉區(qū)間
內(nèi);
高度修正單元502具體可以根據(jù)乂>式float height = h0 + dot(moprh, hDiff),計算4種LOD級別變換時的修正值,并以最高精度的頂點高度值為 基準(zhǔn),與4個修正值進行疊加,得到頂點在當(dāng)前LOD級別變換下修正后的 高度值;
其中,float height表示頂點在當(dāng)前LOD級別變換下修正后的高度值, h0為最高精度LOD級別的頂點高度值,moprh為漸變參數(shù),hDiff為LOD 級別變換時的頂點高度差,dot函數(shù)是將moprh和hDiff做點積計算。
本發(fā)明實施例的3D渲染裝置可以采用電腦或服務(wù)器等設(shè)備實現(xiàn),其中 各模塊可以集成于同一電腦或服務(wù)器內(nèi),具體地,頂點著色器可以采用顯卡 實現(xiàn)。
由上述的實施例可見,本發(fā)明的這種3D地形渲染方法和裝置,根據(jù)視 距確定地形塊當(dāng)前的層次細節(jié)LOD級別;4艮據(jù)-見距和預(yù)設(shè)的所述地形塊當(dāng) 前LOD級別對應(yīng)的漸變區(qū)間計算漸變參數(shù),使用漸變參數(shù)對所述地形塊的 頂點高度值進行修正;選取比所述地形塊當(dāng)前LOD級別高一精度級別的網(wǎng) 格模型并使用所述修正后的頂點高度值對地形塊進行渲染。該方法和裝置使 ^uE后的地形塊數(shù)據(jù)根據(jù)視點變化而連續(xù)變化,即使地形塊的LOD級別發(fā) 生變化,也不會產(chǎn)生地形"跳動,,現(xiàn)象,另外,通過使用頂點著色器Vertex Shader實現(xiàn)地形塊數(shù)據(jù)的動態(tài)修正,渲染效率很高。
所應(yīng)理解的是,以上所述僅為本發(fā)明的較佳實施方式而已,并不用于限 定本發(fā)明的保護范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等 同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1、一種3D地形渲染方法,其特征在于,該方法包括根據(jù)視距確定地形塊當(dāng)前的層次細節(jié)LOD級別;根據(jù)視距和預(yù)設(shè)的所述地形塊當(dāng)前LOD級別對應(yīng)的漸變區(qū)間計算漸變參數(shù),使用漸變參數(shù)對所述地形塊的頂點高度值進行修正;選取比所述地形塊當(dāng)前LOD級別高一精度級別的網(wǎng)格模型并使用所述修正后的頂點高度值對地形塊進行渲染。
2、 如權(quán)利要求1所述的3D地形渲染方法,其特征在于,所述根據(jù)地形塊 與視點的距離確定地形塊的LOD級別包括預(yù)先為每個LOD級別設(shè)置一個漸變區(qū)間,通過判斷視距所處的漸變區(qū)間, 確定該地形塊的LOD級別。
3、 如權(quán)利要求2所述的3D地形渲染方法,其特征在于,所述漸變參數(shù)的 計算方法包括t= (S-SO) /SI;其中,t為漸變參數(shù),S為視距,SO為所述漸變區(qū)間的起始值,Sl為所述漸變區(qū)間的區(qū)間范圍。
4、 如權(quán)利要求3所述的3D地形渲染方法,其特征在于,所述使用漸變參 數(shù)對所述地形塊的頂點高度值進行修正的方法包括H=H1+ ( H2-H1 ) x t;其中,H為修正后的頂點高度值,HI為比所述地形塊當(dāng)前LOD級別高一 精度級別的LOD級別對應(yīng)的頂點高度值,H2為所述地形塊當(dāng)前LOD級別對應(yīng) 的頂點高度值;t為漸變參數(shù)。
5、 如權(quán)利要求1~4所述的3D地形渲染方法,其特征在于,所述LOD級 別分為5級,共4種LOD級別變換。
6、 如權(quán)利要求5所述的3D地形渲染方法,其特征在于,所述計算漸變參 數(shù)及對頂點高度值進行修正采用頂點著色器Vertex Shader實現(xiàn),具體實現(xiàn)方法包括分別計算頂點在4種LOD級別變換時的漸變參數(shù)和修正值,并以最高精度 LOD級別的頂點高度值為基準(zhǔn),與4個修正值進行疊加,得到頂點在當(dāng)前LOD 級別變換下修正后的高度值。
7、 如權(quán)利要求6所述的3D地形渲染方法,其特征在于,所述計算4種LOD 級別變換時的漸變參數(shù)采用以下公式float4 morph = saturate((viewDist — MorphStart)/MorphRange);其中,float4 morph表示4種LOD級別變換時的漸變參數(shù),viewDist為視 距,MorphStart為所述漸變區(qū)間的起始值,MorphRange為所述漸變區(qū)間的區(qū)間 范圍;saturate函數(shù)是把取值范圍限制在閉區(qū)間[O, l]內(nèi);所述計算4種LOD級別變換時的修正值,并以最高精度的頂點高度值為基 準(zhǔn),與4個修正值進行疊加,得到頂點在當(dāng)前LOD級別變換下修正后的高度值, 采用以下公式float height = h0 + dot(moprh, hDiff);其中,float height表示頂點在當(dāng)前LOD級別變換下修正后的高度值,h0 為最高精度LOD級別的頂點高度值,moprh為漸變參數(shù),hDiff為LOD級別變 換時的頂點高度差,dot函數(shù)是將moprh和hDiff做點積計算。
8、 一種3D地形渲染裝置,其特征在于,該裝置包括 LOD確定模塊,用于根據(jù)視距確定地形塊當(dāng)前的LOD級別; 數(shù)據(jù)修正模塊,用于根據(jù)視距和預(yù)設(shè)的所述地形塊當(dāng)前LOD級別對應(yīng)的漸變區(qū)間計算漸變參數(shù),使用漸變參數(shù)對所述地形塊的頂點高度值進行修正;渲染模塊,與所述數(shù)據(jù)修正模塊和LOD確定模塊相連,用于選取比所述 LOD確定模塊確定的地形塊當(dāng)前LOD級別高一精度級別的網(wǎng)格模型并使用所 述數(shù)據(jù)修正模塊修正后的頂點高度值對地形塊進行渲染。
9、 如權(quán)利要求8所述的3D地形渲染裝置,其特征在于,所述LOD確定 模塊包括區(qū)間設(shè)置單元,用于預(yù)先為每個LOD級別設(shè)置一個漸變區(qū)間;LOD判定單元,與所述區(qū)間設(shè)置單元相連,通過判斷視距所處的漸變區(qū)間,確定該地形塊的LOD級別。
10、 如權(quán)利要求9所述的3D地形渲染裝置,其特征在于,所述數(shù)據(jù)修正 模塊包括漸變參數(shù)計算單元,用于根據(jù)公式t = ( S-S0 ) /Sl計算漸變參數(shù);其中,t為漸變參數(shù),S為視距,S0為所述漸變區(qū)間的起始值,Sl為所述 漸變區(qū)間的區(qū)間范圍;高度修正單元,與所述漸變參數(shù)計算單元相連,用于根據(jù)公式H=H1+ (H2-H1 ) x t對地形塊的頂點高度值進行修正;其中,H為修正后的頂點高度值,Hl為比所述地形塊當(dāng)前LOD級別高一 精度級別的LOD級別對應(yīng)的頂點高度值,H2為所述地形塊當(dāng)前LOD級別對應(yīng) 的頂點高度值;t為漸變參數(shù)。
11、 如權(quán)利要求IO所述的3D地形渲染裝置,其特征在于,所述數(shù)據(jù)修正 模塊為頂點著色器,所述LOD級別分為5級,共4種LOD級別變換;所述漸變參數(shù)計算單元用于根據(jù)公式float4 morph = saturate((viewDist -MorphStart)/MorphRange),計算頂點在4種LOD級別變換時的漸變參數(shù);其中,float4 morph表示4種LOD級別變換時的漸變參數(shù),viewDist為視 距,MorphStart為所述漸變區(qū)間的起始值,MorphRange為所述漸變區(qū)間的區(qū)間 范圍;saturate函數(shù)是^>取值范圍限制在閉區(qū)間
內(nèi);所述高度修正單元用于根據(jù)公式float height ^hO + dot(m叩rh,hDiff),計 算4種LOD級別變換時的修正值,并以最高精度的頂點高度值為基準(zhǔn),與4 個修正值進行疊加,得到頂點在當(dāng)前LOD級別變換下修正后的高度值;其中,float height表示頂點在當(dāng)前LOD級別變換下修正后的高度值,h0 為最高精度LOD級別的頂點高度值,moprh為漸變參數(shù),hDiff為LOD級別變 換時的頂點高度差,dot函數(shù)是將moprh和hDiff做點積計算。
全文摘要
本發(fā)明公開了一種3D地形渲染方法,根據(jù)視距確定地形塊當(dāng)前的層次細節(jié)LOD級別;根據(jù)視距和預(yù)設(shè)的所述地形塊當(dāng)前LOD級別對應(yīng)的漸變區(qū)間計算漸變參數(shù),使用漸變參數(shù)對所述地形塊的頂點高度值進行修正;選取比所述地形塊當(dāng)前LOD級別高一精度級別的網(wǎng)格模型并使用所述修正后的頂點高度值對地形塊進行渲染。該方法和裝置使修正后的地形塊數(shù)據(jù)根據(jù)視點變化而連續(xù)變化,即使地形塊的LOD級別發(fā)生變化,也不會產(chǎn)生地形“跳動”現(xiàn)象。本發(fā)明同時公開了一種3D地形渲染裝置。
文檔編號G06T15/00GK101493952SQ20091007819
公開日2009年7月29日 申請日期2009年2月26日 優(yōu)先權(quán)日2009年2月26日
發(fā)明者靜 龔 申請人:北京像素軟件科技股份有限公司