午夜毛片免费看,老师老少妇黄色网站,久久本道综合久久伊人,伊人黄片子

面向gpu的大規(guī)模地形快速繪制方法

文檔序號(hào):6376003閱讀:157來源:國(guó)知局
專利名稱:面向gpu的大規(guī)模地形快速繪制方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)圖形學(xué)領(lǐng)域,尤其涉及一種面向GPU的大規(guī)模地形快速繪制方法。
背景技術(shù)
地形是自然界中最常見的景物,它與人們的生活密切相關(guān)。三維地形繪制技術(shù)一直都是計(jì)算機(jī)圖形學(xué)的研究熱點(diǎn),近年來,它的發(fā)展與進(jìn)步對(duì)國(guó)民經(jīng)濟(jì)的各個(gè)方面產(chǎn)生了重大影響,推動(dòng)著信息時(shí)代的不斷向前發(fā)展。隨著攝影測(cè)量和衛(wèi)星遙感技術(shù)的快速發(fā)展,人們可以得到的地形數(shù)據(jù)精度越來越高,隨之而來的是急劇增加的地形數(shù)據(jù)量,而對(duì)于計(jì)算機(jī)硬件來說,雖然在同一時(shí)期也經(jīng)歷 了快速發(fā)展的階段,但是與無(wú)限增長(zhǎng)的地形數(shù)據(jù)量相比,硬件的發(fā)展總是顯得比較滯后,在一定的幀頻下,計(jì)算機(jī)硬件每秒只能繪制有限數(shù)量的三角形面片,這便造成了有限的計(jì)算機(jī)硬件水平同海量地形數(shù)據(jù)之間的矛盾,因此對(duì)大規(guī)模地形進(jìn)行高精度的繪制往往難以獲得令人滿意的繪制效率。一種有效提升地形繪制效率的方法是降低地形模型的精度,即采用一種精度較低的模型表示同一區(qū)域的地形進(jìn)而實(shí)現(xiàn)繪制,層次細(xì)節(jié)(LOD)技術(shù)正是出于這樣的考慮,通過簡(jiǎn)化整個(gè)場(chǎng)景的復(fù)雜度,減少參與繪制的數(shù)據(jù)量,緩解繪制精度和繪制效率之間的矛盾。另一種提高繪制效率的方法是外存(out-of-core)技術(shù),由于地形數(shù)據(jù)規(guī)模很大,無(wú)法一次性將其載入內(nèi)存,考慮對(duì)外存數(shù)據(jù)重新組織存于硬盤,在繪制時(shí)根據(jù)需要,將其部分載入,當(dāng)然這就要求找到一種數(shù)據(jù)調(diào)度策略,目前主要采用的調(diào)度策略是通過建立索引來快速定位所需的數(shù)據(jù)塊,然后將它載入內(nèi)存的。國(guó)內(nèi)外學(xué)者在大規(guī)模地形繪制的研究上,取得了大量的研究成果,同時(shí)也提出了許多優(yōu)秀的解決方案,但是由于人們對(duì)繪制精度和繪制效率二者的要求都很高,現(xiàn)有的解決方案都不能完美地二者兼顧。

發(fā)明內(nèi)容
本發(fā)明主要解決的技術(shù)問題是提供一種面向GPU的大規(guī)模地形快速繪制方法。用以解決現(xiàn)有技術(shù)的諸多不足。為解決上述問題,本發(fā)明采用的一種技術(shù)方案是提供一種面向GPU的大規(guī)模地形快速繪制方法,包括以下步驟SI、生成原始地形的外存文件;其中,所述外存文件中存儲(chǔ)有包含原始地形數(shù)據(jù)的多個(gè)地形塊、每個(gè)所述地形塊的索引編號(hào)以及與所述地形塊相對(duì)應(yīng)的壓縮紋理塊,所述地形數(shù)據(jù)包括紋理數(shù)據(jù)和高程數(shù)據(jù);S2、根據(jù)預(yù)設(shè)視點(diǎn)參數(shù)確定地形的LOD層次分布,建立地形四叉樹結(jié)構(gòu),遍歷所述地形四叉樹結(jié)構(gòu)為不同的LOD層次細(xì)節(jié)選擇相應(yīng)的四叉樹節(jié)點(diǎn),將選中的四叉樹節(jié)點(diǎn)添加到渲染調(diào)度隊(duì)列;其中,所述地形四叉樹結(jié)構(gòu)的各個(gè)節(jié)點(diǎn)對(duì)應(yīng)于所述外存文件中的相應(yīng)壓縮地形塊,用于存儲(chǔ)相應(yīng)壓縮地形塊的LOD層次及高程數(shù)據(jù);
S3、從所述渲染調(diào)度隊(duì)列獲取將被調(diào)度的節(jié)點(diǎn),并對(duì)所述將被高度的節(jié)點(diǎn)進(jìn)行渲染,完成對(duì)原始地形的繪制。其中,所述SI包括以下步驟獲取原始地形的高程數(shù)據(jù)和紋理數(shù)據(jù),并將所述原始地形的高程數(shù)據(jù)和紋理數(shù)據(jù)進(jìn)行分層分塊處理,得到多個(gè)大小相同的地形塊及與所述地形塊相對(duì)應(yīng)的紋理塊;對(duì)所述紋理塊進(jìn)行壓縮,得到壓縮紋理塊,并為所述地形塊構(gòu)建相應(yīng)的索引編號(hào);將所有所述地形塊及與每個(gè)地形塊相應(yīng)的索引編號(hào)、壓縮紋理塊存儲(chǔ)于一文件中,得到外存文件。其中,所述S3中對(duì)所述將被調(diào)度的節(jié)點(diǎn)進(jìn)行渲染,,完成對(duì)原始地形的繪制的步驟包括以下步驟 根據(jù)所述將被調(diào)度的節(jié)點(diǎn)獲取相應(yīng)地形塊的地形數(shù)據(jù);將所述地形塊的高程數(shù)據(jù)作為頂點(diǎn)紋理載入顯存,由固定的頂點(diǎn)緩存和索引緩存建立地形的平面網(wǎng)格模型;利用頂點(diǎn)著色器的頂點(diǎn)紋理拾取功能獲取地形網(wǎng)格的高程值,設(shè)置消除裂縫、跳躍現(xiàn)象的過渡帶,并進(jìn)行頂點(diǎn)變換和片元處理,最終實(shí)現(xiàn)繪制。進(jìn)一步的,所述SI采用的分層方法為采用隔行隔列法對(duì)所述原始地形的高程數(shù)據(jù)進(jìn)行重采樣、采用雙線性插值法對(duì)所述原始地形的紋理數(shù)據(jù)進(jìn)行重采樣。在上述實(shí)施方式中,所述SI壓縮所述初始地形塊的紋理數(shù)據(jù)時(shí)采用的壓縮算法為采用DXT算法。在本技術(shù)方案中,在所述S2的LOD層次分布中當(dāng)視距增加一倍時(shí),LOD級(jí)別降低一級(jí)。進(jìn)一步的,所述S2在遍歷所述地形四叉樹結(jié)構(gòu)為不同的LOD層次細(xì)節(jié)選擇相應(yīng)的四叉樹節(jié)點(diǎn)的同時(shí)還執(zhí)行下述步驟對(duì)所述地形四叉樹結(jié)構(gòu)進(jìn)行視錐體裁剪。在上述具體的實(shí)施方式中,所述對(duì)所述地形四叉樹結(jié)構(gòu)進(jìn)行視錐體裁剪具體為對(duì)當(dāng)前四叉樹節(jié)點(diǎn)的包圍盒與視錐體進(jìn)行相交測(cè)試,完成快速視錐體裁剪。本發(fā)明的有益效果是區(qū)別于現(xiàn)有技術(shù)不能夠有效提升地形繪制效率,本發(fā)明提供一種面向GPU的大規(guī)模地形快速繪制方法,通過結(jié)合out-of-core技術(shù)、LOD技術(shù)、可見性裁剪技術(shù)以及GPU加速技術(shù),能夠有效地提高數(shù)據(jù)調(diào)度的效率,充分地發(fā)揮GPU的可編程性和加速能力,減輕CPU運(yùn)算負(fù)擔(dān),增加每秒可繪制三角形的數(shù)量,同時(shí)獲得很高的幀率,提高大規(guī)模地形繪制的效率。


圖I是一實(shí)施方式中面向GPU的大規(guī)模地形快速繪制方法的流程圖;圖2是另一實(shí)施方式中面向GPU的大規(guī)模地形快速繪制方法的流程圖;圖3是一實(shí)施方式中文件存儲(chǔ)結(jié)構(gòu)示意圖;圖4是一實(shí)施方式中三角形條帶化方式;圖5是一實(shí)施方式中頂點(diǎn)幾何過渡原理圖;圖6是一實(shí)施方式中地形塊過渡帶設(shè)置示意圖。
具體實(shí)施例方式為詳細(xì)說明本發(fā)明的技術(shù)內(nèi)容、構(gòu)造特征、所實(shí)現(xiàn)目的及效果,以下結(jié)合實(shí)施方式并配合附圖詳予說明。請(qǐng)參閱圖1,本實(shí)施方式提供一種面向GPU的大規(guī)模地形快速繪制方法,包括以下步驟SI、生成原始地形的外存文件;其中,所述外存文件中存儲(chǔ)有包含原始地形數(shù)據(jù)的多個(gè)地形塊、每個(gè)所述地形塊的索引編號(hào)以及與所述地形塊相對(duì)應(yīng)的壓縮紋理塊,所述地形數(shù)據(jù)包括紋理數(shù)據(jù)和高程數(shù)據(jù);S2、根據(jù)預(yù)設(shè)視點(diǎn)參數(shù)確定地形的LOD層次分布,建立地形四叉樹結(jié)構(gòu),遍歷所述地形四叉樹結(jié)構(gòu)為不同的LOD層次細(xì)節(jié)選擇相應(yīng)的四叉樹節(jié)點(diǎn),將選中的四叉樹節(jié)點(diǎn)添加 到渲染調(diào)度隊(duì)列;其中,所述地形四叉樹結(jié)構(gòu)的各個(gè)節(jié)點(diǎn)對(duì)應(yīng)于所述外存文件中的相應(yīng)壓縮地形塊,用于存儲(chǔ)相應(yīng)壓縮地形塊的LOD層次及高程數(shù)據(jù);S3、從所述渲染調(diào)度隊(duì)列獲取將被調(diào)度的節(jié)點(diǎn),并對(duì)所述將被高度的節(jié)點(diǎn)進(jìn)行渲染,完成對(duì)原始地形的繪制。在如圖2所示的實(shí)施方式中,所述SI包括步驟S110、S120以及S130,具體如下文所述。S110、獲取原始地形的高程數(shù)據(jù)和紋理數(shù)據(jù),并將所述原始地形的高程數(shù)據(jù)和紋理數(shù)據(jù)進(jìn)行分層分塊處理,得到多個(gè)大小相同的地形塊及與所述地形塊相對(duì)應(yīng)的紋理塊。在本實(shí)施方式中,對(duì)于分層處理過程,本方法采用隔行隔列法對(duì)所述原始地形的高程數(shù)據(jù)進(jìn)行重采樣,這樣可以保證在相同地理位置的點(diǎn)的高程值保持不變,且可以重復(fù)使用高程值;采用雙線性插值法對(duì)所述原始地形的紋理數(shù)據(jù)進(jìn)行重采樣,這樣對(duì)局部細(xì)節(jié)保存較好。在本領(lǐng)域中,對(duì)于分塊處理過程,分塊的規(guī)則主要有兩種等間距分塊和等面積分塊,由于等間距劃分方法簡(jiǎn)單,檢索速度快,本方法采用等間距分塊。在本發(fā)明中,分塊的大小沒有具體的計(jì)算公式,需要根據(jù)繪制需要和硬件條件綜合考慮。在本實(shí)施方式中,分塊操作是從原始數(shù)據(jù)的左下角開始,按從左到右,從下到上的順序進(jìn)行,對(duì)于最右側(cè)和頂部的邊緣數(shù)據(jù)塊,由于它們不能構(gòu)成一個(gè)正方形塊,就以空數(shù)據(jù)補(bǔ)齊。在其他實(shí)施方式中,分塊操作的順序可從原始數(shù)據(jù)的左上角開始,按從左到右、從上到下的順序進(jìn)行。在另外的實(shí)施方式中,分塊操作的順序可根據(jù)實(shí)際情況具體設(shè)定。S120、對(duì)所述紋理塊進(jìn)行壓縮,得到壓縮紋理塊,并為所述地形塊構(gòu)建相應(yīng)的索引編號(hào)。與高程數(shù)據(jù)相比,紋理數(shù)據(jù)量相對(duì)較大,在分層分塊處理后會(huì)占用較多的外存空間,且紋理越精細(xì),所占用的存儲(chǔ)空間就越大,在紋理數(shù)據(jù)傳輸時(shí),還會(huì)占用較多帶寬,因此本方法對(duì)紋理進(jìn)行合理地壓縮。紋理壓縮的方法有很多種,在本實(shí)施方式中,紋理壓縮時(shí)采用的壓縮算法為DXT (DirectX Texture Compress)。DXT分為五種壓縮格式DXTl、DXT2、DXT3、DXT4和DXT5,其中DXTl格式的壓縮比為6:1,適用于不帶Alpha分量的紋理。在本實(shí)施方式中,選用DXTl作為紋理壓縮的最終格式,應(yīng)用于Direct3D生成壓縮紋理塊。由于每一個(gè)地形塊可以由LOD級(jí)別、行編號(hào)和列編號(hào)唯一表示,所以對(duì)數(shù)據(jù)的編碼也只需要考慮這三個(gè)因素。在本實(shí)施方式中,本方法采用ΠΝΤ32型整數(shù)來構(gòu)建地形塊的索引編碼,其形式為(DataType (I), BlockLevel (5), BlockX (13), BlockY (13)),即第 I位記錄數(shù)據(jù)類型(高程數(shù)據(jù)或紋理數(shù)據(jù)),第2位到第6位記錄LOD級(jí)別,第7位到第19位記錄行編號(hào),最后13位記錄列編號(hào)。S130、將所有所述地形塊及與每個(gè)地形塊相應(yīng)的索引編號(hào)、壓縮紋理塊存儲(chǔ)于一文件中,得到外存文件。在本實(shí)施方式中,以文件形式存儲(chǔ)所有的地形塊數(shù)據(jù),如圖3所示,文件分為文件頭區(qū)、塊索引區(qū)和塊數(shù)據(jù)區(qū)。其中文件頭區(qū)包含了對(duì)原始地形的地理信息描述、地形分層數(shù)、每層的縱橫向地形塊個(gè)數(shù)等信息。塊索引區(qū)包含所有地形塊的索引信息,記錄了每個(gè)地形塊在文件中的偏移量(以字節(jié)為單位)、數(shù)據(jù)塊的大小(以字節(jié)為單位),即該塊在地形文件中的起始位置和長(zhǎng)度。在塊數(shù)據(jù)區(qū)中,地形塊的元數(shù)據(jù)包括地形塊編碼、地形塊表示地理范圍等信息。在上述實(shí)施方式中,S2步驟主要包括步驟S210、S220、S230,具體如下文所述。
S210、根據(jù)預(yù)設(shè)視點(diǎn)參數(shù)確定地形的LOD層次分布。其具體過程如下將視點(diǎn)與節(jié)點(diǎn)間的距離作為確定LOD分布的標(biāo)準(zhǔn),設(shè)地形LOD層次數(shù)為n,第O層為最精細(xì)層,第η-i層為最粗糙層,構(gòu)造地形的連續(xù)多分辨率模型時(shí),以視點(diǎn)為中心,離視點(diǎn)較近的區(qū)域選用較精細(xì)層的節(jié)點(diǎn)表示,而離視點(diǎn)較遠(yuǎn)的區(qū)域選用較粗糙層的節(jié)點(diǎn)表示。具體地,視距在Itl以內(nèi)的區(qū)域選擇第O層節(jié)點(diǎn)表示,視距在Itl和I之間的區(qū)域選擇第I層節(jié)點(diǎn)表示,以此類推,視距在Ip1和Ii之間的區(qū)域選擇第i層節(jié)點(diǎn)表示,且滿足^=2 · Ig (I ^ i ^ n-1),其中Ilri為最大可視距離,是一個(gè)可調(diào)節(jié)參數(shù),它的大小直接影響到整個(gè)地形總體的層次分布情況。進(jìn)一步的,當(dāng)視距增加一倍時(shí),LOD級(jí)別降低一級(jí)。S220、建立地形四叉樹結(jié)構(gòu)。其具體過程如下四叉樹結(jié)構(gòu)由地形高程圖信息生成,樹的深度由地形的精度確定,它同地形的LOD層次數(shù)相對(duì)應(yīng)。在本實(shí)施方式中,四叉樹結(jié)構(gòu)的節(jié)點(diǎn)只保存每個(gè)節(jié)點(diǎn)的最大和最小高程值,用于計(jì)算節(jié)點(diǎn)的AABB包圍盒,節(jié)點(diǎn)的其他數(shù)據(jù)可以在遍歷四叉樹結(jié)構(gòu)時(shí)動(dòng)態(tài)獲取。四叉樹結(jié)構(gòu)一旦建立,繪制期間便常駐內(nèi)存,如果原始地形數(shù)據(jù)沒有發(fā)生變化它就不會(huì)改變。S230、遍歷所述地形四叉樹結(jié)構(gòu)為不同的LOD層次細(xì)節(jié)選擇相應(yīng)的四叉樹節(jié)點(diǎn),將選中的四叉樹節(jié)點(diǎn)添加到渲染調(diào)度隊(duì)列。上述過程具體如下從四叉樹結(jié)構(gòu)的根節(jié)點(diǎn)開始,也就是最低細(xì)節(jié)層次的節(jié)點(diǎn),遍歷四叉樹為不同的細(xì)節(jié)層次選擇相應(yīng)的四叉樹節(jié)點(diǎn)。對(duì)于第i層的節(jié)點(diǎn),判斷其包圍盒與以視點(diǎn)為中心,Ii為半徑的球體與之間的位置關(guān)系,如果包圍體完全在球體之外,則退出對(duì)此節(jié)點(diǎn)的判斷,用其父節(jié)點(diǎn)代替它,將父節(jié)點(diǎn)加入到渲染調(diào)度隊(duì)列中,并繼續(xù)對(duì)其父節(jié)點(diǎn)的其他子節(jié)點(diǎn)進(jìn)行判斷;如果球體和包圍體相交或包含,再進(jìn)一步判斷以視點(diǎn)為中心,Ig為半徑的球體與包圍體之間的位置關(guān)系,如果包圍體完全在球體之外,則將此節(jié)點(diǎn)加入到渲染調(diào)度隊(duì)列中,否則對(duì)其子節(jié)點(diǎn)作判斷,遞歸重復(fù)此過程。進(jìn)一步的,在上述實(shí)施方式的某些實(shí)施例中,在遍歷四叉樹結(jié)構(gòu)的同時(shí),還會(huì)執(zhí)行對(duì)所述地形四叉樹結(jié)構(gòu)進(jìn)行視錐體裁剪的步驟。具體的實(shí)施過程如下通過確定包圍盒與視錐體的位置關(guān)系即可確定節(jié)點(diǎn)的可見性,也就是對(duì)當(dāng)前四叉樹節(jié)點(diǎn)的包圍盒與視錐體進(jìn)行相交測(cè)試,進(jìn)而完成視錐體裁剪。在一實(shí)施例中,通過判斷包圍盒的八個(gè)頂點(diǎn)同視錐體的六個(gè)裁剪平面之間的位置關(guān)系來實(shí)現(xiàn)視錐體裁剪。在上述實(shí)施方式中,所述S3中對(duì)所述將被調(diào)度的節(jié)點(diǎn)進(jìn)行渲染,完成對(duì)原始地形的繪制的步驟包括步驟S310、S320、S330,具體如下文所述。S310、根據(jù)所述將被調(diào)度的節(jié)點(diǎn)獲取相應(yīng)地形塊的地形數(shù)據(jù)。此為對(duì)上述選中節(jié)點(diǎn)的調(diào)度過程,具體如下以地形塊為單位進(jìn)行數(shù)據(jù)調(diào)度,預(yù)先開辟一個(gè)緩沖區(qū)用于接收地形塊的數(shù)據(jù)信息,并設(shè)置一個(gè)渲染隊(duì)列和一個(gè)緩沖區(qū)隊(duì)列,采用LRU (Least Recently Used)方式管理緩沖區(qū)中的地形數(shù)據(jù),具體描述如下(I)把文件頭區(qū)的部分信息、地形塊索引區(qū)和地形塊元數(shù)據(jù)讀入內(nèi)存,同時(shí)建立映射std: :map<uint32, Block*〉BlockMap,以地形塊編碼作為鍵值,以地形塊對(duì)象作為映射數(shù)據(jù)類型;
(2)將確定需要渲染的地形塊加入到渲染隊(duì)列中;(3)遍歷渲染隊(duì)列,提取隊(duì)列中的每一個(gè)地形塊編碼,對(duì)每一個(gè)地形塊查找其編碼是否存在于緩沖區(qū)隊(duì)列中,如果緩沖區(qū)隊(duì)列中存在其編碼,通過編碼值在BlockMap映射中獲取相對(duì)應(yīng)的地形塊對(duì)象,并將地形塊的引用次數(shù)狀態(tài)量加1,同時(shí)將該地形塊的編碼置為-I ;如果在緩沖區(qū)隊(duì)列未找到其編碼,則執(zhí)行下面的步驟以載入地形塊數(shù)據(jù)(3a)根據(jù)地形塊的編碼,解算出該地形塊對(duì)應(yīng)的LOD級(jí)別,行編號(hào),列編號(hào);(3b)計(jì)算地形塊索引在索引文件中的具體位置,通過地形塊的索引獲得地形塊在文件中的偏移量和地形塊的大??;(3c)利用地形塊的編碼、高程數(shù)據(jù)和紋理數(shù)據(jù)等信息構(gòu)建地形塊對(duì)象Block,并將Block對(duì)象加入到映射BlockMap中。在渲染隊(duì)列遍歷完成之后,執(zhí)行下面的步驟以更新緩沖區(qū)(A)遍歷緩沖區(qū)隊(duì)列,在緩沖區(qū)隊(duì)列中,如果地形塊編碼值大于0,則將其刪除,釋放地形塊對(duì)象內(nèi)存空間,并在映射中刪除鍵值為該編碼的元素,最后刪除在緩沖區(qū)隊(duì)列中的該編碼元素。對(duì)于緩沖區(qū)隊(duì)列中編碼值小于O的地形塊,根據(jù)其引用次數(shù),決定是否將其刪除,對(duì)于引用次數(shù)最少的地形塊優(yōu)先考慮將其釋放;(B)將渲染隊(duì)列中存在而緩沖區(qū)隊(duì)列中不存在的地形塊編碼插入到緩沖區(qū)隊(duì)列中,這些編碼將作為下一幀的緩沖區(qū)隊(duì)列的一部分。S320、將所述地形塊的高程數(shù)據(jù)作為頂點(diǎn)紋理載入顯存,由固定的頂點(diǎn)緩存和索弓I緩存建立地形的平面網(wǎng)格模型。將地形高程數(shù)據(jù)載入顯存的紋理緩沖區(qū)作為頂點(diǎn)紋理,在本方法中調(diào)用IDirect3DDevice9: : CreateTexture方法生成頂點(diǎn)紋理。進(jìn)一步的,為了減少繪制函數(shù)調(diào)用的次數(shù),我們將模型的網(wǎng)格轉(zhuǎn)化為三角形條帶,以葉子節(jié)點(diǎn)大小的規(guī)則塊為單位按三角形條帶的形式實(shí)現(xiàn)渲染,如圖4所示為5X5大小的地形塊三角形條帶遍歷方式和對(duì)應(yīng)的順序索引列表。由于所有地形塊具有相同的拓?fù)浣Y(jié)構(gòu)和相同數(shù)量的頂點(diǎn),且頂點(diǎn)的位置是在GPU中進(jìn)行計(jì)算,為了進(jìn)一步提高GPU的數(shù)據(jù)傳輸效率,所有地形塊可以使用一個(gè)固定的頂點(diǎn)和索引緩存,每個(gè)地形塊對(duì)應(yīng)一組縮放和偏移參數(shù),用于確定地形塊所表示的實(shí)際范圍以及在整個(gè)地形區(qū)域中的具體位置。同時(shí),地形塊的內(nèi)部也可以采用同樣的頂點(diǎn)連接方式,于是任意地形塊網(wǎng)格均可通過固定的索引序列生成具有規(guī)定頂點(diǎn)連接關(guān)系的三角形網(wǎng),進(jìn)而實(shí)現(xiàn)地形塊的渲染。S330、利用頂點(diǎn)著色器的頂點(diǎn)紋理拾取功能獲取地形網(wǎng)格的高程值,設(shè)置消除裂縫、跳躍現(xiàn)象的過渡帶,并進(jìn)行頂點(diǎn)變換和片元處理,最終實(shí)現(xiàn)繪制。如圖5所示,V1和Vtl分別為在兩個(gè)相鄰層次中對(duì)應(yīng)于相同平面坐標(biāo)的頂點(diǎn),在兩個(gè)層次切換過程中,利用過渡權(quán)值α使頂點(diǎn)在%和%間插值過渡,過渡過程中任意時(shí)刻的頂點(diǎn)位置V可表示為V=V「α · (V1-V0)。在地形塊中,處于不同區(qū)域內(nèi)的頂點(diǎn),其過渡權(quán)值α的作用也是不相同的,處于地形塊邊界處的頂點(diǎn),其α用來保證地形塊間的無(wú)縫連接,而處于地形塊內(nèi)部的頂點(diǎn),其α用來保證LOD層次間的平滑過渡。在地形塊的邊界處設(shè)置一個(gè)過渡帶H,如圖6所示,平面坐標(biāo)V處的頂點(diǎn)在某一時(shí)刻t的過渡權(quán)值α (t,v)可以由下式確定
atV 電 H α{ , V) = j disl,.rr
at +-(as ~a.)veH
h式中h為過渡帶的寬度,dist為平面坐標(biāo)V到過渡帶內(nèi)邊界的距離,a t為時(shí)間過渡權(quán)值,a s為外邊界處的空間過渡權(quán)值。對(duì)于時(shí)間過渡權(quán)值at,以整個(gè)地形塊為單位進(jìn)行計(jì)算,為了簡(jiǎn)化運(yùn)算,忽略時(shí)間參數(shù)對(duì)at的影響,僅選取地形塊與視點(diǎn)間的距離參數(shù)來求取Cit,則a t=min (max ((D-Dmin) / (Dmax-Dmin), O), I)式中D為地形塊包圍盒與視點(diǎn)之間的最近距離,Dmin和Dmax為該細(xì)節(jié)層次的地形塊參與構(gòu)網(wǎng)的兩個(gè)極限距離。對(duì)于空間過渡權(quán)值as,首先考察四個(gè)相鄰地形塊的層次級(jí)別,如果層次級(jí)別相同,則設(shè)置對(duì)應(yīng)外邊界的空間過渡權(quán)值α 3為0,即當(dāng)前塊的在外邊界處的頂點(diǎn)位置不變,如果相鄰地形塊的級(jí)別小于當(dāng)前塊的級(jí)別,則設(shè)置對(duì)應(yīng)外邊界的空間過渡權(quán)值asS 1,保證此邊界處的頂點(diǎn)位置和相鄰較粗糙層相同,從而有效地避免了裂縫現(xiàn)象。綜上所述,區(qū)別于現(xiàn)有技術(shù)不能夠有效提升地形繪制效率,本發(fā)明提供一種面向GPU的大規(guī)模地形快速繪制方法,通過結(jié)合out-of-core技術(shù)、LOD技術(shù)、可見性裁剪技術(shù)以及GPU加速技術(shù),能夠有效地提高數(shù)據(jù)調(diào)度的效率,充分地發(fā)揮GPU的可編程性和加速能力,減輕CPU運(yùn)算負(fù)擔(dān),增加每秒可繪制三角形的數(shù)量,同時(shí)獲得很高的幀率,提高大規(guī)模地形繪制的效率。以上所述僅為本發(fā)明的實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種面向GPU的大規(guī)模地形快速繪制方法,其特征在于包括以下步驟 51、生成原始地形的外存文件;其中,所述外存文件中存儲(chǔ)有包含原始地形數(shù)據(jù)的多個(gè)地形塊、每個(gè)所述地形塊的索引編號(hào)以及與所述地形塊相對(duì)應(yīng)的壓縮紋理塊,所述地形數(shù)據(jù)包括紋理數(shù)據(jù)和高程數(shù)據(jù); 52、根據(jù)預(yù)設(shè)視點(diǎn)參數(shù)確定地形的LOD層次分布,建立地形四叉樹結(jié)構(gòu),遍歷所述地形四叉樹結(jié)構(gòu)為不同的LOD層次細(xì)節(jié)選擇相應(yīng)的四叉樹節(jié)點(diǎn),將選中的四叉樹節(jié)點(diǎn)添加到渲染調(diào)度隊(duì)列;其中,所述地形四叉樹結(jié)構(gòu)的各個(gè)節(jié)點(diǎn)對(duì)應(yīng)于所述外存文件中的相應(yīng)壓縮地形塊,用于存儲(chǔ)相應(yīng)壓縮地形塊的LOD層次及高程數(shù)據(jù); 53、從所述渲染調(diào)度隊(duì)列獲取將被調(diào)度的節(jié)點(diǎn),并對(duì)所述將被高度的節(jié)點(diǎn)進(jìn)行渲染,完成對(duì)原始地形的繪制。
2.根據(jù)權(quán)利要求I所述的面向GPU的大規(guī)模地形快速繪制方法,其特征在于所述SI包括以下步驟 獲取原始地形的高程數(shù)據(jù)和紋理數(shù)據(jù),并將所述原始地形的高程數(shù)據(jù)和紋理數(shù)據(jù)進(jìn)行分層分塊處理,得到多個(gè)大小相同的地形塊及與所述地形塊相對(duì)應(yīng)的紋理塊; 對(duì)所述紋理塊進(jìn)行壓縮,得到壓縮紋理塊,并為所述地形塊構(gòu)建相應(yīng)的索引編號(hào); 將所有所述地形塊及與每個(gè)地形塊相應(yīng)的索引編號(hào)、壓縮紋理塊存儲(chǔ)于一文件中,得到外存文件。
3.根據(jù)權(quán)利要求I或2所述的面向GPU的大規(guī)模地形快速繪制方法,其特征在于所述S3中對(duì)所述將被調(diào)度的節(jié)點(diǎn)進(jìn)行渲染,完成對(duì)原始地形的繪制的步驟包括以下步驟 根據(jù)所述將被調(diào)度的節(jié)點(diǎn)獲取相應(yīng)地形塊的地形數(shù)據(jù); 將所述地形塊的高程數(shù)據(jù)作為頂點(diǎn)紋理載入顯存,由固定的頂點(diǎn)緩存和索引緩存建立地形的平面網(wǎng)格模型; 利用頂點(diǎn)著色器的頂點(diǎn)紋理拾取功能獲取地形網(wǎng)格的高程值,設(shè)置消除裂縫、跳躍現(xiàn)象的過渡帶,并進(jìn)行頂點(diǎn)變換和片元處理,最終實(shí)現(xiàn)繪制。
4.根據(jù)權(quán)利要求2所述的面向GPU的大規(guī)模地形快速繪制方法,其特征在于所述SI采用的分層方法為采用隔行隔列法對(duì)所述原始地形的高程數(shù)據(jù)進(jìn)行重采樣、采用雙線性插值法對(duì)所述原始地形的紋理數(shù)據(jù)進(jìn)行重采樣。
5.根據(jù)權(quán)利要求2或4所述的面向GPU的大規(guī)模地形快速繪制方法,其特征在于所述SI壓縮所述初始地形塊的紋理數(shù)據(jù)時(shí)采用的壓縮算法為采用DXT算法。
6.根據(jù)權(quán)利要求I所述的面向GPU的大規(guī)模地形快速繪制方法,其特征在于在所述S2的LOD層次分布中當(dāng)視距增加一倍時(shí),LOD級(jí)別降低一級(jí)。
7.根據(jù)權(quán)利要求I所述的面向GPU的大規(guī)模地形快速繪制方法,其特征在于所述S2在遍歷所述地形四叉樹結(jié)構(gòu)為不同的LOD層次細(xì)節(jié)選擇相應(yīng)的四叉樹節(jié)點(diǎn)的同時(shí)還執(zhí)行下述步驟對(duì)所述地形四叉樹結(jié)構(gòu)進(jìn)行視錐體裁剪。
8.根據(jù)權(quán)利要求7所述的面向GPU的大規(guī)模地形快速繪制方法,其特征在于所述對(duì)所述地形四叉樹結(jié)構(gòu)進(jìn)行視錐體裁剪具體為對(duì)當(dāng)前四叉樹節(jié)點(diǎn)的包圍盒與視錐體進(jìn)行相交測(cè)試,完成快速視錐體裁剪。
全文摘要
本發(fā)明提供一種面向GPU的大規(guī)模地形快速繪制方法,包括生成原始地形的外存文件;其中,外存文件中存儲(chǔ)有包含原始地形數(shù)據(jù)的多個(gè)地形塊、每個(gè)地形塊的索引編號(hào)以及與地形塊相對(duì)應(yīng)的壓縮紋理塊,地形數(shù)據(jù)包括紋理數(shù)據(jù)和高程數(shù)據(jù);根據(jù)預(yù)設(shè)視點(diǎn)參數(shù)確定地形的LOD層次分布,建立地形四叉樹結(jié)構(gòu),遍歷地形四叉樹結(jié)構(gòu)為不同的LOD層次細(xì)節(jié)選擇相應(yīng)的四叉樹節(jié)點(diǎn),將選中的四叉樹節(jié)點(diǎn)添加到渲染調(diào)度隊(duì)列;其中,地形四叉樹結(jié)構(gòu)的各個(gè)節(jié)點(diǎn)對(duì)應(yīng)于外存文件中的相應(yīng)壓縮地形塊,用于存儲(chǔ)相應(yīng)壓縮地形塊的LOD層次及高程數(shù)據(jù);從渲染調(diào)度隊(duì)列獲取將被調(diào)度的節(jié)點(diǎn),并對(duì)將被高度的節(jié)點(diǎn)進(jìn)行渲染,完成對(duì)原始地形的繪制。
文檔編號(hào)G06T17/05GK102867331SQ20121031671
公開日2013年1月9日 申請(qǐng)日期2012年8月31日 優(yōu)先權(quán)日2012年8月31日
發(fā)明者程建, 屈航, 羅博, 曾杰 申請(qǐng)人:電子科技大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1