一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

游戏场景的数据处理方法、装置、计算机设备及介质与流程

2022-04-30 16:28:07 来源:中国专利 TAG:


1.本发明涉及游戏领域,尤其涉及一种游戏场景的数据处理方法、装置、计算机设备及介质。


背景技术:

2.在网络游戏中,常需要根据寻路算法为玩家控制的游戏角色提供一条可移动的、能避开各类静态障碍物的路线。常见的寻路算法如dijkstra算法和a*算法,需将游戏场景转换成如地图网格的寻路数据以完成寻路。
3.而在三维游戏场景的寻路中,常将游戏场景转换为三维的体素(voxel)来作为寻路数据。但体素所需的内存占用量很大,若寻路的精度为1米的话,一个体素占用1bit,使用三维数组存储游戏场景约需要1.5gb内存。
4.可见,在三维游戏场景中利用体素作为寻路数据仍存在一定局限性。


技术实现要素:

5.有鉴于此,本发明提供一种游戏场景的数据处理方法、装置、计算机设备及介质,用于改善在三维游戏场景中利用体素作为寻路数据仍存在一定局限性的现状。
6.第一方面,本发明实施例提供一种游戏场景的数据处理方法,包括:
7.对游戏场景进行体素化处理,并确定所述游戏场景对应的每个体素节点的节点信息,其中,所述节点信息包括高度和节点类型,所述节点类型用于表示所述体素节点是否与所述游戏场景相交;
8.基于所有所述体素节点生成所述游戏场景对应的稀疏体素八叉树;
9.从所述稀疏体素八叉树中选取预设数量的节点,并将所述预设数量的节点写入预设队列,其中,所述预设数量的节点包括游戏虚拟角色可移动的节点;
10.从所述预设队列取出一个节点作为起始节点,并将所述起始节点标记;
11.针对与所述起始节点相邻且未被标记的每个邻居节点,若根据所述邻居节点的节点信息和所述起始节点的节点信息,确定所述起始节点和所述邻居节点满足预设的节点联通规则,则将所述邻居节点写入所述预设队列;
12.从所述预设队列取出一个节点作为新的起始节点,重复执行所述将所述起始节点标记的步骤,直至所述预设队列为空;
13.删除所述稀疏体素八叉树中未被标记的节点,得到裁剪后的稀疏体素八叉树。
14.可选的,在本发明实施例提供的一种实施方式中,所述节点类型包括不与所述游戏场景的地形相交的第一节点类型,和与所述游戏场景的地形相交的第二节点类型;
15.所述针对与所述起始节点相邻且未被标记的每个邻居节点,若根据所述邻居节点的节点信息和所述起始节点的节点信息,确定所述起始节点和所述邻居节点满足预设的节点联通规则,则将所述邻居节点写入所述预设队列,包括:
16.针对与所述起始节点相邻且未被标记的每个邻居节点,若所述邻居节点和/或所
述起始节点的类型为所述第二节点类型,获取所述邻居节点的高度最大值和所述起始节点的高度最大值;
17.根据所述游戏场景对应的地形高度图,获取所述起始节点对应的地形高度和所述起始节点对应的地形高度;
18.当所述邻居节点的高度最大值大于所述邻居节点对应的地形高度,且所述起始节点的高度最大值大于所述起始节点对应的地形高度时,将所述邻居节点写入所述预设队列。
19.可选的,在本发明实施例提供的一种实施方式中,所述删除所述稀疏体素八叉树中未被标记的节点,得到裁剪后的稀疏体素八叉树之后,所述方法还包括:
20.基于所述裁剪后的稀疏体素八叉树,生成预设尺寸大小的子树和与所述子树对应的父树。
21.进一步的,在本发明实施例提供的一种实施方式中,所述基于所述裁剪后的稀疏体素八叉树,生成预设尺寸大小的子树和与所述子树对应的父树之后,所述方法还包括:
22.记录所述父树和每颗所述子树中每层内的每个节点的相邻情况,其中,所述相邻情况表示预设方向上是否存在相邻的节点;
23.标记所述父树和每颗所述子树的第0层中的平凡节点,其中,所述平凡节点表示所述平凡节点的预设方向上存在相邻的节点。
24.可选的,在本发明实施例提供的一种实施方式中,所述对游戏场景进行体素化处理,并确定所述游戏场景对应的每个体素节点的节点信息之后,所述基于所有所述体素节点生成所述游戏场景对应的稀疏体素八叉树之前,所述方法还包括:
25.基于莫顿码编码规则,根据每个所述体素节点的类型和位置,将所述体素节点编码为莫顿码节点;
26.所述基于所有所述体素节点生成所述游戏场景对应的稀疏体素八叉树,包括:
27.基于所有所述莫顿码节点生成所述游戏场景对应的稀疏体素八叉树。
28.可选的,在本发明实施例提供的一种实施方式中,所述对游戏场景进行体素化处理,并确定所述游戏场景对应的每个体素节点的节点信息,包括:
29.基于预设分块大小,对所述游戏场景进行分块划分,得到所述游戏场景对应的分块;
30.通过预设包围盒求解每个所述分块对应的每个体素节点的类型;
31.根据每个所述体素节点的类型和高度,得到每个所述体素节点的节点信息。
32.进一步的,在本发明实施例提供的一种实施方式中,所述通过预设包围盒求解每个所述分块对应的每个体素节点的类型,包括:
33.获取所述游戏场景对应的地形高度图;
34.根据所述地形高度图,确定每个分块的地形最低值;
35.基于预设包围盒,求解每个所述分块对应的每个高度大于所述地形最低值的体素节点的类型。
36.第二方面,本发明实施例提供一种游戏场景的数据处理装置,包括:
37.体素化模块,用于对游戏场景进行体素化处理,并确定所述游戏场景对应的每个体素节点的节点信息,其中,所述节点信息包括高度和节点类型,所述节点类型用于表示所
述体素节点是否与所述游戏场景相交;
38.生成模块,用于基于所有所述体素节点生成所述游戏场景对应的稀疏体素八叉树;
39.第一写入模块,用于从所述稀疏体素八叉树中选取预设数量的节点,并将所述预设数量的节点写入预设队列,其中,所述预设数量的节点包括游戏虚拟角色可移动的节点;
40.第一读取模块,用于从所述预设队列取出一个节点作为起始节点,并将所述起始节点标记;
41.第二写入模块,用于针对与所述起始节点相邻且未被标记的每个邻居节点,若根据所述邻居节点的节点信息和所述起始节点的节点信息,确定所述起始节点和所述邻居节点满足预设的节点联通规则,则将所述邻居节点写入所述预设队列;
42.第二读取模块,用于从所述预设队列取出一个节点作为新的起始节点,重复执行所述将所述起始节点标记的步骤,直至所述预设队列为空;
43.裁剪模块,用于删除所述稀疏体素八叉树中未被标记的节点,得到裁剪后的稀疏体素八叉树。
44.第三方面,本发明实施例提供一种计算机设备,包括存储器以及处理器,存储器存储有计算机程序,计算机程序在处理器上运行时执行如第一方面中任一种公开的游戏场景的数据处理方法。
45.第四方面,本发明实施例提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序在处理器上运行时执行如第一方面中任一种公开的游戏场景的数据处理方法。
46.本发明实施例提供的游戏场景的数据处理方法中,首先对游戏场景进行体素化处理,即得到游戏场景对应的所有体素节点,同时,确定游戏场景对应的每个体素节点的节点信息,如是否与游戏场景的地形相交,三维坐标信息等等;接着,基于所有体素节点生成游戏场景对应的稀疏体素八叉树,以将体素节点通过稀疏体素八叉树存储;然后,从稀疏体素八叉树中选取预设数量的节点,并将预设数量的节点写入预设队列;从预设队列取出一个节点作为起始节点,并将起始节点标记;针对与起始节点相邻且未被标记的每个邻居节点,若根据邻居节点的节点信息和起始节点的节点信息,确定起始节点和邻居节点满足预设的节点联通规则,则将邻居节点写入预设队列;也即,计算机设备判断稀疏体素八叉树中其他为写入预设队列的节点是否能同样写入预设队列中;从预设队列取出一个节点作为新的起始节点,重复执行将起始节点标记的步骤,直至预设队列为空,即当计算机设备不断写入并不断读取队列,直至将稀疏体素八叉树中的所有节点均遍历一遍后,确定稀疏体素八叉树中所有可被写入预设队列的节点,并将预设队列中的所有节点均标记;删除稀疏体素八叉树中未被标记的节点,得到裁剪后的稀疏体素八叉树,即删除稀疏体素八叉树中不能被游戏虚拟角色移动的节点。
47.由此,本发明实施例通过稀疏体素八叉树来存储游戏场景对应的体素节点,并对稀疏体素八叉树的进行了裁剪,删除了稀疏体素八叉树中游戏虚拟角色不可移动的节点,使得裁剪后的稀疏体素八叉树中的节点均为游戏虚拟角色可移动的节点,进而减少了计算机设备存储体素节点所需的内存空间;不仅如此,在将本发明实施例提供的游戏场景的数据处理方法应用于实际寻路过程中,由于裁剪后的稀疏体素八叉树中的节点均为游戏虚拟
角色可移动的节点,使得寻路算法能以更快速地输出路径,从而提高了寻路速度。
附图说明
48.为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对本发明保护范围的限定。在各个附图中,类似的构成部分采用类似的编号。
49.图1示出了本发明实施例提供的第一种游戏场景的数据处理方法的流程示意图;
50.图2示出了本发明实施例提供的本发明实施例提供的第二种游戏场景的数据处理方法的流程示意图;
51.图3示出了本发明实施例提供的本发明实施例提供的第三种游戏场景的数据处理方法的流程示意图;
52.图4示出了本发明实施例提供的游戏场景的数据处理装置的结构示意图。
具体实施方式
53.下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
54.通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
55.在下文中,可在本发明的各种实施例中使用的术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。
56.此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
57.除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本发明的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本发明的各种实施例中被清楚地限定。
58.参照图1,图1示出了本发明实施例提供的第一种游戏场景的数据处理方法的流程示意图,本发明实施例提供的游戏场景的数据处理方法包括:
59.s101,对游戏场景进行体素化处理,并确定所述游戏场景对应的每个体素节点的节点信息,其中,所述节点信息包括高度和节点类型,所述节点类型用于表示所述体素节点是否与所述游戏场景相交。
60.可以理解的是,本发明实施例中的游戏场景即指代游戏场景对应的三维模型,而对游戏场景进行体素化(voxelization)处理,即将三维模型简化为多个大小相同的体素节
点,以通过体素节点描述游戏场景。其中,每个体素节点均对应有一个唯一的三维坐标,三维坐标用于描述体素节点在模型中的位置。需说明的是,若通过左手坐标系描述体素节点的三维坐标,则体素节点的高度即为y轴坐标。
61.可选的,在本实施例提供的可行的方式中,每个体素节点的大小为1米
×
1米
×
1米,即一个体素节点表示一个长宽高均为1米的立方体。
62.进一步的,在体素化的过程中,本发明实施例还将确定每个体素节点是否与游戏场景对应的三维模型相交,即确定每个体素节点的类型。
63.还可以理解的是,体素化处理和节点类型判断的过程可根据实际情况设置,如在一种可行方式中,体素化处理和节点类型判断的过程可包括:计算机设备构建游戏场景对应的包围盒;将包围盒体素化;根据包围盒和游戏场景对应的三维模型,计算每个体素节点的有向距离场值(sdf,signed distance field),并根据有向距离场值确定每个体素节点的类型。
64.而在一种可行方式中,体素化处理和节点类型判断的过程,即s101包括:
65.基于预设分块大小,对所述游戏场景进行分块划分,得到所述游戏场景对应的分块;
66.通过预设包围盒求解每个所述分块对应的每个体素节点的类型;
67.根据每个所述体素节点的类型和高度,得到每个所述体素节点的节点信息。
68.也即,此种实施方式中,计算机设备首先将游戏场景对应的三维模型切分为多个分块;针对每个分块,利用预设的轴对称包围盒(axis-aligned bounding boxes)进行相交判断,进而得到每个分块对应的每个体素节点的类型。
69.需理解的是,通过gpu(graphics processing unit,图形处理器),计算机设备能快速地完成体素化处理和体素节点相交判断。但是,当游戏场景对应的三维模型过大,直接对完整的游戏场景进行体素化处理和体素节点相交判断,则需保证gpu的显存足够大,能支撑体素化处理和体素节点相交判断的执行。
70.因此,本发明实施例为使计算机设备能通过gpu来完成体素化处理和体素节点相交判断,将游戏场景分块化处理,以使计算机设备可利用gpu来快速地对每个分块来进行体素化处理和体素节点相交判断。
71.此外,还需说明的是,本发明实施例不对预设分块大小进行限定,预设分块大小可根据实际需求设置。
72.进一步的,为进一步降低gpu的显存压力,在本发明实施例提供的一种实施方式中,所述通过预设包围盒求解每个所述分块对应的每个体素节点的类型,包括:
73.获取所述游戏场景对应的地形高度图;
74.根据所述地形高度图,确定每个分块的地形最低值;
75.基于预设包围盒,求解每个所述分块对应的每个高度大于所述地形最低值的体素节点的类型。
76.也即,计算机设备在对分块执行体素化处理和节点类型判断的过程中,将获取每个分块的地形高度图的最低值。可以理解的是,游戏设计中,常通过地形高度图来模拟现实生活中的丘陵和山谷;地形高度图可以理解为一个数组,数组的每个元素表示一定范围区域的游戏场景的地表的高度位置。不难理解的是,游戏中的游戏虚拟角色一般是在地表上
方移动,地表之下通常是被认定为不可移动的位置。
77.因此,本发明实施例在此种实施方式中,将根据游戏虚拟角色可移动的最低高度,即分块的地形高度图的最低值来进行体素化处理和节点类型判断。也即,计算机设备在生成体素节点后,不会求解高度位置小于地形高度图的最低值的体素节点的节点类型,进而高度位置小于地形高度图的最低值的体素节点不将参与后续的步骤。由此,进一步降低gpu和计算机设备的负荷。
78.s102,基于所有所述体素节点生成所述游戏场景对应的稀疏体素八叉树。
79.也即,计算机设备将所有的体素节点排列为稀疏体素八叉树(sparse voxel octree,svo)结构。
80.可选的,在一种可行方式中,计算机设备从稀疏体素八叉树的第0层开始生成稀疏体素八叉树结构。
81.需理解的是,本发明实施例不限定计算机设备稀疏体素八叉树的具体生成过程,稀疏体素八叉树的生成过程可根据实际情况设置。
82.s103,从所述稀疏体素八叉树中选取预设数量的节点,并将所述预设数量的节点写入预设队列,其中,所述预设数量的节点包括游戏虚拟角色可移动的节点。
83.需理解的是,写入预设队列中的节点均为可被游戏虚拟角色移动的节点,即游戏虚拟角色能在节点对应的游戏场景中移动。
84.还需理解的是,节点是否可被游戏虚拟角色移动能根据实际情况设置。如在一种可行方式中,若节点不与游戏场景的地形相交,即节点对应的游戏场景为天空,且游戏的设定中游戏角色可在天空中移动时,不与游戏场景的地形相交的节点将被认定为可被游戏虚拟角色移动的节点。
85.而在另一种可行方式中,节点是否可被游戏虚拟角色移动将根据节点的高度和游戏场景的地形高度图来确定。也即,根据地形高度图确定节点对应的游戏场景的地形高度,再获取节点的最大高度,若节点的最大高度大于游戏场景的地形高度,则将节点认定为可被游戏虚拟角色移动的节点。可以理解的是,若节点的大小为1米
×
1米
×
1米,则节点的高度位置加上1米即表示节点的最大高度。
86.还需说明的是,本发明实施例不限定从稀疏体素八叉树中选取节点的具体过程,具体可根据实际情况设置。
87.如在一种可行方式中,节点的选取将通过接收工作人员的输入来完成。
88.在另一种可行方式中,计算机设备遍历所有节点以搜索可被游戏虚拟角色移动的节点,进而从所有可被游戏虚拟角色移动的节点中随机选择多个节点并写入预设队列。
89.s104,从所述预设队列取出一个节点作为起始节点,并将所述起始节点标记。
90.也即,从预设队列中取出一个节点以使预设队列的队列大小减1。并将取出的节点作为起始节点,以在后续过程中,判断游戏角色是否能通过起始节点移动到与起始节点相邻的其他节点中。
91.需理解的是,节点被标记即表示节点对应的游戏场景可被游戏虚拟角色移动。
92.s105,针对与所述起始节点相邻且未被标记的每个邻居节点,若根据所述邻居节点的节点信息和所述起始节点的节点信息,确定所述起始节点和所述邻居节点满足预设的节点联通规则,则将所述邻居节点写入所述预设队列。
93.也即,计算机设备首先确定与起始节点相邻的邻居节点是否为已被标记,若否,则将判断游戏虚拟角色是否能从起始节点移动到邻居节点。可以理解的是,若邻居节点已被标记,游戏虚拟角色能在邻居节点对应的游戏场景中移动,进而游戏虚拟角色能从起始节点移动至邻居节点上,因此,计算机设备将跳过邻居节点。
94.需理解的是,邻居节点的定义可根据实际情况设置,本发明实施例不进行额外的限定。在一种可行方式中,起始节点的邻居节点即在起始节点预设方向上,与起始节点相连的节点。
95.示范性的,若任意一个节点的大小均为1米
×
1米,预设方向包括x轴方向和y轴方向,设一个节点的坐标为(1,1),则此节点的邻居节点可包括坐标为(0,1)的节点、坐标为(2,1)的节点、坐标为(1,2)的节点以及坐标为(1,0)的节点。
96.进一步的,在确定起始节点的邻居节点后,计算机设备将根据邻居节点的节点信息和起始节点的节点信息是否满足预设的节点联通规则,即判断游戏角色是否移动从起始节点对应的游戏场景移动至邻居节点对应的游戏场景。
97.需说明的是,本发明实施例不对预设的节点联通规则,即判断游戏虚拟角色是否能通过起始节点移动到邻居节点的具体过程进行限定,具体过程可根据实际情况设置。
98.如在一种可行方式中,判断游戏虚拟角色是否能从起始节点移动到邻居节点的过程包括:若起始节点和邻居节点均为不与游戏场景的地形相交的节点,则认为游戏虚拟角色能通过起始节点移动到邻居节点。
99.而在本发明实施例提供的一种可行的实施方式中,所述节点类型包括不与所述游戏场景的地形相交的第一节点类型,和与所述游戏场景的地形相交的第二节点类型时,所述s105包括:
100.针对与所述起始节点相邻且未被标记的每个邻居节点,若所述邻居节点和/或所述起始节点的类型为所述第二节点类型,获取所述邻居节点的高度最大值和所述起始节点的高度最大值;
101.根据所述游戏场景对应的地形高度图,获取所述起始节点对应的地形高度和所述起始节点对应的地形高度;
102.当所述邻居节点的高度最大值大于所述邻居节点对应的地形高度,且所述起始节点的高度最大值大于所述起始节点对应的地形高度时,将所述邻居节点写入所述预设队列。
103.需理解的是,第一节点类型即表明体素节点不与游戏场景的地表相交,即体素节点对应的游戏场景为地表上方中不存在任何游戏物体模型如房屋模型的空间,或地表上方包括游戏物体模型的空间;第二节点类型即表示体素节点对应的游戏场景为包括地表上方和地表下方的空间。
104.还需理解的是,体素节点的节点类型可根据实际情况设置,本发明实施例不进行过多地限定。如在一种可行方式中,第一节点类型被划分为空白节点类型和非空白节点类型,其中,空白节点类型表示体素节点对应的游戏场景为不存在任何游戏物体模型的空间;非空白节点类型即表明体素节点对应的游戏场景为地表上方的、包括游戏物体模型的空间。
105.进一步的,当起始节点和邻居节点中的任一个节点的节点类型为第二节点类型,
即任一个节点为与游戏场景的地形相交时,计算机设备将获取两个节点的高度最大值,即根据节点的大小和位置确定节点的高度。
106.接着,根据游戏场景对应的地形高度图,确定节点对应的游戏场景的地形的高度位置,即地形高度。
107.最后,针对两个节点中的任意一个节点,判断节点的高度最大值是否大于地形高度;若是,则代表游戏虚拟角色能在节点对应的游戏场景的地面上方移动,进而将邻居节点写入预设队列;若否,则代表节点对应的游戏场景在地面下方,进而游戏虚拟角色无法在点对应的游戏场景中移动。
108.可以理解的是,本发明实施例不限定起始节点的类型和邻居节点的类型为其他情况时,计算机设备将如何判断游戏虚拟角色是否能通过起始节点移动到邻居节点的具体过程,具体过程可根据实际情况设置。
109.如在一种可行方式中,若起始节点和邻居节点对应的游戏场景均表示地表上方中不包括任何物体模型的空间,则认定游戏虚拟角色可从起始节点移动至邻居节点。
110.此外,还需说明的是,根据稀疏体素八叉树的定义,稀疏体素八叉树中相邻上下两层中,1个上层节点对应8个下层节点。进而可知,1个大小为4米
×
4米
×
4米的上层节点对应8个大小为2米
×
2米
×
2米的下层节点,进而对应64个大小为1米
×
1米
×
1米的下层节点。而针对稀疏体素八叉树中任意一个大小不为1米
×
1米
×
1米的节点,若节点对应的下层的节点中包括类型为第二节点类型的节点,则大小不为1米
×
1米
×
1米的节点同样被认定为第二节点类型。
111.进一步的,当计算任意一个大小不为1米
×
1米
×
1米的节点的高度最大值时,将从节点对应的所有下层的节点中,选取高度位置最大的下层的节点来计算高度最大值。
112.s106,从所述预设队列取出一个节点作为新的起始节点,重复执行所述将所述起始节点标记的步骤,直至所述预设队列为空。
113.可以理解的是,由于前述步骤中,每当起始节点与邻近节点满足预设的节点联通规则时,邻居节点将被写入预设队列;而预设队列中的节点将不断地被取出并标记。当预设队列为空时,针对稀疏体素八叉树中的任意两个相邻的节点,若两个节点均被标记,则表示游戏虚拟角色可从其中一个节点移动至另一个节点;而若两个节点中只有一个节点被标记或均未被标记,则表示游戏虚拟角色无法从其中一个节点移动至另一个节点。
114.s107,删除所述稀疏体素八叉树中未被标记的节点,得到裁剪后的稀疏体素八叉树。
115.也即,计算机设备对稀疏体素八叉树进行裁剪,以删除未被标记,即游戏虚拟角色不可移动的节点。进而,裁剪后的稀疏体素八叉树中,所有的节点均为游戏虚拟角色可移动的节点,且游戏虚拟角色可从相邻的两个节点中的其中一个节点移动至另一个节点。
116.由此,本发明实施例通过稀疏体素八叉树来存储游戏场景对应的体素节点,并对稀疏体素八叉树的进行了裁剪,删除了稀疏体素八叉树中的节点均为游戏虚拟角色不可移动的节点,使得裁剪后的稀疏体素八叉树中的节点均为游戏虚拟角色可移动的节点,进而减少了计算机设备存储体素节点所需的内存空间;不仅如此,在将本发明实施例提供的游戏场景的数据处理方法应用于实际寻路过程中,由于裁剪后的稀疏体素八叉树中的节点均为游戏虚拟角色可移动的节点,使得寻路算法能以更快速地输出路径,从而提高了寻路速
度。
117.可选的,计算机设备裁剪稀疏体素八叉树的过程可包括:若一个上层节点对应的所有下层节点均为游戏虚拟角色可移动的节点,且类型均为第二类型节点时,计算机设备将删除上层节点,并在上层节点对应的更上层节点中,将上层节点标记,以避免后续通过稀疏体素八叉树渲染体素格子时将上层节点生成。
118.示范性的,设一个大小为4米
×
4米
×
4米的节点对应的64个大小为1米
×
1米
×
1米的下层节点中,所有大小为1米
×
1米
×
1米的节点均为第二类型节点且均不为游戏虚拟角色可移动的节点时,则计算机设备将在4米
×
4米
×
4米的节点对应的大小8米
×
8米
×
8米的上层节点中,将大小为4米
×
4米
×
4米的节点标记。
119.更进一步的,计算机设备裁剪稀疏体素八叉树的过程还可包括:当一个上层节点对应的所有下层节点存在一个下层节点将被删除时,则上层节点同样将被删除。
120.由此,进一步减低了稀疏体素八叉树需占用的内存空间;并且,在将本发明实施例应用于实际寻路环节中时,由于上层节点对应的所有下层节点存在一个下层节点将被删除时,则上层节点同样将被删除,进而避免了寻路算法会通过上层节点访问到不可移动的下层节点的情况,提高了寻路效率。
121.可选的,在本发明实施例提供的一种实施方式中,具体可参考图2,图2示出了本发明实施例提供的本发明实施例提供的第二种游戏场景的数据处理方法的流程示意图,即s107之后,所述方法还包括:
122.s108,基于所述裁剪后的稀疏体素八叉树,生成预设尺寸大小的子树和与所述子树对应的父树。
123.可以理解的是,预设尺寸大小可根据实际情况调整,本发明实施例中不进行限定。
124.还可以理解的是,父树为包括原始树,即裁剪后的稀疏体素八叉树的根节点的树。而子树即为裁剪后的稀疏体素八叉树的一部分,进而在游戏场景发生变化时,可直接修改对应的子树而不是直接修改裁剪后的稀疏体素八叉树,降低了游戏场景修改时计算机设备的负荷。
125.进一步的,在本发明实施例提供的一种实施方式中,具体可参考图3,图3示出了本发明实施例提供的本发明实施例提供的第三种游戏场景的数据处理方法的流程示意图,即s108之后,所述方法还包括:
126.s109,记录所述父树和每颗所述子树中每层内的每个节点的相邻情况,其中,所述相邻情况表示预设方向上是否存在相邻的节点;
127.s110,标记所述父树和每颗所述子树的第0层中的平凡节点,其中,所述平凡节点表示所述平凡节点的预设方向上存在相邻的节点。
128.可以理解的是,预设方向可根据实际情况设置。如在一种可行方式中,预设方向包括x轴正方向、x轴负方向、y轴正方向、y轴负方向、z轴正方向及z轴负方向等6个方向。进而,每个节点的相邻情况即表示节点的6个方向中,哪一个方向存在邻居节点,哪一个方向不存在邻居节点。而平凡节点则表示节点6个方向的邻居节点都存在,换言之,游戏虚拟角色可通过平凡节点移动至任意一个邻居节点所在的面上。
129.由此,由于本发明实施例记录了每个节点的相邻情况并标记了平凡节点,进而在将本发明实施例应用于实际的寻路环节中时,计算机设备可根据相邻情况和平凡节点完成
路线规划,进而能有效寻路的效率。
130.可选的,在本发明实施例提供的一种实施方式中,所述对游戏场景进行体素化处理,并确定所述游戏场景对应的每个体素节点的节点信息之后,所述基于所有所述体素节点生成所述游戏场景对应的稀疏体素八叉树之前,所述方法还包括:
131.基于莫顿码编码规则,根据每个所述体素节点的类型和位置,将所述体素节点编码为莫顿码节点;
132.所述基于所有所述体素节点生成所述游戏场景对应的稀疏体素八叉树,包括:
133.基于所有所述莫顿码节点生成所述游戏场景对应的稀疏体素八叉树。
134.示范性的,根据体素节点生成莫顿码节点的过程可包括:针对512个大小为1米
×
1米
×
1米的体素节点,根据每个体素节点的三维坐标和类型,生成每个体素节点对应的键值对(key-value),并将512个体素节点排序组合,得到一个大小为8米
×
8米
×
8米的体素节点块,即莫顿码节点。
135.需说明的是,键值对中的key通过体素节点的三维坐标计算得到;键值对中的value即体素节点的类型。
136.还需说明的是,莫顿码编码规则可以使空间中的任意一个坐标转换为一个类型无符号整数型的数字,能保证每个体素节点的数字不会重复,且可通过每个体素节点的坐标对应的类型无符号整数型的数字,快速地确定每个体素节点的顺序。
137.基于此,本发明实施例基于莫顿码编码规则,将体素节点编码为莫顿码节点后,即可高效地将莫顿码节点中的每个体素节点按照可选的方式进行排序,如在一种可行方式中,莫顿码节点中的每个体素节点按照z轴顺序排序,进而可提高稀疏体素八叉树的生成效率。
138.与本发明实施例提供的游戏场景的数据处理方法相对应的,本发明实施例还提供一种游戏场景的数据处理装置,参照图4,图4示出了本发明实施例提供的游戏场景的数据处理装置的结构示意图,本发明实施例提供的游戏场景的数据处理装置200,包括:
139.体素化模块201,用于对游戏场景进行体素化处理,并确定所述游戏场景对应的每个体素节点的节点信息,其中,所述节点信息包括高度和节点类型,所述节点类型用于表示所述体素节点是否与所述游戏场景相交;
140.生成模块202,用于基于所有所述体素节点生成所述游戏场景对应的稀疏体素八叉树;
141.第一写入模块203,用于从所述稀疏体素八叉树中选取预设数量的节点,并将所述预设数量的节点写入预设队列;
142.第一读取模块204,用于从所述预设队列取出一个节点作为起始节点,并将所述起始节点标记;
143.第二写入模块205,用于针对与所述起始节点相邻且未被标记的每个邻居节点,若根据所述邻居节点的节点信息和所述起始节点的节点信息,确定所述起始节点和所述邻居节点满足预设的节点联通规则,则将所述邻居节点写入所述预设队列;
144.第二读取模块206,用于从所述预设队列取出一个节点作为新的起始节点,重复执行所述将所述起始节点标记的步骤,直至所述预设队列为空;
145.裁剪模块207,用于删除所述稀疏体素八叉树中未被标记的节点,得到裁剪后的稀
疏体素八叉树。
146.本技术实施例提供的游戏场景的数据处理装置能够实现图1示出的方法实施例中游戏场景的数据处理方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
147.本发明实施例还提供一种计算机设备,包括存储器以及处理器,存储器存储有计算机程序,计算机程序在处理器上运行时执行如图1示出的方法实施例中公开的游戏场景的数据处理方法。
148.本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序在处理器上运行时执行如图1示出的方法实施例中公开的游戏场景的数据处理方法。
149.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和结构图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,结构图和/或流程图中的每个方框、以及结构图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
150.另外,在本发明各个实施例中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或更多个模块集成形成一个独立的部分。
151.所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是智能手机、个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
152.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献