掌桥专利:专业的专利平台
掌桥专利
首页

寻路地图的生成方法、装置、计算机设备和存储介质

文献发布时间:2023-06-19 19:30:30


寻路地图的生成方法、装置、计算机设备和存储介质

技术领域

本申请涉及游戏技术领域,具体涉及寻路地图的生成方法、装置、计算机设备和存储介质。

背景技术

近年来,随着游戏技术的发展,游戏内容越来越多样化,逐渐丰富用户的日常生活。在一些游戏的游戏场景中,可以通过控制虚拟对象实时在游戏场景中移动,例如,虚拟对象可以为游戏拟人AI(人工智能)对象。

在现有3D游戏中,通常都是基于寻路地图控制游戏对象移动,寻路地图是由三维场景中的数据生成。然而,在复杂的三维场景中,场景中的数据也较为复杂,生成寻路地图的耗时长。

发明内容

本申请实施例提供寻路地图的生成方法、装置、计算机设备和存储介质,可以提升生成寻路地图的效率。

本申请实施例提供一种寻路地图的生成方法,包括:将三维场景中的场景网格转换为体素模型,所述体素模型包括多个场景体素;通过对所述场景体素进行变换处理,填充所述体素模型的空隙,得到填充后的体素模型;由所述填充后的体素模型,生成寻路地图。

本申请实施例还提供一种寻路地图的生成装置,包括:转换单元,用于将三维场景中的场景网格转换为体素模型,所述体素模型包括多个场景体素;填充单元,用于所述通过对所述场景体素进行变换处理,填充所述体素模型的空隙,得到填充后的体素模型;生成单元,用于由所述填充后的体素模型,生成寻路地图。

本申请实施例还提供一种计算机设备,包括处理器和存储器,所述存储器存储有多条指令;所述处理器从所述存储器中加载指令,以执行本申请实施例所提供的任一种寻路地图的生成方法中的步骤。

本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本申请实施例所提供的任一种寻路地图的生成方法中的步骤。

本申请实施例可以将三维场景中的场景网格转换为体素模型,所述体素模型包括多个场景体素;通过对所述场景体素进行变换处理,填充所述体素模型的空隙,得到填充后的体素模型;由所述填充后的体素模型,生成寻路地图。

在本申请中,通过填充体素模型中的空隙,可以使体素模型的形状更加紧实、规整,便于区分体素模型中的可行走区域,提升生成寻路地图的效率。此外,通过对场景体素进行变换处理,填充所述体素模型的空隙,在填充体素模型后,由于空隙消失,体素模型中相邻的两个场景体素的至少一个面在三维场景中的空间位置一致,以此可以减少相邻场景体素空间位置的差异,以便减少数据存储量,便于后续使用过程的调用,进一步提升生成寻路地图的效率。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1a是本申请实施例提供的寻路地图的生成方法的场景示意图;

图1b是本申请实施例提供的寻路地图的生成方法的流程示意图;

图1c是本申请实施例提供的将多边形网格切割得到体素格子的示意图;

图1d是本申请实施例提供的体素化处理的示意图;

图1e是本申请实施例提供的第一场景体素和第二场景体素的示意图;

图1f是本申请实施例提供使用第三场景体素填充空隙的示意图;

图1g是本申请实施例提供的对体素模型进行底部空隙填充的示意图;

图2a是本申请另一个实施例提供的寻路地图的生成方法的流程示意图;

图2b是本申请实施例提供的将场景网格转换为体素模型的示意图;

图2c是本申请实施例提供的对三维场景中的盒子形状进行填充的示意图;

图2d是本申请实施例提供的由填充后的体素模型生成寻路地图的示意图;

图2e是本申请实施例提供的添加动态体素的示意图;

图3是本申请实施例提供的寻路地图的生成装置的结构示意图;

图4是本申请实施例提供的计算机设备的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

在对本申请实施例进行详细地解释说明之前,先对本申请实施例涉及到的一些名词进行解释说明。

其中,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种概念,但除非特别说明,这些概念不受这些术语限制。这些术语仅用于将一个概念与另一个概念区分。其中,至少一个是指一个或一个以上,例如,至少一个用户可以是一个用户、两个用户、三个用户等任意大于等于一的整数个用户。而多个是指两个或者两个以上,例如,多个用户可以是两个用户、三个用户等任意大于等于二的整数个用户。

其中,三维场景:是应用程序在终端上运行时显示(或提供)的三维游戏场景。该游戏场景可以是对真实世界的仿真环境,也可以是半仿真半虚构的虚拟环境,还可以是纯虚构的虚拟环境。例如,游戏场景可以包括天空、陆地、海洋等,该陆地可以包括沙漠、城市等环境元素,用户可以控制游戏角色在该游戏场景中进行移动,游戏场景还可以包括位于该游戏场景中的道路、建筑物、装饰物等。

其中,寻路:是基于地图特征,将其抽象成计算机的数据结构,然后通过合适的算法,求出可行路径的过程。

其中,寻路地图:寻路地图可以指由多个多边形网格组成的、能够存储可行走区域的网格信息的地图。

其中,体素:是体积元素(Volume Pixel)的简称,是数字数据于三维空间分割上的最小单位。概念类似二维空间的最小单位像素,像素用在二维计算机图像的影像数据上。

其中,体素模型:是指采用大量规则体素(如立方体)的有序组合来表示三维物体的模型。

其中,虚拟物体:是指游戏中的物体。该虚拟物体可以是道路、建筑物、装饰物、地形模型等。其中、地形模型可以包括平原、森林、草原、沼泽、山体等地形的模型。

其中,虚拟对象:是指在游戏场用于模拟人物或动物的对象。该虚拟对象可以是虚拟人物、虚拟动物、动漫人物等。例如,在游戏场景中显示的人物、动物。该虚拟对象可以是该游戏场景中的一个虚拟的用于代表用户的虚拟形象。游戏场景中可以包括多个虚拟对象,每个虚拟对象在游戏场景中具有自身的形状和体积,占据游戏场景中的一部分空间。虚拟对象的活动可以包括:调整身体姿态、爬行、步行、奔跑、骑行、飞行、跳跃、使用虚拟瞄具瞄准、射击、驾驶、拾取、攻击、投掷和释放技能等。

在一些实施例中,游戏场景中的虚拟对象包括用户操控的游戏角色(PlayerCharacter)和,系统预设控制、非用户操控的游戏角色(Non-Player Character,NPC),该系统预设控制、非用户操控的游戏角色可以包括游戏拟人AI(人工智能)对象。

在一些实施例中,该虚拟对象可以是系统预设控制、非用户操控的游戏角色(Non-Player Character,NPC)。

在一些实施例中,该虚拟对象可以是通过终端上的操作进行控制的用户角色,即游戏角色。在一些实施方式中,该虚拟对象可以是在游戏场景中进行竞技的虚拟人物。在一些实施方式中,该游戏场景中参与互动的虚拟对象的数量可以是预先设置的,也可以是根据加入互动的终端的数量动态确定的。

在一些实施例中,图形用户界面中显示的内容至少部分地包含游戏场景,其中,游戏场景中包含至少一个虚拟对象。

本申请实施例提供寻路地图的生成方法、装置、计算机设备和存储介质。

其中,该寻路地图的生成装置具体可以集成在电子设备中,该电子设备可以为终端、服务器等设备。其中,终端可以为手机、平板电脑、智能蓝牙设备、笔记本电脑、或者个人电脑(Personal Computer,PC)等设备;服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群。

在一些实施例中,该寻路地图的生成装置可以运行于终端设备或者是服务器。其中,终端设备可以为本地终端设备。当寻路地图的生成方法运行于服务器时,该方法则可以基于云交互系统来实现与执行,其中,云交互系统包括服务器和客户端设备。

在一可选的实施方式中,云交互系统下可以运行各种云应用,例如:云游戏。以云游戏为例,云游戏是指以云计算为基础的游戏方式。在云游戏的运行模式下,游戏程序的运行主体和游戏画面呈现主体是分离的,寻路地图的生成方法的储存与运行是在云游戏服务器上完成的,客户端设备的作用用于数据的接收、发送以及游戏画面的呈现,举例而言,客户端设备可以是靠近用户侧的具有数据传输功能的显示设备,如,终端、电视机、计算机、掌上电脑等;但是进行角色控制的终端设备为云端的云游戏服务器。在进行游戏时,用户操作客户端设备向云游戏服务器发送操作指令,如触控操作的操作指令,云游戏服务器根据操作指令运行游戏,将游戏画面等数据进行编码压缩,通过网络返回客户端设备,最后,通过客户端设备进行解码并输出游戏画面。

在一些实施例中,服务器也可以以终端的形式来实现。

在一可选的实施方式中,终端设备可以为本地终端设备。以游戏为例,本地终端设备存储有游戏程序并用于呈现游戏画面。本地终端设备用于通过图形用户界面与用户进行交互,即,常规的通过电子设备下载安装游戏程序并运行。该本地终端设备将图形用户界面提供给用户的方式可以包括多种,例如,可以渲染显示在终端的显示屏上,或者,通过全息投影提供给用户。举例而言,本地终端设备可以包括显示屏和处理器,该显示屏用于呈现图形用户界面,该图形用户界面包括游戏画面,该处理器用于运行该游戏、生成图形用户界面以及控制图形用户界面在显示屏上的显示。用户能够通过触摸屏、鼠标、键盘或手柄等输入设备在界面上进行操作。

在一些实施例中,服务器也可以以终端的形式来实现。

例如,参考图1a,提供了一种寻路地图的生成系统的场景示意图,该系统可以实现寻路地图的生成方法。在该场景中,可以包括终端以及游戏服务器。

其中,游戏服务器可以用于将三维场景中的场景网格转换为体素模型,体素模型包括多个场景体素;通过对场景体素进行变换处理,填充体素模型的空隙,得到填充后的体素模型;由填充后的体素模型,生成寻路地图。终端可以用于从游戏服务器获取寻路地图,并显示该寻路地图,也可以控制虚拟对象通过该寻路地图自动寻路。游戏服务器与终端之间可以通过网络进行数据传输,网络可以是无线网络或者有线网络,比如无线网络为无线局域网(WLAN)、局域网(LAN)、蜂窝网络、2d网络、3G网络、4G网络、5G网络等。

以下分别进行详细说明。需说明的是,以下实施例的先后次序不作为对实施例优选顺序的限定。可以理解的是,在本申请的具体实施方式中,涉及到与用户相关的数据,当本申请以上实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。

在本实施例中,提供了一种寻路地图的生成方法,如图1b所示,该寻路地图的生成方法的具体流程可以如下:

110、将三维场景中的场景网格转换为体素模型,体素模型包括多个场景体素。

其中,场景网格可以指构成三维场景的网格。可以理解的是,在三维场景个点(顶点)连线围起来的空间即构成了该场景网格。通常,场景网格可以表征为由多个多边形如三角形彼此相连组成三维形状。

可选地,在本申请实施例中,场景网络可以包括构成三维场景的预设物体模型的网络。该预设物体模型可以包括但不限于道路模型、建筑物模型、装饰物模型、地形模型等。

其中,场景体素可以指由场景网络转换得到的体素。可以理解的是,将场景网格转换为体素模型,即是将三维场景由几何形式转换成最接近的体素表示形式,该过程也可以称为体素化。

在一些实施方式中,可以将场景网格切割得到多个体素格子,基于场景网格的网格高度值、生成相应的场景体素,以将场景网格转换为与其形状、高度一致的体素模型,提升生成寻路地图的准确性。具体地,场景网格包括多个多边形网格,将三维场景中的场景网格转换为体素模型,包括:

将多边形网格切割得到至少一个体素格子;

根据体素格子对应的多边形网格的网格高度值,由体素格子生成场景体素,以得到体素模型,网格高度值为多边形网格在三维场景中的高度值。

例如,场景网格可以由多个三角形的多边形网格组成,每个三角形的顶点可以存储有其在三维场景中的位置信息,如,三角形顶点存储的位置信息可以为其在空间直角坐标系的坐标位置。以三维场景为空间直角坐标系为例,三维场景中的高度方向为y轴方向,如图1c所示,对于每个三角形的平面,可以以平行于x轴和z轴的方向设置切割线,将该平面切割为多个体素格子,如图1c中将三角形网格切割为了两个体素格子(即图中的灰色格子),取该三角形顶点中的最小y坐标以及最大y坐标分别作为场景体素的下表面高度值以及上表面高度值,由体素格子、下表面高度值以及上表面高度值生成相应的场景体素。在对场景网格中的所有三角形进行切割以及生成场景体素的处理后,可以由得到的所有场景体素构成该场景模型。

120、通过对场景体素进行变换处理,填充体素模型的空隙,得到填充后的体素模型。

其中,变换处理可以指对场景体素的形状、大小等的处理过程。

三维场景通常是由多个物体模型交织错落构成的,不同物体模型的位置、大小通常都不一致,这导致三维场景会存在空隙,在由场景网络转换得到体素模型中,这些间隙可以表征为体素模型中的空隙。例如,如图1d所示,左侧图中展示了三维场景中错落摆放的两根木头1和木头2,通过体素化处理后,可以将其转换为右侧图中展示相应的场景体素构成的形状,图中的一个方格表示一个场景体素,显然体素化后的两个木头中存在的空隙即是其对应的场景体素对应的间隙。

以此,本申请实施例可以通过对体素模型空隙附近的场景体素进行变换处理,以填充该空隙。例如,本申请实施例可以通过多种方式填充体素模型的空隙,例如可以通过生成场景体素填充空隙,也可以通过对场景体素进行变形处理填充空隙。

由此,本申请实施例通过填充体素模型中的空隙,可以使体素模型的形状更加紧实、规整,便于区分体素模型中的可行走区域,提升生成寻路地图的效率。此外,体素模型是由多个场景体素构成的,通常情况下体素模型中的场景体素都是固定大小的长方体。若体素模型中存在空隙,靠近该空隙的至少两个相邻场景体素在三维场景中的空间位置差异较大,此时可以通过改变场景体素的形状或大小等,填充该空隙。可以理解的是,在填充体素模型后,由于空隙消失,体素模型中相邻的两个场景体素的至少一个面在三维场景中的空间位置一致,以此可以减少相邻场景体素空间位置的差异,以便减少数据存储量,便于后续使用过程的调用。

在一些实施方式中,可以通过第三场景体素替换体素模型中的两个场景体素,以填充这两个场景体素之间的空隙,此外,通过替换操作,在填充场景体素空隙的同时可以减少体素模型中场景体素的数量,减少场景体素的数据存储量,便于后续使用过程的调用。具体地,通过对场景体素进行变换处理,填充体素模型的空隙,得到填充后的体素模型,包括:

根据第一场景体素和第二场景体素,生成第三场景体素,第一场景体素和第二场景体素为体素模型中相邻的两个场景体素,第一场景体素与第二场景体素在三维场景中的高度差满足预设高度差条件;

通过第三场景体素替换第一场景体素和第二场景体素,以填充第一场景体素与第二场景体素之间的空隙,得到填充后的体素模型。

其中,高度差可以指两个场景体素沿三维场景的高度方向的距离。以此,高度差也可以表征两个场景体素之间的空隙的高度。

其中,预设高度差条件可以指预先设定的、用于判断场景模型的高度差是否满足预设高度差的条件,预设高度差可以为根据应用场景或需要设置的高度值或高度值的范围。例如,可以设置预设高度差为高度值的范围[m,n],可以将体素模型中高度差大于m小于n的相邻两个场景体素中较高的一个作为第一场景体素、较低的一个作为第二场景体素,也可以将这两个场景体素中较低的一个作为第一场景体素、较高的一个作为第二场景体素,以此可以填充体素模型空隙高度在m~n之间的空隙。

可选地,预设高度差条件可以指第一场景体素与第二场景体素在三维场景中的高度差小于预设高度差。该预设高度差可以为虚拟对象可以通行的高度值。以此,可以通过填充高度小于虚拟对象可通行高度的空隙,以让体素模型的形状更加紧实、规整,便于区分体素模型中的可行走区域,提升生成寻路地图的效率。

本申请实施例中的相邻可以指三维场景中上下或左右相邻。例如,以三维场景为空间直角坐标系为例,相邻可以指两个场景体素沿x轴的方向相邻(即两个场景体素x坐标一致)、y轴的方向相邻(即两个场景体素y坐标一致)或z轴的方向相邻(即两个场景体素z坐标一致)。

可选地,相邻可以指沿三维场景的高度方向相邻。以三维场景为空间直角坐标系为例,三维场景的高度方向可以指沿y轴的方向,如图1e所示,第一场景体素和第二场景体素可以为沿y轴的方向相邻的两个场景体素,这两个场景体素最靠近的面之间的垂直距离(高度差)小于预设高度值。

在本申请实施例中,可以通过多种方式生成第三场景体素,例如,可以由第一场景体素以及第二场景体素的高度值,生成新的第三场景体素,也可以由第一场景体素或第二场景体素变形得到第三场景体素。在得到第三场景体素后,可以在体素模型中删除第一场景体素和/或第二场景体素。如图1f所示,在得到第三场景体素后,由第三场景体素填充第一场景体素、第二场景体素的所在位置以及填充这两个场景体素之间的空隙,以此在填充场景体素空隙的同时可以使体素模型的中的场景体素的数量减一,以减少场景体素的数据存储量,便于后续使用过程的调用。

在一些实施方式中,可以由三维场景中,位置较高的场景体素的最大高度值以及位置较低的场景体素的最小高度值,生成新的第三场景体素,以直接、快速替换原有的场景体素。具体地,在三维场景中、第一场景体素的高度值大于第二场景体素的高度值,根据第一场景体素和第二场景体素,生成第三场景体素,包括:

获取在三维场景中、第一场景体素的最大高度值以及第二场景体素的最小高度值;

根据最大高度值以及最小高度值,生成第三场景体素。

其中,场景体素的最大高度值可以理解为三维场景中、场景体素最高位置的高度值,场景体素的最小高度值可以理解为三维场景中、场景体素最低位置的高度值。

由于场景体素是三维场景中的长方体结构,其在三维场景中的位置可以以体素坐标来表示。例如,以三维场景为空间直角坐标系为例,场景体素的体素坐标可以表示为包含场景体素的顶点坐标的三维空间数组,该三维空间数组可以包括场景体素的每个顶点的顶点坐标。若由场景网格转换得到的场景体素大小相同,则场景体素的体素坐标可以表示为场景体素的质心的三维坐标。

例如,可以理解的是,由于第一场景体素与第二场景体素之间存在高度差,以此沿三维场景的y轴(高度)方向,第一场景体素位于第二场景体素上方,即第一场景体素的体素坐标中的y值大于第二场景体素的体素坐标中的y值。

再如,若场景体素的体素坐标为包含场景体素的顶点坐标的三维空间数组,可以将第一场景体素的顶点坐标中最大的y值作为最大高度值,第二场景体素的顶点坐标中最小的y值作为最小高度值。

再如,若场景体素的体素坐标为场景体素的质心的三维坐标(x,y,z),可以获取场景体素的偏移量,该偏移量为场景体素的顶点与其质心之间的偏移量,通过质心的三维坐标加上相应的偏移量即可以计算每个场景体素的每个顶点的顶点坐标。以此,可以将第一场景体素的质心的三维坐标与为正值的偏移量计算得到的三维坐标中的y值作为最大高度值,将第二场景体素的质心的三维坐标与为负值的偏移量计算得到的三维坐标中的y值作为最小高度值。

以此,在得到最大高度值以及最小高度值后,可以结合第一场景体素和/第二场景体素的三维坐标中的xz值,生成第三场景体素。例如,在获取最大高度值y

在一些实施方式中,可以由第二场景体素变形得到第三场景体素,以此仅需获取第一场景体素的目标高度值,就可以生成第三场景体素,以简化数据获取流程,提升生成第三场景体素的效率。具体地,根据第一场景体素以及第二场景体素,生成第三场景体素,包括:

若在三维场景中,第一场景体素的高度值大于第二场景体素的高度值,获取第一场景体素的最大高度值作为目标高度值;

若在三维场景中,第一场景体素的高度值小于第二场景体素的高度值,获取第一场景体素的最小高度值作为目标高度值;

根据目标高度值,对第二场景体素进行第一变形处理,生成第三场景体素。

其中,第一变形处理可以指对场景体素进行变形,以使其触及目标高度值所在位置。例如,可以将第三场景体素的至少一个高度值设置为目标高度值。

可选地,可以将第二场景体素的高度值设置为目标高度值,以快速第二场景体素的表面位置,提升填充体素模型的效率,具体地,根据目标高度值,对第二场景体素进行第一变形处理,生成第三场景体素包括:

若在三维场景中,第一场景体素的高度值大于第二场景体素的高度值,将第二场景体素的最大高度值设置为目标高度值;

若在三维场景中,第一场景体素的高度值小于第二场景体素的高度值,将第二场景体素的最小高度值设置为目标高度值。

例如,以三维场景为空间直角坐标系为例,可以判断第一场景体素以及的人场景体素的体素坐标中y值(高度方向的坐标值)的大小,若第一场景体素的y值大于第二场景体素的y值,即表明第一场景体素位于第二场景体素上方,此时,可以获取第一场景体素的最大高度值作为目标高度值,可以向上调整第二场景体素的上表面至目标高度值的位置(如将其上表面对应的高度值设置为目标高度值),以向上拉伸第二场景体素。若第一场景体素的y值小于第二场景体素的y值,即表明第一场景体素位于第二场景体素下方,此时,可以获取第一场景体素的最小高度值作为目标高度值,可以向下调整第二场景体素的下表面至目标高度值的位置(如将其下表面对应的高度值设置为目标高度值),以向下拉伸第二场景体素。以此通过拉伸第二场景体素,使第二场景体素填充第一场景体素与第二场景体素之间的空隙,并填充第一场景体素的所在位置。

可选地,在进行第一变形处理前,可以删除三维场景中的第一场景体素。

在一些实施方式中,可以根据预设的高度差条件,找到体素模型中的第一场景体素以及第二场景体素,以便于执行后续的替换操作。具体地,根据第一场景体素和第二场景体素,生成第三场景体素之前,还包括:

根据预设高度差条件,在体素模型中确定第一场景体素和第二场景体素。

例如,以三维场景为空间直角坐标系为例,可以遍历体素模型中场景体素,计算沿y轴的方向相邻的两个场景体素之间的高度差,若该高度差小于预设高度差,则将这两个场景体素分别确定为第一场景体素和第二场景体素。遍历完所有场景体素后,可以一次性对每对相邻的第一场景体素和第二场景体素生成相应的第三场景体素,并由生成的第三场景体素替换该对相邻的第一场景体素和第二场景体素。

在一些实施方式中,可以将位于体素模型底层的场景体素进行变形处理,以填充体素模型底部空隙,此外,在填充体素模型底部空隙的同时,可以增加底层场景体素下表面坐标位置的一致性,以便减少数据存储量,便于后续使用过程的调用。具体地,通过对场景体素进行变换处理,填充体素模型的空隙,得到填充后的体素模型,包括:

获取体素模型的底层场景体素;

通过对底层场景体素进行第二变形处理,对体素模型进行底部空隙填充,得到填充后的体素模型。

其中,底层场景体素可以指位于体素模型底层的场景体素。由于三维场景中多个物体模型交织错落,导致三维场景中体素模型最底层的场景体素与三维场景底部的垂直距离并不一致,因此会存在大小不一的空隙。这些底层场景体素与三维场景底面之间的空隙即为底部空隙。例如,如图1g中(1)所示,场景体素1~场景体素6为底层场景体素,这些底层场景体素距离三维场景底面的垂直距离不同,即它们与三维场景底面之间空隙的大小不同。显然,图中场景体素3和场景体素6距离三维场景底面的垂直距离最小,场景体素1距离三维场景底面的垂直距离最大。

三维场景的底面可以指三维场景底部的平面。例如,以三维场景为空间直角坐标系为例,三维场景的底面可以为oxz平面。三维场景中高度值最低的体素的下表面位于该oxz平面上。

其中,第二变形处理可以指对场景体素进行变形,以使其触及三维场景底面。

例如,如图1g中(2)所示,可以将位于体素模型底层的场景体素1~场景体素6的下表面拉伸(第二变形处理)至三维场景的底面上,填充该场景体素与三维场景底面之间的空隙。需说明的是,由于图1g中场景体素3和场景体素6的下表面在变形前以位于三维场景的底面上,因此变形前后并无变化,也可以跳过对场景体素3和场景体素6的变形处理,以提升处理速度。

在一些实施方式中,可以根据场景体素沿高度方向的投影,快速、筛选确定底层场景体素。具体地,获取体素模型中的底层场景体素,包括:

获取在三维场景中、目标场景体素的高度值,目标场景体素为三维场景中、沿高度方向投影相同的场景体素;

根据目标场景体素的高度值,从目标场景体素中确定底层场景体素。

其中,投影是指用一组光线将物体的形状投射到一个平面上去。可以理解的是,沿高度方向的投影相同可以指场景体素沿高度方向垂直投影到三维场景底面时的图形位于相同的位置即投影相同。

例如,以三维场景为空间直角坐标系为例,如图1g所示,场景体素2和场景体素7沿y轴方向投影至三维场景底面时的图形相同,可以从场景体素2和场景体素7的体素坐标中获取其高度值(y值),并将获取的高度值中最小的高度值对应的场景体素2作为底层场景体素。图1g中,场景体素5、场景体素8和场景体素9沿y轴方向投影至三维场景底面时的图形也相同,可以采用相同的方法将高度值最小的场景体素5作为底层场景体素。

在一些实施方式中,可以将底层场景体素的最小高度值设置为基准高度值,以快速调整底层场景体素的下表面位置,提升填充体素模型的效率。具体地,通过对底层场景体素进行第二变形处理,对体素模型进行底部空隙填充,得到填充后的体素模型,包括:

将底层场景体素的最小高度值设置为基准高度值,得到填充后的体素模型。

其中,基准高度值可以指根据应用场景以及实际需要设置的高度值。例如,基准高度值可以为体素模型中所有场景体素的高度值中的最小高度值。由于三维场景中高度值最低的体素的下表面位于三维场景底部的平面,因此,可以设置基准高度值为0。

例如,在三维场景中,通常底层场景体素的下表面高度值最小,因此可以将位于体素模型底层的场景体素的下表面的高度值修改为0,以拉伸其下表面至三维场景的底面上,填充该场景体素与三维场景底面之间的空隙。

可选地,由于体素模型数据量较大,在得到填充后的体素模型后可能并不会立即调用以执行后续过程,或,体素模型的填充以及后续步骤不在寻路地图的生成系统的同一模型进行,此时可以对体素模型的数据压缩处理后,再由后续过程调用,以减少体素模型数据占用的内存,也提升体素模型数据在不同模块之间传输的效率。具体地,通过对场景体素进行变换处理,填充体素模型的空隙,得到填充后的体素模型之后,还包括:

对填充后的体素模型的模型数据进行压缩处理,得到压缩后模型数据。

其中,压缩处理方法可以包括但不限于DeflateStream压缩算法、GzipStream压缩算法、LZF压缩算法等压缩方法。

需说明的是,通过由第三场景体素替换体素模型中的第一场景体素以及第二场景体素的过程,可以减少模型数据的数据量,提升压缩处理效率。通过对底层场景体素进行第二变形处理,填充体素模型进行底部空隙,可以增加底层场景体素的下表面的位置坐标的一致性(如下表面的高度值都为0),数据一致性越高则压缩过程的压缩率越高,以此可以提升压缩处理过程中的压缩率,减少压缩后模型数据的大小。

130、由填充后的体素模型,生成寻路地图。

在得到填充后的体素模型之后,可以根据该体素模型区分三维场景中的可行走面,并由此生成寻路地图。

可选地,在生成寻路地图时,可以获取压缩后的模型数据,再解压得到填充后的体素模型,以减少体素模型数据占用的内存。由填充后的体素模型,生成寻路地图之前,还包括:

获取压缩后模型数据,解析压缩后模型数据生成填充后的体素模型。

例如,可以由获取压缩后模型数据,进行解压以及数据解析,构建得到填充后的体素模型。

在一些实施方式中,可以对填充后的体素模型进行区域划分、描边等处理,以简化填充后的体素模型的显示效果,生成寻路地图。具体地,由填充后的体素模型,生成寻路地图,包括:

对填充后的体素模型进行区域划分,确定可行走区域;

对可行走区域进行描边,生成可行走区域的区域轮廓;

由区域轮廓,生成寻路地图。

例如,可以从填充后的体素模型中筛选出可行走面,并对构成可行走面的场景体素进行标记,如将构成可行走面的场景体素设置为蓝色,不可行走面的场景体素设置为灰色。可以通过分水岭算法,将可行走面划分为多个区域。可以对该多个区域进行描边,生成这些区域的区域轮廓,并对区域轮廓进行简化处理,即利用尽可能少的直线段来逼近带毛刺的边界,将简化后的区域轮廓分割为多个三角形,分割后的三角形构成多个凸多边形,将有公共边以及合并后能维持凸点的凸多边形合并,得到寻路地图。

在一些实施方式中,在生成寻路地图后,可以根据添加请求,动态添加虚拟物体的体素,并由添加虚拟物体的物体体素以及填充后的体素模型即时更新后的寻路地图,提升更新寻路地图的速度。具体地,由填充后的体素模型,生成寻路地图之后,还包含:

响应于添加请求,获取待添加虚拟物体的物体体素以及填充后的体素模型,添加请求用于在三维场景中添加待添加虚拟物体;

将物体体素添加在填充后的体素模型中,得到添加后的体素模型;

由添加后的体素模型,更新寻路地图,得到更新后的寻路地图。

其中,虚拟物体可以包括但不限于道路模型、建筑物模型、装饰物模型、地形模型等。待添加虚拟物体可以包括但不限于能用于阻挡的虚拟物体如墙壁、植物等,以及能用于构成新的可行走区域的虚拟物体如楼梯、桥梁等。

其中,物体体素可以指由虚拟物体转换得到的体素。

例如,在游戏服务器运行过程中,当前生成的寻路地图以应用于在线游戏中,若此时要在寻路地图中添加新的阻挡物如墙壁,可以生成相应的添加请求,由游戏服务器获取墙壁的物体体素以及填充后的体素模型,将墙壁的物体体素添加在填充后的体素模型位置后,通过区域划分、描边等处理过程,生成新的寻路地图,并由游戏服务器将在线游戏中使用的寻路地图替换为生成的新的寻路地图。需说明的是,由添加物体体素后的填充后的体素模型生成新的寻路地图的具体方式与步骤由填充后的体素模型,生成寻路地图的实现方式相同,在次不再赘述。

以此,在游戏服务器运行过程中,需要往场景中添加建筑(待添加虚拟物体)重构场景时,只需要直接读取预先得到的场景体素,然后往场景体素上添加动态体素,就可以得到当前需要的场景体素数据(添加后的体素模型),之后由该体素数据生成寻路地图即可,可以节省场景体素化的时间,大大提升了服务器重构寻路地图的效率。

需说明的是,本申请实施例的寻路地图的生成方法可以由游戏服务器实现,该游戏服务器可以为单一服务器,游戏服务器也可以为包括数据处理服务器和游戏运行服务器的服务器。数据处理服务器和游戏运行服务器可以集成在同一服务器,也可以集成在不同服务器中。

可选地,步骤响应于添加请求,获取待添加虚拟物体的物体体素以及填充后的体素模型至步骤由添加后的体素模型,更新寻路地图,得到更新后的寻路地图可以在游戏服务器中的数据处理服务器执行,在该服务器生成更新后的寻路地图,再将该更新后的寻路地图发送至游戏服务器中的游戏运行服务器将在线游戏中使用的寻路地图替换为生成的新的寻路地图。以此,可以将生成更新后的寻路地图与游戏运行过程分离开,减轻游戏服务器负载。

在一些实施方式中,在更新寻路地图时,可以获取压缩的模型数据,再解压得到填充后的体素模型,以减少体素模型数据占用的内存。具体地,响应于添加请求,获取待添加虚拟物体的物体体素以及填充后的体素模型,包括:

响应于添加请求,获取待添加虚拟物体的物体体素以及压缩后模型数据;

由压缩后的模型数据,生成填充后的体素模型。

例如,可以响应于添加请求,从本地或远程获取待添加虚拟物体的物体体素以及压缩后模型数据,并对压缩后模型数据解压以及数据解析,构建得到填充后的体素模型。通过在游戏服务器中动态添加虚拟物体的物体体素的方式,结合对体素数据的压缩过程,一方面可以节省动态添加前体素数据占用的内存,另一方面可以节省了场景体素化的时间,大大提升了服务器重构寻路地图的效率。

可选地,初始寻路地图的生成过程(即步骤110~130)可以由游戏服务器中的数据处理服务器执行,在数据处理服务器生成寻路地图后,可以将寻路地图发送至游戏服务器中的游戏运行服务器以便游戏运行服务器使用。但是在更新寻路地图过程中,若仍由数据处理服务器生成更新后的寻路地图供游戏运行服务器使用,会导致游戏运行服务器不能即时更新寻路地图。以此,可以由游戏运行服务器获取待添加虚拟物体的物体体素以及压缩后模型数据,即时生成填充后的体素模型,提升更新寻路地图的速度。

可选地,可以在压缩模型数据后,将压缩后的模型数据发送至游戏服务器,以提升体素模型数据在不同服务器之间传输的效率,以响应于添加请求可以从游戏运行服务器本地读取压缩后的模型数据,提升获取填充后的体素模型的效率,提升更新寻路地图的速度。具体地,对填充后的体素模型的模型数据进行压缩处理,得到压缩后模型数据之后,还包括:

数据处理服务器将压缩后模型数据发送至游戏运行服务器。

本申请实施例提供的寻路地图的生成方案可以应用在各种游戏场景中。比如,以角色扮演类游戏为例,将三维场景中的场景网格转换为体素模型,体素模型包括多个场景体素;通过对场景体素进行变换处理,填充体素模型的空隙,得到填充后的体素模型;由填充后的体素模型,生成寻路地图。

由上可知,本申请实施例通过填充体素模型中的空隙,可以使体素模型的形状更加紧实、规整,便于区分体素模型中的可行走区域,提升生成寻路地图的效率。此外,通过对场景体素进行变换处理,填充体素模型的空隙,在填充体素模型后,由于空隙消失,体素模型中相邻的两个场景体素的至少一个面在三维场景中的空间位置一致,以此可以减少相邻场景体素空间位置的差异,以便减少数据存储量,便于后续使用过程的调用,进一步提升生成寻路地图的效率。

根据上述实施例所描述的方法,以下将作进一步详细说明。

在本实施例中,将以生成角色扮演类游戏的寻路地图为例,对本申请实施例的方法进行详细说明。

如图2a所示,一种寻路地图的生成方法具体流程如下:

210、将三维场景中的场景网格转换为体素模型。

例如,可以在游戏服务器中搭载有使用recastnavigation(导航寻路工具集),通过该工具集实现本申请实施例的寻路地图的生成方法。如,可以在recastnavigation输入角色扮演类游戏的三维场景的静态mesh(场景网格),以在recastnavigation配套的工具中,显示如图2b中(1)所示的网格。

可以对图2b中(1)所示的网格进行体素化处理,转换为多个如图2b中(2)所示多个砖块(场景体素),这些砖块可以组成一个场景(体素模型)。

221、根据预设高度差条件,在体素模型中确定第一场景体素和第二场景体素。

222、根据第一场景体素和第二场景体素,生成第三场景体素。

223、通过第三场景体素替换第一场景体素和第二场景体素,以填充第一场景体素与第二场景体素之间的空隙。

例如,如图1f所示,本申请实施例可以将存在空隙的第一场景体素以及第二场景体素合并(替换)成一个第三场景体素,在程序意义上,场景数量从2个变成了1个,节省了内存。

再如,以三维场景中,存在如图2c左侧所示盒子形状,该形状可以理解为由2x+2个场景体素围成的空心形状,图2c中x为1,即图中的空心形状是由4个场景体素围成。通过将该形状上下两侧的场景体素合并(替换)成一个,即可以将该空心形状转换(填充)为图2c中右侧所示的实心形状,组成其的体素由2x+2个(4个)减少为x+2个(3个),节省了内存。

231、获取体素模型的底层场景体素。

232、通过对底层场景体素进行第二变形处理,对体素模型进行底部空隙填充。

例如,如图1f所示,本申请实施例通过对最底层体素(底层场景体素)做底部填充,在程序上,他们的下表面都变成了0,在数据压缩的时候,压缩率将有所上升,以节省内存。

240、由填充后的体素模型,生成寻路地图。

例如,可以通过如下过程有填充后的体素模型生成寻路地图:

1、筛选可行走面:可以从填充后的体素模型中筛选出可行走面,并对构成可行走面的场景体素进行标记。如图2d中(1)所示,将构成可行走面的场景体素设置为深灰色,不可行走面的场景体素设置为浅灰色。

2、可行走表面区域划分:可以通过分水岭算法,将可行走面划分为不同区域的可行走面,如图2d中(2)所示,将可行走面划分为不同灰度的多个区域。

3、区域轮廓生成,可以对步骤2划分的多个区域进行描边生成这些区域的区域轮廓。如图2d中(3)所示,在可行走面的多个区域边界生成了相应的区域轮廓。

4、凸多边形生成,可以对步骤3生成的区域轮廓进行简化处理,即利用尽可能少的直线段来逼近带毛刺的边界,将简化后的区域轮廓分割为多个三角形,分割后的三角形构成多个凸多边形。如图2d中(4)所示,可行走面的各个区域划分出了多个凸多边形。

5、细节网格生成,可以通过将有公共边以及合并后能维持凸点的凸多边形合并,将图2d中(4)中的凸多边形三角化轮廓生成得到如图2d中(5)的网格(寻路地图)。如图2d所示,该寻路地图中可以显示游戏拟人AI对象当前所在的坐标位置x:16.51、y11.30、z:13.68。

在生成寻路地图中,可以将该寻路地图用于游戏中的支持路径查询以及位置的仿真等。

250、响应于添加请求,获取待添加虚拟物体的物体体素以及填充后的体素模型。

260、将物体体素添加在填充后的体素模型中,得到添加后的体素模型。

270、由添加后的体素模型,更新寻路地图,得到更新后的寻路地图。

在现有的寻路地图构建方案中,通常都依赖于静态mesh的输入,且体素化流程较长。在场景较为复杂的情况下,在服务器上快速实时构建寻路地图变得不可能。本申请实施例采用保存中间数据的方式,通过前述步骤将一部分必要数据(填充后的体素模型)在离线的过程中处理好,在服务器运行的过程中,读取静态数据,被结合变化的动态数据,快速构建新的寻路地图。

如图2e所示,本申请实施例将场景重分为了静态体素(场景体素)与动态体素(待添加虚拟物体的物体体素),在游戏服务器运行过程中,需要往场景中添加建筑(待添加虚拟物体)重构场景,只需要读取场景体素,然后往静态体素上添加动态体素,那么,该场景的体素数据就生成好了,之后由该体素数据生成寻路地图即可。以此,可以节省了场景体素化的时间,大大提升了服务器重构寻路地图的效率;相对于mesh数据,大大节省了内存占用。

由上可知,本申请实施例通过将场景重分为了静态体素(场景体素)与动态体素,动态与静态体素的结合,减少了游戏服务器运行过程中需要运算的数据,让寻路地图构建的时间大大缩短。通过对场景体素的变换处理,填充体素模型的空隙,可以节省体素数据的内存占用,大大减小了游戏服务器运行过程中的内存占用。

为了更好地实施以上方法,本申请实施例还提供一种寻路地图的生成装置,该寻路地图的生成装置具体可以集成在电子设备中,该电子设备可以为终端、服务器等设备。其中,终端可以为手机、平板电脑、智能蓝牙设备、笔记本电脑、个人电脑等设备;服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群。

比如,在本实施例中,将以寻路地图的生成装置具体集成在服务器为例,对本申请实施例的方法进行详细说明。

例如,如图3所示,该寻路地图的生成装置可以包括转换单元310、填充单元320以及生成单元330,如下:

(一)转换单元310

用于将三维场景中的场景网格转换为体素模型,体素模型包括多个场景体素。

在一些实施方式中,场景网格包括多个多边形网格,转换单元310具体可以用于:

将多边形网格切割得到至少一个体素格子;

根据体素格子对应的多边形网格的网格高度值,由体素格子生成场景体素,以得到体素模型,网格高度值为多边形网格在三维场景中的高度值。

(二)填充单元320

用于通过对场景体素进行变换处理,填充体素模型的空隙,得到填充后的体素模型。

在一些实施方式中,填充单元320具体可以用于:

根据第一场景体素和第二场景体素,生成第三场景体素,第一场景体素和第二场景体素为体素模型中相邻的两个场景体素,第一场景体素与第二场景体素在三维场景中的高度差满足预设高度差条件;

通过第三场景体素替换第一场景体素和第二场景体素,以填充第一场景体素与第二场景体素之间的空隙,得到填充后的体素模型。

在一些实施方式中,在三维场景中、第一场景体素的高度值大于第二场景体素的高度值,根据第一场景体素和第二场景体素,生成第三场景体素,包括:

获取在三维场景中、第一场景体素的最大高度值以及第二场景体素的最小高度值;

根据第一场景体素的最大高度值以及第二场景体素的最小高度值,生成第三场景体素。

在一些实施方式中,根据第一场景体素以及第二场景体素,生成第三场景体素,包括:

若在三维场景中,第一场景体素的高度值大于第二场景体素的高度值,获取第一场景体素的最大高度值作为目标高度值;

若在三维场景中,第一场景体素的高度值小于第二场景体素的高度值,获取第一场景体素的最小高度值作为目标高度值;

根据目标高度值,对第二场景体素进行第一变形处理,生成第三场景体素。

在一些实施方式中,填充单元320还可以用于:

根据预设高度差条件,在体素模型中确定第一场景体素和第二场景体素。

在一些实施方式中,填充单元320具体可以用于:

获取体素模型的底层场景体素;

通过对底层场景体素进行第二变形处理,对体素模型进行底部空隙填充,得到填充后的体素模型。

在一些实施方式中,获取体素模型中的底层场景体素,包括:

获取在三维场景中、目标场景体素的高度值,目标场景体素为三维场景中、沿高度方向投影相同的场景体素;

根据目标场景体素的高度值,从目标场景体素中确定底层场景体素。

在一些实施方式中,通过对底层场景体素进行第二变形处理,对体素模型进行底部空隙填充,得到填充后的体素模型,包括:

将底层场景体素的最小高度值设置为基准高度值,得到填充后的体素模型。

(三)生成单元330

用于由填充后的体素模型,生成寻路地图。

在一些实施方式中,生成单元330具体可以用于:

对填充后的体素模型进行区域划分,确定可行走区域;

对可行走区域进行描边,生成可行走区域的区域轮廓;

由区域轮廓,生成寻路地图。

在一些实施方式中,生成单元330还可以用于:

响应于添加请求,获取待添加虚拟物体的物体体素以及填充后的体素模型,添加请求用于在三维场景中添加待添加虚拟物体;

将物体体素添加在填充后的体素模型中,得到添加后的体素模型;

由添加后的体素模型,更新寻路地图,得到更新后的寻路地图。

在一些实施方式中,生成单元330还可以用于:

对填充后的体素模型的模型数据进行压缩处理,得到压缩后模型数据;

响应于添加请求,获取待添加虚拟物体的物体体素以及填充后的体素模型,包括:

响应于添加请求,获取待添加虚拟物体的物体体素以及压缩后模型数据;

由压缩后的模型数据,生成填充后的体素模型。

具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。

由此,本申请实施例通过填充体素模型中的空隙,可以使体素模型的形状更加紧实、规整,便于区分体素模型中的可行走区域,提升生成寻路地图的效率。此外,通过对场景体素进行变换处理,填充体素模型的空隙,在填充体素模型后,由于空隙消失,体素模型中相邻的两个场景体素的至少一个面在三维场景中的空间位置一致,以此可以减少相邻场景体素空间位置的差异,以便减少数据存储量,便于后续使用过程的调用,以进一步提升生成寻路地图的效率。

相应的,本申请实施例还提供一种计算机设备,该计算机设备可以为终端或服务器,该终端可以为智能手机、平板电脑、笔记本电脑、触控屏幕、游戏机、个人计算机、个人数字助理(Personal Digital Assistant,PDA)等终端设备。

如图4所示,图4为本申请实施例提供的计算机设备的结构示意图,该计算机设备400包括有一个或者一个以上处理核心的处理器410、有一个或一个以上计算机可读存储介质的存储器420及存储在存储器420上并可在处理器上运行的计算机程序。其中,处理器410与存储器420电性连接。本领域技术人员可以理解,图中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

处理器410是计算机设备400的控制中心,利用各种接口和线路连接整个计算机设备400的各个部分,通过运行或加载存储在存储器420内的软件程序和/或模块,以及调用存储在存储器420内的数据,执行计算机设备400的各种功能和处理数据,从而对计算机设备400进行整体监控。

在本申请实施例中,计算机设备400中的处理器410会按照如下的步骤,将一个或一个以上的应用程序的进程对应的指令加载到存储器420中,并由处理器410来运行存储在存储器420中的应用程序,从而实现各种功能:

将三维场景中的场景网格转换为体素模型,体素模型包括多个场景体素;通过对场景体素进行变换处理,填充体素模型的空隙,得到填充后的体素模型;由填充后的体素模型,生成寻路地图。

以上各个操作的具体实施可参见前面的实施例,在此不再赘述。

可选的,如图4所示,计算机设备400还包括:触控显示屏430、射频电路440、音频电路450、输入单元460以及电源470。其中,处理器410分别与触控显示屏430、射频电路440、音频电路450、输入单元460以及电源470电性连接。本领域技术人员可以理解,图4中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

触控显示屏430可用于显示图形用户界面以及接收用户作用于图形用户界面产生的操作指令。触控显示屏430可以包括显示面板和触控面板。其中,显示面板可用于显示由用户输入的信息或提供给用户的信息以及计算机设备的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。可选的,可以采用液晶显示器(LCD,Liquid Crystal Display)、有机发光二极管(OLED,Organic Light-EmittingDiode)等形式来配置显示面板。触控面板可用于收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并生成相应的操作指令,且操作指令执行对应程序。可选的,触控面板可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器410,并能接收处理器410发来的命令并加以执行。触控面板可覆盖显示面板,当触控面板检测到在其上或附近的触摸操作后,传送给处理器410以确定触摸事件的类型,随后处理器410根据触摸事件的类型在显示面板上提供相应的视觉输出。在本申请实施例中,可以将触控面板与显示面板集成到触控显示屏430而实现输入和输出功能。但是在某些实施例中,触控面板与显示面板可以作为两个独立的部件来实现输入和输出功能。即触控显示屏430也可以作为输入单元460的一部分实现输入功能。

在本申请实施例中,通过处理器410执行游戏应用程序在触控显示屏430上生成图形用户界面,图形用户界面上的虚拟场景中包含至少一个技能控制区域,技能控制区域中包含至少一个技能控件。该触控显示屏430用于呈现图形用户界面以及接收用户作用于图形用户界面产生的操作指令。

射频电路440可用于收发射频信号,以通过无线通信与网络设备或其他计算机设备建立无线通讯,与网络设备或其他计算机设备之间收发信号。

音频电路450可以用于通过扬声器、传声器提供用户与计算机设备之间的音频接口。音频电路450可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路450接收后转换为音频数据,再将音频数据输出处理器410处理后,经射频电路440以发送给比如另一计算机设备,或者将音频数据输出至存储器420以便进一步处理。音频电路450还可能包括耳塞插孔,以提供外设耳机与计算机设备的通信。

输入单元460可用于接收输入的数字、字符信息或用户特征信息(例如指纹、虹膜、面部信息等),以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。

电源470用于给计算机设备400的各个部件供电。可选的,电源470可以通过电源管理系统与处理器410逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源470还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。

尽管图4中未示出,计算机设备400还可以包括摄像头、传感器、无线保真模块、蓝牙模块等,在此不再赘述。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

由上可知,本实施例提供的计算机设备可以通过填充体素模型中的空隙,可以使体素模型的形状更加紧实、规整,便于区分体素模型中的可行走区域,提升生成寻路地图的效率。此外,通过对场景体素进行变换处理,填充体素模型的空隙,在填充体素模型后,由于空隙消失,体素模型中相邻的两个场景体素的至少一个面在三维场景中的空间位置一致,以此可以减少相邻场景体素空间位置的差异,以便减少数据存储量,便于后续使用过程的调用,以进一步提升生成寻路地图的效率。

本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。

为此,本申请实施例提供一种计算机可读存储介质,其中存储有多条计算机程序,该计算机程序能够被处理器进行加载,以执行本申请实施例所提供的任一种寻路地图的生成方法中的步骤。例如,该计算机程序可以执行如下步骤:

将三维场景中的场景网格转换为体素模型,体素模型包括多个场景体素;通过对场景体素进行变换处理,填充体素模型的空隙,得到填充后的体素模型;由填充后的体素模型,生成寻路地图。

以上各个操作的具体实施可参见前面的实施例,在此不再赘述。

其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。

由于该存储介质中所存储的计算机程序,可以执行本申请实施例所提供的任一种寻路地图的生成方法中的步骤,因此,可以实现本申请实施例所提供的任一种寻路地图的生成方法所能实现的有益效果,详见前面的实施例,在此不再赘述。

以上对本申请实施例所提供的一种寻路地图的生成方法、装置、计算机设备和存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

技术分类

06120115931563