本發(fā)明屬于三維虛擬現(xiàn)實(shí)調(diào)度領(lǐng)域,尤其涉及一種三維模型綜合動(dòng)態(tài)調(diào)度方法。
背景技術(shù):
傳統(tǒng)二維地圖的投影方式?jīng)Q定了必須用抽象的符號(hào)進(jìn)行表達(dá),不能給人直觀的感受,尤其是在地面特征復(fù)雜的時(shí)候,二維地圖很難準(zhǔn)確反映。在信息時(shí)代的新趨勢(shì)下,智能手機(jī)和開(kāi)源平臺(tái)不斷普及,雖然嵌入式設(shè)備與電腦的硬件條件有很大差距,但移動(dòng)設(shè)備具有便攜、可移動(dòng)的先天優(yōu)勢(shì)。隨著大數(shù)據(jù)實(shí)時(shí)渲染和實(shí)時(shí)調(diào)度技術(shù)的發(fā)展,再加上移動(dòng)設(shè)備硬件的不斷提升,在嵌入式設(shè)備上顯示三維場(chǎng)景逐漸成為可能。但受到移動(dòng)端硬件局限性和三維場(chǎng)景復(fù)雜性的雙重影響,真三維場(chǎng)景在移動(dòng)端的流暢運(yùn)行仍然存在很大的問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)上述現(xiàn)有技術(shù)的不足,本發(fā)明提供了一種三維模型綜合動(dòng)態(tài)調(diào)度方法,目的即解決移動(dòng)終端三維場(chǎng)景運(yùn)行不流暢問(wèn)題。
為解決上述技術(shù)問(wèn)題,本發(fā)明提供了如下技術(shù)方案:
一種三維模型綜合動(dòng)態(tài)調(diào)度方法,其特征在于,包括如下步驟:
(1)三維模型幾何特征精簡(jiǎn);
(2)三維模型材質(zhì)簡(jiǎn)化;
(3)三維模型的渲染優(yōu)化;
(4)確定可視區(qū),對(duì)三維模型進(jìn)行初步消隱;
(5)利用三維場(chǎng)景中物體之間的遮擋進(jìn)行消隱;
(6)LOD消隱;
(7)基于三維場(chǎng)景中物體的中心坐標(biāo)對(duì)物體進(jìn)行動(dòng)態(tài)調(diào)度。
作為上述技術(shù)方案的優(yōu)選,所述步驟(1)中三維模型幾何特征精簡(jiǎn)包括減少三角面片、減少UV貼圖縫隙和翻轉(zhuǎn)頂點(diǎn)、使用批處理。
作為上述技術(shù)方案的優(yōu)選,所述步驟(2)中三維模型材質(zhì)簡(jiǎn)化包括減少材質(zhì)數(shù)量、壓縮貼圖且減少貼圖數(shù)量、減少實(shí)時(shí)陰影。
作為上述技術(shù)方案的優(yōu)選,所述步驟(3)中三維模型的渲染優(yōu)化包括簡(jiǎn)化著色器、減少 實(shí)時(shí)光照、優(yōu)化渲染路徑。
作為上述技術(shù)方案的優(yōu)選,所述步驟(4)中通過(guò)攝像機(jī)視口的遠(yuǎn)剪裁面或近剪裁面來(lái)確定可視區(qū),只有位于攝像機(jī)視口、遠(yuǎn)剪裁面、近剪裁面所組成的空間內(nèi)的物體才加載,從而實(shí)現(xiàn)消隱視口之外物體,降低資源消耗。
作為上述技術(shù)方案的優(yōu)選,所述步驟(5)是對(duì)步驟(4)的進(jìn)一步優(yōu)化,由攝像機(jī)發(fā)出一定數(shù)量的射線,這些射線都存在于視錐體內(nèi),通過(guò)只渲染每條射線上最前端的點(diǎn)來(lái)降低GPU的消耗。
作為上述技術(shù)方案的優(yōu)選,所述步驟(6)是對(duì)步驟(4)和(5)的進(jìn)一步優(yōu)化,根據(jù)需要將移動(dòng)平臺(tái)上的場(chǎng)景模型劃分為幾個(gè)等級(jí),遠(yuǎn)處的物體只使用低級(jí)模型,這樣可以大大降低GPU的消耗。
作為上述技術(shù)方案的優(yōu)選,所述步驟(7)將三維模型分為三類(lèi),將模型包在內(nèi)存中的狀態(tài)分為四種,將形成的三維空間劃分為六個(gè)不同區(qū)域,對(duì)視錐體進(jìn)行了距離加權(quán)的擴(kuò)展,實(shí)現(xiàn)了三維模型的預(yù)調(diào)度,對(duì)處在不同區(qū)域的不同模型進(jìn)行不同程度的加載,實(shí)現(xiàn)了三維場(chǎng)景中物體的綜合動(dòng)態(tài)調(diào)度。
本發(fā)明的有益效果是:本發(fā)明可以實(shí)現(xiàn)三維模型更有效的實(shí)時(shí)渲染和消隱,突破了移動(dòng)設(shè)備硬件條件的束縛,從而為虛擬三維場(chǎng)景在移動(dòng)終端上的流暢運(yùn)行提供了技術(shù)基礎(chǔ),實(shí)現(xiàn)移動(dòng)端上真三維場(chǎng)景的流暢運(yùn)行。
附圖說(shuō)明
圖1為本發(fā)明的處理流程圖。
圖2為本發(fā)明視錐體示意圖。
圖3為本發(fā)明綜合動(dòng)態(tài)調(diào)度方法示意圖。
具體實(shí)施方式
下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明作進(jìn)一步詳細(xì)描述。
以南京大學(xué)鼓樓校區(qū)三維數(shù)字校園為例,利用本發(fā)明實(shí)現(xiàn)南京大學(xué)鼓樓校區(qū)三維數(shù)字校園的掌上流暢運(yùn)行,工作過(guò)程描述如下:
(1)三維校園場(chǎng)景的構(gòu)建。南京大學(xué)鼓樓校區(qū)占地面積約800畝,如果不采用本發(fā)明提出的三維模型幾何特征精簡(jiǎn)、紋理和貼圖使用、渲染的基本策略,數(shù)據(jù)量共為2.3G,完整版的鼓樓校區(qū)三維校園需要在性能較好的PC端才能流暢運(yùn)行,直接移植到平板或者手機(jī),會(huì)造成系統(tǒng)崩潰。采用本發(fā)明提出的三維校園場(chǎng)景構(gòu)建基本策略后數(shù)據(jù)量降低到了239.2M。
(2)移動(dòng)三維校園場(chǎng)景的實(shí)時(shí)消隱。具體是結(jié)合視錐體消隱、遮擋消隱和LOD消隱來(lái)實(shí)現(xiàn)場(chǎng)景的實(shí)時(shí)渲染,大大提高了程序的性能。下面對(duì)該方法進(jìn)行描述:
如圖1~2所示,首先,描述視錐體消隱。在三維場(chǎng)景中漫游,只能看到攝像機(jī)視口內(nèi)的物體,而其他的物體是不可見(jiàn)的,因此,通過(guò)攝像機(jī)視口的遠(yuǎn)剪裁面或近剪裁面來(lái)確定可視區(qū),只有位于攝像機(jī)視口、遠(yuǎn)剪裁面、近剪裁面所組成的空間內(nèi)的物體才加載,從而實(shí)現(xiàn)消隱視口之外物體,降低資源消耗。
可視區(qū)域確定的計(jì)算過(guò)程如下:
從攝像機(jī)到每一個(gè)視錐體截面都有一定的距離,每個(gè)錐體截面有一定的大小。有時(shí)根據(jù)給定的距離,計(jì)算矩形的大小,或根據(jù)給定矩形的大小來(lái)計(jì)算距離。例如,如果一個(gè)物體想要始終保持在移動(dòng)的攝像機(jī)鏡頭內(nèi),那么它必須不能太靠近規(guī)定的遠(yuǎn)剪裁面或近剪裁面,否則該對(duì)象的部分會(huì)被截?cái)唷?/p>
有了這些參數(shù),就可以確定可視區(qū)域。將三維場(chǎng)景中的物體通過(guò)坐標(biāo)計(jì)算和轉(zhuǎn)換,得到與視錐體的空間關(guān)系,結(jié)合直線裁剪算法原理,判斷物體是否在視口內(nèi),并進(jìn)行剪裁,從而達(dá)到消隱視口外物體的目的。
其次,描述遮擋消隱。在三維場(chǎng)景中漫游,攝像機(jī)視口內(nèi)的物體也不是都能看到的,由攝像機(jī)發(fā)出一定數(shù)量的射線,這些射線都存在于視錐體內(nèi),射線觸碰到的場(chǎng)景中的第一個(gè)點(diǎn)需要顯示,而這條射線上后面的點(diǎn)都會(huì)被這個(gè)點(diǎn)遮擋住,因此通過(guò)只渲染每條射線上最前端的點(diǎn)來(lái)降低GPU的消耗。
遮擋消隱的運(yùn)行將通過(guò)在場(chǎng)景中使用一個(gè)虛擬的攝像機(jī)來(lái)創(chuàng)建一個(gè)物體潛在可視狀態(tài)的層級(jí)。這些數(shù)據(jù)可以實(shí)時(shí)地讓每個(gè)攝像機(jī)來(lái)確定什么能看見(jiàn)什么看不見(jiàn)。通過(guò)這些數(shù)據(jù),將確定可以看見(jiàn)的物體送去渲染,這將降低繪制調(diào)用的數(shù)量并增加運(yùn)行效率。
由于計(jì)算屏幕上每一個(gè)點(diǎn)到攝像機(jī)中心的運(yùn)算量非常大,為了達(dá)到類(lèi)似的效果并節(jié)省資源,采用場(chǎng)景分塊技術(shù)來(lái)近似實(shí)現(xiàn)這一功能。使用單元格將整個(gè)場(chǎng)景劃分,單元格來(lái)自于一個(gè)二叉樹(shù),遮擋消隱使用兩棵樹(shù),一個(gè)用于靜態(tài)物體,另一個(gè)用于移動(dòng)物體。可視單元格將映射到一個(gè)定義靜態(tài)可視物體的索引列表,包含了消隱后的靜態(tài)物體。通常使用潛在可視集合來(lái)存儲(chǔ)和確定哪些單元格是可見(jiàn)的。
最后,描述LOD消隱。在三維場(chǎng)景中漫游,當(dāng)遠(yuǎn)處的物體比較高,遮擋剔除會(huì)不起作用。但遠(yuǎn)處物體的模型不需要太精細(xì),因此,根據(jù)需要將移動(dòng)平臺(tái)上的場(chǎng)景模型劃分為四個(gè)等級(jí),遠(yuǎn)處的物體只使用低級(jí)模型,則可以大大降低GPU的消耗,是把三維場(chǎng)景移植到移動(dòng)設(shè)備上的關(guān)鍵因素之一。
(3)基于中心坐標(biāo)的動(dòng)態(tài)調(diào)度技術(shù)。通過(guò)對(duì)場(chǎng)景的優(yōu)化與實(shí)時(shí)消隱,程序的性能已經(jīng)有 了大幅的提升,但是仍然有一個(gè)關(guān)鍵問(wèn)題需要解決。由于場(chǎng)景中所有的物體都是在程序運(yùn)行前,也就是初始化階段,統(tǒng)一加載到內(nèi)存里,當(dāng)場(chǎng)景內(nèi)物體相對(duì)較少時(shí),移動(dòng)設(shè)備上勉強(qiáng)可以運(yùn)行。當(dāng)需要運(yùn)行三維大場(chǎng)景的時(shí)候,把所有模型都加載進(jìn)內(nèi)存,并且始終不釋放,不僅在啟動(dòng)程序時(shí)會(huì)變得非常緩慢,而且在硬件資源有限的情況下,經(jīng)常會(huì)出現(xiàn)死機(jī)或者黑屏的現(xiàn)象,這就需要一種動(dòng)態(tài)調(diào)度技術(shù)來(lái)解決。移動(dòng)設(shè)備資源越是有限,就越是需要強(qiáng)大的算法來(lái)支撐,傳統(tǒng)調(diào)度的方法多是以視點(diǎn)為緩沖區(qū),計(jì)算需要調(diào)度的物體,或者將場(chǎng)景劃分,然后用各個(gè)分塊間的鄰近關(guān)系來(lái)調(diào)度可能出現(xiàn)的物體。本發(fā)明提出了一種更加精確的調(diào)度技術(shù)和算法,通過(guò)模型體的中心坐標(biāo)進(jìn)行動(dòng)態(tài)調(diào)動(dòng),在實(shí)時(shí)消隱的基礎(chǔ)上實(shí)現(xiàn)了內(nèi)存的優(yōu)化,最終突破了大數(shù)據(jù)三維場(chǎng)景在移動(dòng)端運(yùn)行的瓶頸。
如圖3所示,基于中心坐標(biāo)的動(dòng)態(tài)調(diào)度技術(shù)的實(shí)現(xiàn)過(guò)程如下:
第一,將模型包在內(nèi)存中的狀態(tài)分為四種:未加載、加載為內(nèi)存鏡像(I階)、釋放資源(II階)、實(shí)例化(III階)。未加載指模型包沒(méi)有被調(diào)度;加載為內(nèi)存鏡像指模型包被載入內(nèi)存但沒(méi)有釋放資源;釋放資源指模型包被打開(kāi)但場(chǎng)景中不會(huì)出現(xiàn)物體;實(shí)例化指將模型加載到場(chǎng)景中模型可見(jiàn)。
第二,將模型分為三類(lèi):高級(jí)模型、低級(jí)模型和通用模型。高級(jí)模型指精細(xì)度較高的模型,主要用于滿足近景觀看;低級(jí)模型指精細(xì)度很低的模型,主要是滿足遠(yuǎn)景端物體的顯示;通用模型介于低級(jí)模型和高級(jí)模型之間,這種模型可以單獨(dú)存在,既可當(dāng)做高級(jí)模型使用,又可當(dāng)做低級(jí)模型使用,主要用于解決模型實(shí)例化過(guò)程中的不連續(xù)。同時(shí),各種模型又可以作為L(zhǎng)OD中的不同的模型級(jí)別,如高級(jí)模型對(duì)應(yīng)LOD-A,通用模型對(duì)應(yīng)LOD-B,低級(jí)模型對(duì)應(yīng)LOD-C。
第三,將三維空間劃分為六個(gè)不同區(qū)域:視錐內(nèi)高級(jí)區(qū)(V-I)、視錐內(nèi)中級(jí)區(qū)(V-II)、視錐內(nèi)低級(jí)區(qū)(V-III)、視錐外高級(jí)區(qū)(N-I)、視錐外中級(jí)區(qū)(N-II)、視錐外低級(jí)區(qū)(N-III)。V-I區(qū)域?yàn)楦呒?jí)模型可視區(qū)和模型III階加載區(qū);V-II區(qū)域?yàn)榈图?jí)模型可視區(qū)和高級(jí)模型II階加載區(qū);V-III區(qū)域?yàn)榧舨脜^(qū),但作為高級(jí)模型I階加載區(qū)和低級(jí)模型II階加載區(qū);N-I區(qū)域?yàn)镮II階卸載區(qū),任何模型落入這個(gè)區(qū)域,程序都將銷(xiāo)毀模型的實(shí)例;N-II區(qū)域?yàn)镮I階卸載區(qū),任何模型落入這個(gè)區(qū)域,程序都會(huì)將模型的資源鏡像銷(xiāo)毀;N-III為I階卸載區(qū),任何模型落入這個(gè)區(qū)域,程序都會(huì)銷(xiāo)毀該模型包的內(nèi)存鏡像。
第四,距離加權(quán)的視錐體預(yù)調(diào)度,用距離加權(quán)的方法(公式1,公式2)進(jìn)行緩沖區(qū)的分配,A、B、C、D為調(diào)節(jié)參數(shù),z為物體在三維空間水平面的縱坐標(biāo),F(xiàn)為攝像機(jī)的遠(yuǎn)剪裁面,Xr為右視邊界,Xl為左視邊界,Yt為上視邊界,Yb為下視邊界,可以根據(jù)需要調(diào)節(jié)成各種緩沖預(yù)調(diào)度區(qū)域。
公式1:
公式2:
第五,三階多級(jí)模型調(diào)度,在模型轉(zhuǎn)換中采用一種新的觸發(fā)方法,高級(jí)模型(A級(jí))分為許多子物體分別調(diào)度,低級(jí)模型(B、C級(jí))作為一個(gè)整體進(jìn)行調(diào)度。當(dāng)物體由V-I區(qū)移入V-II區(qū)域的過(guò)程中,判斷高級(jí)模型上是否有子物體越過(guò)界限,如果有則立刻加載低級(jí)模型,當(dāng)高級(jí)模型上的子物體全部進(jìn)入V-II區(qū)域時(shí)才把高級(jí)模型消隱;反之,當(dāng)物體由V-II區(qū)移入V-I區(qū)域的過(guò)程中,立刻加載高級(jí)模型的子物體,當(dāng)高級(jí)模型上的子物體全部進(jìn)入V-I區(qū)域后才把低級(jí)模型消隱。模型在分區(qū)之間的轉(zhuǎn)換都以轉(zhuǎn)換后的區(qū)域特征為依據(jù)進(jìn)行調(diào)度。
可以理解的是,雖然本發(fā)明已以較佳實(shí)施例披露如上,然而上述實(shí)施例并非用以限定本發(fā)明。對(duì)于任何熟悉本領(lǐng)域的技術(shù)人員而言,在不脫離本發(fā)明技術(shù)方案范圍情況下,都可利用上述揭示的技術(shù)內(nèi)容對(duì)本發(fā)明技術(shù)方案作出許多可能的變動(dòng)和修飾,或修改為等同變化的等效實(shí)施例。因此,凡是未脫離本發(fā)明技術(shù)方案的內(nèi)容,依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對(duì)以上實(shí)施例所做的任何簡(jiǎn)單修改、等同變化及修飾,均仍屬于本發(fā)明技術(shù)方案保護(hù)的范圍內(nèi)。