本發(fā)明涉及一種基于國產(chǎn)平臺的地形可視化實現(xiàn)方法,屬于計算機三維可視化的技術(shù)領(lǐng)域。
背景技術(shù):
地形繪制技術(shù)是研究數(shù)字地形模型(dtm)或數(shù)字高程模型(dem)的顯示、簡化、仿真等內(nèi)容的一門學(xué)科,屬于計算機圖形學(xué)的分支。三維地形可視化通常都是以dem數(shù)據(jù)為基礎(chǔ),動態(tài)地將地形的三維近似實時展現(xiàn)出來,并廣泛地應(yīng)用于飛行模擬、戰(zhàn)場仿真、三維游戲和科學(xué)可視化等領(lǐng)域中。地形繪制技術(shù)經(jīng)過幾十年的發(fā)展,產(chǎn)生了許多優(yōu)秀的算法,但是隨著圖形硬件(gpu)的高速發(fā)展,特別是可編程性能的提高,充分地利用硬件性能進一步提升地形繪制的效果,已經(jīng)成為地形繪制領(lǐng)域的共識。另外,近年來,隨著計算機國產(chǎn)化進程加快,國產(chǎn)平臺的硬件性能提升顯著,軟件支持也越來越豐富。如何基于國產(chǎn)平臺實現(xiàn)三維地形可視化成為新的研究課題。
中國專利文獻cn103714574a公開了一種基于gpu加速的海中場景建模與實時交互繪制方法。其步驟為:(1)對海中場景聲納數(shù)據(jù)進行預(yù)處理:水體地層分離、目標(biāo)檢測、去噪增強;(2)利用gpu加速實現(xiàn)了可交互的基于光線投射方法的海中場景三維體數(shù)據(jù)可視化建模;(3)基于gpu加速實現(xiàn)了海中目標(biāo)聲納數(shù)據(jù)表面提取和實時繪制。該專利文獻涉及海中場景建模,其利用的是光線投射方法和marchingcube算法實現(xiàn)場景再現(xiàn),但是并不適用于地形可視化。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)的不足,本發(fā)明提供一種基于國產(chǎn)平臺的地形可視化實現(xiàn)方法。本發(fā)明主要目的是在國產(chǎn)平臺上實現(xiàn)三維地形可視化,可應(yīng)用于戰(zhàn)場地形可視化、海底地形可視化以及國產(chǎn)平臺的gis系統(tǒng)等。本發(fā)明中所述的國產(chǎn)平臺指的是基于國產(chǎn)處理器(龍芯、飛騰、申威)開發(fā)的計算機和服務(wù)器。
本發(fā)明的技術(shù)方案如下:
一種基于國產(chǎn)平臺的地形可視化實現(xiàn)方法,包括對國產(chǎn)平臺進行預(yù)處理、利用國產(chǎn)平臺對原始地形數(shù)據(jù)預(yù)處理和三維地形的繪制;其特征在于,在所述三維地形的繪制中,利用tessellationshader細分曲面著色器實現(xiàn)三維地形可視化。本發(fā)明基于tessellationshader(細分曲面著色器)實現(xiàn)三維地形可視化gpu加速算法,對原始地形數(shù)據(jù)進行處理生成多級地形瓦片數(shù)據(jù),從而實現(xiàn)國產(chǎn)平臺地形可視化技術(shù)。
根據(jù)本發(fā)明優(yōu)選的,所述對國產(chǎn)平臺的預(yù)處理包括:向所述國產(chǎn)平臺移植圖形庫、搭建開發(fā)環(huán)境;此步驟是保證glsl編程語言的可用性,完成開發(fā)環(huán)境的搭建。
根據(jù)本發(fā)明優(yōu)選的,所述圖形庫為opengl開放圖形庫。所述opengl是opengraphicslibrary的簡寫,開放圖形庫,是指定義了一個跨編程語言、跨平臺的編程接口規(guī)格的專業(yè)的圖形程序接口。它用于三維圖像(二維的亦可),是一個功能強大,調(diào)用方便的底層圖形庫。
根據(jù)本發(fā)明優(yōu)選的,利用國產(chǎn)平臺對原始地形數(shù)據(jù)預(yù)處理:生成多級地形瓦片數(shù)據(jù)。
根據(jù)本發(fā)明優(yōu)選的,利用國產(chǎn)平臺對原始地形數(shù)據(jù)預(yù)處理的方法包括:通過線性插值算法將原始地形數(shù)據(jù)中的非均勻網(wǎng)格數(shù)據(jù)處理成均勻網(wǎng)格數(shù)據(jù),根據(jù)顯存大小調(diào)整網(wǎng)格數(shù)據(jù)的大小,采用四叉樹算法對均勻網(wǎng)格數(shù)據(jù)進行處理,得到多級地形瓦片數(shù)據(jù)。其中,根據(jù)顯存大小調(diào)整網(wǎng)格數(shù)據(jù)的大小是由于:算法中占用顯存的數(shù)據(jù)有:地形網(wǎng)格數(shù)據(jù),根據(jù)地形網(wǎng)格數(shù)據(jù)生成的法向量數(shù)據(jù),地形紋理數(shù)據(jù),tessellationshader細分得到的新頂點數(shù)據(jù),因此可以根據(jù)地形網(wǎng)格數(shù)據(jù)計算所需的顯存,為使程序流暢運行,需要根據(jù)顯存大小調(diào)整網(wǎng)格數(shù)據(jù)的大小。算法需要的顯存大小可以根據(jù)網(wǎng)格數(shù)據(jù)的網(wǎng)格點數(shù)量來計算。
此設(shè)計的優(yōu)點在于,由于地形數(shù)據(jù)種類較多,分辨率不同,本發(fā)明所采用的基于tessellationshader三維地形可視化gpu加速算法對地形數(shù)據(jù)有一定的要求,輸入數(shù)據(jù)為均勻網(wǎng)格數(shù)據(jù),根據(jù)平臺顯存決定輸入數(shù)據(jù)的大小,因此需要把原始地形數(shù)據(jù)進行預(yù)處理,通過線性插值算法把非均勻網(wǎng)格數(shù)據(jù)處理成均勻網(wǎng)格數(shù)據(jù),根據(jù)顯存大小調(diào)整網(wǎng)格數(shù)據(jù)的大小,采用四叉樹算法制作分級地形瓦片數(shù)據(jù)。
根據(jù)本發(fā)明優(yōu)選的,所述利用tessellationshader細分曲面著色器實現(xiàn)三維地形可視化的方法,包括:利用tessellationshader細分曲面著色器實現(xiàn)三維地形可視化gpu加速算法對所述多級地形瓦片數(shù)據(jù)進行處理。所述tessellationshader的中文名稱為細分曲面著色器,其利用gpu硬件加速,將現(xiàn)有3d模型的三角形拆分得更細小、更細致,也就是大大增加三角形數(shù)量,使得渲染對象的表面和邊緣更平滑、更精細。為提升三維地形可視化效果,本發(fā)明充分利用gpu的并行計算能力,減少傳統(tǒng)地形可視化算法中對瓦片數(shù)據(jù)的搜索,根據(jù)視點動態(tài)調(diào)整tessellationshader中的細分因子,從而減少需要繪制的三角面片數(shù)量,提高渲染速度。此外,對于位于裁剪體外的三角面片在vertexshader階段提前剔除。為提高三維地形的真實感、立體感以及感知性,在渲染場景中加入光照效果,模擬太陽光照射形成的效果。
本發(fā)明的優(yōu)勢在于:
1、本發(fā)明主要創(chuàng)新點在于基于國產(chǎn)平臺,結(jié)合tessellationshader細分曲面著色器實現(xiàn)三維地形可視化gpu加速算法,對原始地形數(shù)據(jù)進行處理生成多級地形瓦片數(shù)據(jù),從而實現(xiàn)國產(chǎn)平臺地形可視化技術(shù)。
2、為了使國產(chǎn)平臺能順利實現(xiàn)地形可視化,本發(fā)明向所述國產(chǎn)平臺移植opengl開放圖形庫、搭建開發(fā)環(huán)境,保證glsl編程語言的可用性,完成開發(fā)環(huán)境的搭建。
3、本發(fā)明通過對原始地形數(shù)據(jù)預(yù)處理,實現(xiàn)后續(xù)可視化數(shù)據(jù)的格式統(tǒng)一。本發(fā)明充分利用gpu的并行計算能力,減少傳統(tǒng)地形可視化算法中對瓦片數(shù)據(jù)的搜索,根據(jù)視點動態(tài)調(diào)整tessellationshader中的細分因子,從而減少需要繪制的三角面片數(shù)量,提高渲染速度。此外,對于位于裁剪體外的三角面片在vertexshader階段提前剔除。為提高三維地形的真實感、立體感以及感知性,在渲染場景中加入光照效果,模擬太陽光照射形成的效果。
附圖說明
圖1是本發(fā)明中利用國產(chǎn)平臺對原始地形數(shù)據(jù)預(yù)處理流程;
圖2是本發(fā)明中三維地形的繪制流程圖。
具體實施方式
下面結(jié)合實施例和說明書附圖對本發(fā)明做詳細的說明,但不限于此。
如圖1、2所示。
實施例1、
一種基于國產(chǎn)平臺的地形可視化實現(xiàn)方法,包括對國產(chǎn)平臺進行預(yù)處理、利用國產(chǎn)平臺對原始地形數(shù)據(jù)預(yù)處理和三維地形的繪制;其特征在于,在所述三維地形的繪制中,利用tessellationshader細分曲面著色器實現(xiàn)三維地形可視化。所述對國產(chǎn)平臺的預(yù)處理包括:向所述國產(chǎn)平臺移植圖形庫、搭建開發(fā)環(huán)境;
所述圖形庫為opengl開放圖形庫。
利用國產(chǎn)平臺對原始地形數(shù)據(jù)預(yù)處理:生成多級地形瓦片數(shù)據(jù)。
實施例2、
如實施例1所述的一種基于國產(chǎn)平臺的地形可視化實現(xiàn)方法,其區(qū)別在于,利用國產(chǎn)平臺對原始地形數(shù)據(jù)預(yù)處理的方法包括:通過線性插值算法將原始地形數(shù)據(jù)中的非均勻網(wǎng)格數(shù)據(jù)處理成均勻網(wǎng)格數(shù)據(jù),根據(jù)顯存大小調(diào)整網(wǎng)格數(shù)據(jù)的大小,采用四叉樹算法對均勻網(wǎng)格數(shù)據(jù)進行處理,得到多級地形瓦片數(shù)據(jù)。
如圖1所示,對原始地形數(shù)據(jù)進行預(yù)處理,首先采用二次線性插值方法把原始非均勻網(wǎng)格數(shù)據(jù)處理成均勻網(wǎng)格數(shù)據(jù),方便shader程序使用。然后,根據(jù)均勻網(wǎng)格數(shù)據(jù)采用四叉樹方法把地形數(shù)據(jù)作成多級瓦片數(shù)據(jù),可根據(jù)原始數(shù)據(jù)大小和顯存來決定分級數(shù)。
實施例3、
如實施例1所述的一種基于國產(chǎn)平臺的地形可視化實現(xiàn)方法,其區(qū)別在于,所述利用tessellationshader細分曲面著色器實現(xiàn)三維地形可視化的方法,包括:利用tessellationshader細分曲面著色器實現(xiàn)三維地形可視化gpu加速算法對所述多級地形瓦片數(shù)據(jù)進行處理。
如圖2所示,展示了三維地形的具體繪制過程。本發(fā)明采用c++、qt編程語言和opengl圖形開發(fā)庫,gpu編程語言采用glsl。首先要初始化opengl渲染窗口,c++程序完成對地形數(shù)據(jù)的加載,將數(shù)據(jù)加載至內(nèi)存;接下來,調(diào)用gpushader程序,將地形高程數(shù)據(jù)作為紋理加載至顯存,根據(jù)視點設(shè)置細分因子,剔除裁剪體外的頂點,從而減少需要繪制的地形區(qū)域,提高渲染效率,對于有效區(qū)域頂點,采樣地形高程紋理和海陸顏色紋理,生成三角面片;然后,根據(jù)blinn-phong光照模型計算光照對三角面片增加光照效果,從而生成三維地形可視化效果。