本發(fā)明涉及空間地理信息系統(tǒng)技術領域,特別涉及一種三維場景中大規(guī)模地形渲染的局部刷新方法。
技術背景
目前的三維地形可視化系統(tǒng)中,大規(guī)模地形數(shù)據(jù)通常是構建地形瓦片金字塔模型,以四叉樹結構對地形瓦片進行組織管理,而加載地形數(shù)據(jù)則是通過請求場景中所有的地形數(shù)據(jù),將新增數(shù)據(jù)集與原始數(shù)據(jù)集合并,重新加載所有地形數(shù)據(jù)來完成。多數(shù)情況下,加載的局部地形范圍僅僅是全部地形范圍的一個很小的子范圍,讓所有地形瓦片全部刷新會增加數(shù)據(jù)調(diào)度的時間,降低刷新效率。因此,需要一種方法在加載局部地形時僅刷新局部地形所在的區(qū)域。
技術實現(xiàn)要素:
本發(fā)明提供了一種三維場景中大規(guī)模地形渲染的局部刷新方法,加載地形時僅刷新局部地形塊,無需重新加載所有地形數(shù)據(jù),解決目前地形可視化系統(tǒng)中加載局部地形時出現(xiàn)的刷新效率低下的問題。
本發(fā)明提出了一種三維場景中大規(guī)模地形渲染的局部刷新方法,其包括如下步驟:
步驟1、對需要加載的局部地形區(qū)域進行預處理;
步驟2、獲取與所述局部地形區(qū)域有重疊的各層級地形瓦片;
步驟3、實現(xiàn)局部地形區(qū)域的數(shù)據(jù)刷新。
其中,所述步驟1具體包括:
圈定需要加載的局部地形區(qū)域的矩形范圍xmin,xmax,ymin,ymax,其中下角標min表示最小值,下角標max表示最大值。
其中,所述步驟2具體包括:
將該矩形范圍與所述三維場景中的所有已加載的地形瓦片做二維坐標的相交運算,并判斷是否有重疊區(qū)域,將有重疊區(qū)域的地形瓦片保存,并將所述三維場景中的地形瓦片遍歷完畢,得到與所述局部地形區(qū)域有重疊的各層級地形瓦片的集合。
其中,所述將該矩形范圍與所述三維場景中的所有已加載的地形瓦片做相交運算,并將所述三維場景中的地形瓦片遍歷完畢具體包括:
判斷該矩形范圍與所述三維場景中的所有已加載的地形瓦片是否存在重疊區(qū)域,如果沒有重疊區(qū)域,則表明需要加載的局部地形區(qū)域不在所述三維場景的地形范圍內(nèi);
如果該矩形范圍與所述三維場景中的已加載的某個地形瓦片存在重疊區(qū)域,則保存該地形瓦片的層、列、行、數(shù)據(jù)范圍信息,并判斷是否其具備子地形瓦片,如果存在子地形瓦片,則遍歷子地形瓦片,直到遍歷完所述三維場景中包含需要加載的地形區(qū)域的最小地形瓦片,匯總以上地形瓦片信息形成地形瓦片集合。
其中,所述步驟3具體為:
由創(chuàng)建地形瓦片模塊構建如上述步驟2中所述各層級地形瓦片的集合中各個地形瓦片的新數(shù)據(jù)集,將其相應地替換所述三維場景中的原有地形瓦片。
本發(fā)明的有益成果
通過本發(fā)明使得三維場景中加載局部地形數(shù)據(jù)時,無需重新加載所有地形數(shù)據(jù),僅針對需要加載的局部地形塊進行更新,減少了數(shù)據(jù)調(diào)度時間,保證了加載地形數(shù)據(jù)的刷新速度。
附圖說明
圖1為與本發(fā)明實施例一致的實現(xiàn)三維場景大規(guī)模地形渲染中局部刷新的方法流程圖。
具體實施例
如圖1所示為與本發(fā)明具體實施例一致的實現(xiàn)三維場景大規(guī)模地形渲染中局部刷新的方法流程圖。附圖中各層級瓦片為各層級瓦片數(shù)據(jù)集。
局部地形數(shù)據(jù)實時刷新時,具體步驟如下:
對局部地形區(qū)域預處理,獲取到需加載地形的矩形范圍xmin,xmax,ymin,ymax;
將該矩形范圍與場景中的地形瓦片范圍做相交運算,若無重疊區(qū)域,說明加載的局部地形區(qū)域不在場景的地形范圍內(nèi),無需進行局部刷新;若有重疊區(qū)域,保存該地形瓦片的層、列、行、數(shù)據(jù)范圍等信息,并向子地形瓦片遍歷,重復步驟2,直到遍歷到場景中包含欲加載地形區(qū)域的最小地形瓦片;
步驟2中得到的即為場景中各個層級需要更新的地形瓦片,重新請求這些地形瓦片的數(shù)據(jù)集(包括影像與高程),構建新的地形瓦片,替換場景中原有的地形瓦片,即可在場景中實現(xiàn)地形的局部刷新。
其中,與本發(fā)明實施例一致的,判斷兩個矩形區(qū)域是否相交的某一算法可以為:
假設兩個矩形區(qū)域分別由其最大最小值點表示,矩形a表示為(minxa,minya),(maxxa,maxya),矩形b表示為(minxb,minyb),(maxxb,maxyb),若兩個矩形有重疊區(qū)域,則重疊區(qū)域的最大最小值點可以表示成(minx,miny),(maxx,maxy),其中minx,miny,maxx,maxy分別為
minx=max(minxa,minxb)
miny=max(minya,minyb)
maxx=min(maxxa,maxxb)
maxy=min(maxya,maxyb)
若minx>maxx,或者miny>maxy,說明重疊區(qū)域不存在,這兩個矩形不相交。
實施例1
假設需要在全球的三維場景中加載局部的杭州地形數(shù)據(jù)集,按照步驟1,獲取到局部的杭州地形的二維矩形范圍xmin,xmax,ymin,ymax,其中x表示其經(jīng)度方向,y表示其緯度方向。按照步驟2,將該矩形范圍與場景中已加載的地形瓦片做相交運算,并向子地形瓦片遍歷,得到獲取到場景中所有與該矩形范圍有重疊區(qū)域的地形瓦片;按照步驟3,重新構建這些地形瓦片的影像與高程數(shù)據(jù)集,構建新的地形瓦片,相應地替換場景中原有的地形瓦片,即完成了杭州地形的局部刷新。
在本說明書的描述中,參考術語“一個實施例”、“一些實施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結合該實施例或示例描述的具體特征、結構、材料或者特點包含于本發(fā)明的至少一個實施例或示例中。在本說明書中,對上述術語的示意性表述不一定指的是相同的實施例或示例。而且,描述的具體特征、結構、材料或者特點可以在任何的一個或多個實施例或示例中以合適的方式結合。
盡管已經(jīng)示出和描述了本發(fā)明的實施例,本領域的普通技術人員可以理解:在不脫離本發(fā)明的原理和宗旨的情況下可以對這些實施例進行多種變化、修改、替換和變型,本發(fā)明的范圍由權利要求及其等同物限定。