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