本發(fā)明涉及計(jì)算機(jī)圖形學(xué),尤其涉及一種有向距離場(chǎng)的存儲(chǔ)方法、系統(tǒng)、設(shè)備及介質(zhì)。
背景技術(shù):
1、在計(jì)算機(jī)圖形學(xué)技術(shù)領(lǐng)域中,sdf(signed?distance?field,有向距離場(chǎng))是一種常用來表示隱式的曲面的函數(shù),其存儲(chǔ)了空間中每個(gè)點(diǎn)到最近表面的距離。sdf廣泛應(yīng)用于實(shí)時(shí)渲染、幾何處理和物理模擬等領(lǐng)域。傳統(tǒng)的sdf存儲(chǔ)方法通常使用三維紋理,將所有點(diǎn)的距離值保存在三維紋理的每個(gè)體素中。然而上述存儲(chǔ)方式十分占用空間,導(dǎo)致sdf的應(yīng)用受到限制。
2、因此,亟需提出一種有向距離場(chǎng)的存儲(chǔ)方法來解決上述缺陷。
技術(shù)實(shí)現(xiàn)思路
1、有鑒于此,本發(fā)明提出了一種有向距離場(chǎng)的存儲(chǔ)方法、系統(tǒng)、設(shè)備及介質(zhì),解決了sdf距離場(chǎng)存儲(chǔ)過程中存儲(chǔ)體積過大問題,極大減少了內(nèi)存上的消耗,提高了sdf的查詢效率。
2、基于上述目的,本發(fā)明實(shí)施例的一方面提供了一種有向距離場(chǎng)的存儲(chǔ)方法,具體包括如下步驟:
3、將模型的包圍盒切分為若干體素,根據(jù)所述模型中各目標(biāo)三角形面片的重心坐標(biāo),確定各所述目標(biāo)三角形面片分別對(duì)應(yīng)的所述體素并獲取兩者間的最短有向距離作為所述體素對(duì)應(yīng)的最短有向距離;
4、將所述模型的包圍盒分別按照x軸、y軸和z軸分割為若干體素網(wǎng)絡(luò),并以各所述體素網(wǎng)絡(luò)的頂點(diǎn)坐標(biāo)作為節(jié)點(diǎn)構(gòu)建kd樹,其中所述體素網(wǎng)絡(luò)中包括若干所述體素;
5、判斷各所述體素網(wǎng)絡(luò)中包括的所有所述體素的所述最短有向距離是否滿足預(yù)設(shè)條件;
6、響應(yīng)于未滿足預(yù)設(shè)條件,存儲(chǔ)所述體素網(wǎng)絡(luò)內(nèi)包括的所有所述體素及其所述最短有向距離,并將對(duì)應(yīng)的存儲(chǔ)地址指針存儲(chǔ)至所述kd樹中對(duì)應(yīng)所述體素網(wǎng)絡(luò)的節(jié)點(diǎn)中。
7、在一些實(shí)施方式中,所述的有向距離場(chǎng)的存儲(chǔ)方法還包括:
8、響應(yīng)于滿足預(yù)設(shè)條件,計(jì)算所述體素網(wǎng)絡(luò)內(nèi)包括的所有所述體素對(duì)應(yīng)的最短有向距離的均值,并將所述均值存儲(chǔ)至所述kd樹中對(duì)應(yīng)所述體素網(wǎng)絡(luò)的節(jié)點(diǎn)中。
9、在一些實(shí)施方式中,所述判斷各所述體素網(wǎng)絡(luò)中包括的所有所述體素的所述最短有向距離是否滿足預(yù)設(shè)條件的步驟,包括:
10、判斷所述體素網(wǎng)絡(luò)中包括的所有所述體素的所述最短有向距離對(duì)應(yīng)的符號(hào)是否相同,且所有所述最短有向距離間的方差是否小于預(yù)設(shè)差值;
11、若所述體素網(wǎng)絡(luò)中包括的所有所述體素的所述最短有向距離對(duì)應(yīng)的符號(hào)相同,且所有所述最短有向距離間的方差小于預(yù)設(shè)差值,判斷為滿足預(yù)設(shè)條件;
12、若所述體素網(wǎng)絡(luò)中包括的所有所述體素的所述最短有向距離中存在至少一個(gè)所述最短有向距離對(duì)應(yīng)的符號(hào)不相同,或所有所述最短有向距離間的方差大于預(yù)設(shè)差值,判斷為不滿足預(yù)設(shè)條件。
13、在一些實(shí)施方式中,所述的有向距離場(chǎng)的存儲(chǔ)方法還包括:
14、響應(yīng)于查詢操作被觸發(fā),獲取查詢點(diǎn)的坐標(biāo),在所述kd樹中查找頂點(diǎn)坐標(biāo)與所述查詢點(diǎn)的坐標(biāo)相近的目標(biāo)節(jié)點(diǎn);
15、根據(jù)所述目標(biāo)節(jié)點(diǎn)內(nèi)的存儲(chǔ)信息,確定所述查詢點(diǎn)對(duì)應(yīng)的目標(biāo)最短有向距離。
16、在一些實(shí)施方式中,所述根據(jù)所述目標(biāo)節(jié)點(diǎn)內(nèi)的存儲(chǔ)信息,確定所述查詢點(diǎn)對(duì)應(yīng)的目標(biāo)最短有向距離的步驟,包括:
17、響應(yīng)于所述存儲(chǔ)信息為所述最短有向距離的均值,將所述均值作為目標(biāo)最短有向距離;
18、響應(yīng)于所述存儲(chǔ)信息為所述存儲(chǔ)地址指針,根據(jù)所述存儲(chǔ)地址指針獲取與所述查詢點(diǎn)匹配的所述體素,將匹配的所述體素的最短有向距離作為目標(biāo)最短有向距離。
19、在一些實(shí)施方式中,所述確定各所述目標(biāo)三角形面片分別對(duì)應(yīng)的所述體素并獲取兩者間的最短有向距離作為所述體素對(duì)應(yīng)的最短有向距離的步驟,包括:
20、針對(duì)每個(gè)所述體素,從所述體素的目標(biāo)點(diǎn)向多個(gè)方向發(fā)出射線,并判斷是否存在所述射線與所述體素對(duì)應(yīng)的所述三角形面片相交;
21、若存在所述射線與所述體素對(duì)應(yīng)的所述三角形面片相交,獲取所有所述射線與對(duì)應(yīng)的所述三角形面片的交點(diǎn)與所述目標(biāo)點(diǎn)的距離,并將其中的最短距離作為所述體素對(duì)應(yīng)的所述最短有向距離;
22、其中,所述目標(biāo)點(diǎn)包括所述體素的中心點(diǎn)或起始點(diǎn)。
23、在一些實(shí)施方式中,所述的有向距離場(chǎng)的存儲(chǔ)方法還包括:
24、遍歷所述模型中所有三角形面片,針對(duì)每個(gè)所述三角形面片計(jì)算其面積,并判斷所述面積是否大于預(yù)設(shè)面積;
25、響應(yīng)于所述面積大于預(yù)設(shè)面積,將所述三角形面片作為所述目標(biāo)三角形面片并存入過濾列表。
26、本發(fā)明實(shí)施例的另一方面,還提供了一種有向距離場(chǎng)的存儲(chǔ)系統(tǒng),有向距離場(chǎng)的存儲(chǔ)系統(tǒng)包括:
27、體素化單元,用于將模型的包圍盒切分為若干體素,根據(jù)所述模型中各目標(biāo)三角形面片的重心坐標(biāo),確定各所述目標(biāo)三角形面片分別對(duì)應(yīng)的所述體素并獲取兩者間的最短有向距離作為所述體素對(duì)應(yīng)的最短有向距離;
28、構(gòu)建單元,用于將所述模型的包圍盒分別按照x軸、y軸和z軸分割為若干體素網(wǎng)絡(luò),并以各所述體素網(wǎng)絡(luò)的頂點(diǎn)坐標(biāo)作為節(jié)點(diǎn)構(gòu)建kd樹,其中所述體素網(wǎng)絡(luò)中包括若干所述體素;
29、判斷單元,用于判斷各所述體素網(wǎng)絡(luò)中包括的所有所述體素的所述最短有向距離是否滿足預(yù)設(shè)條件;
30、存儲(chǔ)單元,用于響應(yīng)于未滿足預(yù)設(shè)條件,存儲(chǔ)所述體素網(wǎng)絡(luò)內(nèi)包括的所有所述體素及其所述最短有向距離,并將對(duì)應(yīng)的存儲(chǔ)地址指針存儲(chǔ)至所述kd樹中對(duì)應(yīng)所述體素網(wǎng)絡(luò)的節(jié)點(diǎn)中。
31、本發(fā)明實(shí)施例的又一方面,還提供了一種計(jì)算機(jī)設(shè)備,包括:至少一個(gè)處理器;以及存儲(chǔ)器,所述存儲(chǔ)器存儲(chǔ)有可在所述處理器上運(yùn)行的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序由所述處理器執(zhí)行時(shí)實(shí)現(xiàn)如上方法的步驟。
32、本發(fā)明實(shí)施例的再一方面,還提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上方法步驟的計(jì)算機(jī)程序。
33、本發(fā)明至少具有以下有益技術(shù)效果:本發(fā)明的有向距離場(chǎng)的存儲(chǔ)方法,通過計(jì)算每個(gè)體素對(duì)應(yīng)的距離值來確定sdf值變化劇烈的體素網(wǎng)絡(luò),以體素網(wǎng)絡(luò)的頂點(diǎn)構(gòu)建kd樹以對(duì)模型空間進(jìn)行劃分,將變化劇烈的sdf值存儲(chǔ)在kd樹對(duì)應(yīng)節(jié)點(diǎn)上,對(duì)于sdf值變化較小或不變化的體素網(wǎng)絡(luò),將該體素網(wǎng)絡(luò)內(nèi)sdf值的均值存儲(chǔ)在kd樹對(duì)應(yīng)節(jié)點(diǎn)上,避免了大量體素網(wǎng)絡(luò)的冗余存儲(chǔ),尤其是對(duì)于稀疏分布的三維模型,存儲(chǔ)空間的節(jié)約效果更為顯著,利用kd樹的快速搜索特性,可以迅速找到查詢點(diǎn)附近的表面并獲得最短有向距離,相比于傳統(tǒng)方法中逐個(gè)體素的掃描方式,查詢效率得到顯著提升。
1.一種有向距離場(chǎng)的存儲(chǔ)方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的有向距離場(chǎng)的存儲(chǔ)方法,其特征在于,還包括:
3.根據(jù)權(quán)利要求1所述的有向距離場(chǎng)的存儲(chǔ)方法,其特征在于,所述判斷各所述體素網(wǎng)絡(luò)中包括的所有所述體素的所述最短有向距離是否滿足預(yù)設(shè)條件的步驟,包括:
4.根據(jù)權(quán)利要求1所述的有向距離場(chǎng)的存儲(chǔ)方法,其特征在于,還包括:
5.根據(jù)權(quán)利要求4所述的有向距離場(chǎng)的存儲(chǔ)方法,其特征在于,所述根據(jù)所述目標(biāo)節(jié)點(diǎn)內(nèi)的存儲(chǔ)信息,確定所述查詢點(diǎn)對(duì)應(yīng)的目標(biāo)最短有向距離的步驟,包括:
6.根據(jù)權(quán)利要求1所述的有向距離場(chǎng)的存儲(chǔ)方法,其特征在于,所述確定各所述目標(biāo)三角形面片分別對(duì)應(yīng)的所述體素并獲取兩者間的最短有向距離作為所述體素對(duì)應(yīng)的最短有向距離的步驟,包括:
7.根據(jù)權(quán)利要求1所述的有向距離場(chǎng)的存儲(chǔ)方法,其特征在于,還包括:
8.一種有向距離場(chǎng)的存儲(chǔ)系統(tǒng),其特征在于,包括:
9.一種計(jì)算機(jī)設(shè)備,包括:
10.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)程序,其特征在于,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)執(zhí)行如權(quán)利要求1至7任意一項(xiàng)所述的方法的步驟。