一種基于WebGL的大批量?jī)A斜攝影測(cè)量三維模型加載方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)字地球模型渲染技術(shù),尤其涉及一種基于WebGL的大批量?jī)A斜攝影測(cè)量三維模型加載方法。
【背景技術(shù)】
[0002]隨著HTML5規(guī)范逐漸深入人心,基于HTML5的應(yīng)用開始火熱起來(lái),利用HTML5技術(shù)來(lái)渲染三維數(shù)字城市模型也成為數(shù)字地球、數(shù)字城市開發(fā)者的一個(gè)熱點(diǎn)。然而,由于HTML5種所使用的WebGL技術(shù)使用JavaScript綁定OpenGL ES 2.0進(jìn)行三維模型渲染,因此在渲染效率上很難與桌面系統(tǒng)特別是原生態(tài)的OpenGL程序相提并論。而另一方面,隨著傾斜攝影測(cè)量技術(shù)的發(fā)展,現(xiàn)在的數(shù)字城市中已開始大量采用這種清晰、逼真且建模自動(dòng)化程度較高的三維模型。但與傳統(tǒng)主要通過(guò)手動(dòng)建模的數(shù)字城市相比,基于傾斜攝影測(cè)量模型構(gòu)建的數(shù)字城市模型數(shù)量更多、渲染任務(wù)量更大。無(wú)論是WebGL的渲染效率還是Internet上的數(shù)據(jù)下載速度暫時(shí)都受到制約的情況下,如何對(duì)大批量?jī)A斜攝影測(cè)量模型的渲染/加載策略/方法進(jìn)行改進(jìn),使之能滿足通過(guò)瀏覽器進(jìn)行數(shù)字城市的順利加載、滿足互聯(lián)網(wǎng)上的三維模型瀏覽需要就成為一個(gè)亟待解決的重要問(wèn)題。
【發(fā)明內(nèi)容】
[0003]本發(fā)明要解決的技術(shù)問(wèn)題在于針對(duì)現(xiàn)有技術(shù)中的缺陷,提供一種基于WebGL的大批量?jī)A斜攝影測(cè)量三維模型加載方法。
[0004]本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是:一種基于WebGL的大批量?jī)A斜攝影測(cè)量三維模型加載方法,包括以下步驟:
[0005]1)將所有傾斜攝影測(cè)量三維模型按照縮放級(jí)別進(jìn)行劃分;
[0006]2)對(duì)分組后的傾斜攝影測(cè)量三維模型按照縮放級(jí)別和經(jīng)瑋度范圍進(jìn)行數(shù)據(jù)分片,每一個(gè)分片保存為一個(gè)分片模型;并保存以下分片信息:分片等級(jí);每一等級(jí)的模型分片數(shù);每一個(gè)模型分片所對(duì)應(yīng)的坐標(biāo)范圍;
[0007]3)對(duì)分片模型文件進(jìn)行加載分組,分組步驟如下:
[0008]3.1)確定整個(gè)數(shù)字城市將要被加載的縮放等級(jí);
[0009]3.2)確定該等級(jí)下的分組數(shù);所述每個(gè)縮放等級(jí)下的分組數(shù)為事先設(shè)定;
[0010]3.3)確定該等級(jí)下的每個(gè)分組的區(qū)域范圍,根據(jù)分組的區(qū)域范圍確定每個(gè)分組中包括的分片模型;
[0011]4)批量三維模型動(dòng)態(tài)加載;
[0012]4.1)由當(dāng)前數(shù)字城市場(chǎng)景瀏覽的攝像機(jī)參數(shù),計(jì)算攝像機(jī)的范圍以確定需要加載的模型分組等級(jí);
[0013]4.2)由當(dāng)前攝像機(jī)的中心點(diǎn)位置,與當(dāng)前加載等級(jí)的分組范圍比較,判斷其落入的分組,加載相應(yīng)分組所對(duì)應(yīng)的全部三維模型;
[0014]4.3)當(dāng)攝像機(jī)發(fā)生縮放操作時(shí),計(jì)算將要加載的模型分組等級(jí),如果與原等級(jí)不同,判斷當(dāng)前已加載的是否為最大模型分組等級(jí)且模型加載量超過(guò)60%,若是則攝像機(jī)的后續(xù)縮放過(guò)程中將不再刪除已經(jīng)加載的三維模型;否則刪除已加載的三維模型,轉(zhuǎn)而加載新的等級(jí)下的分組模型;
[0015]4.4)當(dāng)攝像機(jī)發(fā)生移動(dòng)操作時(shí),則依據(jù)步驟4.2)判斷需要加載的模型分組是否已經(jīng)被加載了,如果沒(méi)有則進(jìn)行加載。
[0016]按上述方案,所述步驟2)中分片工具為三維處理軟件。
[00?7] 按上述方案,所述步驟2)中分片信息記錄在LODTree.xml中。
[0018]按上述方案,所述步驟3)中由讀入的模型分片信息制定分組策略,主要遵循的原則有:每一分組的切片模型數(shù)量為7至15個(gè);每一分組中的切片模型相鄰;不同等級(jí)的模型分組所對(duì)應(yīng)的切片模型數(shù)有明顯的差別;最低等級(jí)的所有模型切片只對(duì)應(yīng)一個(gè)分組。
[0019]本發(fā)明產(chǎn)生的有益效果是:本發(fā)明通過(guò)使用一種模型的分組動(dòng)態(tài)加載策略使得大批量的傾斜攝影測(cè)量三維模型可以無(wú)插件的呈現(xiàn)/渲染在Web瀏覽器上,在本發(fā)明基礎(chǔ)上可實(shí)現(xiàn)數(shù)字城市的跨平臺(tái)展示。
【附圖說(shuō)明】
[0020]下面將結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明,附圖中:
[0021]圖1是本發(fā)明中實(shí)施例的模型分組方法流程圖;
[0022]圖2是本發(fā)明實(shí)施數(shù)字城市批量模型動(dòng)態(tài)加載方法流程圖。
【具體實(shí)施方式】
[0023]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0024]如圖1所示,一種基于WebGL的大批量?jī)A斜攝影測(cè)量三維模型加載方法,包括以下步驟:
[0025]1)將所有傾斜攝影測(cè)量三維模型按照縮放級(jí)別進(jìn)行劃分;
[0026]2)對(duì)分組后的傾斜攝影測(cè)量三維模型按照縮放級(jí)別和經(jīng)瑋度范圍進(jìn)行數(shù)據(jù)分片,每一個(gè)分片保存為一個(gè)分片模型;并保存以下分片信息:分片等級(jí);每一等級(jí)的模型分片數(shù);每一個(gè)模型分片所對(duì)應(yīng)的坐標(biāo)范圍;
[0027]3)讀入模型分片信息(LODTree.xml);
[0028]由模型分片所產(chǎn)生的LODTree.xml文件中讀入模型分片信息來(lái)決定如何進(jìn)行模型分組;
[0029]這些分片信息主要包括,(1)分片等級(jí);(2)每一等級(jí)的模型分片數(shù);(3)每一個(gè)模型分片所對(duì)應(yīng)的坐標(biāo)范圍及其模型數(shù)據(jù)路徑。
[0030]4)分組策略制定;
[0031]由讀入的模型分片信息制定分組策略,主要遵循的原則有:
[0032]a)每一分組的切片模型數(shù)量不宜太多,但也不宜太少。最好在10個(gè)左右。
[0033]b)每一分組中的切片模型盡量相鄰,以便于從切片模型坐標(biāo)范圍(XY方向)中計(jì)算到分組范圍(XY方向坐標(biāo)范圍)。
[0034]C)模型分組的等級(jí)之間所對(duì)應(yīng)的切片模型數(shù)盡量有比較明顯的差別。
[0035]D)最低等級(jí)的模型分組數(shù)設(shè)置為1。
[0036]5)模型拷貝
[0037]按照4)所確定的分組等級(jí)數(shù)建立文件夾如(0,1,2…分別代表等級(jí)0,1,2等),分別將各個(gè)等級(jí)所對(duì)應(yīng)的分片模型拷貝到這些文件夾中。為了達(dá)到Webgl對(duì)模型渲染的需要,這些模型需要統(tǒng)一轉(zhuǎn)換成bgltf格式。
[0038]6)分組等級(jí)范圍及最大等級(jí)模型數(shù)記錄
[0039]為了確定攝像機(jī)進(jìn)行縮放時(shí)進(jìn)入到的是哪一個(gè)分組等級(jí)。需要記錄下每個(gè)分組等級(jí)中的視野范圍。該范圍計(jì)算就是取該等級(jí)下的所有切片分組的XY坐標(biāo)范圍,計(jì)算其平均值并記錄下來(lái)。對(duì)于最大等級(jí)的模型分組,需要記錄下該等級(jí)下的所有模型的個(gè)數(shù)。
[0040]7)模型分組信息記錄
[0041 ]以CZML文件格式記錄下所有模型分組信息。
[0042]其中
[0043]CZML文件名為該模型分組對(duì)應(yīng)的經(jīng)瑋度范圍。如122.955_39.675_122.984_39.682.czml代表該分組的經(jīng)瑋度范圍為經(jīng)度(122.955-122.984),瑋度(39.675-39.682)。
[0044]CZML中記錄了組成該分組的所有模型分片坐標(biāo)信息和對(duì)應(yīng)的模型路徑。文件采用j son 格式記錄這些信息,形如:[{post1n: ,model: },{post 1n: ,model:} , {post1n:,model:}…]。posit1n代表模型顯示位置坐標(biāo),model代表模型路徑。本發(fā)明中對(duì)批量?jī)A斜攝影測(cè)量模型分組方法見圖1。
[0045]8)批量模型動(dòng)態(tài)加載步驟,本發(fā)明中基于Webgl的批量?jī)A斜攝影測(cè)量模型動(dòng)態(tài)加載方法見圖2;
[0046]8.1)初始加載時(shí)加載最低等級(jí)的模型分組中的模型,由于最低等級(jí)中的模型分組數(shù)為1,也就是所有該等級(jí)下的模型都被加載出來(lái);
[0047]8.2)當(dāng)用戶進(jìn)行縮放操作時(shí),對(duì)用戶當(dāng)前的攝像機(jī)參數(shù)進(jìn)行計(jì)算并與步驟6)中記錄的等級(jí)范圍對(duì)比,判斷其是否進(jìn)入了另一個(gè)等級(jí);
[0048]8.3)如果在8.2中得到的加載等級(jí)與之前的等級(jí)不等則移除當(dāng)前所加載的所有模型,轉(zhuǎn)而加載新的加載等級(jí)下的模型;
[0049]8.4)在步驟8.3)中如果進(jìn)行縮放操作前,已經(jīng)加載到最大等級(jí)的模型了。則需要判斷該等級(jí)模型數(shù)加載量是否已經(jīng)超過(guò)了 60%。如果已經(jīng)超過(guò)了則不再移除這些已經(jīng)加載了的模型。
[0050]8.5)在用戶的移動(dòng)操作時(shí),計(jì)算攝像機(jī)中心落在當(dāng)前等級(jí)的哪一個(gè)模型分組范圍內(nèi)。如果該范圍所對(duì)應(yīng)的模型分組沒(méi)有被加載,則將其進(jìn)行加載,并將該范圍信息存儲(chǔ)到已加載模型分組范圍集合中。由于每個(gè)模型分組的范圍被記錄在其文件名上,所以可以將這些分組模型名進(jìn)行索引,就可以快速判斷出攝像機(jī)中心落在哪個(gè)矩形范圍內(nèi)。
[0051]應(yīng)當(dāng)理解的是,對(duì)本領(lǐng)域普通技術(shù)人員來(lái)說(shuō),可以根據(jù)上述說(shuō)明加以改進(jìn)或變換,而所有這些改進(jìn)和變換都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。
【主權(quán)項(xiàng)】
1.一種基于WebGL的大批量?jī)A斜攝影測(cè)量三維模型加載方法,其特征在于,包括以下步驟: 1)將所有傾斜攝影測(cè)量三維模型按照縮放級(jí)別進(jìn)行劃分; 2)對(duì)分組后的傾斜攝影測(cè)量三維模型按照縮放級(jí)別和經(jīng)瑋度范圍進(jìn)行數(shù)據(jù)分片,每一個(gè)分片保存為一個(gè)分片模型;并保存以下分片信息:分片等級(jí);每一等級(jí)的模型分片數(shù);每一個(gè)模型分片所對(duì)應(yīng)的坐標(biāo)范圍; 3 )對(duì)分片模型文件進(jìn)行加載分組,分組步驟如下: 3.1)確定整個(gè)數(shù)字城市將要被加載的縮放等級(jí); 3.2)確定該等級(jí)下的分組數(shù);所述每個(gè)縮放等級(jí)下的分組數(shù)為事先設(shè)定; 3.3)確定該等級(jí)下的每個(gè)分組的區(qū)域范圍,根據(jù)分組的區(qū)域范圍確定每個(gè)分組中包括的分片模型; 4)批量三維模型動(dòng)態(tài)加載; 4.1)由當(dāng)前數(shù)字城市場(chǎng)景瀏覽的攝像機(jī)參數(shù),計(jì)算攝像機(jī)的范圍以確定需要加載的模型分組等級(jí); 4.2)由當(dāng)前攝像機(jī)的中心點(diǎn)位置,與當(dāng)前加載等級(jí)的分組范圍比較,判斷其落入的分組,加載相應(yīng)分組所對(duì)應(yīng)的全部三維模型; 4.3)當(dāng)攝像機(jī)發(fā)生縮放操作時(shí),計(jì)算將要加載的模型分組等級(jí),如果與原等級(jí)不同,判斷當(dāng)前已加載的是否為最大模型分組等級(jí)且模型加載量超過(guò)60%,若是則攝像機(jī)的后續(xù)縮放過(guò)程中將不再刪除已經(jīng)加載的三維模型;否則刪除已加載的三維模型,轉(zhuǎn)而加載新的等級(jí)下的分組模型; 4.4)當(dāng)攝像機(jī)發(fā)生移動(dòng)操作時(shí),則依據(jù)步驟4.2)判斷需要加載的模型分組是否已經(jīng)被加載了,如果沒(méi)有則進(jìn)行加載。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟2)中分片工具為三維處理軟件。3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟2)中分片信息記錄在LODTree.xml中。4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟3)中由讀入的模型分片信息制定分組策略,主要遵循的原則有:每一分組的切片模型數(shù)量為7至15個(gè);每一分組中的切片模型相鄰;模型分組的等級(jí)之間所對(duì)應(yīng)的切片模型數(shù)有明顯的差別;最低等級(jí)的模型分組數(shù)設(shè)置為1。
【專利摘要】本發(fā)明公開了一種基于WebGL的大批量?jī)A斜攝影測(cè)量三維模型加載方法,該方法包括以下步驟:1)傾斜攝影測(cè)量模型的分片與分組;2)基于WebGL的三維模型動(dòng)態(tài)加載。本發(fā)明通過(guò)以上這些方法與策略來(lái)實(shí)現(xiàn)基于HTML5的數(shù)字三維城市展現(xiàn),在本發(fā)明方法的基礎(chǔ)上可實(shí)現(xiàn)瀏覽器上的傾斜攝影測(cè)量三維數(shù)字城市。
【IPC分類】G06F17/30
【公開號(hào)】CN105426488
【申請(qǐng)?zhí)枴緾N201510814628
【發(fā)明人】余翔宇
【申請(qǐng)人】中國(guó)地質(zhì)大學(xué)(武漢)
【公開日】2016年3月23日
【申請(qǐng)日】2015年11月20日