本公开涉及计算机,尤其涉及一种场景数据处理方法、装置、电子设备及存储介质。
背景技术:
1、随着计算机技术的发展,出现了一种通过虚幻引擎进行3d游戏开发的技术,用户可以通过虚幻引擎布置3d游戏的场景数据,从而通过场景数据实现寻路、碰撞检测以及空间管理等等业务场景。
2、相关技术中,目前利用场景数据实现上述寻路、碰撞检测以及空间管理等业务场景,通常是先基于场景数据,来生成导航网格或者3d网格,并利用生成的导航网格或者3d网格来实现业务需求。然而,利用导航网格实现上述业务场景,虽然在寻路和单场景内存占用上具有很好的表现,但对碰撞检测和空中寻路无法进行良好的支持,而如果采用3d网格来实现上述业务场景,则会导致内存占用较高。因此,现有的场景数据处理方法无法很好的支持游戏业务场景,场景数据的处理不够智能。
技术实现思路
1、本公开提供一种场景数据处理方法、装置、电子设备及存储介质,以至少解决相关技术中,场景数据的处理不智能的问题。本公开的技术方案如下:
2、根据本公开实施例的第一方面,提供一种场景数据处理方法,包括:
3、从待处理场景中的多个瓦片块区域中,识别出与所述待处理场景中的可达区域相匹配的目标瓦片块区域;
4、在所述目标瓦片块区域中,生成多个体素;每个体素包含多层区间;
5、获取所述各个体素对应的场景数据,并基于所述场景数据对所述各个体素包含的各层区间进行碰撞检测,得到所述各层区间的区间标识;所述区间标识用于表示对应的区间是否存在碰撞;
6、利用所述区间标识,生成所述待处理场景中的可达区域对应的体素数据。
7、在一示例性实施例中,所述获取所述各个体素对应的场景数据,并基于所述场景数据对所述各个体素包含的各层区间进行碰撞检测,得到所述各层区间的区间标识,包括:获取当前体素的当层区间,以及所述当前体素在所述待处理场景的位置信息;基于所述位置信息,从所述待处理场景对应的场景数据中,获取所述当前体素对应的当前场景数据,并利用所述当前场景数据对所述当层区间进行碰撞检测,得到所述当层区间的碰撞检测结果;根据所述碰撞检测结果得到所述当层区间的区间标识,并将所述当层区间的下一层区间作为新的当层区间,返回执行利用所述当前场景数据对所述当层区间进行碰撞检测,直到所述当层区间为所述当前体素的最后一层区间。
8、在一示例性实施例中,所述根据所述碰撞检测结果得到所述当层区间的区间标识,包括:在所述碰撞检测结果表征存在碰撞的情况下,将所述当层区间的区间标识设置为实心标识;在所述碰撞检测结果表征不存在碰撞的情况下,将所述当层区间的区间标识设置为空心标识。
9、在一示例性实施例中,所述将所述当层区间的区间标识设置为空心标识之后,还包括:获取所述当前体素中包含的空心层数区间;所述空心层数区间为区间标识设置为空心标识的各层区间;在连续的空心层数区间的数量小于预先设定的层数阈值的情况下,将所述连续的空心层数区间的区间标识更新为实心标识。
10、在一示例性实施例中,所述将所述当层区间的区间标识设置为空心标识之后,还包括:获取基于目标对象设置的初始体素以及初始层数区间,并根据所述初始体素包含的各层区间的区间标识以及所述初始层数区间,得到所述初始体素的初始空心区间;其中,所述初始层数区间的区间标识为空心标识;对所述初始空心区间包含的空心层数区间设置可达标识;获取所述初始体素的相邻体素,并从所述相邻体素包含的各层区间中,识别出与所述空心层数区间相匹配的相邻层数区间;在所述相邻层数区间包含空心区间的情况下,将所述相邻体素作为新的初始体素,以及将所述相邻层数区间包含的空心区间作为新的初始空心区间,并返回对所述初始体素的空心区间包含的空心层数区间设置可达标识,直到所述相邻层数区间不包含空心区间;将未设置有所述可达标识的各层区间的区间标识,设置为实心标识。
11、在一示例性实施例中,所述从待处理场景中的多个瓦片块区域中,识别出与所述待处理场景中的可达区域相匹配的目标瓦片块区域,包括:从所述多个瓦片块区域中,获取与所述可达区域存在重叠的瓦片块区域;将与所述可达区域存在重叠的瓦片块区域,作为所述目标瓦片块区域。
12、在一示例性实施例中,所述生成所述待处理场景中的可达区域对应的体素数据之后,还包括:基于针对所述体素数据的预览指令,根据所述体素数据获取所述各个体素的阻挡区间,以及所述各个体素的预览颜色;将所述各个体素的阻挡区间按照所述预览颜色进行展示。
13、根据本公开实施例的第二方面,提供一种场景数据处理装置,包括:
14、目标区域识别单元,被配置为执行从待处理场景中的多个瓦片块区域中,识别出与所述待处理场景中的可达区域相匹配的目标瓦片块区域;
15、体素区间生成单元,被配置为执行在所述目标瓦片块区域中,生成多个体素;每个体素包含多层区间;
16、区间标识获取单元,被配置为执行获取所述各个体素对应的场景数据,并基于所述场景数据对所述各个体素包含的各层区间进行碰撞检测,得到所述各层区间的区间标识;所述区间标识用于表示对应的区间是否存在碰撞;
17、体素数据生成单元,被配置为执行利用所述区间标识,生成所述待处理场景中的可达区域对应的体素数据。
18、在一示例性实施例中,区间标识获取单元,进一步被配置为执行获取当前体素的当层区间,以及所述当前体素在所述待处理场景的位置信息;基于所述位置信息,从所述待处理场景对应的场景数据中,获取所述当前体素对应的当前场景数据,并利用所述当前场景数据对所述当层区间进行碰撞检测,得到所述当层区间的碰撞检测结果;根据所述碰撞检测结果得到所述当层区间的区间标识,并将所述当层区间的下一层区间作为新的当层区间,返回执行利用所述当前场景数据对所述当层区间进行碰撞检测,直到所述当层区间为所述当前体素的最后一层区间。
19、在一示例性实施例中,区间标识获取单元,进一步被配置为执行在所述碰撞检测结果表征存在碰撞的情况下,将所述当层区间的区间标识设置为实心标识;在所述碰撞检测结果表征不存在碰撞的情况下,将所述当层区间的区间标识设置为空心标识。
20、在一示例性实施例中,区间标识获取单元,还被配置为执行获取所述当前体素中包含的空心层数区间;所述空心层数区间为区间标识设置为空心标识的各层区间;在连续的空心层数区间的数量小于预先设定的层数阈值的情况下,将所述连续的空心层数区间的区间标识更新为实心标识。
21、在一示例性实施例中,区间标识获取单元,还被配置为执行获取基于目标对象设置的初始体素以及初始层数区间,并根据所述初始体素包含的各层区间的区间标识以及所述初始层数区间,得到所述初始体素的初始空心区间;其中,所述初始层数区间的区间标识为空心标识;对所述初始空心区间包含的空心层数区间设置可达标识;获取所述初始体素的相邻体素,并从所述相邻体素包含的各层区间中,识别出与所述空心层数区间相匹配的相邻层数区间;在所述相邻层数区间包含空心区间的情况下,将所述相邻体素作为新的初始体素,以及将所述相邻层数区间包含的空心区间作为新的初始空心区间,并返回对所述初始体素的空心区间包含的空心层数区间设置可达标识,直到所述相邻层数区间不包含空心区间;将未设置有所述可达标识的各层区间的区间标识,设置为实心标识。
22、在一示例性实施例中,目标区域识别单元,进一步被配置为执行从所述多个瓦片块区域中,获取与所述可达区域存在重叠的瓦片块区域;将与所述可达区域存在重叠的瓦片块区域,作为所述目标瓦片块区域。
23、在一示例性实施例中,场景数据处理装置,还包括:体素数据预览单元,被配置为执行基于针对所述体素数据的预览指令,根据所述体素数据获取所述各个体素的阻挡区间,以及所述各个体素的预览颜色;将所述各个体素的阻挡区间按照所述预览颜色进行展示。
24、根据本公开实施例的第三方面,提供一种电子设备,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现如第一方面中任一项实施例所述的场景数据处理方法。
25、根据本公开实施例的第四方面,提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如第一方面中任一项实施例所述的场景数据处理方法。
26、根据本公开实施例的第五方面,提供一种计算机程序产品,所述计算机程序产品中包括指令,所述指令被电子设备的处理器执行时,使得所述电子设备能够执行如第一方面中任一项实施例所述的场景数据处理方法。
27、本公开的实施例提供的技术方案至少带来以下有益效果:
28、通过从待处理场景中的多个瓦片块区域中,识别出与待处理场景中的可达区域相匹配的目标瓦片块区域;在目标瓦片块区域中,生成多个体素;每个体素包含多层区间;获取各个体素对应的场景数据,并基于场景数据对各个体素包含的各层区间进行碰撞检测,得到各层区间的区间标识;区间标识用于表示对应的区间是否存在碰撞;利用区间标识,生成待处理场景中的可达区域对应的体素数据。本公开通过找到待识别场景中与可达区域相匹配的目标瓦片块区域,并在目标瓦片块区域中生成包含多层区间的体素,之后则可以利用场景数据对每一层区间进行碰撞检测,来得到区间标识从而生成体素数据,本公开实现了将场景数据转化为体素数据,之后则可以利用体素数据来实现业务场景的需求,从而可以很好的支持游戏业务场景,提高场景数据处理的智能性。
29、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。