虛擬現(xiàn)實(shí)下的海量模型數(shù)據(jù)動(dòng)態(tài)調(diào)度與實(shí)時(shí)異步加載方法
【專利摘要】本發(fā)明公開一種虛擬現(xiàn)實(shí)下的海量模型數(shù)據(jù)動(dòng)態(tài)調(diào)度與實(shí)時(shí)異步加載方法,包括如下步驟:(一)3D模型場(chǎng)景數(shù)據(jù)的預(yù)處理;(二)對(duì)模型場(chǎng)景整體的切割分塊;(三)多線程并行分布加載;(四)視錐體裁剪。本方法基于視錐體和地形區(qū)域求交點(diǎn)的視錐體裁剪算法,實(shí)現(xiàn)了動(dòng)態(tài)調(diào)度中基于地形區(qū)域的實(shí)時(shí)裁剪,采用模型數(shù)據(jù)分塊調(diào)度和渲染管線的多線程處理機(jī)制,使不同介質(zhì)之間的動(dòng)態(tài)調(diào)度與繪制管線和數(shù)據(jù)處理調(diào)度管線能異步加載,從而實(shí)現(xiàn)了在有限內(nèi)存,處理器等硬件環(huán)境下對(duì)海量場(chǎng)景模型數(shù)據(jù)加載和表現(xiàn)效率的動(dòng)態(tài)平衡。
【專利說(shuō)明】虛擬現(xiàn)實(shí)下的海量模型數(shù)據(jù)動(dòng)態(tài)調(diào)度與實(shí)時(shí)異步加載方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于地質(zhì)勘探領(lǐng)域,具體是一種虛擬現(xiàn)實(shí)下的海量模型數(shù)據(jù)動(dòng)態(tài)調(diào)度與實(shí)時(shí)異步加載方法。
【背景技術(shù)】
[0002]傳統(tǒng)的虛擬現(xiàn)實(shí)系統(tǒng)中,由于系統(tǒng)架構(gòu),模型結(jié)構(gòu),網(wǎng)絡(luò)帶寬,計(jì)算機(jī)硬件CPU和GTO運(yùn)算能力,內(nèi)存,顯存大小等限制,三維場(chǎng)景時(shí)采用靜態(tài)方式預(yù)先加載到系統(tǒng)內(nèi)存中,無(wú)法實(shí)時(shí)的對(duì)模型進(jìn)行動(dòng)態(tài)的組織,調(diào)度等復(fù)雜操作,而海量的模型數(shù)據(jù)更不可能加載進(jìn)入系統(tǒng),部分實(shí)現(xiàn)動(dòng)態(tài)調(diào)度的系統(tǒng)也會(huì)因?yàn)楹A康膱?chǎng)景模型數(shù)據(jù)和有限的網(wǎng)絡(luò)帶寬或者GPU運(yùn)行能力造成嚴(yán)重的數(shù)據(jù)讀寫延遲和數(shù)據(jù)堵塞,從而降低了三維虛擬場(chǎng)景模型的載入流暢性和操作的連貫性,大大降低了用戶的使用和操作體驗(yàn)。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的目的是為了克服現(xiàn)有技術(shù)的不足,提供一種虛擬現(xiàn)實(shí)下的海量模型數(shù)據(jù)動(dòng)態(tài)調(diào)度與實(shí)時(shí)異步加載方法,該方法是基于視錐體和地形區(qū)域求交點(diǎn)的視錐體裁剪算法,實(shí)現(xiàn)了動(dòng)態(tài)調(diào)度中基于地形區(qū)域的實(shí)時(shí)裁剪,采用模型數(shù)據(jù)分塊調(diào)度和渲染管線的多線程處理機(jī)制,使不同介質(zhì)之間的動(dòng)態(tài)調(diào)度與繪制管線和數(shù)據(jù)處理調(diào)度管線能異步加載,從而實(shí)現(xiàn)了在有限內(nèi)存,處理器等硬件環(huán)境下對(duì)海量場(chǎng)景模型數(shù)據(jù)加載和表現(xiàn)效率的動(dòng)態(tài)平衡。
[0004]為了實(shí)現(xiàn)上述目的,本發(fā)明是通過(guò)以下技術(shù)方案實(shí)現(xiàn)的:
一種虛擬現(xiàn)實(shí)下的海量模型數(shù)據(jù)動(dòng)態(tài)調(diào)度與實(shí)時(shí)異步加載方法,包括如下步驟:
(一)3D模型場(chǎng)景數(shù)據(jù)的預(yù)處理;
(二)對(duì)模型場(chǎng)景整體的切割分塊;
(三)多線程并行分布加載;
(四)視錐體裁剪。
[0005]作為進(jìn)一步的說(shuō)明,以上所述預(yù)處理,其步驟為:
1)優(yōu)化VR場(chǎng)景模型的幾何面數(shù)
VR場(chǎng)景模型的優(yōu)化是要對(duì)每個(gè)獨(dú)立的模型面數(shù)進(jìn)行精簡(jiǎn),還需要對(duì)模型的個(gè)數(shù)進(jìn)行精
簡(jiǎn);
2)優(yōu)化VR場(chǎng)景獨(dú)立模型對(duì)象的數(shù)量
將相同材質(zhì)的物共用好材質(zhì);調(diào)整好各自的貼圖坐標(biāo);然后再將這些相同材質(zhì)的物體進(jìn)行合并以減少模型個(gè)數(shù);
3)優(yōu)化VR場(chǎng)景模型的貼圖量和貼圖細(xì)節(jié);
將單獨(dú)的模型對(duì)象紋理全部烘焙在一張紋理上,重新定位紋理坐標(biāo),貼圖格式轉(zhuǎn)換為dds格式,能夠直接通過(guò)顯卡計(jì)算,加快載入速度;
作為進(jìn)一步的說(shuō)明,以上所述對(duì)模型場(chǎng)景整體的切割分塊, 1)對(duì)海量模型數(shù)據(jù)進(jìn)行分塊;
海量模型數(shù)據(jù)對(duì)應(yīng)較大空間范圍廣度的模型場(chǎng)景內(nèi)容,根據(jù)VR系統(tǒng)的漫游器操作設(shè)定對(duì)三維空間視錐體,視錐體的分析,計(jì)算出平面內(nèi)可見場(chǎng)景空間的范圍值,依照此范圍值確定對(duì)應(yīng)分塊空間的極限值,然后將場(chǎng)景空間的笛卡爾坐標(biāo)系的高位坐標(biāo)截取作為塊號(hào),低位坐標(biāo)極限值為視錐體可見范圍極限值;
2)對(duì)分塊排序并建立索引表;
依照高位坐標(biāo)值生成的塊號(hào)的空間關(guān)系,將整個(gè)場(chǎng)景分塊生成的分塊號(hào)序列進(jìn)行排序,并保存在外部文件中,每條塊號(hào)記錄文件包括:塊號(hào)ID,塊號(hào)名,塊號(hào)坐標(biāo),塊號(hào)備注;
3)將分塊數(shù)據(jù)打包;
將原始場(chǎng)景的模型數(shù)據(jù)分塊切割后,對(duì)每個(gè)分塊后的模型數(shù)據(jù)塊添加塊號(hào)ID,此塊號(hào)ID對(duì)應(yīng)分塊索引表中塊號(hào)記錄文件中的塊號(hào)ID,通過(guò)此ID進(jìn)行關(guān)聯(lián),實(shí)現(xiàn)遍歷索引表找到對(duì)應(yīng)ID的分塊數(shù)據(jù)包功能,然后將分塊數(shù)據(jù)包壓縮打包成二進(jìn)制流文件。
[0006]作為進(jìn)一步的說(shuō)明,以上所述多線程并行分布加載,其步驟為:
其步驟為:1)使用預(yù)加載線程載入場(chǎng)景分塊索引表;
在VR系統(tǒng)初始化階段,啟動(dòng)線程載入場(chǎng)景分塊索引表,當(dāng)海量模型數(shù)據(jù)時(shí),索引表體積偏大,使用線程加載能保證在VR系統(tǒng)初始化中其他操作不受影響;
2)使用異步加載線程動(dòng)態(tài)的加載場(chǎng)景分塊;
在場(chǎng)景漫游器初始化完成后,操作漫游器視錐體進(jìn)行場(chǎng)景漫游時(shí),開始計(jì)算當(dāng)前視錐體與場(chǎng)景的交點(diǎn)區(qū)域,確定分塊后,啟動(dòng)異步加載線程動(dòng)態(tài)加載當(dāng)前分塊號(hào)對(duì)應(yīng)的場(chǎng)景分塊模型數(shù)據(jù)包;
3)使用渲染線程渲染模型場(chǎng)景紋理和模型頂點(diǎn)結(jié)構(gòu);
加載完模型數(shù)據(jù)進(jìn)內(nèi)存后,啟動(dòng)渲染線程渲染場(chǎng)景紋理和模型頂點(diǎn)幾何數(shù)據(jù);
作為進(jìn)一步的說(shuō)明,以上所述視錐體裁剪,其步驟為:1)計(jì)算當(dāng)前視錐體與場(chǎng)景相交區(qū)
域;
將地形檢測(cè)的塊狀物體放到場(chǎng)景里面進(jìn)行設(shè)置,每一個(gè)檢測(cè)塊都對(duì)應(yīng)著一塊分塊號(hào),位置與其對(duì)應(yīng)的地形一致。當(dāng)漫游器視錐體的自身Z軸方向與某個(gè)檢測(cè)塊發(fā)生碰撞之后,及獲得視錐體所需顯示的當(dāng)前區(qū)域模型分塊號(hào)。
[0007]2)遍歷模型分塊索引表獲得當(dāng)前相交區(qū)域塊號(hào);
獲得當(dāng)前視錐體范圍對(duì)應(yīng)塊號(hào)后,遍歷模型分塊索引表,通過(guò)分塊ID查找到對(duì)應(yīng)場(chǎng)景模型分塊包數(shù)據(jù),然后從本地硬盤或網(wǎng)絡(luò)異步加載分塊包中數(shù)據(jù)到內(nèi)存中,將模型分塊索引表中獲得的快號(hào)對(duì)象的高位坐標(biāo)值同場(chǎng)景模型分塊包中數(shù)據(jù)的低位坐標(biāo)值進(jìn)行拼接,得到最終的完整坐標(biāo),然后顯示在場(chǎng)景中;
3)動(dòng)態(tài)調(diào)度塊號(hào)對(duì)應(yīng)的模型數(shù)據(jù)包,加載進(jìn)當(dāng)前場(chǎng)景;
將該區(qū)塊的分塊數(shù)據(jù)包載入到內(nèi)存中,異步克隆其主資源中各個(gè)子物體到其相應(yīng)的位置。當(dāng)整個(gè)場(chǎng)景中加載的區(qū)塊數(shù)目超出一個(gè)事先設(shè)定的值時(shí)或系統(tǒng)的內(nèi)存監(jiān)控消耗達(dá)到臨界值時(shí),就會(huì)調(diào)用動(dòng)態(tài)調(diào)度優(yōu)化處理算法,計(jì)算距離漫游器視錐體中心區(qū)域最遠(yuǎn)的地塊區(qū)域,獲取地塊的分塊ID和對(duì)應(yīng)的內(nèi)存中分塊數(shù)據(jù)進(jìn)行釋放,從而降低系統(tǒng)內(nèi)存負(fù)載。
[0008]與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:通過(guò)使用建模結(jié)構(gòu)頂點(diǎn)和紋理數(shù)據(jù)的優(yōu)化,歸一化處理;對(duì)模型場(chǎng)景整體的切割分塊技術(shù);多線程并行分布加載技術(shù);視錐體裁剪技術(shù)等多種技術(shù)實(shí)現(xiàn)了海量數(shù)據(jù)動(dòng)態(tài)調(diào)度和實(shí)時(shí)異步加載模型數(shù)據(jù)技術(shù),解決了以往VR系統(tǒng)中模型場(chǎng)景限制,無(wú)法在同個(gè)場(chǎng)景中展現(xiàn)大規(guī)模模型數(shù)據(jù)的瓶頸問(wèn)題。拓廣了 VR系統(tǒng)表現(xiàn)整體場(chǎng)景規(guī)模的能力。
【具體實(shí)施方式】
[0009]下面結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)的描述,但本發(fā)明的實(shí)施方式并不局限于實(shí)施例表示的范圍。
[0010]實(shí)施例:
1.3D模型場(chǎng)景數(shù)據(jù)的預(yù)處理,優(yōu)化過(guò)程 I)優(yōu)化VR場(chǎng)景模型的幾何面數(shù)
模型的優(yōu)化是要對(duì)每個(gè)獨(dú)立的模型面數(shù)進(jìn)行精簡(jiǎn),還需要對(duì)模型的個(gè)數(shù)進(jìn)行精簡(jiǎn),這兩個(gè)數(shù)據(jù)都是影響最終運(yùn)行速度的重要參數(shù),這些優(yōu)化操作是必須的,也是提升載入速度的重要方面。
[0011]2)優(yōu)化VR場(chǎng)景獨(dú)立模型對(duì)象的數(shù)量
VR場(chǎng)景的模型個(gè)數(shù)過(guò)多也會(huì)直接影響到VR場(chǎng)景的導(dǎo)出及VR場(chǎng)景的顯示速度。如果當(dāng)前的VR場(chǎng)景里的模型個(gè)數(shù)過(guò)多,計(jì)算機(jī)可能會(huì)因?yàn)橛?jì)算不過(guò)來(lái),而造成部分物體無(wú)法加載進(jìn)去,最終得到的VR場(chǎng)景模型是不完整的,零碎,有模型丟失等現(xiàn)象;如果計(jì)算機(jī)勉強(qiáng)將VR場(chǎng)景里的所有模型加載進(jìn)去了,其運(yùn)行速度也會(huì)很慢。為了避免以上問(wèn)題的出現(xiàn),解決方法是:將相同材質(zhì)的物共用好材質(zhì);調(diào)整好各自的貼圖坐標(biāo);然后再將這些相同材質(zhì)的物體進(jìn)行合并以減少模型個(gè)數(shù)。
[0012]3)優(yōu)化VR場(chǎng)景模型的貼圖量和貼圖細(xì)節(jié);
當(dāng)3D模型用于視頻演示或者結(jié)構(gòu)渲染作用,貼圖的大小和數(shù)量是沒(méi)有控制和優(yōu)化的,在VR系統(tǒng)中特別是海量數(shù)據(jù)載入中,必須對(duì)貼圖量和貼圖細(xì)節(jié)質(zhì)量進(jìn)行控制,將單獨(dú)的模型對(duì)象紋理全部烘焙在一張紋理上,重新定位紋理坐標(biāo),貼圖格式轉(zhuǎn)換為dds格式,能夠直接通過(guò)顯卡計(jì)算,加快載入速度。
[0013]2.對(duì)模型場(chǎng)景整體的切割分塊過(guò)程 I)對(duì)海量模型數(shù)據(jù)進(jìn)行分塊;
海量模型數(shù)據(jù)一般會(huì)對(duì)應(yīng)較大空間范圍廣度的模型場(chǎng)景內(nèi)容,根據(jù)VR系統(tǒng)的漫游器操作設(shè)定對(duì)三維空間視錐體,視錐體的分析,計(jì)算出平面內(nèi)可見場(chǎng)景空間的范圍值,依照此范圍值確定對(duì)應(yīng)分塊空間的極限值,然后將場(chǎng)景空間的笛卡爾坐標(biāo)系的高位坐標(biāo)截取作為塊號(hào),低位坐標(biāo)極限值為視錐體可見范圍極限值。
[0014]2)對(duì)分塊排序并建立索引表;
依照高位坐標(biāo)值生成的塊號(hào)的空間關(guān)系,將整個(gè)場(chǎng)景分塊生成的分塊號(hào)序列進(jìn)行排序,并保存在外部文件中,每條塊號(hào)記錄文件包括:塊號(hào)ID,塊號(hào)名,塊號(hào)坐標(biāo),塊號(hào)備注。
[0015]3)將分塊數(shù)據(jù)打包;
將原始場(chǎng)景的模型數(shù)據(jù)分塊切割后,對(duì)每個(gè)分塊后的模型數(shù)據(jù)塊添加塊號(hào)ID,此塊號(hào)ID對(duì)應(yīng)分塊索引表中塊號(hào)記錄文件中的塊號(hào)ID,通過(guò)此ID進(jìn)行關(guān)聯(lián),實(shí)現(xiàn)遍歷索引表找到對(duì)應(yīng)ID的分塊數(shù)據(jù)包功能,然后將分塊數(shù)據(jù)包壓縮打包成二進(jìn)制流文件,有利于網(wǎng)絡(luò)環(huán)境傳輸,并加快載入速度。[0016]3.多線程并行分布加載技術(shù);
O使用預(yù)加載線程載入場(chǎng)景分塊索引表;
在VR系統(tǒng)初始化階段,啟動(dòng)線程載入場(chǎng)景分塊索引表,當(dāng)海量模型數(shù)據(jù)時(shí),索引表體積偏大,使用線程加載能保證在VR系統(tǒng)初始化中其他操作不受影響,保證了系統(tǒng)的啟動(dòng)速度。
[0017]2)使用異步加載線程動(dòng)態(tài)的加載場(chǎng)景分塊;
在場(chǎng)景漫游器初始化完成后,用戶操作漫游器視錐體進(jìn)行場(chǎng)景漫游時(shí),開始計(jì)算當(dāng)前視錐體與場(chǎng)景的交點(diǎn)區(qū)域,確定分塊后,啟動(dòng)異步加載線程動(dòng)態(tài)加載當(dāng)前分塊號(hào)對(duì)應(yīng)的場(chǎng)景分塊模型數(shù)據(jù)包,實(shí)現(xiàn)了漫游器不受動(dòng)態(tài)加載模型IO操作的影響,漫游器始終流暢運(yùn)行的效果。
[0018]3)使用渲染線程渲染模型場(chǎng)景紋理和模型頂點(diǎn)結(jié)構(gòu);
加載完模型數(shù)據(jù)進(jìn)內(nèi)存后,啟動(dòng)渲染線程渲染場(chǎng)景紋理和模型頂點(diǎn)幾何數(shù)據(jù),實(shí)現(xiàn)了在模型渲染階段,系統(tǒng)其它操作和漫游器漫游不受渲染速度的影響和限制,確保了良好地用戶使用體驗(yàn)。
[0019]4.視錐體裁剪技術(shù)。
[0020]I)計(jì)算當(dāng)前視錐體與場(chǎng)景相交區(qū)域;
將地形檢測(cè)的塊狀物體放到場(chǎng)景里面進(jìn)行設(shè)置,每一個(gè)檢測(cè)塊都對(duì)應(yīng)著一塊分塊號(hào),位置與其對(duì)應(yīng)的地形一致。當(dāng)我們的漫游器視錐體的自身Z軸方向與某個(gè)檢測(cè)塊發(fā)生碰撞之后,及獲得視錐體所需顯示的當(dāng)前區(qū)域模型分塊號(hào)。
[0021]2)遍歷模型分塊索引表獲得當(dāng)前相交區(qū)域塊號(hào);
獲得當(dāng)前視錐體范圍對(duì)應(yīng)塊號(hào)后,遍歷模型分塊索引表,通過(guò)分塊ID查找到對(duì)應(yīng)場(chǎng)景模型分塊包數(shù)據(jù),然后從本地硬盤或網(wǎng)絡(luò)異步加載分塊包中數(shù)據(jù)到內(nèi)存中,將模型分塊索引表中獲得的快號(hào)對(duì)象的高位坐標(biāo)值同場(chǎng)景模型分塊包中數(shù)據(jù)的低位坐標(biāo)值進(jìn)行拼接,得到最終的完整坐標(biāo),然后顯示在場(chǎng)景中。
[0022]3)動(dòng)態(tài)調(diào)度塊號(hào)對(duì)應(yīng)的模型數(shù)據(jù)包,加載進(jìn)當(dāng)前場(chǎng)景;
便將該區(qū)塊的分塊數(shù)據(jù)包載入到內(nèi)存中,異步克隆其主資源中各個(gè)子物體到其相應(yīng)的位置。當(dāng)整個(gè)場(chǎng)景中加載的區(qū)塊數(shù)目超出一個(gè)事先設(shè)定的值時(shí)或系統(tǒng)的內(nèi)存監(jiān)控消耗達(dá)到臨界值時(shí),就會(huì)調(diào)用動(dòng)態(tài)調(diào)度優(yōu)化處理算法,計(jì)算距離漫游器視錐體中心區(qū)域最遠(yuǎn)的地塊區(qū)域,獲取地塊的分塊ID和對(duì)應(yīng)的內(nèi)存中分塊數(shù)據(jù)進(jìn)行釋放,從而降低系統(tǒng)內(nèi)存負(fù)載。
【權(quán)利要求】
1.一種虛擬現(xiàn)實(shí)下的海量模型數(shù)據(jù)動(dòng)態(tài)調(diào)度與實(shí)時(shí)異步加載方法,其特征在于,包括如下步驟: (一)3D模型場(chǎng)景數(shù)據(jù)的預(yù)處理; (二)對(duì)模型場(chǎng)景整體的切割分塊; (三)多線程并行分布加載; (四)視錐體裁剪。
2.根據(jù)權(quán)利要求1所述的虛擬現(xiàn)實(shí)下的海量模型數(shù)據(jù)動(dòng)態(tài)調(diào)度與實(shí)時(shí)異步加載方法,其特征在于:所述預(yù)處理,其步驟為: 1)優(yōu)化VR場(chǎng)景模型的幾何面數(shù) VR場(chǎng)景模型的優(yōu)化是要對(duì)每個(gè)獨(dú)立的模型面數(shù)進(jìn)行精簡(jiǎn),還需要對(duì)模型的個(gè)數(shù)進(jìn)行精簡(jiǎn); 2)優(yōu)化VR場(chǎng)景獨(dú)立模型對(duì)象的數(shù)量 將相同材質(zhì)的物共用好材質(zhì);調(diào)整好各自的貼圖坐標(biāo);然后再將這些相同材質(zhì)的物體進(jìn)行合并以減少模型個(gè)數(shù); 3)優(yōu)化VR場(chǎng)景模型的貼圖量和貼圖細(xì)節(jié); 將單獨(dú)的模型對(duì)象紋理全部烘焙在一張紋理上,重新定位紋理坐標(biāo),貼圖格式轉(zhuǎn)換為dds格式,能夠直接通過(guò)顯卡計(jì)算,加快載入速度。
3.根據(jù)權(quán)利要求1所述的虛擬現(xiàn)實(shí)下的海量模型數(shù)據(jù)動(dòng)態(tài)調(diào)度與實(shí)時(shí)異步加載方法,其特征在于:所述對(duì)模型場(chǎng)景整體的切割分塊, 1)對(duì)海量模型數(shù)據(jù)進(jìn)行分塊; 海量模型數(shù)據(jù)對(duì)應(yīng)較大空間范圍廣度的模型場(chǎng)景內(nèi)容,根據(jù)VR系統(tǒng)的漫游器操作設(shè)定對(duì)三維空間視錐體,視錐體的分析,計(jì)算出平面內(nèi)可見場(chǎng)景空間的范圍值,依照此范圍值確定對(duì)應(yīng)分塊空間的極限值,然后將場(chǎng)景空間的笛卡爾坐標(biāo)系的高位坐標(biāo)截取作為塊號(hào),低位坐標(biāo)極限值為視錐體可見范圍極限值; 2)對(duì)分塊排序并建立索引表; 依照高位坐標(biāo)值生成的塊號(hào)的空間關(guān)系,將整個(gè)場(chǎng)景分塊生成的分塊號(hào)序列進(jìn)行排序,并保存在外部文件中,每條塊號(hào)記錄文件包括:塊號(hào)ID,塊號(hào)名,塊號(hào)坐標(biāo),塊號(hào)備注; 3)將分塊數(shù)據(jù)打包; 將原始場(chǎng)景的模型數(shù)據(jù)分塊切割后,對(duì)每個(gè)分塊后的模型數(shù)據(jù)塊添加塊號(hào)ID,此塊號(hào)ID對(duì)應(yīng)分塊索引表中塊號(hào)記錄文件中的塊號(hào)ID,通過(guò)此ID進(jìn)行關(guān)聯(lián),實(shí)現(xiàn)遍歷索引表找到對(duì)應(yīng)ID的分塊數(shù)據(jù)包功能,然后將分塊數(shù)據(jù)包壓縮打包成二進(jìn)制流文件。
4.根據(jù)權(quán)利要求1所述的虛擬現(xiàn)實(shí)下的海量模型數(shù)據(jù)動(dòng)態(tài)調(diào)度與實(shí)時(shí)異步加載方法,其特征在于:所述多線程并行分布加載,其步驟為: 其步驟為:1)使用預(yù)加載線程載入場(chǎng)景分塊索引表; 在VR系統(tǒng)初始化階段,啟動(dòng)線程載入場(chǎng)景分塊索引表,當(dāng)海量模型數(shù)據(jù)時(shí),索引表體積偏大,使用線程加載能保證在VR系統(tǒng)初始化中其他操作不受影響; 2)使用異步加載線程動(dòng)態(tài)的加載場(chǎng)景分塊; 在場(chǎng)景漫游器初始化完成后,操作漫游器視錐體進(jìn)行場(chǎng)景漫游時(shí),開始計(jì)算當(dāng)前視錐體與場(chǎng)景的交點(diǎn)區(qū)域,確定分塊后,啟動(dòng)異步加載線程動(dòng)態(tài)加載當(dāng)前分塊號(hào)對(duì)應(yīng)的場(chǎng)景分塊模型數(shù)據(jù)包; 3)使用渲染線程渲染模型場(chǎng)景紋理和模型頂點(diǎn)結(jié)構(gòu); 加載完模型數(shù)據(jù)進(jìn)內(nèi)存后,啟動(dòng)渲染線程渲染場(chǎng)景紋理和模型頂點(diǎn)幾何數(shù)據(jù)。
5.根據(jù)權(quán)利要求1所述的虛擬現(xiàn)實(shí)下的海量模型數(shù)據(jù)動(dòng)態(tài)調(diào)度與實(shí)時(shí)異步加載方法,其特征在于:所述視錐體裁剪,其步驟為:1)計(jì)算當(dāng)前視錐體與場(chǎng)景相交區(qū)域; 將地形檢測(cè)的塊狀物體放到場(chǎng)景里面進(jìn)行設(shè)置,每一個(gè)檢測(cè)塊都對(duì)應(yīng)著一塊分塊號(hào),位置與其對(duì)應(yīng)的地形一致;當(dāng)漫游器視錐體的自身Z軸方向與某個(gè)檢測(cè)塊發(fā)生碰撞之后,及獲得視錐體所需顯示的當(dāng)前區(qū)域模型分塊號(hào); 2)遍歷模型分塊索引表獲得當(dāng)前相交區(qū)域塊號(hào); 獲得當(dāng)前視錐體范圍對(duì)應(yīng)塊號(hào)后,遍歷模型分塊索引表,通過(guò)分塊ID查找到對(duì)應(yīng)場(chǎng)景模型分塊包數(shù)據(jù),然后從本地硬盤或網(wǎng)絡(luò)異步加載分塊包中數(shù)據(jù)到內(nèi)存中,將模型分塊索引表中獲得的快號(hào)對(duì)象的高位坐標(biāo)值同場(chǎng)景模型分塊包中數(shù)據(jù)的低位坐標(biāo)值進(jìn)行拼接,得到最終的完整坐標(biāo),然后顯示在場(chǎng)景中; 3)動(dòng)態(tài)調(diào)度塊號(hào)對(duì)應(yīng)的模型數(shù)據(jù)包,加載進(jìn)當(dāng)前場(chǎng)景; 將該區(qū)塊的分塊數(shù)據(jù)包載入到內(nèi)存中,異步克隆其主資源中各個(gè)子物體到其相應(yīng)的位置;當(dāng)整個(gè)場(chǎng)景中加載的區(qū)塊數(shù)目超出一個(gè)事先設(shè)定的值時(shí)或系統(tǒng)的內(nèi)存監(jiān)控消耗達(dá)到臨界值時(shí),就會(huì)調(diào)用動(dòng)態(tài)調(diào)度優(yōu)化處理算法,計(jì)算距離漫游器視錐體中心區(qū)域最遠(yuǎn)的地塊區(qū)域,獲取地塊的分塊ID和對(duì)應(yīng)的內(nèi)存中分塊數(shù)據(jù)進(jìn)行釋放,從而降低系統(tǒng)內(nèi)存負(fù)載。
【文檔編號(hào)】G06T17/00GK103914868SQ201310708102
【公開日】2014年7月9日 申請(qǐng)日期:2013年12月20日 優(yōu)先權(quán)日:2013年12月20日
【發(fā)明者】陳金龍, 伍軼斌, 胡俊鑫, 覃祖茂, 謝燕武, 伍正中, 張利學(xué), 李勇, 吳旻馨, 馬永麗 申請(qǐng)人:柳州騰龍煤電科技股份有限公司