国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于GeometryClipmap的三維地形可視化研究

2016-07-19 02:07:24殷青松哈力木拉提買買提
關(guān)鍵詞:視點(diǎn)頂點(diǎn)紋理

殷青松 哈力木拉提·買買提

(新疆大學(xué)新疆多語(yǔ)種信息技術(shù)實(shí)驗(yàn)室 新疆 烏魯木齊 830046)

?

基于GeometryClipmap的三維地形可視化研究

殷青松哈力木拉提·買買提

(新疆大學(xué)新疆多語(yǔ)種信息技術(shù)實(shí)驗(yàn)室新疆 烏魯木齊 830046)

摘要隨著數(shù)字科技的廣泛應(yīng)用和信息化普及的逐漸深入,實(shí)現(xiàn)地形的三維可視化的重要性日漸彰顯。但目前的普通PC內(nèi)存容量無(wú)法容納海量的幾何數(shù)據(jù)和紋理數(shù)據(jù)。為解決這個(gè)問(wèn)題并提高繪制的效率,采用Geometry Clipmap算法繪制地形,充分利用GPU以提高繪制效率,通過(guò)頂點(diǎn)紋理獲取各頂點(diǎn)高程值。同時(shí),簡(jiǎn)化了三角形條帶的組織方式,使用簡(jiǎn)化的視錐體裁剪方法和動(dòng)態(tài)確定繪制層數(shù)方法減少需要繪制的頂點(diǎn)數(shù)。根據(jù)特定層結(jié)構(gòu),提出數(shù)據(jù)更新的新方法(二進(jìn)制定位法)減少視點(diǎn)移動(dòng)時(shí)各幀的數(shù)據(jù)更新量。實(shí)驗(yàn)結(jié)果表明,該方法使用很少的內(nèi)存完成大規(guī)模地形繪制,且取得了較高的幀率,漫游流暢,保證了地形的真實(shí)感,能滿足大規(guī)模地形實(shí)時(shí)可視化的要求。

關(guān)鍵詞幾何剪切圖剪切圖地形可視化頂點(diǎn)紋理獲取圖形處理器

0引言

三維地形渲染從用途分類,主要有兩種方式:一種是人為設(shè)計(jì)各種地形并采用多種紋理素材。通過(guò)混合、拼接等操作實(shí)現(xiàn)地形的渲染[1,2],這種方式常用于大型3D游戲等人為設(shè)計(jì)的虛擬環(huán)境渲染中。它的特點(diǎn)是高程和紋理人為合成設(shè)計(jì),可重復(fù)利用,所以數(shù)據(jù)量小,比較容易實(shí)現(xiàn)。另一種是采用真實(shí)的高程數(shù)據(jù)和紋理(如通過(guò)衛(wèi)星探測(cè)拍攝)來(lái)進(jìn)行三維地形的渲染[3,4]。這種方式一般用于需要真實(shí)地形模擬的場(chǎng)合,如數(shù)字地球、軍事用途等。采用第二種方式實(shí)現(xiàn)三維地形渲染時(shí),要處理的數(shù)據(jù)量相當(dāng)大,一般內(nèi)存容量不能一次容納這么多數(shù)據(jù),所以此法對(duì)數(shù)據(jù)的加載和調(diào)度算法要求比較高,實(shí)現(xiàn)難度更大。為了減少數(shù)據(jù)的處理量,提高渲染速度,LOD(LevelofDetails)細(xì)節(jié)層級(jí)技術(shù)應(yīng)運(yùn)而生,產(chǎn)生了許多優(yōu)秀的算法。LOD技術(shù)指根據(jù)物體模型的節(jié)點(diǎn)在顯示環(huán)境中所處的位置和重要度,決定物體渲染的資源分配,降低非重要物體的面數(shù)和細(xì)節(jié)度,從而獲得高效率的渲染運(yùn)算。

從三維地形網(wǎng)格圖的實(shí)現(xiàn)方式來(lái)看,也主要可分為兩類:規(guī)則格網(wǎng)Grid模型[5]和不規(guī)則三角網(wǎng)TIN模型[6]。

近年來(lái),隨著GPU的出現(xiàn)和迅速發(fā)展,GPU強(qiáng)大的數(shù)據(jù)處理能力尤其是對(duì)浮點(diǎn)型數(shù)據(jù)的處理能力極大地緩解了CPU的負(fù)擔(dān),所以最大限度地利用GPU來(lái)渲染地形能夠使渲染速度大幅加快。相比TIN模型,具有規(guī)則結(jié)構(gòu)的Grid模型在利用GPU提高效率方面明顯更具優(yōu)勢(shì)。

由于傳統(tǒng)的LOD算法(如ROAM算法[7]、基于四叉樹的地形算法[8]等)需要實(shí)時(shí)地建立和修改網(wǎng)格結(jié)構(gòu),極大地依賴CPU,限制了繪制速度,所以近年來(lái)的研究都專注于面向GPU的LOD算法,Mipmap算法和收稿Clipmap算法[9]就是其中的佼佼者,極大地提高了繪制速度并節(jié)省了存儲(chǔ)空間。Clipmap算法比Mipmap算法復(fù)雜,但占用更少內(nèi)存。

2004年Losasso和Hoppe提出了GeometryClipmap算法。這是一種基于視點(diǎn)的連續(xù)LOD方法,將地形看作是一張由高程數(shù)據(jù)組成的紋理圖像,采用Clipmap結(jié)構(gòu)將地形幾何數(shù)據(jù)組織成嵌套的規(guī)則網(wǎng)格形式并進(jìn)行繪制[10]。Asirvatham和Hoppe將GeometryClipmap結(jié)構(gòu)每層數(shù)據(jù)分解成多個(gè)規(guī)則塊,并利用了顯卡的VTF(VertexTextureFetch頂點(diǎn)紋理獲取)新特性,提高了繪制速度[11]??祵幍仁褂谩叭埂钡姆椒ń鉀Q各層之間的裂縫問(wèn)題,但數(shù)據(jù)精度仍有待提高[12]。袁建鋒等采取直接改變GeometryClipmap結(jié)構(gòu)不同層邊界對(duì)應(yīng)頂點(diǎn)高程的方法避免裂縫,減少了彌補(bǔ)裂縫的計(jì)算量,但仍會(huì)產(chǎn)生視覺不連續(xù)的情況[13]。王春通等過(guò)降低GeometryClipmap結(jié)構(gòu)兩相鄰層中較精細(xì)層對(duì)應(yīng)頂點(diǎn)高度值的方法,避免了裂縫的產(chǎn)生[14]。張浩等給出了一種不對(duì)稱GeometryClipmap結(jié)構(gòu),在構(gòu)造GeometryClipmap結(jié)構(gòu)時(shí),不再以視點(diǎn)為中心,而是以視點(diǎn)偏移后得到的中心點(diǎn)為新的中心,并通過(guò)使用不對(duì)稱GeometryClipmap結(jié)構(gòu)的更新方法,提高了原方法對(duì)網(wǎng)格的利用率[15]。Clasen等將GeometryClipmap結(jié)構(gòu)擴(kuò)展到球面[16]。

綜上所述,要使用面向GPU的Grid模型LOD算法模擬真實(shí)地形,GeometryClipmap算法無(wú)疑是一個(gè)很好的選擇。本文采用GeometryClipmap算法來(lái)實(shí)現(xiàn)三維地形網(wǎng)格的繪制,并利用SM3.0以后版本顯卡的VTF新特性使大繪制任務(wù)轉(zhuǎn)移到GPU中實(shí)現(xiàn)。采用了特定的GeometryClipmap層結(jié)構(gòu),并根據(jù)其特定結(jié)構(gòu)優(yōu)化了三角形條帶的組織方式,使用了簡(jiǎn)化的視椎體裁剪方法,運(yùn)用了隨視點(diǎn)高度動(dòng)態(tài)調(diào)整Clipmap層數(shù)的方法,大大減少了需要繪制的頂點(diǎn)數(shù)。尤其是提出了與層結(jié)構(gòu)對(duì)應(yīng)的各層位置調(diào)整和數(shù)據(jù)更新方式——二進(jìn)制定位法,以保證各層嵌套嚴(yán)密,并大大減少了數(shù)據(jù)更新量。

1Geometry Clipmap算法介紹

GeometryClipmap算法是Losasso和Hoppe提出的嵌套規(guī)則網(wǎng)格LOD算法。主要思想(如圖1所示):把地形高程數(shù)據(jù)看做一張2D高程紋理圖,然后類似于Mipmap,將其過(guò)濾為不同分辨率的L層棱錐(相鄰的兩層中較精細(xì)層的行寬是較粗糙層行寬的兩倍),但完整的棱錐太大,存儲(chǔ)器僅有的容量容納不下。所以算法在每層緩存一個(gè)數(shù)據(jù)大小都為n×n的窗口,各層窗口組成一個(gè)以視點(diǎn)為中心的嵌套的規(guī)則網(wǎng)格結(jié)構(gòu)(最粗糙層的窗口恰好完全覆蓋當(dāng)層棱錐)。由于較粗糙層中間部分會(huì)被較精細(xì)層覆蓋,所以渲染時(shí)除了最精細(xì)層全部渲染,其他層都只渲染一個(gè)口字型區(qū)域。由于只有最粗糙層窗口完全覆蓋了當(dāng)層的棱錐,所以當(dāng)視點(diǎn)移動(dòng)時(shí),只有最粗糙層窗口保持不變,其他各層窗口隨視點(diǎn)移動(dòng)在各自所在的棱錐各層移動(dòng)更新。

圖1 高程數(shù)據(jù)組織原理圖

最初的方法通過(guò)將每層的高程數(shù)據(jù)分別存入一個(gè)頂點(diǎn)緩沖區(qū)來(lái)實(shí)現(xiàn),但這樣的方式需要大量CPU干涉。所以當(dāng)顯卡具有頂點(diǎn)紋理新特性(即在頂點(diǎn)著色器中使用紋理的能力)時(shí),將每層的高程數(shù)據(jù)存儲(chǔ)為一個(gè)2D紋理的方法成為更好的選擇,它能解放CPU,使大部分渲染任務(wù)都轉(zhuǎn)移到GPU上執(zhí)行,利用GPU強(qiáng)大的浮點(diǎn)型數(shù)據(jù)運(yùn)算能力,大大提高渲染的效率。

采用頂點(diǎn)紋理方式的實(shí)現(xiàn)方法為:將頂點(diǎn)坐標(biāo)(x,y,z)分為單獨(dú)的兩部分:水平面位置(x,z)和高度值y坐標(biāo)。前者可通過(guò)計(jì)算得知,存儲(chǔ)為常量數(shù)據(jù)。后者則從DEM文件中讀取出來(lái)并以單通道2D紋理形式保存在顯卡中,稱之為高程圖,并為每一層設(shè)置一個(gè)單獨(dú)的大小為n×n的高程圖。當(dāng)視點(diǎn)移動(dòng)時(shí),這些高程圖也隨之更新。在頂點(diǎn)著色器中各層頂點(diǎn)通過(guò)VTF重新獲取保存在相應(yīng)層紋理中的高程值。

2Geometry Clipmap算法具體實(shí)現(xiàn)

2.1Geometry Clipmap層結(jié)構(gòu)設(shè)計(jì)

每層的邊大小n都為2k-1,這樣可以使層間邊界上的較粗糙的層的頂點(diǎn)位置剛好落在較精細(xì)層上的頂點(diǎn)上,有利于避免產(chǎn)生裂縫。

最精細(xì)層全部渲染,設(shè)置成一個(gè)整塊。

除最精細(xì)層外,其他層都只渲染一個(gè)口字型區(qū)域,分為18個(gè)區(qū)塊,如圖2所示。

圖2 Geometry Clipmap各層區(qū)塊劃分

可以把每層(最精細(xì)層除外)劃分為3種固定大小類型,共18個(gè)區(qū)塊。如圖2所示,三種區(qū)塊大小可固定表示為m×m(1至12白色區(qū)塊),m×3(13至16灰色區(qū)塊)和(2m+1)×2(17、18黑色區(qū)塊),其中m=(n+1)/4。這樣做的好處是我們可以利用固定的頂點(diǎn)序列及索引序列來(lái)組織三角形條帶,方便簡(jiǎn)單地調(diào)用繪制函數(shù)把每層的網(wǎng)格結(jié)構(gòu)繪制出來(lái),而且還有利于后期的視錐體裁剪操作。

2.2獲取頂點(diǎn)坐標(biāo)數(shù)據(jù)

對(duì)于水平面位置(x,z)部分,很容易實(shí)現(xiàn),只需要定義一個(gè)大小為n×n×2(n×n個(gè)頂點(diǎn),每個(gè)頂點(diǎn)水平位置有x和z兩個(gè)數(shù)據(jù))的數(shù)組并可通過(guò)計(jì)算定初值。然后創(chuàng)建頂點(diǎn)數(shù)組對(duì)象VAO和頂點(diǎn)緩沖區(qū),將數(shù)組存入頂點(diǎn)緩沖區(qū),最后指定頂點(diǎn)屬性數(shù)組并啟用頂點(diǎn)屬性數(shù)組即可。

對(duì)于高度值y坐標(biāo)部分,就相對(duì)要復(fù)雜點(diǎn)。首先需要從DEM文件中讀取高程數(shù)據(jù)。本文采用國(guó)際標(biāo)準(zhǔn)的USGS_DEM格式的DEM文件。按照該文件特定的存儲(chǔ)數(shù)據(jù)的格式,可以方便地將數(shù)據(jù)讀取出來(lái),并以數(shù)組形式保存。然后就可以創(chuàng)建并綁定紋理,將數(shù)組中的高程值以單通道紋理方式保存于顯存中。具體步驟如下:

1) 創(chuàng)建紋理名稱;

2) 將紋理名稱綁定到二維紋理綁定點(diǎn);

3) 指定二維紋理的寬高,設(shè)置為單通道,并指定構(gòu)成二維紋理的數(shù)組;

4) 設(shè)置放大和縮小紋理過(guò)濾器的過(guò)濾方式為最近鄰過(guò)濾。

接著就可以通過(guò)VTF方式獲取高程值,具體方法為在頂點(diǎn)著色器中定義紋理采樣器,并通過(guò)頂點(diǎn)x、z位置坐標(biāo)計(jì)算出紋理坐標(biāo)。最后使用GLSL中的內(nèi)置函數(shù)texture從高程紋理圖中采樣出高程值??梢酝ㄟ^(guò)紋理數(shù)組與VTF結(jié)合的方式來(lái)獲取各層頂點(diǎn)的高程值。

2.3視錐體裁剪

顯而易見,地形繪制的頂點(diǎn)數(shù)量是相當(dāng)大的,而視域內(nèi)所見的區(qū)域通常只是整個(gè)地形的一部分。所以如果只讓GPU處理視域內(nèi)頂點(diǎn)的數(shù)據(jù),就可以大大減少計(jì)算量,提高繪制速度同時(shí)又不影響真實(shí)感。在調(diào)用draw函數(shù)前進(jìn)行簡(jiǎn)單的視錐體裁剪,就可以達(dá)到這個(gè)目的。將視錐體左右平面定為裁剪平面。每個(gè)m×m塊可以通過(guò)四個(gè)角中的兩個(gè)頂點(diǎn)是否在左右平面之間來(lái)判斷這個(gè)塊中是否有頂點(diǎn)在視錐體中,若有,則繪制這個(gè)塊,否則不繪制。這種方法使每層占絕大多數(shù)頂點(diǎn)的12個(gè)m×m塊平均減少到4個(gè),且只需少量計(jì)算即可剔除大量不在視域內(nèi)的塊,避免了CPU對(duì)每個(gè)頂點(diǎn)進(jìn)行計(jì)算。

另外,若視點(diǎn)升得太高,距離精細(xì)層太遠(yuǎn),那么實(shí)際上精細(xì)層的精細(xì)表示是一種浪費(fèi)??筛鶕?jù)視點(diǎn)距離精細(xì)層的距離動(dòng)態(tài)決定Clipmap的層數(shù)。具體方法為如果視點(diǎn)到某層的距離大于0.4ngl(gl為各層相鄰頂點(diǎn)的間距),則不繪制這層及更精細(xì)的層。此方法可在不影響顯示效果的前提下減少不必要的繪制開銷。

2.4繪制三角形條帶

在進(jìn)行繪制時(shí),使用頂點(diǎn)的索引序列和三角形條帶方法繪制,而不直接使用頂點(diǎn)坐標(biāo)和單個(gè)三角形。這樣做的好處是可以大大節(jié)省存儲(chǔ)空間,并且更簡(jiǎn)單易行。

一個(gè)頂點(diǎn)坐標(biāo)包括3個(gè)浮點(diǎn)型數(shù)據(jù),共12個(gè)字節(jié);而一個(gè)索引則只需1個(gè)整型數(shù)據(jù),只占4個(gè)字節(jié),使用索引序列來(lái)繪制三角形占用內(nèi)存明顯更少。如圖3中第一行條帶所示,10個(gè)頂點(diǎn)組成有8個(gè)三角形的三角形條帶。如果使用單個(gè)三角形方式繪制,每個(gè)三角形3個(gè)頂點(diǎn),共需存儲(chǔ)3×8=24個(gè)頂點(diǎn);而使用三角形條帶方式繪制則只需一個(gè)10個(gè)元素的頂點(diǎn)數(shù)組即可。在地形繪制這種需要繪制的頂點(diǎn)比較多的情況下,盡可能地利用頂點(diǎn)索引和三角形條帶來(lái)繪制,可以大大節(jié)省存儲(chǔ)空間。

圖3 組織三角形條帶的頂點(diǎn)索引序列

在繪制時(shí)使用組合繪制函數(shù)glMultiDrawElements繪制三角形條帶,與文獻(xiàn)[12]文獻(xiàn)[17]相比,這樣可以進(jìn)一步地減少存儲(chǔ)的頂點(diǎn)數(shù)量,并簡(jiǎn)化了索引序列的組織。如圖3所示,將三角形條帶第一行部分的索引序列加上頂點(diǎn)數(shù)10,就是第二行部分的索引序列,后面各行依此類推。

具體實(shí)現(xiàn)方法為:先創(chuàng)建并綁定索引緩沖區(qū);然后按照各區(qū)塊的結(jié)構(gòu)將索引組織成三角形條帶索引序列并存入索引數(shù)組;接著將數(shù)組保存在顯存的索引緩沖區(qū)中,最后調(diào)用glMultiDrawElements函數(shù)按照索引緩沖區(qū)中的索引序列繪制三角形條帶。

由于GeometryClipmap各層的結(jié)構(gòu)是固定的,所以各不同區(qū)塊的索引數(shù)組都是固定的,并不隨每幀的數(shù)據(jù)更新變化而改變。相比文獻(xiàn)[12]和文獻(xiàn)[17],這樣可以進(jìn)一步節(jié)約CPU資源,提高繪制效率。

2.5數(shù)據(jù)更新

當(dāng)視點(diǎn)移動(dòng)時(shí),各層也會(huì)相應(yīng)地移動(dòng)更新,但由于在相鄰各層之間,較粗糙層相鄰頂點(diǎn)間隔是較精細(xì)層相鄰頂點(diǎn)間隔的兩倍。各層的移動(dòng)更新步調(diào)不一致,就會(huì)導(dǎo)致各層之間不能維護(hù)完整嚴(yán)密的嵌套層級(jí)結(jié)構(gòu)。

圖2中所示第17、18區(qū)塊,叫做內(nèi)部調(diào)整塊,通過(guò)對(duì)它的位置的調(diào)整,我們可以完美地解決各LOD層級(jí)更新的問(wèn)題。

各層更新步驟以第18區(qū)塊為例,假定有1個(gè)無(wú)內(nèi)部調(diào)整塊的精細(xì)層和三個(gè)帶內(nèi)部調(diào)整塊的口字型區(qū)域?qū)樱鐖D4所示。

圖4 各層位置更新方式

注:黑色的是各層的內(nèi)部調(diào)整塊,灰色的是各層大小為m×3的塊,視點(diǎn)一步移動(dòng)兩小格(即最小內(nèi)部調(diào)整塊寬度)

如果各層第18區(qū)塊調(diào)整塊在左側(cè)標(biāo)記為1,在右側(cè)標(biāo)記為0,那么從外層到內(nèi)層,調(diào)整塊初始位置為{0,1,0}。視點(diǎn)向右移動(dòng)一步后各層調(diào)整塊位置變?yōu)閧0,1,1}。再向右移動(dòng)一步后各層調(diào)整塊位置變?yōu)閧1,0,0}。由此可見,調(diào)整塊跟隨視點(diǎn)的變化規(guī)律恰恰類似于二進(jìn)制數(shù)相加減:視點(diǎn)右移幾步,由調(diào)整塊初始位置構(gòu)成的二進(jìn)制數(shù)就加幾;反之,視點(diǎn)左移幾步,由調(diào)整塊初始位置構(gòu)成的二進(jìn)制數(shù)就減幾。根據(jù)得到的新二進(jìn)制數(shù)的各位數(shù)值是1還是0,就可判斷各層的內(nèi)部調(diào)整塊應(yīng)該在左側(cè)還是在右側(cè)。第17區(qū)塊內(nèi)部調(diào)整塊的調(diào)整方案與第18區(qū)塊的相同。

由此推出視點(diǎn)移動(dòng)時(shí),各層內(nèi)部調(diào)整塊位置的計(jì)算方法——二進(jìn)制定位法:

1) 設(shè)置兩個(gè)全局?jǐn)?shù)組adjust1[]和adjust2[],并以0和1為兩數(shù)組各元素初始值,以此分別確定z軸方向和x軸方向各層調(diào)整塊(即各層17、18區(qū)塊)初始位置序列。

2) 將步驟1)中的調(diào)整塊序列數(shù)組中各元素作為一個(gè)二進(jìn)制數(shù)的各位,并將此二進(jìn)制數(shù)轉(zhuǎn)化為十進(jìn)制數(shù)。

3) 利用三角函數(shù)計(jì)算視點(diǎn)在z軸和x軸方向的分位移,從而得到視點(diǎn)在兩個(gè)方向的移動(dòng)步數(shù)。

4) 將2)中得到的兩個(gè)十進(jìn)制數(shù)分別加上3)中的在z軸、x軸方向的移動(dòng)步數(shù),得到兩個(gè)新的十進(jìn)制數(shù)。

5) 用位移和按位與操作計(jì)算4)中得到的兩個(gè)新十進(jìn)制數(shù)的二進(jìn)制形式的各位,并以此更新1)中全局?jǐn)?shù)組各元素的值,得到視點(diǎn)移動(dòng)后各層的調(diào)整塊位置。

容易看出,當(dāng)一個(gè)較粗糙層的調(diào)整塊位置改變時(shí),它內(nèi)部的所有更精細(xì)的層都會(huì)進(jìn)行位置更新,而它所在的層以及所有更粗糙的層的位置都不變,也就不用更新數(shù)據(jù)。由于視點(diǎn)的移動(dòng)是連續(xù)的,所以我們總是會(huì)更新較精細(xì)層的數(shù)據(jù),而較粗糙層的數(shù)據(jù)總是很少更新。也就是說(shuō),我們總是只更新精細(xì)的幾個(gè)層的數(shù)據(jù),而不是所有層的數(shù)據(jù)都更新,這樣可以明顯減少視點(diǎn)移動(dòng)時(shí)各幀的數(shù)據(jù)更新量,從而提高繪制效率。

由于第17區(qū)塊可在上邊或下邊,第18區(qū)塊可在左邊或右邊(如圖2中的黑色區(qū)塊),不像其他兩種區(qū)塊位置固定不變。所以,在繪制內(nèi)部調(diào)整塊三角形條帶時(shí),需要判斷各層的內(nèi)部調(diào)整塊位置,根據(jù)其位置來(lái)確定它的頂點(diǎn)索引序列。另外,確定了較粗糙層的內(nèi)部調(diào)整塊位置后,才能確定較精細(xì)層的位置,即各層的首頂點(diǎn)位置需要根據(jù)各層調(diào)整塊的位置算出。

3算法實(shí)現(xiàn)

3.1繪制階段流程圖

圖5 流程圖

3.2實(shí)驗(yàn)環(huán)境及效果展示

實(shí)驗(yàn)采用的地形高程和紋理數(shù)據(jù)來(lái)自PugetSound,地形繪制的范圍大小為16 256×16 256。采取n的大小為127,層數(shù)為8。每層127×127個(gè)數(shù)據(jù),8層,每個(gè)數(shù)據(jù)為float型,占用內(nèi)存僅127×127×8×4byte/1024≈504KB。

硬件和軟件環(huán)境如表1、表2所示。

表1 硬件環(huán)境表

表2 軟件環(huán)境表

令視點(diǎn)逐步升高,則所需繪制的Clipmap層數(shù)逐漸減少。由圖6可明顯看出,隨著繪制的層數(shù)減少,繪制時(shí)的幀率越來(lái)越大。

圖6 視點(diǎn)高度逐步升高時(shí)的平均幀率圖

由圖7可見GeometryClipmap的層層嵌套結(jié)構(gòu)。相鄰兩層,外層頂點(diǎn)間距是內(nèi)層的2倍。效果如圖8所示。

圖7 線框模式效果圖

圖8 紋理映射效果圖

4結(jié)語(yǔ)

本文利用了現(xiàn)代圖形卡的新特性,對(duì)大規(guī)模地形的繪制進(jìn)行了研究。利用現(xiàn)代圖形卡的可編程特性和強(qiáng)大的計(jì)算能力將GeometryClipmap的繪制任務(wù)轉(zhuǎn)移到GPU上。利用現(xiàn)代圖形卡近年出現(xiàn)的VTF新特性完成了高程值的獲取。特別地,本文詳

細(xì)描述了各層的更新方式和內(nèi)部調(diào)整塊的調(diào)整方案,解決了視點(diǎn)移動(dòng)時(shí)各層如何更新和調(diào)整塊如何調(diào)整的問(wèn)題,保證了各層之間結(jié)構(gòu)嚴(yán)密吻合。使用簡(jiǎn)易的視錐體裁剪方法和隨視點(diǎn)高度動(dòng)態(tài)確定繪制的層數(shù)方法大大減少了繪制的計(jì)算量。實(shí)驗(yàn)取得了較高的幀率,視點(diǎn)移動(dòng)時(shí)畫面流暢,可以滿足大規(guī)模地形實(shí)時(shí)可視化的需求。

參考文獻(xiàn)

[1] 趙瑞斌,張燕玲,王繼東,等.特征控制下的多樣圖地形紋理合成算法[J].計(jì)算機(jī)工程,2012,38(10):197-199.

[2] 王繼東,趙瑞斌,龐明勇.基于特征草圖和分形插值的可控真實(shí)感地形合成[J].計(jì)算機(jī)應(yīng)用,2013,33(2):519-542.

[3] 王響,雷小永,戴樹嶺.基于視點(diǎn)預(yù)測(cè)的大規(guī)模地形的實(shí)時(shí)渲染[J].系統(tǒng)仿真學(xué)報(bào),2013,25(6):1202-1206.

[4] 李欽,戴樹嶺,趙永嘉,等.分塊LOD大規(guī)模地形實(shí)時(shí)渲染算法[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2013,25(5):708-713.

[5] 陳希亮,曹雷,崔平.基于ROAM算法的實(shí)時(shí)地形可視化研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2013(1):243-247.

[6] 周雪梅,黎應(yīng)飛.基于Bowyer-Watson三角網(wǎng)生成算法的研究[J].ComputerEngineeringandApplications,2013,49(6):198-200.

[7]DuchaineauM,WolinskyM,SigetiDE,etal.ROAMingterrain:real-timeoptimallyadaptingmeshes[C]//Proceedingsofthe8thConferenceonVisualization’97.IEEEComputerSocietyPress,1997:81-88.

[8]LindstromP,KollerD,RibarskyW,etal.Real-time,continuouslevelofdetailrenderingofheightfields[C]//Proceedingsofthe23rdannualconferenceonComputergraphicsandinteractivetechniques.ACM,1996:109-118.

[9]TannerCC,MigdalCJ,JonesMT.Theclipmap:avirtualmipmap[C]//Proceedingsofthe25thannualconferenceonComputergraphicsandinteractivetechniques.ACM,1998:151-158.

[10]LosassoF,HoppeH.Geometryclipmaps:terrainrenderingusingnestedregulargrids[J].ACMTransactionsonGraphics(TOG),2004,23(3):769-776.

[11]AsirvathamA,HoppeH.TerrainrenderingusingGPU-basedgeometryclipmaps[J].GPUgems,2005,2(2):27-46.

[12] 康寧,徐青,周楊,等.一種基于圖形硬件的海量地形實(shí)時(shí)可視化算法[J].系統(tǒng)仿真學(xué)報(bào),2007,19(17):3988-3992.

[13] 袁建鋒,崔鐵軍,姚慧敏.一種基于GPU的大規(guī)模地形實(shí)時(shí)生成算法[J].海洋測(cè)繪,2009,29(1):35-38.

[14] 王春,馬純永,陳戈.基于GPGPU的海量山地地形數(shù)據(jù)的實(shí)時(shí)繪制算法[J].計(jì)算機(jī)應(yīng)用,2009(8):2105-2108.

[15] 張浩.不對(duì)稱的GeometryClipmap算法[D].武漢:華中科技大學(xué),2005.

[16]ClasenM,HegeHC.Terrainrenderingusingsphericalclipmaps[C]//ProceedingsoftheEighthJointEurographics/IEEEVGTCconferenceonVisualization.EurographicsAssociation,2006:91-98.

[17] 殷小靜,慕曉冬,陳琦.基于圖形硬件的海量地形可視化算法[J].火力與指揮控制,2013,37(11):61-64.

ON 3D TERRAIN VISUALISATION BASED ON GEOMETRY CLIPMAP

Yin QingsongHalmurat Mamat

(Xinjiang Laboratory of Multi-Language Information Technology,Xinjiang University,Urumqi 830046,Xinjiang,China)

AbstractWith the wide use of digital technology and the growing popularisation of informatisation, the importance of realising 3D terrain visualisation becomes increasingly clearer. But the normal PC memory capacities cannot accommodate massive geometric and texture data. To solve this problem and to guarantee the efficiency of drawing, we adopted the Geometry Clipmap algorithm to draw the terrain, made the full use of GPU to improve the efficiency of drawing, and obtained elevation values of every vertex through vertex textures. Meanwhile, we simplified the organisation mode of triangle strips, used the simplified view frustum clipping method and the dynamic rendering layers number determination method to reduce the number of vertexes to be drawn. Based on the structure of specific layer, we came up with the new method (binary positioning method) of data update to reduce data updating amount of each frame during the motion of viewpoint. Experimental results showed that the new algorithm completed the large-scale terrain rendering by using a little memory, and got a higher frame numbers with smooth roam, guaranteed the realistic display of terrain, and was able to meet the demand of real-time visualisation of large-scale terrain.

KeywordsGeometry ClipmapClipmapTerrain visualisationVertex texture fetch (VTF)GPU

收稿日期:2014-12-24。國(guó)家高技術(shù)研究發(fā)展計(jì)劃項(xiàng)目(2013AA 013702)。殷青松,碩士生,主研領(lǐng)域:計(jì)算機(jī)圖形學(xué)。哈力木拉提·買買提,教授。

中圖分類號(hào)TP391.9

文獻(xiàn)標(biāo)識(shí)碼A

DOI:10.3969/j.issn.1000-386x.2016.06.049

猜你喜歡
視點(diǎn)頂點(diǎn)紋理
過(guò)非等腰銳角三角形頂點(diǎn)和垂心的圓的性質(zhì)及應(yīng)用(下)
基于BM3D的復(fù)雜紋理區(qū)域圖像去噪
軟件(2020年3期)2020-04-20 01:45:18
使用紋理疊加添加藝術(shù)畫特效
關(guān)于頂點(diǎn)染色的一個(gè)猜想
TEXTURE ON TEXTURE質(zhì)地上的紋理
Coco薇(2017年8期)2017-08-03 15:23:38
消除凹凸紋理有妙招!
Coco薇(2015年5期)2016-03-29 23:22:15
視點(diǎn)
河南電力(2016年5期)2016-02-06 02:11:24
讓你每天一元錢,物超所值——《今日視點(diǎn)—2014精萃》序
新聞前哨(2015年2期)2015-03-11 19:29:22
兩會(huì)視點(diǎn)
數(shù)學(xué)問(wèn)答
朔州市| 万全县| 酉阳| 望都县| 镇平县| 宁乡县| 秭归县| 闻喜县| 浑源县| 南部县| 应城市| 巨鹿县| 新安县| 合阳县| 大石桥市| 贵阳市| 井冈山市| 罗城| 颍上县| 罗定市| 秦安县| 牡丹江市| 金乡县| 北海市| 闽侯县| 永安市| 三河市| 嘉义县| 子洲县| 宣恩县| 盐城市| 安平县| 孝昌县| 河北省| 龙门县| 东乌| 新乡市| 寿宁县| 正阳县| 平昌县| 行唐县|