本申請(qǐng)涉及三維地圖領(lǐng)域,特別涉及一種三維地圖數(shù)據(jù)的更新方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)。
背景技術(shù):
1、由于三維的開放世界的地圖往往很大,游戲開發(fā)者往往會(huì)為玩家提供用于規(guī)劃起點(diǎn)至終點(diǎn)之間的三維路徑的尋路功能,比如為飛行器規(guī)劃飛行路線。此外,目前玩家能夠通過和地圖的交互在三維的開放世界中添加動(dòng)態(tài)障礙物。動(dòng)態(tài)障礙物是指不固定存在于地圖中,而是臨時(shí)添加的能夠阻擋虛擬角色或載具前進(jìn)的障礙物。例如玩家控制虛擬角色釋放了一個(gè)土墻技能,將在地圖中添加了一堵土墻,這個(gè)土墻能夠阻擋虛擬角色直接穿過土墻對(duì)應(yīng)的位置,這個(gè)土墻會(huì)在地圖中存在一定時(shí)間后消失。
2、由于玩家能夠在三維的開放世界中添加動(dòng)態(tài)障礙物,這對(duì)三維路徑的尋路功能帶來了考驗(yàn)。由于動(dòng)態(tài)障礙物的臨時(shí)性以及動(dòng)態(tài)障礙物增刪的不可控性,如何更新地圖數(shù)據(jù)是目前面臨的一大考驗(yàn)。相關(guān)技術(shù)中,使用稀疏八叉樹來存儲(chǔ)三維地圖數(shù)據(jù),通過定時(shí)更新的方式更新稀疏八叉樹。定時(shí)更新的方式是指,定時(shí)獲取玩家臨時(shí)添加的障礙物信息,對(duì)稀疏八叉樹進(jìn)行更新。
3、上述方法只能以調(diào)低定時(shí)更新的時(shí)間間隔來達(dá)到近似實(shí)時(shí)更新地圖數(shù)據(jù)的效果,然而在定時(shí)更新的時(shí)間間隔較小的情況下,容易導(dǎo)致開銷過大的問題。因此,如何設(shè)計(jì)地圖數(shù)據(jù)的更新方法以達(dá)到實(shí)時(shí)更新的效果,是目前亟需解決的問題。
技術(shù)實(shí)現(xiàn)思路
1、本申請(qǐng)?zhí)峁┝艘环N三維地圖數(shù)據(jù)的更新方法、裝置、設(shè)備及存儲(chǔ)介質(zhì),所述技術(shù)方案如下:
2、根據(jù)本申請(qǐng)的一方面,提供了一種三維地圖數(shù)據(jù)的更新方法,所述方法由服務(wù)器執(zhí)行,所述方法包括:
3、獲取用于保存所述三維地圖數(shù)據(jù)的稀疏八叉樹,所述三維地圖數(shù)據(jù)用于指示三維空間的連通性信息;
4、響應(yīng)于接收到客戶端的障礙物更新請(qǐng)求,獲取待更新的障礙物信息,所述障礙物信息用于指示所述三維空間中阻擋虛擬角色前進(jìn)的障礙物;
5、基于所述障礙物信息,更新基于所述稀疏八叉樹保存的所述三維地圖數(shù)據(jù)。
6、根據(jù)本申請(qǐng)的一方面,提供了一種三維地圖數(shù)據(jù)的更新裝置,所述裝置包括:
7、第一獲取模塊,用于獲取用于保存所述三維地圖數(shù)據(jù)的稀疏八叉樹,所述三維地圖數(shù)據(jù)用于指示三維空間的連通性信息;
8、第二獲取模塊,用于響應(yīng)于接收到客戶端的障礙物更新請(qǐng)求,獲取待更新的障礙物信息,所述障礙物信息用于指示所述三維空間中阻擋虛擬角色前進(jìn)的障礙物;
9、更新模塊,用于基于所述障礙物信息,更新基于所述稀疏八叉樹保存的所述三維地圖數(shù)據(jù)。
10、根據(jù)本申請(qǐng)的一方面,提供了一種計(jì)算機(jī)設(shè)備,所述計(jì)算機(jī)設(shè)備包括:處理器和存儲(chǔ)器,所述存儲(chǔ)器中存儲(chǔ)有至少一段程序;所述處理器,用于執(zhí)行所述存儲(chǔ)器中的所述至少一段程序以實(shí)現(xiàn)上述三維地圖數(shù)據(jù)的更新方法。
11、根據(jù)本申請(qǐng)的一方面,提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中存儲(chǔ)有可執(zhí)行指令,所述可執(zhí)行指令由處理器加載并執(zhí)行以實(shí)現(xiàn)上述三維地圖數(shù)據(jù)的更新方法。
12、根據(jù)本申請(qǐng)的一方面,提供了一種計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)指令,所述計(jì)算機(jī)指令存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,處理器從所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)讀取并執(zhí)行所述計(jì)算機(jī)指令,以實(shí)現(xiàn)上述三維地圖數(shù)據(jù)的更新方法。
13、本申請(qǐng)?zhí)峁┑募夹g(shù)方案帶來的有益效果至少包括:
14、上述方案每當(dāng)接收到障礙物的更新請(qǐng)求時(shí)就對(duì)障礙物所處的三維空間對(duì)應(yīng)的三維地圖數(shù)據(jù)進(jìn)行更新,能夠?qū)崿F(xiàn)對(duì)三維地圖數(shù)據(jù)的實(shí)時(shí)更新。在用戶通過對(duì)地圖的交互在三維空間中添加動(dòng)態(tài)障礙物后,能夠快速地更新對(duì)應(yīng)的三維地圖數(shù)據(jù),并將更新的三維地圖數(shù)據(jù)用于尋路、碰撞檢測(cè)等判定中,能夠及時(shí)同步不同用戶的交互操作的操作結(jié)果,使尋路和碰撞檢測(cè)等判定更加準(zhǔn)確,尤其是針對(duì)一些對(duì)抗性較強(qiáng)的游戲程序,快速獲取到更新后的三維地圖數(shù)據(jù),能夠減小碰撞誤判的可能性。
1.一種三維地圖數(shù)據(jù)的更新方法,其特征在于,所述方法由服務(wù)器執(zhí)行,所述方法包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述三維地圖數(shù)據(jù)保存在所述稀疏八叉樹的節(jié)點(diǎn)中;所述稀疏八叉樹有n個(gè)層級(jí),n為正整數(shù);所述層級(jí)為所述稀疏八叉樹中的根節(jié)點(diǎn)到所述稀疏八叉樹最底層的葉子節(jié)點(diǎn)之間的層級(jí),所述根節(jié)點(diǎn)的層級(jí)最大,所述葉子節(jié)點(diǎn)的層級(jí)最??;所述稀疏八叉樹中同一層級(jí)的節(jié)點(diǎn)保存在同一數(shù)組中;
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述第i-1層對(duì)應(yīng)的數(shù)組中節(jié)點(diǎn)的存儲(chǔ)順序與所述第i層對(duì)應(yīng)的數(shù)組中的節(jié)點(diǎn)的存儲(chǔ)順序不相關(guān);
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法還包括:
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述方法還包括:
6.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述基于所述障礙物信息,為所述稀疏八叉樹中第i層的目標(biāo)節(jié)點(diǎn)添加子節(jié)點(diǎn),包括:
7.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述基于所述障礙物信息,修改所述稀疏八叉樹中第i層的目標(biāo)節(jié)點(diǎn)的阻擋信息,包括如下至少之一:
8.根據(jù)權(quán)利要求2至7任一所述的方法,其特征在于,所述阻擋信息包括全阻擋和無阻擋;所述全阻擋用于指示所述節(jié)點(diǎn)與所述障礙物相交,會(huì)阻擋所述虛擬角色前進(jìn);所述無阻擋用于指示所述節(jié)點(diǎn)與所述障礙物不相交,不會(huì)阻擋所述虛擬角色前進(jìn);
9.根據(jù)權(quán)利要求1至7任一所述的方法,其特征在于,所述稀疏八叉樹包括靜態(tài)根節(jié)點(diǎn)和動(dòng)態(tài)根節(jié)點(diǎn),所述靜態(tài)根節(jié)點(diǎn)對(duì)應(yīng)的靜態(tài)子樹用于保存靜態(tài)地圖的三維地圖數(shù)據(jù),所述動(dòng)態(tài)根節(jié)點(diǎn)對(duì)應(yīng)的動(dòng)態(tài)子樹用于保存動(dòng)態(tài)地圖的三維地圖數(shù)據(jù),所述動(dòng)態(tài)地圖用于指示基于用戶的交互進(jìn)行更新的地圖,所述靜態(tài)子樹與所述動(dòng)態(tài)子樹共用至少一個(gè)節(jié)點(diǎn);
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述基于所述障礙物信息,為所述第i層的目標(biāo)節(jié)點(diǎn)添加子節(jié)點(diǎn),包括:
11.根據(jù)權(quán)利要求1至8任一所述的方法,其特征在于,所述方法還包括:
12.根據(jù)權(quán)利要求11所述的方法,其特征在于,所述基于所述稀疏八叉樹保存的所述三維地圖數(shù)據(jù),規(guī)劃尋路路徑,包括:
13.根據(jù)權(quán)利要求12所述的方法,其特征在于,所述獲取當(dāng)前節(jié)點(diǎn)在上下左右前后六個(gè)方向上相鄰的至少六個(gè)第一鄰居節(jié)點(diǎn),包括:
14.根據(jù)權(quán)利要求13所述的方法,其特征在于,所述第二鄰居節(jié)點(diǎn)包括所述索引信息,所述索引信息包括層級(jí)索引和節(jié)點(diǎn)索引,所述層級(jí)索引用于指示所述節(jié)點(diǎn)所在的層級(jí),所述節(jié)點(diǎn)索引用于指示所述節(jié)點(diǎn)在對(duì)應(yīng)層級(jí)的數(shù)組中的位置;
15.根據(jù)權(quán)利要求11至14任一所述的方法,其特征在于,所述稀疏八叉樹包括靜態(tài)根節(jié)點(diǎn)和動(dòng)態(tài)根節(jié)點(diǎn),所述靜態(tài)根節(jié)點(diǎn)對(duì)應(yīng)的靜態(tài)子樹用于保存靜態(tài)地圖的三維地圖數(shù)據(jù),所述動(dòng)態(tài)根節(jié)點(diǎn)對(duì)應(yīng)的動(dòng)態(tài)子樹用于保存動(dòng)態(tài)地圖的三維地圖數(shù)據(jù),所述動(dòng)態(tài)地圖用于指示基于用戶的交互進(jìn)行更新的地圖,所述靜態(tài)子樹與所述動(dòng)態(tài)子樹共用至少一個(gè)節(jié)點(diǎn);
16.一種三維地圖數(shù)據(jù)的更新裝置,其特征在于,所述裝置包括:
17.一種計(jì)算機(jī)設(shè)備,其特征在于,所述計(jì)算機(jī)設(shè)備包括:處理器和存儲(chǔ)器,所述存儲(chǔ)器中存儲(chǔ)有至少一段程序;所述處理器,用于執(zhí)行所述存儲(chǔ)器中的所述至少一段程序以實(shí)現(xiàn)上述如權(quán)利要求1至15任一所述的三維地圖數(shù)據(jù)的更新方法。
18.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中存儲(chǔ)有可執(zhí)行指令,所述可執(zhí)行指令由處理器加載并執(zhí)行以實(shí)現(xiàn)上述如權(quán)利要求1至15任一所述的三維地圖數(shù)據(jù)的更新方法。
19.一種計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)指令,所述計(jì)算機(jī)指令存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,處理器從所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)讀取并執(zhí)行所述計(jì)算機(jī)指令,以實(shí)現(xiàn)上述如權(quán)利要求1至15任一所述的三維地圖數(shù)據(jù)的更新方法。