CN112221144B - 三维场景寻路方法及装置、三维场景地图处理方法及装置 - Google Patents

三维场景寻路方法及装置、三维场景地图处理方法及装置 Download PDF

Info

Publication number
CN112221144B
CN112221144B CN202011211246.5A CN202011211246A CN112221144B CN 112221144 B CN112221144 B CN 112221144B CN 202011211246 A CN202011211246 A CN 202011211246A CN 112221144 B CN112221144 B CN 112221144B
Authority
CN
China
Prior art keywords
grid
tile
grids
basic
dimensional scene
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011211246.5A
Other languages
English (en)
Other versions
CN112221144A (zh
Inventor
汪梦毕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN202011211246.5A priority Critical patent/CN112221144B/zh
Publication of CN112221144A publication Critical patent/CN112221144A/zh
Application granted granted Critical
Publication of CN112221144B publication Critical patent/CN112221144B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/55Controlling game characters or game objects based on the game progress
    • A63F13/56Computing the motion of game characters with respect to other game characters, game objects or elements of the game scene, e.g. for simulating the behaviour of a group of virtual soldiers or for path finding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本公开涉及地图寻路技术领域,具体涉及一种三维场景寻路方法、一种三维场景地图处理方法、一种三维场景寻路装置、一种三维场景地图处理装置、一种计算机可读存储介质和一种电子设备。获取三维场景地图中多个目标位置;其中,所述三维场景地图划分了瓦片网格,所述瓦片网格包含多个基础网格;基于所述三维场景地图划分的基础网格,确定所述多个目标位置对应的多个目标基础网格;若所述多个目标基础网格属于同一子区域,则基于所述三维场景地图中瓦片网格的连通关系生成寻路路线。旨在提高大场景地图中的寻路效率,减少设备内存空间占用。

Description

三维场景寻路方法及装置、三维场景地图处理方法及装置
技术领域
本公开涉及地图寻路技术领域,具体涉及一种三维场景寻路方法、一种三维场景地图处理方法、一种三维场景寻路装置、一种三维场景地图处理装置、一种计算机可读存储介质和一种电子设备。
背景技术
在三维虚拟游戏场景中,可以根据寻路引擎实现虚拟对象的路径导航。随着开放大世界游戏的快速发展,游戏中的场景地图也呈现出越来越大的趋势。
现有技术中,针对三维虚拟场景地图中的寻路方案通常采用两种类型的方法:一类是传统或改进的A*算法,A*算法对小场景有着不错的路径搜索效率,但当游戏场景过大、对应的导航网格节点数据过多,起点和终点之间的距离很远时,A*搜索的效率就会降低;另一类是使用多边形寻路算法,但在导航网格表示时会消耗大量计算机内存。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种三维场景寻路方法、一种三维场景地图处理方法、一种三维场景寻路装置、一种三维场景地图处理装置、一种计算机可读存储介质和一种电子设备,旨在提高大场景地图中的寻路效率,减少设备内存空间占用。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开实施例的一个方面,提供了一种三维场景寻路方法,包括:获取三维场景地图中多个目标位置;其中,所述三维场景地图划分了瓦片网格,所述瓦片网格包含多个基础网格;基于所述三维场景地图划分的基础网格,确定所述多个目标位置对应的多个目标基础网格;若所述多个目标基础网格属于同一子区域,则基于所述三维场景地图中瓦片网格的连通关系生成寻路路线。
根据本公开的一些实施例,基于前述方案,所述方法还包括:预先对三维场景地图进行划分处理,所述划分处理包括:将所述三维场景地图在目标二维平面内划分为瓦片网格和基础网格;根据所述基础网格之间的路径关系构建所述基础网格的连通关系;根据所述基础网格的连通关系进行区域划分,得到若干个与基础网格具有映射关系的子区域;根据区域划分结果构建所述瓦片网格的连通关系。
根据本公开的一些实施例,基于前述方案,所述将所述三维场景地图在目标二维平面内划分为瓦片网格和基础网格,包括:将所述三维场景地图体素化处理,以获取底层导航网格;根据所述底层导航网格在目标二维平面内划分为瓦片网格和基础网格。
根据本公开的一些实施例,基于前述方案,所述根据所述基础网格之间的路径关系构建所述基础网格的连通关系,包括:确定所有基础网格的中心点;遍历基础网格,根据相邻基础网格中心点之间的路径关系构建所述基础网格的连通关系。
根据本公开的一些实施例,基于前述方案,所述确定所有基础网格的中心点,包括:选择基础网格中任一与所述底层导航网格数据存在映射关系的有效坐标点作为初始基础中心点;遍历所述基础网格中的有效坐标点,选取与所述初始基础中心点距离最近的有效坐标点,配置为基础网格中心点。
根据本公开的一些实施例,基于前述方案,所述根据所述基础网格的连通关系进行区域划分,得到若干个与基础网格具有映射关系的子区域,包括:遍历基础网格,根据相邻基础网格之间的连通关系进行区域划分;根据区域划分结果构建基础网格与子区域的映射关系;根据基础网格与瓦片网格的关系构建瓦片网格与子区域的映射关系。
根据本公开的一些实施例,基于前述方案,所述根据区域划分结果构建所述瓦片网格的连通关系,包括:确定所述子区域在瓦片网格中碎片区域的中心点;遍历瓦片网格,当相邻的瓦片网格包含属于同一子区域的碎片区域时,根据所述碎片区域的中心点之间的路径关系,构建瓦片网格的连通关系。
根据本公开的一些实施例,基于前述方案,所述方法还包括:预先确定所有瓦片网格的中心点,包括:选择瓦片网格中一个基础网格中心点作为初始瓦片中心点;遍历基础网格,选取与所述初始瓦片中心点距离最近的基础网格中心点,配置为瓦片网格的中心点。
根据本公开的一些实施例,基于前述方案,所述确定所述子区域在瓦片网格中碎片区域的中心点,包括:根据瓦片网格与子区域的映射关系得到瓦片网格中的碎片区域信息;在瓦片网格的碎片区域中,遍历基础网格,选取与瓦片网格中心点距离最近的基础网格中心点,配置为瓦片网格中碎片区域的中心点。
根据本公开的一些实施例,基于前述方案,所述基础网格与一个子区域存在映射关系,所述瓦片网格与一个或多个子区域存在映射关系。
根据本公开的一些实施例,基于前述方案,所述基于所述三维场景地图中瓦片网格的连通关系生成寻路路线,包括:根据所述三维场景地图中瓦片网格的连通关系,搜索所述多个目标位置的瓦片网格路径,并获取所述瓦片网格路径对应的瓦片网格路径节点;通过所述瓦片网格路径节点搜索底层导航网格数据的行走路径,以生成所述三维场景中的寻路路线。
根据本公开的一些实施例,基于前述方案,所述方法还包括:若所述多个目标基础网格不属于同一子区域,则不生成在所述三维场景地图中的寻路路线。
根据本公开实施例的第二个方面,提供了一种三维场景地图处理方法,包括:将三维场景地图在目标二维平面内划分为瓦片网格和基础网格;其中,每个所述瓦片网格包含多个所述基础网格;根据所述基础网格之间的路径关系构建所述基础网格的连通关系;根据所述基础网格的连通关系进行区域划分,得到若干个与基础网格具有映射关系的子区域;根据区域划分结果构建所述瓦片网格的连通关系。
根据本公开的一些实施例,基于前述方案,所述方法还包括:将所述三维场景地图在目标二维平面内划分为上层网格,其中所述上层网格包含若干个所述瓦片网格。
根据本公开实施例的第三个方面,提供了一种三维场景寻路装置,其特征在于,包括:数据获取模块,用于获取三维场景地图中多个目标位置;其中,所述三维场景地图划分了瓦片网格,所述瓦片网格包含多个基础网格;基础网格模块,用于基于所述三维场景地图划分的基础网格,确定所述多个目标位置对应的多个目标基础网格;场景寻路模块,用于若所述多个目标基础网格属于同一子区域,则基于所述三维场景地图中瓦片网格的连通关系生成寻路路线。
根据本公开实施例的第四个方面,提供了一种三维场景地图处理装置,其特征在于,包括:网格划分模块,用于将三维场景地图在目标二维平面内划分为瓦片网格和基础网格;其中,每个所述瓦片网格包含多个所述基础网格;第一连通模块,用于根据所述基础网格之间的路径关系构建所述基础网格的连通关系;区域划分模块,用于根据所述基础网格的连通关系进行区域划分,得到若干个与基础网格具有映射关系的子区域;第二连通模块,用于根据区域划分结果构建所述瓦片网格的连通关系。
根据本公开实施例的第五个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中所述的三维场景寻路方法,或者如上述实施例中所述的三维场景地图处理方法。
根据本公开实施例的第六个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中所述的三维场景寻路方法,或者实施例中所述的三维场景地图处理方法。
在本公开的一些实施例所提供的技术方案中,根据三维场景地图划分的基础网格确定多个目标位置对应的多个目标基础网格,若多个目标基础网格属于同一子区域,则基于三维场景地图中瓦片网格的连通关系生成寻路路线。本公开的技术方案能够基于对大场景地图进行多层网格划分后再进行寻路,一方面,寻路时可以先通过网格节点数较少的上层瓦片网格进行路径搜索,有利于提高大场景地图的寻路效率;另一方面,可以预先判断目标位置在同一子区域之后再进行寻路,从而避免目标位置无路径的计算浪费;再一方面,对大场景地图的基础网格进行聚合后形成瓦片网格,可以只存储少量的瓦片网格节点,寻路时大大减少了计算量和计算机内存消耗。从而在开放大世界游戏中能大大提高路径搜索效率,内存消耗也在可以接受的范围内。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1示意性示出了根据本公开的一个实施例的三维场景寻路方法的流程示意图;
图2示意性示出了根据本公开的一个实施例的三维场景地图处理方法的流程示意图;
图3示意性示出了根据本公开的一个实施例的在目标二维平面内划分为瓦片网格和基础网格的结果示意图;
图4示意性示出了根据本公开的一个实施例的区域划分结果示意图;
图5示意性示出了根据本公开的一个实施例的瓦片网格的示意图;
图6示意性示出了根据本公开的一个实施例的构建瓦片网格连通关系的流程示意图;
图7示意性示出了根据本公开的一个实施例的三维场景寻路的另一种流程示意图;
图8示意性示出了根据本公开的一个实施例的三维场景寻路装置的框图;
图9示意性示出了根据本公开的一个实施例的三维场景地图处理装置的框图;
图10示意性示出了根据本公开的一个实施例的计算机可读存储介质的示意图;
图11示意性示出了根据本公开的一个实施例的电子设备的计算机系统的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
随着开放大世界游戏近年来的快速发展和成长,游戏中的场景地图也呈现出越来越大的趋势,大场景地图具有场景规模巨大,尺度多变、结构不整等特点。
当前游戏中的寻路方案普遍采用基于导航网格的A*启发式寻路算法,该算法所采用的启发式搜索策略利用实际问题的启发信息来指导搜索,从而减少搜索范围,控制搜索规模,降低问题的复杂度,进而提高路径搜索效率。
A*算法的核心是设计一个代价评估函数:其中评估函数F(n)是从起始节点通过节点n的到达目标节点的最小代价路径的估计值,函数G(n)是从起始节点到n节点的已走过路径的实际代价,函数H(n)是从n节点到目标节点可能的最优路径的估计代价。函数H(n)表示算法使用的实际问题的启发信息,它来源于导航网格中对路径规划问题的认识,依赖某种经验估计。根据F(n)可以计算出当前节点的估计代价,并可以对下一次能够到达的节点进行评估。采用每次搜索都找到代价值最小的点继续往外搜索的过程,一步一步找到最优路径节点列表,最后根据搜索到的路径节点列表计算实际移动过程中的路径点列表就是最终的寻路路径。基于导航网格的A*算法一般有两个列表:open list和close list,open list存放已经搜索过的但尚未找到最短路径的节点,close list存放已经找到最短路径的节点。
A*算法在小场景、网格数据规模较小时有着不错的路径搜索效率,但当游戏场景过大,对应的导航网格节点更是几何级数的增长,open list和close list就需要非常大的存储空间来保存中间搜索结果,A*搜索的效率就会降低;同时,open list和close list还存在内存空间占用过大等问题,浪费计算机的内存空间。
在开放大世界游戏中,地图的场景规模巨大,导航网格的数据更是几何级数的增长,传统的基于导航网格的A*算法已经不能满足需求,不论从寻路算法效率还是从导航网格所占用计算机内存空间的角度考虑,传统的寻路方案都不适用于当前的开放大世界游戏。
并且,使用传统的基于导航网格的A*算法无法直接判断两个位置(如起点和终点)之间是否存在路径,必须完整搜索地图才能确定两个位置之间是否可达,存在计算资源浪费的问题。
针对以上问题,本公开的提供了一种三维场景寻路方法,可以预先将场景地图进行网格划分处理,再利用划分的网格进行寻路,从而提高寻路效率,减少设备内存空间占用,以满足3D开放大世界游戏中AI单位的寻路需求;另外,还可以快速判断选定的目标位置之间是否存在路径,当存在路径时进行下一步的寻路,若不存在路径则直接寻路结束,避免了计算资源的浪费。
在本公开的一个实施例中,三维场景也就是在平面二维系中又加入了一个方向向量构成的空间系,形成了人的视觉立体感。用于寻路的三维场景地图可以是规模巨大,尺度多变、结构不整的大场景地图。
图1示意性示出了根据本公开的一个实施例的三维场景寻路方法的流程示意图。如图1所示,本公开提供的三维场景寻路方法包括步骤S11至步骤S13:
S11,获取三维场景地图中多个目标位置;其中,所述三维场景地图划分了瓦片网格,所述瓦片网格包含多个基础网格;
S12,基于所述三维场景地图划分的基础网格,确定所述多个目标位置对应的多个目标基础网格;
S13,若所述多个目标基础网格属于同一子区域,则基于所述三维场景地图中瓦片网格的连通关系生成寻路路线。
在本公开的一些实施例所提供的技术方案中,根据三维场景地图划分的基础网格确定多个目标位置对应的多个目标基础网格,若多个目标基础网格属于同一子区域,则基于三维场景地图中瓦片网格的连通关系生成寻路路线。本公开的技术方案能够基于对大场景地图进行多层网格划分后再进行寻路,一方面,寻路时可以先通过网格节点数较少的上层瓦片网格进行路径搜索,有利于提高大场景地图的寻路效率;另一方面,可以预先判断目标位置在同一子区域之后再进行寻路,从而避免目标位置无路径的计算浪费;再一方面,对大场景地图的基础网格进行聚合后形成瓦片网格,可以只存储少量的瓦片网格节点,寻路时大大减少了计算量和计算机内存消耗。从而在开放大世界游戏中能大大提高路径搜索效率,内存消耗也在可以接受的范围内。
下面,将结合附图及实施例对本示例实施方式中的三维场景地图构建方法的各个步骤进行更详细的说明。
在步骤S11中,获取三维场景地图中多个目标位置;其中,所述三维场景地图划分了瓦片网格,所述瓦片网格包含多个基础网格。
在本公开的一个实施例中,多个目标位置可以是虚拟对象行走的起点和终点,还可以包括虚拟对象行走的多个途经点,本公开对多个目标位置的具体内容不做具体限定。
另外,获取的多个目标位置可以是用户在场景地图中输入的目标位置,也可以是三维场景地图路径规划时指定的目标位置。
在本公开的一个实施例中,在步骤S11之前,所述方法还包括:预先对三维场景地图进行处理。图2示意性示出了根据本公开的一个实施例的三维场景地图处理方法的流程示意图。对三维场景地图处理的具体步骤如下:
S21,将所述三维场景地图在目标二维平面内划分为瓦片网格和基础网格;
S22,根据所述基础网格之间的路径关系构建所述基础网格的连通关系;
S23,根据所述基础网格的连通关系进行区域划分,得到若干个与基础网格具有映射关系的子区域;
S24,根据区域划分结果构建所述瓦片网格的连通关系。
在步骤S21中,所述将所述三维场景地图在目标二维平面内划分为瓦片网格和基础网格,包括:
S211,将所述三维场景地图体素化处理,以获取底层导航网格。
在本公开的一个实施例中,采用体素化的方法能够对三维场景地图模型进行简化,得到均匀的网格,在求模型的测地线,求交等过程中有较好的应用。
具体而言,体素化过程可以包括以下内容:(一)体素化:将多边形网格数据抽象到一个表示障碍空间的高度场中,创建一个实心高度场;(二)生成区域:检测实心高度场的顶部表面积并将其划分为连续跨度的区域;(三)生成轮廓:检测区域的轮廓并将其形成简单的多边形;(四)生成多边形网格:将轮廓细分为凸多边形;(五)生成详细的网格:三角化多边形网格并添加高度细节。体素化的相关具体实施方法采用现有技术即可实现,本公开对体素化的具体过程不做特征限定。
另外,在获取底层导航网格时,包括但不局限于使用体素化的方法,本公开对将三维场景地图转化为底层导航网格的过程不做具体限定。
在本公开的一个实施例中,将所述三维场景地图体素化处理后得到底层导航网格。需要说明的是,底层导航网格数据位于三维笛卡尔坐标系xyz上,坐标轴为x轴、y轴和z轴,底层导航网格数据也就是三维场景对应的真实的坐标点数据。
S212,根据所述底层导航网格在目标二维平面内划分为瓦片网格和基础网格。
在本公开的一个实施例中,目标二维平面可以是三维笛卡尔坐标系中由x轴z轴组成的xoz二维平面。
在目标二维平面内划分网格时,可以按照形状进行网格划分,例如三角形、正方形、正六边形、菱形或不规则形状。图3示意性示出了根据本公开的一个实施例的在目标二维平面内划分为瓦片网格和基础网格的结果示意图,如图3所示,是按照正方形划分的瓦片网格和基础网格,网格均为正方形。
具体地,对于瓦片网格和基础网格的划分可以按照相同形状划分,瓦片网格的边长可以是基础网格边长的整数倍。参考图3的网格划分结果,左侧为按正方形划分的瓦片网格示意图,也可以称之为tile网格,是由多个正方形的瓦片网格组成,右侧为按正方形划分的基础网格示意图,也可以称之为grid网格,它们都是按照正方形进行的瓦片网格和基础网格的划分。
另外,也可以按照不同形状对瓦片网格和基础网格进行划分,例如,按照三角形划分瓦片网格,按照菱形划分基础网格,只要一个瓦片网格中包含有若干个基础网格即可。
在本公开的一个实施例中,将三维场景地图转化为底层导航网格后,在目标xoz二维平面内划分,得到了二维平面内若干个瓦片网格和基础网格。其中,每一个瓦片网格中包含了若干个基础网格,也就是一个基础网格只属于一个瓦片网格,以此可以构建基础网格与瓦片网格的映射关系。每个基础网格中包含了多个xoz平面上的坐标点,所以,可以根据xoz平面上的坐标点确定对应的基础网格。
在本公开的一个实施例中,所述方法还包括:将所述三维场景地图在目标二维平面内划分为上层网格,其中所述上层网格包含若干个所述瓦片网格。
具体而言,还可以将所述底层导航网格数据在目标二维平面内划分为上层网格,其中上层网格包含若干个所述瓦片网格。可例如,在划分网格时可以基于基础网格和瓦片网格的两层网格基础上再一次进行聚合,得到上层网格,再构建上层网格与子区域的映射关系以及上层网格之间的连通关系。
或者,还可以经过多次聚合得到多层网格地图,例如对上层网格在目标二维平面内再一次进行聚合,得到在上层网格,以此构建多层网格地图。本公开对多层不做具体限定,这些方法核心思想都是将基础网格聚合成更大的网格,并构建它们之间的连通关系以减少网格的数量,有利于进一步提高寻路效率。
通过预先将三维场景地图进行网格划分,可以基于划分结果计算网格间的连通关系用于寻路,在寻路时,仅需要搜索目标位置对应的最上层网格之间的路径,就可以得到真实的寻路路径。由于网格划分后聚合的网格节点与原底层网格数据相比,数据量大幅度减少,可以大大提高在大场景地图中的寻路效率。
在步骤S22中,所述根据所述基础网格之间的路径关系构建所述基础网格的连通关系,包括:
S221,确定所有基础网格的中心点。
具体地,确定所有基础网格的中心点可以包括以下内容:选择基础网格中任一与所述底层导航网格数据存在映射关系的有效坐标点作为初始基础中心点;遍历所述基础网格中的有效坐标点,选取与所述初始基础中心点距离最近的有效坐标点,配置为基础网格中心点。
在本公开的一个实施例中,选择初始基础中心点时,可以优先选择一个与基础网格的物理中心距离相近的有效坐标点,作为初始基础中心点。
需要说明的是,有效坐标点是指基础网格中的坐标点与底层导航网格数据的坐标点存在映射关系的坐标点。具体地,每个基础网格中包含了多个xoz平面上的坐标点,底层导航网格数据中有多个三维平面上的坐标点,当基础网格的坐标点与底层导航网格坐标点中x,z坐标相同,即基础网格中的坐标点与底层导航网格数据的坐标点存在映射关系,这样的坐标点可以记为有效坐标点;否则,若不存在映射关系,则记为无效坐标点,不能用作初始基础中心点。
在本公开的一个实施例中,配置基础网格中心点时,可以基于底层导航网格数据计算基础网格中的有效坐标点与初始基础中心点之间的距离。具体地,根据底层导航网格数据利用寻路算法搜索两个坐标点之间的路径,得到两点在三维坐标系中真实路径的距离,寻路算法有很多,可例如A*算法、凸多边形寻路算法。遍历基础网格中的有效坐标点,选取距离最短的有效坐标点配置为基础网格的中心点。
基于上述方法,就可以得到一个基础网格的中心点,根据同样的方法,遍历所有的基础网格,就可以得到所有基础网格的中心点。
S222,遍历基础网格,根据相邻基础网格中心点之间的路径关系构建所述基础网格的连通关系。
基础网格的连通关系是基于三维坐标系的连通性构建的,可以根据相邻的基础网格之间的连通关系来构建整个基础网格的连通关系,连通关系可以基于底层导航网格数据计算得到。
在本公开的一个实施例中,连通关系可以依据基础网格中心点之间的路径关系来判断。也就是说,相邻的基础网格在三维坐标系中是否存在真实的行走路径,若存在行走路径,则判断为相邻的基础网格之间连通,若不存在走路径,则判断为基础网格之间不连通。
具体地,基础网格中心点之间的路径关系可以通过层导航网格数据计算相邻的基础网格之间的连通关系。举例而言,选择两个相邻的基础网格,在确定这两个基础网格的中心点后,根据底层导航网格数据,利用寻路算法搜索这两个中心点坐标之间是否存在行走路径,若搜索成功,则对应的这两个相邻的基础网格是连通的,若搜索失败,则判断为不连通。
在二维平面内,基于上述方法依次判断每一个基础网格在xoz平面上与之相邻的8个基础网格是否连通,进而遍历所有的基础网格,从而分别得到各个基础网格间的连通关系。
由于大场景地图在开发后变动较小,所以对于划分之后的基础网格间的连通关系可以通过预处理得到,在寻路时直接使用,从而将计算过程提前处理,方便地图寻路以提高效率。
在步骤S23中,根据所述基础网格的连通关系进行区域划分,得到若干个与基础网格具有映射关系的子区域。
在本公开的一个实施例中,瓦片网格的连通关系是位于指定的二维平面中的连通关系,可以通过上述的基础网格的连通关系构建,具体过程可以包括以下内容:
S231,遍历基础网格,根据相邻基础网格之间的连通关系进行区域划分;
S232,根据区域划分结果构建基础网格与子区域的映射关系;
S233,根据基础网格与瓦片网格的关系构建瓦片网格与子区域的映射关系。
在步骤S231中,遍历基础网格,根据相邻基础网格之间的连通关系进行区域划分。
在本公开的一个实施例中,可以根据相邻基础网格之间的连通关系进行区域划分,若一个基础网格与其相邻的基础网格是连通的,那么这两个基础网格就属于同一子区域(region),具有相同的子区域编号(region id)信息。根据region id信息将拥有相同region id的基础网格划分为同一个子区域,遍历所有的基础网格,就可以得到在目标二维平面中划分出的多个子区域。
区域划分后得到了多个子区域,其中,每一个子区域中,各个基础网格之间是连通的。在游戏场景中,基础网格之间连通可以是虚拟对象可以在对应的三维场景中行走,也可以是虚拟对象使用角色技能从而实现三维场景中的运动,例如穿墙技能、游泳技能可以通过的地方,也可以视为基础网格连通。
图4示意性示出了根据本公开的一个实施例的区域划分结果示意图。参考图4所示,是将基础网格划分为region 1至region 4四个子区域,不同region id的子区域相互不连通。
在本公开的一个实施例中,对基础网格进行区域划分时,由于三维大场景下转化的基础网格规模较大,对应的基础网格数量也多,所以可以采用深度遍历算法进行遍历,可例如DFS算法,从而提高搜索效率。也可以使用其他算法,只要可以实现将基础网格划分为不同的连通区域,本公开对此不做具体限定。
在本公开的一个实施例中,还可以根据区域划分结果确定各子区域间的位置关系,然后基于子区域间的位置关系在目标三维场景地图中添加子区域相邻关系标识信息。
具体地,根据区域划分结果可以得到各子区域在基础网格中的位置关系,根据位置关系可以确定哪些子区域相邻,再将相邻关系标识信息存储到对应的相邻子区域中。这种方法可以得到子区域相邻关系标识信息,当两个区域之间不连通时,可以根据标识信息再次判断连通关系,避免连通关系构建错误,或是可以基于子区域相邻关系标识信息构建一个上位区域进行虚拟连通。
在步骤S232中,根据区域划分结果构建基础网格与子区域的映射关系。
在本公开的一个实施例中,基于基础网格的region id信息,将基础网格与对应的子区域之间构建映射关系。由于每个基础网格都对应一个region id信息,即一个基础网格属于一个子区域,那么基础网格只与一个子区域存在映射关系。
构建的基础网格与子区域的映射关系后可以预留查询接口,用于根据基础网格查询对应的子区域,进而可以通过查询结果得到不同基础网格对应的子区域信息是否相同,从而快速判断不同基础网格之间是否连通,从而帮助寻路。
在步骤S233中,根据基础网格与瓦片网格的关系构建瓦片网格与子区域的映射关系。
在本公开的另一个实施例中,构建瓦片网格与子区域的映射关系时,根据基础网格与子区域的映射关系以及瓦片网格对基础网格的包含关系,就可以构建瓦片网格与子区域的映射关系。具体地,每个瓦片网格包含多个基础网格,则瓦片网格与这些基础网格属于的子区域都有映射关系。
其中,瓦片网格可以与一个或多个子区域存在映射关系。图5示意性示出了根据本公开的一个实施例的瓦片网格的示意图,其中一个瓦片网格与三个子区域之间存在映射关系,分别构建该瓦片网格与R1、R2、R3的映射关系。
在本公开的一个实施例中,基于上述方法对三维场景地图进行网格划分结果后,所述基础网格与一个子区域存在映射关系,所述瓦片网格与一个或多个子区域存在映射关系。
在步骤S24中,根据区域划分结果构建所述瓦片网格的连通关系。
在进行步骤S24之前,所述方法还包括:预先确定所有瓦片网格的中心点,包括:选择瓦片网格中一个基础网格中心点作为初始瓦片中心点;遍历基础网格,选取与所述初始瓦片中心点距离最近的基础网格中心点,配置为瓦片网格的中心点。
在本公开的一个实施例中,选择初始瓦片中心点时,可以优先选择一个与瓦片网格的物理中心相近的基础网格中心点作为初始瓦片中心点时。
在选取与所述初始瓦片中心点距离最近的基础网格中心点时,距离最近是基于xoz二维平面上两点之间的距离。具体地,计算初始瓦片中心点坐标与基础网格中心点坐标之间的欧拉距离,遍历该瓦片网格中的基础网格,以此选择欧拉距离最近的基础网格中心点,配置为瓦片网格的中心点。
需要说明的是,与配置基础网格的中心点不同,瓦片网格的中心点是根据xoz二维坐标系上两点之间的距离最短确定的,而基础网格的中心点根据xyz三维坐标系上两点之间的三维距离最短确定的。
在步骤S24中,所述根据区域划分结果构建所述瓦片网格的连通关系,包括:
S241,确定所述子区域在瓦片网格中碎片区域的中心点。
在本公开的一个实施例中,所述确定所述子区域在瓦片网格中碎片区域的中心点,包括:根据瓦片网格与子区域的映射关系得到瓦片网格中的碎片区域信息;在瓦片网格的碎片区域中,遍历基础网格,选取与瓦片网格中心点距离最近的基础网格中心点,配置为瓦片网格中碎片区域的中心点。
参考图5所示,其中示出了一个瓦片网格与R1、R2、R3均存在映射关系。如图5所示,R1、R2、R3分别表示不同的region落在该瓦片网格的碎片区域,R1、R2、R3属于不同的region。即碎片区域是一个瓦片网格与子区域的重合区域,瓦片网格与多少个子区域存在映射关系,就有多少个碎片区域。瓦片网格中的各碎片区域信息可以根据瓦片网格与子区域的映射关系得到,即碎片区域信息包括:在该瓦片网格中碎片区域的形状,以及碎片区域对应的子区域,例如图5中,该碎片区域信息就是图5所示的碎片区域形状,以及各碎片区域对应的R1、R2、R3的region。
其中,每个瓦片网格中的各碎片区域信息直接存储在该瓦片网格中,在使用时仅需要加载该瓦片网格就可以得到瓦片网格中的各碎片区域信息。
在本公开的一个实施例中,选取与瓦片网格中心点距离最近的基础网格中心点时,距离最近是基于xoz二维平面上两点之间的距离。具体地,通过计算瓦片网格中心点坐标与基础网格中心点坐标之间的欧拉距离,遍历该瓦片网格中的基础网格,然后对得到的结果进行比较,以此选择欧拉距离最近的基础网格中心点,配置为瓦片网格中碎片区域的中心点。
S242,遍历瓦片网格,当相邻的瓦片网格包含属于同一子区域的碎片区域时,根据所述碎片区域的中心点之间的路径关系,构建瓦片网格的连通关系。
在本公开的一个实施例中,属于同一子区域的碎片区域虽然在一个子区域内,也就是依据基础网格的连通关系划分的子区域是相互连通的。但在网格划分之后,相邻的瓦片网格之间属于同一子区域的碎片区域不一定是连通的,还需要通过计算来判断。
举例来说,同一子区域中的一个碎片区域在一个瓦片网格的左侧,而另一个碎片区域在该瓦片网格相邻的瓦片网格的右侧,并且两个碎片区域没有相邻,虽然这两个碎片区域可以通过这两个瓦片网格下方的两个瓦片网格连通,但这两个瓦片网格中的碎片区域通过计算后是不连通的。
需要说明的是,当相邻的瓦片网格包含属于同一子区域的碎片区域时,再对属于同一子区域的碎片区域间的连通关系进行判断,当任一碎片区域间连通,则瓦片网格之间是连通的。例如,一个瓦片网格与R1、R2、R3存在映射关系,相邻的一个瓦片网格与R1、R2存在映射关系,仅判断两个瓦片网格中分别对应的两个R1碎片区域和R2碎片区域之间的连通关系,R1碎片区域和R2碎片区域中任一碎片区域连通,则这两个瓦片网格连通的。
在本公开的一个实施例中,根据两个碎片区域的中心点之间的路径关系判断连通关系时,路径关系是指中心点之间在三维坐标系中是否存在真实的路径,可以基于底层导航网格数据计算结果得到。
具体地,选择这两个碎片区域的中心点,根据底层导航网格数据利用寻路算法搜索这两个中心点的坐标点之间是否存在路径,若存在路径,则这两个碎片区域是连通的,若不存在路径,则两个碎片区域是不连通的。基于上述方法,依次判断瓦片网格在xoz平面上与之相邻的8个瓦片网格是否连通。
在本公开的一个实施例中,还可以根据区域划分结果确定各子区域间的位置关系;基于子区域间的位置关系在目标三维场景地图中添加子区域相邻关系标识信息。
具体地,根据区域划分结果可以得到各子区域在基础网格中的位置关系,根据位置关系可以确定哪些子区域相邻,再将相邻关系标识信息存储到对应的相邻子区域中。这种方法可以得到子区域相邻关系标识信息,当两个区域之间不连通时,可以根据标识信息再次判断连通关系,避免连通关系构建错误,或是可以基于子区域相邻关系标识信息构建一个上位区域进行虚拟连通。
在本公开的一个实施例中,对三维场景地图处理之后至少可以得到以下信息:划分的基础网格和瓦片网格、基础网格的连通关系、区域划分的结果、基础网格与划分的子区域的映射关系、瓦片网格与划分的子区域的映射关系、基础网格与瓦片网格的映射关系、瓦片网格的连通关系。
图6示意性示出了根据本公开的一个实施例的构建瓦片网格连通关系的流程示意图。如图6所示,在步骤S601中,将三维场景数据转换为底层导航网格数据;在步骤S602中,进行tile网格和grid网格划分;在在步骤S603中,构建grid网格连通关系;在步骤S604中,基于grid网格区域划分;在步骤S605中,得到grid网格的分区信息;在步骤S606中,构建tile网格连通关系。
综上所述,本公开提供的方法对三维场景地图进行处理,将原始三维场景地图转换得到的底层导航网格数据后,在指定的一个目标二维平面内划分基础网格,再将基础网格聚合为上层的瓦片网格,并通过底层导航网格的连通关系确定划分的瓦片网格的连通关系。在场景寻路时,使用处理后的三维场景地图进行寻路,可以通过上层的瓦片网格连通关系进行寻路,大大提高了寻路效率;另一方面,将庞大的三维场景地图数据转换成存储聚合后的网格节点,也可以大幅度的减少存储的内容信息,可以进一步减少计算机的内存消耗。
另外,在构建上层的瓦片网格连通关系时,首先基于三维坐标系中的底层导航网格数据,利用寻路算法构建基础网格的连通关系,以确保连通关系构建准确;然后将三维地图数据转换为指定二维平面内的地图数据关系,基于基础网格的连通关系,在二维平面内进行区域划分以及瓦片网格连通关系的构建,从而降低了计算复杂度,同时,由于开发的大场景地图改动通常不大,所以预先对地图处理可以减少寻路时的计算消耗。
S12,基于所述三维场景地图划分的基础网格,确定所述多个目标位置对应的多个目标基础网格。
在本公开的一个实施例中,获取的多个目标位置是在目标三维场景中的底层导航网格数据中的三维坐标数据,也就是三维场景地图中真实存在的坐标点。
首先,根据多个目标位置在底层导航网格数据中的三维坐标数据,将其三维坐标投影到xoz二维平面,得到对应的二维坐标点;然后,根据二维坐标点判断属于哪一个基础网格中,从而得到多个目标位置对应的基础网格。
S13,若所述多个目标基础网格属于同一子区域,则基于所述三维场景地图中瓦片网格的连通关系生成寻路路线。
在本公开的一个实施例中,基础网格的区域关系可以根据三维场景地图的处理结果得到,由于处理后可以得到基础网格与划分的子区域的映射关系,因此,根据多个目标位置分别查找对应的子区域,得到region id信息,再根据region id信息是否相同,判断多个目标基础网格是否属于同一子区域。具体而言,区域关系包含两种情况,一种是多个目标位置映射的子区域相同,即起点和终点在同一子区域,另一种是多个目标位置映射的子区域不同,即起点和终点不在同一子区域。
在本公开的一个实施例中,基于所述区域关系生成在所述目标三维场景中的寻路路线时,根据区域关系中起点和终点是否在同一子区域可以有多种处理结果:
处理结果可例如,若所述多个目标基础网格属于同一子区域,则基于所述三维场景地图中瓦片网格的连通关系生成寻路路线。
在本公开的一个实施例中,所述基于所述三维场景地图中瓦片网格的连通关系生成寻路路线,包括:
步骤S131,根据所述三维场景地图中瓦片网格的连通关系,搜索所述多个目标位置的瓦片网格路径,并获取所述瓦片网格路径对应的瓦片网格路径节点。
由于已经确定了多个目标位置对应的目标基础网格,所以,首先根据基础网格与瓦片网格的映射关系就可以得到多个目标位置对应的瓦片网格;然后,根据所述三维场景地图中瓦片网格的连通关系,搜索多个目标位置的瓦片网格路径,搜索时可以采用寻路算法搜索最短行走路径,例如A*算法等;最后,根据瓦片网格路径经过的所有瓦片网格,就可以获取对应的瓦片网格路径节点,其中,瓦片网格路径节点是指行走路径对应的瓦片网格的中心点。
步骤S132,通过所述瓦片网格路径节点搜索底层导航网格数据的行走路径,以生成所述三维场景中的寻路路线。
通过所述瓦片网格路径节点搜索所述底层导航网格数据的行走路径时,根据瓦片网格路径节点得到xoz二维平面的有效坐标点,将有效坐标点映射到底层导航网格数据中,基于映射的底层导航网格数据采用寻路算法得到最短行走路径,寻路算法可以是A*算法。
处理结果还可例如,若所述多个目标基础网格不属于同一子区域,则不生成在所述三维场景地图中的寻路路线。
处理结果还可例如,若所述起点和终点不在同一区域,根据子区域的相邻关系标识信息确定两子区域相邻时,则利用所述子区域对应的网格对应的连通关系构建上位区域;基于所述上位区域内瓦片网格的连通关系搜索所述起点和终点间的行走路径,并获取所述行走路径对应的瓦片网格路径节点;通过所述瓦片网格路径节点搜索所述底层导航网格数据的行走路径生成所述三维场景中的寻路路线。
图7示意性示出了根据本公开的一个实施例的三维场景寻路的另一种流程示意图。参考图7,在步骤S701中,输入起点和终点;在步骤S702中,计算起点和终点所在的区域;在步骤S703中,对起点和终点是否属于同一区域进行判断,若是则执行步骤S704,若不是则直接结束;在步骤S704中,上层tile网格之间搜索路径节点;在步骤S705中,两个tile路径节点之间搜索底层导航网格路径节点,以生成寻路路线。
综上所述,本公开提供的三维场景寻路方法,通过处理的三维场景地图可以首先对目标位置是否存在路径进行快速判断,若可达,再进行三维场景寻路,若不可达,可以直接寻路结束,避免了无效计算造成的浪费。
另外,由于对三维场景地图在指定二维平面上划分了多层网格,寻路时可以通过对上层的瓦片网格进行路径节点搜索后,再对瓦片网格对应的底层导航网格中的路径节点的行走路径进行计算,能够大大减少大场景地图寻路的计算量,进而提高寻路效率。
应当注意,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
图8示意性示出了根据本公开的一个实施例的三维场景寻路装置的框图。参照图8所示,该三维场景寻路装置800可以包括数据获取模块801、基础网格模块802以及场景寻路模块803。
数据获取模块801,用于获取三维场景地图中多个目标位置;其中,所述三维场景地图划分了瓦片网格,所述瓦片网格包含多个基础网格;
基础网格模块802,用于基于所述三维场景地图划分的基础网格,确定所述多个目标位置对应的多个目标基础网格;
场景寻路模块803,用于若所述多个目标基础网格属于同一子区域,则基于所述三维场景地图中瓦片网格的连通关系生成寻路路线。
根据本公开的示例性实施例,所述三维场景寻路装置800还包括地图处理模块(图中未示出),用于将所述三维场景地图在目标二维平面内划分为瓦片网格和基础网格;根据所述基础网格之间的路径关系构建所述基础网格的连通关系;根据所述基础网格的连通关系进行区域划分,得到若干个与基础网格具有映射关系的子区域;根据区域划分结果构建所述瓦片网格的连通关系。
所述地图处理模块还包括划分单元,用于将所述三维场景地图体素化处理,以获取底层导航网格;根据所述底层导航网格在目标二维平面内划分为瓦片网格和基础网格。
所述地图处理模块还包括基础连通单元,用于确定所有基础网格的中心点;遍历基础网格,根据相邻基础网格中心点之间的路径关系构建所述基础网格的连通关系。
所述地图处理模块还包括基础中心点单元,用于选择基础网格中任一与所述底层导航网格数据存在映射关系的有效坐标点作为初始基础中心点;遍历所述基础网格中的有效坐标点,选取与所述初始基础中心点距离最近的有效坐标点,配置为基础网格中心点。
所述地图处理模块还包括子区域单元,用于遍历基础网格,根据相邻基础网格之间的连通关系进行区域划分;根据区域划分结果构建基础网格与子区域的映射关系;根据基础网格与瓦片网格的关系构建瓦片网格与子区域的映射关系。
所述地图处理模块还包括瓦片连通单元,用于确定所述子区域在瓦片网格中碎片区域的中心点;遍历瓦片网格,当相邻的瓦片网格包含属于同一子区域的碎片区域时,根据所述碎片区域的中心点之间的路径关系,构建瓦片网格的连通关系。
所述地图处理模块还包括瓦片中心点单元,根据瓦片网格与子区域的映射关系得到瓦片网格中的碎片区域信息;在瓦片网格的碎片区域中,遍历基础网格,选取与瓦片网格中心点距离最近的基础网格中心点,配置为瓦片网格中碎片区域的中心点。
根据本公开的示例性实施例,所述基础网格与一个子区域存在映射关系,所述瓦片网格与一个或多个子区域存在映射关系。
根据本公开的示例性实施例,所述场景寻路模块803包括生成路线单元(图中未示出),用于根据所述三维场景地图中瓦片网格的连通关系,搜索所述多个目标位置的瓦片网格路径,并获取所述瓦片网格路径对应的瓦片网格路径节点;通过所述瓦片网格路径节点搜索底层导航网格数据的行走路径,以生成所述三维场景中的寻路路线。
根据本公开的示例性实施例,所述方法还包括:若所述多个目标基础网格不属于同一子区域,则不生成在所述三维场景地图中的寻路路线。
图9示意性示出了根据本公开的一个实施例的三维场景地图处理装置的框图。参照图9所示,该三维场景地图处理装置900可以包括网格划分模块901、第一连通模块902、区域划分模块903以及第二连通模块904。
网格划分模块901,用于将三维场景地图在目标二维平面内划分为瓦片网格和基础网格;其中,每个所述瓦片网格包含多个所述基础网格;
第一连通模块902,用于根据所述基础网格之间的路径关系构建所述基础网格的连通关系;
区域划分模块903,用于根据所述基础网格的连通关系进行区域划分,得到若干个与基础网格具有映射关系的子区域;
第二连通模块904,用于根据区域划分结果构建所述瓦片网格的连通关系。
根据本公开的示例性实施例,所述方法还包括:将所述三维场景地图在目标二维平面内划分为上层网格,其中所述上层网格包含若干个所述瓦片网格。
上述的三维场景寻路装置800和三维场景地图处理装置900中各模块的具体细节已经在对应的三维场景寻路方法和三维场景地图处理方法中进行了详细的描述,因此此处不再赘述。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
在本公开的示例性实施例中,还提供了一种能够实现上述方法的计算机可读存储介质。图10示意性示出了根据本公开的一个实施例的计算机可读存储介质的示意图。参考图10所示,描述了根据本公开的实施方式的用于实现上述方法的程序产品1000,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如电脑上运行。然而,本公开的程序产品不限于此,在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。图11示意性示出了根据本公开的一个实施例的电子设备的计算机系统的结构示意图。
需要说明的是,图11示出的电子设备的计算机系统1100仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图11所示,计算机系统1100包括中央处理单元(Central Processing Unit,CPU)1101,其可以根据存储在只读存储器(Read-Only Memory,ROM)1102中的程序或者从存储部分1108加载到随机访问存储器(Random Access Memory,RAM)1103中的程序而执行各种适当的动作和处理。在RAM 1103中,还存储有系统操作所需的各种程序和数据。CPU1101、ROM 1102以及RAM 1103通过总线1104彼此相连。输入/输出(Input/Output,I/O)接口1105也连接至总线1104。
以下部件连接至I/O接口1105:包括键盘、鼠标等的输入部分1106;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分1107;包括硬盘等的存储部分1108;以及包括诸如LAN(Local AreaNetwork,局域网)卡、调制解调器等的网络接口卡的通信部分1109。通信部分1109经由诸如因特网的网络执行通信处理。驱动器1110也根据需要连接至I/O接口1105。可拆卸介质1111,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1110上,以便于从其上读出的计算机程序根据需要被安装入存储部分1108。
特别地,根据本公开的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1109从网络上被下载和安装,和/或从可拆卸介质1111被安装。在该计算机程序被中央处理单元(CPU)1101执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本公开实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现上述实施例中所述的方法。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本公开实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (17)

1.一种三维场景寻路方法,其特征在于,包括:
将三维场景地图在目标二维平面内划分为瓦片网格和基础网格;其中,所述瓦片网格包含多个基础网格;
根据所述基础网格之间的路径关系构建所述基础网格的连通关系;
根据所述基础网格的连通关系进行区域划分,得到若干个与基础网格具有映射关系的子区域;
根据区域划分结果构建所述瓦片网格的连通关系;其中,当相邻的瓦片网格包含属于同一子区域的碎片区域时,所述相邻的瓦片网格具有连通关系;所述碎片区域是一个所述瓦片网格与所述子区域的重合区域;
获取所述三维场景地图中多个目标位置;
基于所述三维场景地图划分的基础网格,确定所述多个目标位置对应的多个目标基础网格;
若所述多个目标基础网格属于同一子区域,则基于所述三维场景地图中瓦片网格的连通关系生成寻路路线。
2.根据权利要求1所述的三维场景寻路方法,其特征在于,所述将三维场景地图在目标二维平面内划分为瓦片网格和基础网格,包括:
将所述三维场景地图体素化处理,以获取底层导航网格;
根据所述底层导航网格在目标二维平面内划分为瓦片网格和基础网格。
3.根据权利要求1所述的三维场景寻路方法,其特征在于,所述根据所述基础网格之间的路径关系构建所述基础网格的连通关系,包括:
确定所有基础网格的中心点;
遍历基础网格,根据相邻基础网格中心点之间的路径关系构建所述基础网格的连通关系。
4.根据权利要求3所述的三维场景寻路方法,其特征在于,所述确定所有基础网格的中心点,包括:
选择基础网格中任一与底层导航网格数据存在映射关系的有效坐标点作为初始基础中心点;
遍历所述基础网格中的有效坐标点,选取与所述初始基础中心点距离最近的有效坐标点,配置为基础网格中心点。
5.根据权利要求1所述的三维场景寻路方法,其特征在于,所述根据所述基础网格的连通关系进行区域划分,得到若干个与基础网格具有映射关系的子区域,包括:
遍历基础网格,根据相邻基础网格之间的连通关系进行区域划分;
根据区域划分结果构建基础网格与子区域的映射关系;
根据基础网格与瓦片网格的关系构建瓦片网格与子区域的映射关系。
6.根据权利要求5所述的三维场景寻路方法,其特征在于,所述根据区域划分结果构建所述瓦片网格的连通关系,包括:
确定所述子区域在瓦片网格中碎片区域的中心点;
遍历瓦片网格,当相邻的瓦片网格包含属于同一子区域的碎片区域时,根据所述碎片区域的中心点之间的路径关系,构建瓦片网格的连通关系。
7.根据权利要求1所述的三维场景寻路方法,其特征在于,所述方法还包括:预先确定所有瓦片网格的中心点,包括:
选择瓦片网格中一个基础网格中心点作为初始瓦片中心点;
遍历基础网格,选取与所述初始瓦片中心点距离最近的基础网格中心点,配置为瓦片网格的中心点。
8.根据权利要求1所述的三维场景寻路方法,其特征在于,所述确定所述子区域在瓦片网格中碎片区域的中心点,包括:
根据瓦片网格与子区域的映射关系得到瓦片网格中的碎片区域信息;
在瓦片网格的碎片区域中,遍历基础网格,选取与瓦片网格中心点距离最近的基础网格中心点,配置为瓦片网格中碎片区域的中心点。
9.根据权利要求1所述的三维场景寻路方法,其特征在于,所述基础网格与一个子区域存在映射关系,所述瓦片网格与一个或多个子区域存在映射关系。
10.根据权利要求1所述的三维场景寻路方法,其特征在于,所述基于所述三维场景地图中瓦片网格的连通关系生成寻路路线,包括:
根据所述三维场景地图中瓦片网格的连通关系,搜索所述多个目标位置的瓦片网格路径,并获取所述瓦片网格路径对应的瓦片网格路径节点;
通过所述瓦片网格路径节点搜索底层导航网格数据的行走路径,以生成所述三维场景中的寻路路线。
11.根据权利要求1所述的三维场景寻路方法,其特征在于,所述方法还包括:
若所述多个目标基础网格不属于同一子区域,则不生成在所述三维场景地图中的寻路路线。
12.一种三维场景地图处理方法,其特征在于,包括:
将三维场景地图在目标二维平面内划分为瓦片网格和基础网格;其中,每个所述瓦片网格包含多个所述基础网格;
根据所述基础网格之间的路径关系构建所述基础网格的连通关系;
根据所述基础网格的连通关系进行区域划分,得到若干个与基础网格具有映射关系的子区域;
根据区域划分结果构建所述瓦片网格的连通关系;其中,当相邻的瓦片网格包含属于同一子区域的碎片区域时,所述相邻的瓦片网格具有连通关系;所述碎片区域是一个所述瓦片网格与所述子区域的重合区域。
13.根据权利要求12所述的三维场景地图处理方法,其特征在于,所述方法还包括:
将所述三维场景地图在目标二维平面内划分为上层网格,其中所述上层网格包含若干个所述瓦片网格。
14.一种三维场景寻路装置,其特征在于,包括:
地图处理模块,用于将三维场景地图在目标二维平面内划分为瓦片网格和基础网格;其中,所述瓦片网格包含多个基础网格;根据所述基础网格之间的路径关系构建所述基础网格的连通关系;根据所述基础网格的连通关系进行区域划分,得到若干个与基础网格具有映射关系的子区域;根据区域划分结果构建所述瓦片网格的连通关系;其中,当相邻的瓦片网格包含属于同一子区域的碎片区域时,所述相邻的瓦片网格具有连通关系;所述碎片区域是一个所述瓦片网格与所述子区域的重合区域;
数据获取模块,用于获取三维场景地图中多个目标位置;
基础网格模块,用于基于所述三维场景地图划分的基础网格,确定所述多个目标位置对应的多个目标基础网格;
场景寻路模块,用于若所述多个目标基础网格属于同一子区域,则基于所述三维场景地图中瓦片网格的连通关系生成寻路路线。
15.一种三维场景地图处理装置,其特征在于,包括:
网格划分模块,用于将三维场景地图在目标二维平面内划分为瓦片网格和基础网格;其中,每个所述瓦片网格包含多个所述基础网格;
第一连通模块,用于根据所述基础网格之间的路径关系构建所述基础网格的连通关系;
区域划分模块,用于根据所述基础网格的连通关系进行区域划分,得到若干个与基础网格具有映射关系的子区域;
第二连通模块,用于根据区域划分结果构建所述瓦片网格的连通关系;其中,当相邻的瓦片网格包含属于同一子区域的碎片区域时,所述相邻的瓦片网格具有连通关系;所述碎片区域是一个所述瓦片网格与所述子区域的重合区域。
16.一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如权利要求1至11任一项所述的三维场景寻路方法,或者如权利要求12至13任一项所述的三维场景地图处理方法。
17.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至11任一项所述的三维场景寻路方法,或者如权利要求12至13任一项所述的三维场景地图处理方法。
CN202011211246.5A 2020-11-03 2020-11-03 三维场景寻路方法及装置、三维场景地图处理方法及装置 Active CN112221144B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011211246.5A CN112221144B (zh) 2020-11-03 2020-11-03 三维场景寻路方法及装置、三维场景地图处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011211246.5A CN112221144B (zh) 2020-11-03 2020-11-03 三维场景寻路方法及装置、三维场景地图处理方法及装置

Publications (2)

Publication Number Publication Date
CN112221144A CN112221144A (zh) 2021-01-15
CN112221144B true CN112221144B (zh) 2024-03-15

Family

ID=74122717

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011211246.5A Active CN112221144B (zh) 2020-11-03 2020-11-03 三维场景寻路方法及装置、三维场景地图处理方法及装置

Country Status (1)

Country Link
CN (1) CN112221144B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114470776B (zh) * 2022-04-02 2022-07-08 北京优锘科技有限公司 一种高效分级寻路方法、装置、介质和设备
CN116943201A (zh) * 2022-04-18 2023-10-27 深圳市腾讯网域计算机网络有限公司 寻路数据的生成方法、寻路方法以及计算机设备
CN115501607A (zh) * 2022-08-23 2022-12-23 网易(杭州)网络有限公司 寻路图的重建方法、装置和电子设备
CN117172399B (zh) * 2023-11-02 2024-03-15 成都飞机工业(集团)有限责任公司 一种基于启发式算法的自动铺丝轨迹规划方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101777093A (zh) * 2009-12-25 2010-07-14 电子科技大学 一种大规模虚拟人群寻径方法
CN107423445A (zh) * 2017-08-10 2017-12-01 腾讯科技(深圳)有限公司 一种地图数据处理方法、装置及存储介质
CN108090155A (zh) * 2017-12-12 2018-05-29 苏州蜗牛数字科技股份有限公司 一种2d网格寻路方法、装置及存储介质
CN109242862A (zh) * 2018-09-08 2019-01-18 西北工业大学 一种实时的数字表面模型生成方法
CN110772791A (zh) * 2019-11-05 2020-02-11 网易(杭州)网络有限公司 三维游戏场景的路线生成方法、装置和存储介质
CN110812844A (zh) * 2019-11-06 2020-02-21 网易(杭州)网络有限公司 一种游戏中的寻路方法、终端及可读存储介质
CN111714892A (zh) * 2020-06-29 2020-09-29 天津亚克互动科技有限公司 游戏寻路方法及装置、存储介质、计算机设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7869946B2 (en) * 2005-02-04 2011-01-11 Microsoft Corporation Efficient navigation routing system and method

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101777093A (zh) * 2009-12-25 2010-07-14 电子科技大学 一种大规模虚拟人群寻径方法
CN107423445A (zh) * 2017-08-10 2017-12-01 腾讯科技(深圳)有限公司 一种地图数据处理方法、装置及存储介质
CN108090155A (zh) * 2017-12-12 2018-05-29 苏州蜗牛数字科技股份有限公司 一种2d网格寻路方法、装置及存储介质
CN109242862A (zh) * 2018-09-08 2019-01-18 西北工业大学 一种实时的数字表面模型生成方法
CN110772791A (zh) * 2019-11-05 2020-02-11 网易(杭州)网络有限公司 三维游戏场景的路线生成方法、装置和存储介质
CN110812844A (zh) * 2019-11-06 2020-02-21 网易(杭州)网络有限公司 一种游戏中的寻路方法、终端及可读存储介质
CN111714892A (zh) * 2020-06-29 2020-09-29 天津亚克互动科技有限公司 游戏寻路方法及装置、存储介质、计算机设备

Also Published As

Publication number Publication date
CN112221144A (zh) 2021-01-15

Similar Documents

Publication Publication Date Title
CN112221144B (zh) 三维场景寻路方法及装置、三维场景地图处理方法及装置
Abd Algfoor et al. A comprehensive study on pathfinding techniques for robotics and video games
Botea et al. Pathfinding in games
CN111080786B (zh) 基于bim的室内地图模型构建方法及装置
Botea et al. Near optimal hierarchical path-finding.
CN110909961B (zh) 基于bim的室内路径查询方法及装置
WO2009092327A1 (zh) 一种地图寻路方法及系统
CN106156138B (zh) 兴趣点的空间索引的建立、周边搜索方法和装置
CN103778191B (zh) 一种顾及空间邻近关系的矢量等高线数据划分方法
CN101510225A (zh) 产品stl模型布尔运算方法
CN109374005B (zh) 一种基于船舶vr模型的船舶内部路径规划方法
Aguilar et al. On the performance and scalability of an HPC enhanced multi agent system based evacuation simulator
Boysen et al. A journey from IFC files to indoor navigation
CN114485611A (zh) 基于北斗网格码的三维空间最短路径规划方法和装置
CN113706715B (zh) 一种随机可控城市生成方法
CN114777793A (zh) 一种面向任意导航主体的bim地图提取及路径规划方法
CN117516562B (zh) 一种路网处理方法和相关装置
Rivara Lepp-bisection algorithms, applications and mathematical properties
CN104217580A (zh) 面向车辆群组动画的路网语义建模方法及系统
CN104090945A (zh) 一种地理空间实体构建方法及系统
CN116764225A (zh) 一种高效寻路的处理方法、装置、设备及介质
CN112149287B (zh) 一种面向负载均衡的交通仿真路网图形化分割方法及系统
Aleksandrov et al. An approximation algorithm for computing shortest paths in weighted 3-d domains
CN108731688A (zh) 导航方法和装置
CN114510053A (zh) 机器人规划路径校验方法、装置、存储介质及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant