CN117982891A - 虚拟场景中的路径生成方法、装置、电子设备及存储介质 - Google Patents
虚拟场景中的路径生成方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117982891A CN117982891A CN202211376842.8A CN202211376842A CN117982891A CN 117982891 A CN117982891 A CN 117982891A CN 202211376842 A CN202211376842 A CN 202211376842A CN 117982891 A CN117982891 A CN 117982891A
- Authority
- CN
- China
- Prior art keywords
- path
- target
- point
- voxel
- virtual 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 77
- 238000003860 storage Methods 0.000 title claims abstract description 19
- 239000013598 vector Substances 0.000 claims abstract description 115
- 230000000903 blocking effect Effects 0.000 claims description 83
- 230000015654 memory Effects 0.000 claims description 30
- 238000012545 processing Methods 0.000 claims description 30
- 239000000470 constituent Substances 0.000 claims description 25
- 238000004590 computer program Methods 0.000 claims description 15
- 230000004044 response Effects 0.000 claims description 11
- 238000009499 grossing Methods 0.000 claims description 8
- 230000004888 barrier function Effects 0.000 claims description 4
- 239000011159 matrix material Substances 0.000 claims description 4
- 239000000306 component Substances 0.000 description 22
- 238000010586 diagram Methods 0.000 description 21
- 238000004422 calculation algorithm Methods 0.000 description 18
- 238000005516 engineering process Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 238000010276 construction Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000013515 script Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000005452 bending Methods 0.000 description 2
- 235000019800 disodium phosphate Nutrition 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012216 screening Methods 0.000 description 2
- 101100134058 Caenorhabditis elegans nth-1 gene Proteins 0.000 description 1
- 241001465754 Metazoa Species 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000004549 pulsed laser deposition Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Landscapes
- Image Generation (AREA)
Abstract
本申请提供了一种虚拟场景中的路径生成方法、装置、电子设备及存储介质;方法包括:获取虚拟场景包括的多个体素,以及虚拟场景中的虚拟障碍物;基于虚拟障碍物,从虚拟场景包括的多个体素中,选取多个目标体素;获取各目标体素对应的方向向量,并基于方向向量,在虚拟场景中虚拟障碍物以外的三维空间内,构建由多个多面体组成的多面体网格;获取路径起点及路径终点,并从多面体网格中,确定路径起点所在的起点多面体和路径终点所在的终点多面体;基于起点多面体和终点多面体,生成虚拟场景中对应路径起点和路径终点的目标路径。通过本申请,有效提高路径的生成效率的同时,提高所生成的路径的准确度。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种虚拟场景中的路径生成方法、装置、电子设备及存储介质。
背景技术
为提高用户体验,游戏应用往往会为玩家配置复杂的游戏地图,但复杂度较高的游戏地图也会对游戏进程中的自动寻路(即确定目标路径)造成困难。
在相关技术中,会因地形复杂而导致算法耗时过高或有限步数内可寻路距离过近等问题的出现,从而影响自动寻路功能的高效实现,进而降低目标路径的确定效率。因此,相关技术中,目标路径的确定效率和准确度较低。
发明内容
本申请实施例提供一种虚拟场景中的路径生成方法、装置、电子设备、计算机可读存储介质及计算机程序产品,有效提高路径的生成效率的同时,提高所生成的路径的准确度。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种虚拟场景中的路径生成方法,包括:
获取虚拟场景包括的多个体素,以及所述虚拟场景中的虚拟障碍物;
基于所述虚拟障碍物,从所述虚拟场景包括的多个体素中,选取多个目标体素,所述目标体素与所述虚拟障碍物之间的距离小于距离阈值;
获取各所述目标体素对应的方向向量,并基于所述方向向量,在所述虚拟场景中所述虚拟障碍物以外的三维空间内,构建由多个多面体组成的多面体网格;
获取路径起点及路径终点,并从所述多面体网格中,确定所述路径起点所在的起点多面体和所述路径终点所在的终点多面体;
基于所述起点多面体和所述终点多面体,生成所述虚拟场景中对应所述路径起点和所述路径终点的目标路径。
本申请实施例提供一种虚拟场景中的路径生成装置,包括:
获取模块,用于获取虚拟场景包括的多个体素,以及所述虚拟场景中的虚拟障碍物;
选取模块,用于基于所述虚拟障碍物,从所述虚拟场景包括的多个体素中,选取多个目标体素,所述目标体素与所述虚拟障碍物之间的距离小于距离阈值;
构建模块,用于获取各所述目标体素对应的方向向量,并基于所述方向向量,在所述虚拟场景中所述虚拟障碍物以外的三维空间内,构建由多个多面体组成的多面体网格;
确定模块,用于获取路径起点及路径终点,并从所述多面体网格中,确定所述路径起点所在的起点多面体和所述路径终点所在的终点多面体;
生成模块,用于基于所述起点多面体和所述终点多面体,生成所述虚拟场景中对应所述路径起点和所述路径终点的目标路径。
在一些实施例中,上述选取模块,还用于针对各所述体素分别执行以下处理:获取所述体素的中心点,以及距离阈值,并确定所述中心点与所述虚拟障碍物之间的距离;当所述距离小于所述距离阈值时,将所述体素确定为所述目标体素。
在一些实施例中,上述构建模块,还用于针对各所述目标体素分别执行以下处理:获取各所述体素面的邻接特征,以及各所述体素面的方向向量,所述邻接特征表征所述体素面是否存在相邻体素面;基于各所述体素面的邻接特征,确定相应所述体素面的权重;将各所述体素面的方向向量与对应的所述权重进行加权求和,得到所述目标体素对应的方向向量。
在一些实施例中,上述构建模块,还用于响应于所述邻接特征表征所述体素面存在所述相邻体素面,将所述体素面的权重设置为非零数值;响应于所述邻接矩阵表征所述体素面不存在所述相邻体素面,将所述体素面的权重设置为零。
在一些实施例中,上述构建模块,还用于基于所述方向向量,从所述多个目标体素中,选取多个目标阻挡体素,所述目标阻挡体素的方向向量的大小为非零常数;基于各所述目标阻挡体素的方向向量,构建所述目标阻挡体素的多个包围体;对各所述目标阻挡体素的多个包围体进行合并,得到多个阻挡包围体,其中,所述阻挡包围体的数量小于所述包围体的数量;在所述虚拟场景中所述阻挡包围体以外的三维空间内,构建由多个多面体组成的多面体网格。
在一些实施例中,上述构建模块,还用于针对各所述目标体素分别执行以下处理:基于所述目标体素的方向向量,确定所述方向向量的向量类型;当所述向量类型表征所述方向向量的大小为非零常数时,将所述目标体素确定为所述目标阻挡体素。
在一些实施例中,上述生成模块,还用于在所述起点多面体和所述终点多面体之间,构建由所述路径起点至所述路径终点的折线路径,其中,所述折线路径包括至少两条子路径;对所述至少两条子路径进行平滑处理,得到所述虚拟场景的目标路径。
在一些实施例中,上述生成模块,还用于基于所述路径起点,确定所述折线路径的第1中间点;将所述路径起点与所述第1中间点的连线,确定为第1 子路径;基于所述折线路径的第1中间点,确定所述折线路径的第i中间点, 2≤i≤N,N表征所述折线路径所包括的所述子路径的数量;将所述第i中间点与第i-1中间点的连线,确定为第i子路径;对所述i进行遍历,得到N-1条子路径;将所述第1子路径和所述N-1条子路径进行连接,得到由所述路径起点至所述路径终点的折线路径。
在一些实施例中,上述生成模块,还用于获取所述路径起点所在的起点多面体的各组成面,并确定各所述组成面的中心点;确定所述路径起点和各所述中心点之间的路径距离;将最短的所述路径距离对应的中心点,确定为所述折线路径的第1中间点。
在一些实施例中,上述生成模块,还用于确定各所述子路径与各所述多面体的组成面的交点,以及各所述交点所在的目标组成面;基于各所述交点所在的目标组成面,确定所述目标路径的拐点;将所述路径起点、所述目标路径的拐点和所述路径终点进行连接,得到所述虚拟场景的目标路径。
在一些实施例中,上述生成模块,还用于获取目标交点所在的目标组成面,并将所述目标交点所在的目标组成面确定为基准面,并获取所述目标组成面中除所述基准面以外的目标组成面,将所述基准面以外的目标组成面确定为参考组成面;将各参考组成面投影至所述基准面,得到各所述参考组成面对应的投影结果,其中,所述投影结果表征所述参考组成面在所述基准面上的投影面积;将所述投影面积为零的所述参考组成面,确定为拐点组成面,并将所述拐点组成面对应的交点,确定为所述目标路径的拐点。
本申请实施例提供一种电子设备,包括:
存储器,用于存储计算机可执行指令或者计算机程序;
处理器,用于执行所述存储器中存储的计算机可执行指令或者计算机程序时,实现本申请实施例提供的虚拟场景中的路径生成方法。
本申请实施例提供一种计算机可读存储介质,存储有计算机可执行指令,用于引起处理器执行时,实现本申请实施例提供的虚拟场景中的路径生成方法。
本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机程序或计算机可执行指令,该计算机程序或计算机可执行指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机可执行指令,处理器执行该计算机可执行指令,使得该电子设备执行本申请实施例上述的虚拟场景中的路径生成方法。
本申请实施例具有以下有益效果:
通过基于虚拟障碍物,从虚拟场景包括的多个体素中,选取多个目标体素,并基于目标体素的方向向量,在虚拟场景中虚拟障碍物以外的三维空间内,构建多面体网格,并确定路径起点和路径终点分别所在的起点多面体和终点多面体,基于起点多面体和终点多面体生成目标路径。如此,通过在虚拟场景包括的多个体素中,选取目标体素,从而使得后续参与路径生成的体素的数量显著减少,从而有效减少了生成路径过程中内存空间的占用和计算耗时,有效提高了生成路径的效率。同时,通过目标体素对应的方向向量来构建多面体网格,由于方向向量能够准确表征目标体素的特征,使得所确定的多面体网格能够准确避开虚拟障碍物,从而使得在多面体网格中所生成目标路径更加准确。从而,有效提高了路径的生成效率的同时,提高了所生成的路径的准确度。
附图说明
图1是相关技术在虚拟场景中生成路径的原理示意图;
图2是本申请实施例提供的虚拟场景中的路径生成系统的架构示意图;
图3是本申请实施例提供的用于虚拟场景中的生成路径的电子设备的结构示意图;
图4至图5是本申请实施例提供的虚拟场景中的路径生成方法的流程示意图;
图6是本申请实施例提供的虚拟场景中的路径生成方法的原理示意图;
图7是本申请实施例提供的虚拟场景中的路径生成方法的流程示意图;
图8是本申请实施例提供的虚拟场景中的路径生成方法的原理示意图;
图9是本申请实施例提供的虚拟场景中的路径生成方法的流程示意图;
图10至图11是本申请实施例提供的虚拟场景中的路径生成方法的原理示意图;
图12是本申请实施例提供的虚拟场景中的路径生成方法的流程示意图;
图13是本申请实施例提供的多面体网格的示意图;
图14至图15是本申请实施例提供的虚拟场景中的路径生成方法的原理示意图;
图16是本申请实施例提供的虚拟场景中的路径生成方法的整体流程示意图;
图17至图18是本申请实施例提供的虚拟场景中的路径生成方法的流程示意图;
图19至图20是本申请实施例提供的目标路径的效果示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)云游戏:是以云计算为基础的游戏方式,在云游戏的运行模式下,所有游戏都在服务器端运行,并将渲染完毕后的游戏画面压缩后通过网络传送给用户。在客户端,用户的游戏设备不需要任何高端处理器和显卡,只需要基本的视频解压能力就可以了。
2)虚拟场景:是游戏程序在终端设备上运行时显示(或提供)的场景。场景可以是对真实世界的仿真环境,也可以是半仿真半虚构的环境,还可以是纯虚构的虚拟环境。虚拟场景可以是二维虚拟场景、2.5维虚拟场景或者三维虚拟场景中的任意一种,本申请实施例中的虚拟场景可以是三维虚拟场景,例如,虚拟场景可以包括天空、陆地、海洋等,该陆地可以包括沙漠、城市等环境元素,用户可以控制虚拟对象在该虚拟场景中除虚拟障碍物以外的三维空间中进行移动。
3)响应于:用于表示所执行的操作所依赖的条件或者状态,当满足所依赖的条件或状态时,所执行的一个或多个操作可以是实时的,也可以具有设定的延迟;在没有特别说明的情况下,所执行的多个操作不存在执行先后顺序的限制。
4)游戏引擎:是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用从头开始。大部分都支持多种操作平台,如Linux、Mac OS X、微软Windows。游戏引擎包含以下系统:渲染引擎(即“渲染器”,含二维图像引擎和三维图像引擎)、物理引擎、碰撞检测系统、音效、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理。
5)体素(Volume Pixel):又称体积元素,是虚拟场景所在三维空间的最小组成单元,类比于像素,体素本身并不含有空间中位置的数据即(它们的坐标),却可以从它们相对于其它体素的位置来确定其具体位置,意即它们在构成单一张体积影像的数据结构中的位置。体素用恒定的标量或者向量表示一个立体的区域,体素的边界在于相邻晶格的中间位置。体素的数值可以表示不同的特性,体素可以包含本质上是向量的多个标量数值。
6)虚拟对象:是指在虚拟场景中的可活动对象。该可活动对象可以是虚拟人物、虚拟动物、动漫人物等,比如:在虚拟场景中显示的人物、动物、植物、油桶、墙壁、石块等。该虚拟对象可以是该虚拟场景中的一个虚拟的用于代表用户的虚拟形象。虚拟场景中可以包括多个虚拟对象,每个虚拟对象在虚拟场景中具有自身的形状和体积,占据虚拟场景中的一部分空间。
7)虚拟障碍物:在虚拟场景中,虚拟对象无法穿越其内部三维空间的虚拟物体。
在本申请实施例的实施过程中,申请人发现相关技术存在以下问题:
在相关技术中,参见图1,图1是相关技术在虚拟场景中生成路径的原理示意图,相关技术通过将整个空间分成小网格,就像在典型的八叉树中一样。不同之处在于数据存储在内存中的方式。在相关技术中,树的每一层的数据通常被压缩在一起,并按照顺序存储在内存中。八叉树每一层的节点存储在自己的数组中,叶节点存储在单独的64位值数组中。
由于相关技术所使用的是体素表示阻挡区域,一个阻挡的面可能需要大量的体素表示,而本申请实施例所使用的是四面体表示填充无阻挡区域,一般四面体的和阻挡区域的面平行,所以只需要几个面就能表示复杂的碰撞面,因此,本申请实施例提供的虚拟场景中的路径生成方法所占用的存储空间就会比相关技术少,因此,通过本申请实施例提供的虚拟场景中的路径生成方法,可以有效减少路径生成过程中的内存占用,从而显著提高生成路径的效率。
由于在相关技术中,较多的体素单元数量较多,并且是六面体表示的,而本申请拥有较少网格数量,并且都是四面体网格表示,因此,本申请实施例能够显著节省生成路径的耗时。
本申请实施例提供一种虚拟场景中的路径生成方法、装置、电子设备、计算机可读存储介质及计算机程序产品,能够有效提高生成路径的效率的同时,提高所生成的路径的准确度,下面说明本申请实施例提供的虚拟场景中的路径生成系统的示例性应用。
参见图2,图2是本申请实施例提供的虚拟场景中的路径生成系统100的架构示意图,终端(示例性示出了终端400)通过网络300连接服务器200,网络300可以是广域网或者局域网,又或者是二者的组合。
终端400用于供用户使用客户端410,在图形界面410-1(示例性示出了图形界面410-1)显示虚拟场景中的路径。终端400和服务器200通过有线或者无线网络相互连接。
在一些实施例中,服务器200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content DeliveryNetwork,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端400可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能电视、智能手表、车载终端等,但并不局限于此。本申请实施例提供的电子设备可以实施为终端,也可以实施为服务器。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例中不做限制。
在一些实施例中,服务器200获取虚拟场景包括的多个体素,以及虚拟场景中的虚拟障碍物,获取各目标体素对应的方向向量,基于方向向量,在虚拟场景中虚拟障碍物以外的三维空间内,构建多面体网格;基于起点多面体和终点多面体,生成虚拟场景中对应路径起点和路径终点的目标路径,并将目标路径发送至终端400。
在另一些实施例中,终端400获取虚拟场景包括的多个体素,以及虚拟场景中的虚拟障碍物,获取各目标体素对应的方向向量,基于方向向量,在虚拟场景中虚拟障碍物以外的三维空间内,构建多面体网格;基于起点多面体和终点多面体,生成虚拟场景中对应路径起点和路径终点的目标路径,并将目标路径发送至服务器200。
在另一些实施例中,本申请实施例可以借助于云技术(Cloud Technology) 实现,云技术是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云技术是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、以及应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源。
参见图3,图3是本申请实施例提供的用于虚拟场景中的生成路径的电子设备500的结构示意图,其中,图3所示出的电子设备500可以是图2中的服务器200或者终端400,图3所示的电子设备500包括:至少一个处理器410、存储器450、至少一个网络接口420。电子设备500中的各个组件通过总线系统 440耦合在一起。可理解,总线系统440用于实现这些组件之间的连接通信。总线系统440除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图3中将各种总线都标为总线系统440。
处理器410可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
存储器450可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器450可选地包括在物理位置上远离处理器410的一个或多个存储设备。
存储器450包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Me mory),易失性存储器可以是随机存取存储器(RAM,Random Access Memor y)。本申请实施例描述的存储器450旨在包括任意适合类型的存储器。
在一些实施例中,存储器450能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统451,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块452,用于经由一个或多个(有线或无线)网络接口420到达其他电子设备,示例性的网络接口420包括:蓝牙、无线相容性认证(WiFi, Wireless Fidelity)、和通用串行总线(USB,Universal Serial Bus)等。
在一些实施例中,本申请实施例提供的虚拟场景中的路径生成装置可以采用软件方式实现,图3示出了存储在存储器450中的虚拟场景中的路径生成装置455,其可以是程序和插件等形式的软件,包括以下软件模块:获取模块45 51、选取模块4552、构建模块4553、确定模块4554、生成模块4555,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
在另一些实施例中,本申请实施例提供的虚拟场景中的路径生成装置可以采用硬件方式实现,作为示例,本申请实施例提供的虚拟场景中的路径生成装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的虚拟场景中的路径生成方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circui t)、DSP、可编程逻辑器件(PLD,ProgrammableLogic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列 (FPGA,Field-Programmable Gate Array)或其他电子元件。
在一些实施例中,终端或服务器可以通过运行计算机程序或计算机可执行指令来实现本申请实施例提供的虚拟场景中的路径生成方法。举例来说,计算机程序可以是操作系统中的原生程序(例如,专用的路径生成程序)或软件模块,例如,可以嵌入到任意程序(如即时通信客户端、相册程序、电子地图客户端、导航客户端)中的路径生成模块;例如可以是本地(Native)应用程序 (APP,Application),即需要在操作系统中安装才能运行的程序。总而言之,上述计算机程序可以是任意形式的应用程序、模块或插件。
将结合本申请实施例提供的服务器或终端的示例性应用和实施,说明本申请实施例提供的虚拟场景中的路径生成方法。
参见图4,图4是本申请实施例提供的虚拟场景中的路径生成方法的流程示意图,将结合图4示出的步骤101至步骤106进行说明,本申请实施例提供的虚拟场景中的路径生成方法可以由服务器或终端单独实施,或者由服务器及终端协同实施,下面将以服务器单独实施为例进行说明。
在步骤101中,获取虚拟场景包括的多个体素,以及虚拟场景中的虚拟障碍物。
在一些实施例中,是游戏程序在终端设备上运行时显示(或提供)的场景。场景可以是对真实世界的仿真环境,也可以是半仿真半虚构的环境,还可以是纯虚构的虚拟环境。虚拟场景可以是二维虚拟场景、2.5维虚拟场景或者三维虚拟场景中的任意一种,本申请实施例对虚拟场景的维度不加以限定。例如,虚拟场景可以包括天空、陆地、海洋等,该陆地可以包括沙漠、城市等环境元素,用户可以控制虚拟对象在该虚拟场景中除虚拟障碍物以外的三维空间中进行移动。
在一些实施例中,体素又称体积元素,是虚拟场景所在三维空间的最小组成单元,虚拟场景由多个体素构成,类比于像素,体素本身并不含有空间中位置的数据即(它们的坐标),却可以从它们相对于其它体素的位置来确定其具体位置,意即它们在构成单一张体积影像的数据结构中的位置。体素用恒定的标量或者向量表示一个立体的区域,体素的边界在于相邻晶格的中间位置。
在一些实施例中,虚拟障碍物是在虚拟场景中,虚拟对象无法穿越其内部三维空间的虚拟物体。
在步骤102中,基于虚拟障碍物,从虚拟场景包括的多个体素中,选取多个目标体素。
在一些实施例中,目标体素与虚拟障碍物之间的距离小于距离阈值。
在一些实施例中,虚拟场景包括的多个体素包括目标体素和非目标体素,其中,目标体素与虚拟障碍物之间的距离小于距离阈值,非目标体素与虚拟障碍物之间的距离大于虚拟阈值,距离阈值可以根据实际情况设置为不同的值,虚拟场景中所包括的多个体素的数量大于目标体素的数量。
作为示例,参见图6,图6是本申请实施例提供的虚拟场景中的路径生成方法的原理示意图,基于虚拟障碍物3,从虚拟场景包括的多个体素(多个体素1、多个体素2和多个体素4)中,选取多个目标体素(多个体素1和多个体素2)。
在一些实施例中,参见图5,图5是本申请实施例提供的虚拟场景中的路径生成方法的流程示意图,图5所示出的步骤102可以通过针对各体素分别执行以下步骤1021至步骤1022实现。
在步骤1021中,获取体素的中心点,以及距离阈值,并确定中心点与虚拟障碍物之间的距离。
在一些实施例中,体素的中心点是指体素的体积中心点,中心点与虚拟障碍物之间的距离是指中心点与虚拟障碍物之间的最短距离。
作为示例,参见图6,以图6中所示出的体素1为例进行说明,获取体素1 的中心点,确定体素1的中心点与虚拟障碍物之间的距离。
作为示例,参见图6,以图6中所示出的体素2为例进行说明,获取体素2 的中心点,确定体素2的中心点与虚拟障碍物之间的距离。
作为示例,参见图6,以图6中所示出的体素4为例进行说明,获取体素4 的中心点,确定体素4的中心点与虚拟障碍物之间的距离。
在步骤1022中,当距离小于距离阈值时,将体素确定为目标体素。
作为示例,参见图6,以图6中所示出的体素1为例进行说明,当体素1 的中心点与虚拟障碍物之间的距离小于距离阈值时,将体素1确定为目标体素。
作为示例,参见图6,以图6中所示出的体素2为例进行说明,当体素2 的中心点与虚拟障碍物之间的距离小于距离阈值时,将体素2确定为目标体素。
作为示例,参见图6,以图6中所示出的体素4为例进行说明,当体素4 的中心点与虚拟障碍物之间的距离大于距离阈值时,将体素4确定为非目标体素。
如此,通过从虚拟场景包括的多个体素中,选取多个目标体素,从而实现了对虚拟场景所包括的体素的筛选,得到与虚拟障碍物之间的距离较近的目标体素,从而便于后续寻路的过程中,避开目标体素进行寻路,从而使得虚拟对象在按照目标路径进行移动时,避开虚拟障碍物,从而有效提高了所确定的目标路径的准确性。
在步骤103中,获取各目标体素对应的方向向量。
在一些实施例中,目标体素的方向向量,表征目标体素在虚拟场景中的方向和位置,其中,方向向量的起点表征目标体素在虚拟场景中的位置,方向向量的大小和方向表征目标体素在虚拟场景中的方向。
在一些实施例中,参见图7,目标体素包括多个体素面,图7是本申请实施例提供的虚拟场景中的路径生成方法的流程示意图,图7所示出的步骤103 可以通过针对各目标体素分别执行以下步骤1031至步骤1033实现。
在步骤1031中,获取各体素面的邻接特征,以及各体素面的方向向量,邻接特征表征体素面是否存在相邻体素面。
作为示例,当目标体素为六面体时,目标体素包括六个体素面,获取六个体素面中的各体素面的临接特征,以及各体素面的方向向量,邻接特征表征体素面是否存在相邻体素面,即,当邻接特征表征体素面存在相邻体素面时,则体素面对应的目标体素在该体素面侧与其他体素存在接触;当邻接特征表征体素面不存在相邻体素面时,则体素面对应的目标体素在该体素面侧与其他体素不存在接触。
作为示例,参见图6,以目标体素5和目标体素6为例进行说明,目标体素5和目标体素6位置相邻,目标体素5的体素面包括与目标体素6接触的第一体素面和不与目标体素6接触的第二体素面,第一体素面的邻接特征表征体素面存在相邻体素面。
在步骤1032中,基于各体素面的邻接特征,确定相应体素面的权重。
在一些实施例中,上述步骤1032可以通过如下方式实现:响应于邻接特征表征体素面存在相邻体素面,将体素面的权重设置为非零数值;响应于邻接矩阵表征体素面不存在相邻体素面,将体素面的权重设置为零。
在一些实施例中,上述响应于邻接特征表征体素面存在相邻体素面,将体素面的权重设置为非零数值可以通过如下方式实现:响应于邻接特征表征体素面存在相邻体素面,将体素面的权重设置为1。
如此,通过体素面的邻接特征,设置相应体素面的权重,将不存在相邻体素面的体素面的权重设置为0,从而实现了对不存在相邻体素面的筛选,有效提高了后续所确定的目标体素的方向向量的准确性。
在步骤1033中,将各体素面的方向向量与对应的权重进行加权求和,得到目标体素对应的方向向量。
在一些实施例中,当目标体素为六面体时,目标体素对应的方向向量的表达式可以为:
W=α1w1+α2w2+α3w3+α4w4+α5w5+α6w6 (1)
其中,W表征目标体素对应的方向向量,α1至α6表征目标体素的各体素面的权重,w1至w6表征各体素面的方向向量。
作为示例,参见图8,图8是本申请实施例提供的虚拟场景中的路径生成方法的原理示意图,目标体素70对应的方向向量为方向向量71,目标体素72 由于各体素面的权重均为0,故目标体素72的方向向量为0。
在步骤104中,基于方向向量,在虚拟场景中虚拟障碍物以外的三维空间内,构建由多个多面体组成的多面体网格。
在一些实施例中,上述步骤104可以通过如下方式实现:基于方向向量,在虚拟场景中虚拟障碍物以外的三维空间内,通过泊松曲面重建算法,构建由多个多面体组成的多面体网格。
在一些实施例中,泊松曲面重建算法是一种基于隐式函数的三角网格重建算法,通过对点云进行优化插值处理来获取封闭曲面,封面曲面所围成的三维空间构成多面体。
在一些实施例中,参见图9,图9是本申请实施例提供的虚拟场景中的路径生成方法的流程示意图,图9所示出的步骤104可以通过执行以下步骤1041 至步骤1044实现。
在步骤1041中,基于方向向量,从多个目标体素中,选取多个目标阻挡体素,目标阻挡体素的方向向量的大小为非零常数。
在一些实施例中,目标体素的数量大于目标阻挡体素的数量,目标体素包括目标阻挡体素和非目标阻挡体素,目标阻挡体素的方向向量的大小为非零常数,非目标阻挡体素的方向向量的大小为零。
在一些实施例中,上述步骤1041可以针对各目标体素分别执行以下处理实现:基于目标体素的方向向量,确定方向向量的向量类型;当向量类型表征方向向量的大小为非零常数时,将目标体素确定为目标阻挡体素。
作为示例,参见图8,基于目标体素71的方向向量,确定方向向量的向量类型;当向量类型表征方向向量的大小为非零常数时,将目标体素71确定为目标阻挡体素;基于目标体素72的方向向量,确定方向向量的向量类型;当向量类型表征方向向量的大小为零时,将目标体素确定为非目标阻挡体素。
在步骤1042中,基于各目标阻挡体素的方向向量,构建目标阻挡体素的多个包围体。
在一些实施例中,目标阻挡体素的包围体,用于在虚拟场景的三维空间中,将目标阻挡体素进行包围。
在一些实施例中,上述步骤1042可以通过如下方式实现:基于各目标阻挡体素的方向向量,通过泊松曲面重建算法,构建目标阻挡体素的多个包围体。
在一些实施例中,泊松曲面重建算法是一种基于隐式函数的三角网格重建算法,通过对点云进行优化插值处理来获取封闭曲面,封面曲面所围成的三维空间构成多面体。
作为示例,参见图10,图10是本申请实施例提供的虚拟场景中的路径生成方法的原理示意图,基于各目标阻挡体素的方向向量,构建图10所示出的目标阻挡体素的多个包围体。
在步骤1043中,对各目标阻挡体素的多个包围体进行合并,得到多个阻挡包围体。
在一些实施例中,阻挡包围体的数量小于包围体的数量。
在一些实施例中,上述步骤1043可以通过如下方式实现:通过网格简化算法,对各目标阻挡体素的多个包围体进行合并,得到多个阻挡包围体。
在一些实施例中,网格简化算法(Quadric Error Metrics,GEM),是局部操作的算法,通过对上述包围体的边进行收缩,在流形三角网格表面上收缩一条边,会使得顶点数减少,包围体的数量减少,从而实现多个包围体的合并。
作为示例,参见图11,图11是本申请实施例提供的虚拟场景中的路径生成方法的原理示意图,对各目标阻挡体素的多个包围体进行合并,得到如图10 所示出的多个阻挡包围体。
在步骤1044中,在虚拟场景中阻挡包围体以外的三维空间内,构建由多个多面体组成的多面体网格。
作为示例,参见图13,图13是本申请实施例提供的多面体网格的示意图,在虚拟场景中阻挡包围体82以外的三维空间内,构建如图11所示出的由多个多面体组成的多面体网格81。
如此,由于在三维空间中,阻挡包围体可以准确表征虚拟障碍物所在的三维空间,通过在虚拟场景中阻挡包围体以外的三维空间中,构建多面体网格,从而使得所构建的多面体网格准确的避开了虚拟障碍物,便于后续基于多面体网格确定目标路径,使得所确定的目标路径能够准确避开虚拟障碍物。
在步骤105中,获取路径起点及路径终点,并从多面体网格中,确定路径起点所在的起点多面体和路径终点所在的终点多面体。
在一些实施例中,路径起点用于指示目标路径的起点在虚拟场景中的三维坐标位置,路径终点用于指示目标路径的终点在虚拟场景中的三维坐标位置。
在一些实施例中,上述步骤105中从多面体网格中,确定路径起点所在的起点多面体和路径终点所在的终点多面体,可以通过如下方式实现:将多面体网格中的各多面体的坐标范围,分别与路径起点和路径终点进行对比,得到与路径起点匹配的多面体,以及与路径终点匹配的多面体;并将与路径起点匹配的多面体确定为起点多面体,将与路径终点匹配的多面体确定为终点多面体。
在步骤106中,基于起点多面体和终点多面体,生成虚拟场景中对应路径起点和路径终点的目标路径。
在一些实施例中,上述步骤106可以通过如下方式实现:基于起点多面体和终点多面体,在虚拟场景中阻挡包围体以外的三维空间中,生成虚拟场景中对应路径起点和路径终点的目标路径。
在一些实施例中,目标路径,用于供虚拟对象从虚拟场景的路径起点,移动至虚拟场景的路径终点。
在一些实施例中,参见图12,图12是本申请实施例提供的虚拟场景中的路径生成方法的流程示意图,图12所示出的步骤106可以通过执行以下步骤1 061至步骤1062实现。
在步骤1061中,在起点多面体和终点多面体之间,构建由路径起点至路径终点的折线路径,其中,折线路径包括至少两条子路径。
在一些实施例中,折线路径的起点为上述路径起点,折线路径的终点为上述路径终点,上述至少两条子路径各自的路径节点进行首尾相连,得到上述折线路径。
在一些实施例中,上述步骤1061可以通过如下方式实现:基于路径起点,确定折线路径的第1中间点;将路径起点与第1中间点的连线,确定为第1子路径;基于折线路径的第1中间点,确定折线路径的第i中间点,2≤i≤N, N表征折线路径所包括的子路径的数量;将第i中间点与第i-1中间点的连线,确定为第i子路径;对i进行遍历,得到N-1条子路径;将第1子路径和N-1 条子路径进行连接,得到由路径起点至路径终点的折线路径。
作为示例,参见图14,图14是本申请实施例提供的虚拟场景中的路径生成方法的原理示意图,基于路径起点91,确定折线路径的第1中间点92,将路径起点91与第1中间点92的连线,确定为第1子路径;基于折线路径的第1 中间点,确定折线路径的第2中间点93、第3中间点94、第4中间点95、第5 中间点96;将第1中间点92和第2中间点93的连线确定为第2子路径、第2 中间点93和第3中间点94的连线确定为第3子路径、第3中间点94和第4 中间点95的连线确定为第4子路径、第5中间点96和路径终点97的连线确定为第5子路径;将第1子路径、第2子路径、第3子路径、第4子路径、第5 子路径进行连接,得到由路径起点91至路径终点97的折线路径。
在一些实施例中,上述基于路径起点,确定折线路径的第1中间点,可以通过如下方式实现:获取路径起点所在的起点多面体的各组成面,并确定各组成面的中心点;确定路径起点和各中心点之间的路径距离;将最短的路径距离对应的中心点,确定为折线路径的第1中间点。
作为示例,参见图14,获取路径起点所在的起点多面体的各组成面,并确定各组成面的中心点(例如,中心点92、中心点922、中心点921);确定路径起点91和各中心点(例如,中心点92、中心点922、中心点921)之间的路径距离;将最短的路径距离对应的中心点,确定为折线路径的第1中间点92。
在一些实施例中,上述基于折线路径的第1中间点,确定折线路径的第i 中间点,可以通过如下方式实现:获取第1中间点所在的起点多面体的各组成面,并确定各组成面的中心点;确定第1中间点和各中心点之间的路径距离;将最短的路径距离对应的中心点,确定为折线路径的第2中间点;获取第2中间点所在的起点多面体的各组成面,并确定各组成面的中心点;确定第2中间点和各中心点之间的路径距离;将最短的路径距离对应的中心点,确定为折线路径的第3中间点。
如此,通过在起点多面体和终点多面体之间,逐步确定路径的中间点,并将路径起点、路径终点和各中间点的连线确定为折线路径,从而可以在路径起点和路径终点之间,准确确定出大致的目标路径的走向,有效提高了所确定的目标路径的准确性。
在步骤1062中,对至少两条子路径进行平滑处理,得到虚拟场景的目标路径。
在一些实施例中,虚拟场景的目标路径中所包括的目标子目标的数量小于上述至少两条子路径的数量,由于平滑处理所确定的目标路径,较之于至少两条子路径,实现了子路径数量的减少,从而实现了目标路径的轨迹较之于至少两条子路径相对平滑,有效减少了目标路径的长度,从而使得所确定的目标路径是虚拟场景的路径起点和路径终点之间距离最近,最有利于虚拟对象从路径起点到达路径终点的路径。
在一些实施例中,上述对至少两条子路径进行平滑处理,得到虚拟场景的目标路径,可以通过如下方式实现:确定各子路径与各多面体的组成面的交点,以及各交点所在的目标组成面;基于各交点所在的目标组成面,确定目标路径的拐点;将路径起点、目标路径的拐点和路径终点进行连接,得到虚拟场景的目标路径。
在一些实施例中,各子路径与各多面体的组成面的交点为上述折线路径的中间点。
作为示例,参见图14,确定各子路径与各多面体的组成面的交点(交点9 2、交点93、交点94、交点95、交点96),以及各交点(交点92、交点93、交点94、交点95、交点96)所在的目标组成面。
在一些实施例中,上述基于各交点所在的目标组成面,确定目标路径的拐点,可以通过如下方式实现:获取目标交点所在的目标组成面,并将目标交点所在的目标组成面确定为基准面,并获取目标组成面中除基准面以外的目标组成面,将基准面以外的目标组成面确定为参考组成面;将各参考组成面投影至基准面,得到各参考组成面对应的投影结果,其中,投影结果表征参考组成面在基准面上的投影面积;将投影面积为零的参考组成面,确定为拐点组成面,并将拐点组成面对应的交点,确定为目标路径的拐点。
在一些实施例中,当目标交点是路径起点所在的子路径与多个多面体的组成面的交点时,参考组成面是目标组成面中除起点组成面以外的目标组成面。当目标交点是第i中间点所在的子路径与多个多面体的组成面的交点时,参考组成面是目标组成面中除第i中间点所在的组成面以外的目标组成面。
作为示例,参见图15,图15是本申请实施例提供的虚拟场景中的路径生成方法的原理示意图,获取目标交点83所在的目标组成面84,并将目标交点8 3所在的目标组成面84确定为基准面,并获取目标组成面中除基准面以外的目标组成面(例如,目标组成面85、目标组成面86、目标组成面87、目标组成面88、目标组成面89),将基准面以外的目标组成面确定为参考组成面(例如,目标组成面85、目标组成面86、目标组成面87、目标组成面88、目标组成面 89);将参考组成面85投影至基准面84、参考组成面86投影至基准面84、参考组成面86投影至基准面84、参考组成面87投影至基准面84、参考组成面8 8投影至基准面84,得到各参考组成面对应的投影结果,其中,投影结果表征参考组成面在基准面上的投影面积;将投影面积为零的参考组成面(参考组成面88),确定为拐点组成面,并将拐点组成面对应的交点,确定为目标路径的拐点。
如此,通过基于虚拟障碍物,从虚拟场景包括的多个体素中,选取多个目标体素,并基于目标体素的方向向量,在虚拟场景中虚拟障碍物以外的三维空间内,构建多面体网格,并确定路径起点和路径终点分别所在的起点多面体和终点多面体,基于起点多面体和终点多面体生成目标路径。如此,通过在虚拟场景包括的多个体素中,选取目标体素,从而使得后续参与路径生成的体素的数量显著减少,从而有效减少了生成路径过程中内存空间的占用和计算耗时,有效提高了生成路径的效率。同时,通过目标体素对应的方向向量来构建多面体网格,由于方向向量能够准确表征目标体素的特征,使得所确定的多面体网格能够准确避开虚拟障碍物,从而使得在多面体网格中所生成目标路径更加准确。从而,有效提高生成路径的效率的同时,提高所生成的路径的准确度。
下面,将说明本申请实施例在一个实际的网络游戏的应用场景中的示例性应用。
在一些实际的网格游戏的应用场景中,游戏虚拟对象可以在游戏虚拟场景中除虚拟障碍物以外的三维空间中进行活动,通过本申请实施例提供的虚拟场景中的路径生成方法,可以在虚拟场景中的路径起点和路径终点之间生成最佳的目标路径。
在一些实施例中,参见图16,图16是本申请实施例提供的虚拟场景中的路径生成方法的整体流程示意图。在导航网格(即上文所描述的多面体网格) 生成阶段,基于场景(虚拟场景)几何结构,通过曲面重建和三角剖分算法等生成四面体导航网格(即上文所描述的多面体网格);在运行时路径计算阶段,基于生成的四面体网格进行寻路。
在一些实施例中,参见图17,图17是本申请实施例提供的虚拟场景中的路径生成方法的流程示意图,上述在导航网格(即上文所描述的多面体网格) 生成阶段生成四面体导航网格可以通过图17所示出的步骤201至步骤205实现。
在步骤201中,使用稀疏八叉树将场景几何体素化。
作为示例,参见图6,场景中碰撞被设定大小的体素表示,体素区域都表示阻挡区域,采用稀疏八叉树算法加快体素化的过程,阻挡体素的判定策略是,体素的中心点距离碰撞小于设定的半径都认为是阻挡体素,都是需要提取出来的。
在一些实施例中,参见图6,针对图6中的各体素块,分别执行以下处理:获取体素块中心点,确定中心点与阻挡物之间的距离,当距离小于距离半径时,将体素块确定为阻挡体素块;针对各阻挡体素块分别执行以下处理:判断阻挡体素块是否与阻挡物相交;当阻挡体素块与阻挡物相交时,将阻挡体素块确定为第一阻挡体素块;当阻挡体素块与阻挡物不相交时,将阻挡体素块确定为第二阻挡体素块。
在步骤202中,将体素简化成有向点。
作为示例,参见图8,经过第一步体素化后,每个体素的面要么存在相邻的体素,要么是不存在相邻体素,如果存在相邻的阻挡体素,认为该方向的权重是0,否则权重是1,最后计算6个面的方向向量的之和,得到体素的方向,再将体素简化成一个点,这样就能得到一个方向点。
作为示例,参见图8,针对各阻挡体素块中的各体素面分别执行以下处理:判断体素面是否有相邻的体素面;当存在相邻的体素面时,将体素面的权重确定为1;当不存在相邻的体素面时,将体素面的权重确定为0;针对各阻挡体素块分别执行以下处理:将阻挡体素块中的各体素面的方向向量,按照各自的权重,进行向量矢量求和,得到阻挡体素块的方向向量;当阻挡体素块的方向向量为非0时,将阻挡体素块确定为目标阻挡体素块;针对各目标阻挡体素块执行以下处理:构建目标阻挡体素块的目标向量;目标向量,是目标阻挡体素块的方向向量,且以目标阻挡体素块的中心点为起点。
在步骤203中,基于有向点使用泊松算法重建曲面。
作为示例,参见图10,以第二步生成的方向点作为输入,使用泊松曲面重建算法,生成封闭的曲面,如图10所示生成的包围面(即重建曲面)。
在步骤204中,对重建曲面进行曲面简化。
作为示例,参见图11,因为生成的包围面是基于体素简化后的有向点生成,所以生成的三角网格的数量和体素的数量相当,对于大而平的面是不需要细小的三角面表示,所以采用网格简化算法进行保持网格拓扑的网格简化操作,得到如图11所示的简化后的网格。
在步骤205中,使用三角剖分算法生成四面体网格。
作为示例,参见图13,以上过程的目的是生成包围场景碰撞的包围曲面,得到包围曲面后,就是以生成的包围曲面作为约束边界面,在场景中没有阻挡体素块的区域使用四面体网格填充,可以采用四面体网格剖分算法,以包围曲面作为边界面进行四面体网格划分,剔除场景中的阻挡区域,就得到了可以用于后续寻路的四面体网格,如图13所示为实际场景的生成的四面体网格。
在一些实施例中,参见图18,图18是本申请实施例提供的虚拟场景中的路径生成方法的流程示意图,上述在运行时路径计算阶段,基于生成的四面体网格进行寻路可以通过图18所示出的步骤401至步骤402实现。
在步骤401中,基于四面体网格寻找路径。
作为示例,参见图14,基于生成的四面体网格,就可以找到一条最优的路径,四面体网格的估值函数原理示意图如图14所示,从路径起点至路径终点的最短路径代价的表达式可以为:
f=g+h (2)
其中,f表征从起点(start)到目标点的最短路径代价估计,g表征穿过四面体相邻面中心的欧拉距离,h表征当前面的中心到目标点的欧拉距离。
在一些实施例中,参见图14,以路径起始点(start)为起点,以路径终点 (end)为终点,迭代N轮计算,得到路径起始点(start)到路径终点(end) 之间的最佳路径,其中,每轮迭代生成最佳路径的一个子线段,即,最佳路径包括N条子线段。第1轮迭代:针对路径起始点执行以下处理:从生成的四面体网格中,确定路径起始点所在的目标四面体网格;获取目标四面体网格的各组成面,并确定各组成面的中心点;并确定各中心点与起始点之间的距离;将距离最小的中心点,确定为第1轮迭代的目标中心点;将目标中心点和路径起始点的连线,确定为第1轮迭代的子线段;第2轮迭代:将第1轮迭代的目标中心点,确定为第2轮迭代的起点,运算过程与第1轮迭代类似,得到第2轮迭代的目标中心点,以及第2轮迭代的子线段。
在步骤402中,基于四面体网格的路径拉直。
作为示例,参见图15,路径拉直所得到的是一条穿过四面体面中心点的路径,实际上并不是全局最优的路径点,需要将这些路径点拉直,这里采用了透视投影的方法,如图14所示,从起点出发,以第一个面为基础面,按序将得到的路径面投影到基础面上,当第N个投影面与前N-1个面的相交多边形不相交时,表示出现拐点,需要将相交多边形方向投影到第N-1个面,得到反向投影;求得反向投影与第N个面的最近点,这就是属于拐点,前N-1个面的原有的弯折路径拉直过程:将第1个面的路径点和拐点连接,得到的路径,替换前N-1 个面的弯折路径,从而实现拉直。再以这个拐点为起始点,重复使用算法,直到目标点。
作为示例,参见图19,图19是本申请实施例提供的目标路径的效果示意图。通过本申请实施例提供的虚拟场景中的路径生成方法,可以在虚拟场景中的路径起点91和路径终点92之间生成目标路径。
在一些实施例中,参见图20,图20是本申请实施例提供的目标路径的效果示意图。在虚拟场景中,在路径起点91和路径终点92之间,通过本申请实施例提供的虚拟场景中的路径生成方法,可以在虚拟场景中的路径起点91和路径终点92之间生成目标路径922。图20中所示出的路径911,是相关技术中生成的路径起点91和路径终点92之间的路径911。可以看出,路径911的长度明显大于目标路径922,因此,通过本申请实施例提供的虚拟场景中的路径生成方法,可以有效缩短目标路径的长度。
如此,通过基于虚拟障碍物,从虚拟场景包括的多个体素中,选取多个目标体素,并基于目标体素的方向向量,在虚拟场景中虚拟障碍物以外的三维空间内,构建多面体网格,并确定路径起点和路径终点分别所在的起点多面体和终点多面体,基于起点多面体和终点多面体生成目标路径。如此,通过在虚拟场景包括的多个体素中,选取目标体素,从而使得后续参与路径生成的体素的数量显著减少,从而有效减少了生成路径过程中内存空间的占用和计算耗时,有效提高了生成路径的效率。同时,通过目标体素对应的方向向量来构建多面体网格,由于方向向量能够准确表征目标体素的特征,使得所确定的多面体网格能够准确避开虚拟障碍物,从而使得在多面体网格中所生成目标路径更加准确。从而,有效提高路径的生成效率的同时,提高所生成的路径的准确度。
可以理解的是,在本申请实施例中,涉及到体素等相关的数据,当本申请实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
下面继续说明本申请实施例提供的虚拟场景中的路径生成装置455的实施为软件模块的示例性结构,在一些实施例中,如图3所示,存储在存储器450 的虚拟场景中的路径生成装置455中的软件模块可以包括:获取模块4551,用于获取虚拟场景包括的多个体素,以及虚拟场景中的虚拟障碍物;选取模块45 52,用于基于虚拟障碍物,从虚拟场景包括的多个体素中,选取多个目标体素,目标体素与虚拟障碍物之间的距离小于距离阈值;构建模块4553,用于获取各目标体素对应的方向向量,并基于方向向量,在虚拟场景中虚拟障碍物以外的三维空间内,构建由多个多面体组成的多面体网格;确定模块4554,用于获取路径起点及路径终点,并从多面体网格中,确定路径起点所在的起点多面体和路径终点所在的终点多面体;生成模块4555,用于基于起点多面体和终点多面体,生成虚拟场景中对应路径起点和路径终点的目标路径。
在一些实施例中,上述选取模块4552,还用于针对各体素分别执行以下处理:获取体素的中心点,以及距离阈值,并确定中心点与虚拟障碍物之间的距离;当距离小于距离阈值时,将体素确定为目标体素。
在一些实施例中,上述构建模块4553,还用于针对各目标体素分别执行以下处理:获取各体素面的邻接特征,以及各体素面的方向向量,邻接特征表征体素面是否存在相邻体素面;基于各体素面的邻接特征,确定相应体素面的权重;将各体素面的方向向量与对应的权重进行加权求和,得到目标体素对应的方向向量。
在一些实施例中,上述构建模块4553,还用于响应于邻接特征表征体素面存在相邻体素面,将体素面的权重设置为非零数值;响应于邻接矩阵表征体素面不存在相邻体素面,将体素面的权重设置为零。
在一些实施例中,上述构建模块4553,还用于基于方向向量,从多个目标体素中,选取多个目标阻挡体素,目标阻挡体素的方向向量的大小为非零常数;基于各目标阻挡体素的方向向量,构建目标阻挡体素的多个包围体;对各目标阻挡体素的多个包围体进行合并,得到多个阻挡包围体,其中,阻挡包围体的数量小于包围体的数量;在虚拟场景中阻挡包围体以外的三维空间内,构建由多个多面体组成的多面体网格。
在一些实施例中,上述构建模块4553,还用于针对各目标体素分别执行以下处理:基于目标体素的方向向量,确定方向向量的向量类型;当向量类型表征方向向量的大小为非零常数时,将目标体素确定为目标阻挡体素。
在一些实施例中,上述生成模块4555,还用于在起点多面体和终点多面体之间,构建由路径起点至路径终点的折线路径,其中,折线路径包括至少两条子路径;对至少两条子路径进行平滑处理,得到虚拟场景的目标路径。
在一些实施例中,上述生成模块4555,还用于基于路径起点,确定折线路径的第1中间点;将路径起点与第1中间点的连线,确定为第1子路径;基于折线路径的第1中间点,确定折线路径的第i中间点,2≤i≤N,N表征折线路径所包括的子路径的数量;将第i中间点与第i-1中间点的连线,确定为第i 子路径;对i进行遍历,得到N-1条子路径;将第1子路径和N-1条子路径进行连接,得到由路径起点至路径终点的折线路径。
在一些实施例中,上述生成模块4555,还用于获取路径起点所在的起点多面体的各组成面,并确定各组成面的中心点;确定路径起点和各中心点之间的路径距离;将最短的路径距离对应的中心点,确定为折线路径的第1中间点。
在一些实施例中,上述生成模块4555,还用于确定各子路径与各多面体的组成面的交点,以及各交点所在的目标组成面;基于各交点所在的目标组成面,确定目标路径的拐点;将路径起点、目标路径的拐点和路径终点进行连接,得到虚拟场景的目标路径。
在一些实施例中,上述生成模块4555,还用于获取目标交点所在的目标组成面,并将目标交点所在的目标组成面确定为基准面,并获取目标组成面中除基准面以外的目标组成面,将基准面以外的目标组成面确定为参考组成面;将各参考组成面投影至基准面,得到各参考组成面对应的投影结果,其中,投影结果表征参考组成面在基准面上的投影面积;将投影面积为零的参考组成面,确定为拐点组成面,并将拐点组成面对应的交点,确定为目标路径的拐点。
本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机程序或计算机可执行指令,该计算机程序或计算机可执行指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机可执行指令,处理器执行该计算机可执行指令,使得该电子设备执行本申请实施例上述的虚拟场景中的路径生成方法。
本申请实施例提供一种存储有计算机可执行指令的计算机可读存储介质,其中存储有计算机可执行指令,当计算机可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的虚拟场景中的路径生成方法,例如,如图4示出的虚拟场景中的路径生成方法。
在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EP ROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种电子设备。
在一些实施例中,计算机可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,计算机可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,HyperText Markup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,计算机可执行指令可被部署为在一个电子设备上执行,或者在位于一个地点的多个电子设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个电子设备上执行。
综上,本申请实施例具有如下有益效果:
(1)通过基于虚拟障碍物,从虚拟场景包括的多个体素中,选取多个目标体素,并基于目标体素的方向向量,在虚拟场景中虚拟障碍物以外的三维空间内,构建多面体网格,并确定路径起点和路径终点分别所在的起点多面体和终点多面体,基于起点多面体和终点多面体生成目标路径。如此,通过在虚拟场景包括的多个体素中,选取目标体素,从而使得后续参与路径生成的体素的数量显著减少,从而有效减少了生成路径过程中内存空间的占用和计算耗时,有效提高了生成路径的效率。同时,通过目标体素对应的方向向量来构建多面体网格,由于方向向量能够准确表征目标体素的特征,使得所确定的多面体网格能够准确避开虚拟障碍物,从而使得在多面体网格中所生成目标路径更加准确。从而,有效提高生成路径的效率的同时,提高所生成的路径的准确度。
(2)通过从虚拟场景包括的多个体素中,选取多个目标体素,从而实现了对虚拟场景所包括的体素的筛选,得到与虚拟障碍物之间的距离较近的目标体素,从而便于后续寻路的过程中,避开目标体素进行寻路,从而使得虚拟对象在按照目标路径进行移动时,避开虚拟障碍物,从而有效提高了所确定的目标路径的准确性。
(3)通过体素面的邻接特征,设置相应体素面的权重,将不存在相邻体素面的体素面的权重设置为0,从而实现了对不存在相邻体素面的筛选,有效提高了后续所确定的目标体素的方向向量的准确性。
(4)通过对各目标阻挡体素的多个包围体进行合并,从而有效减少了目标阻挡体素的包围体的数量,为后续在虚拟场景中阻挡包围体以外的三维空间内构建多面体网格,有效减少了运算量,从而有效提高了目标路径的生成效率。
(5)由于在三维空间中,阻挡包围体可以准确表征虚拟障碍物所在的三维空间,通过在虚拟场景中阻挡包围体以外的三维空间中,构建多面体网格,从而使得所构建的多面体网格准确的避开了虚拟障碍物,便于后续基于多面体网格确定目标路径,使得所确定的目标路径能够准确避开虚拟障碍物。
(6)通过在起点多面体和终点多面体之间,逐步确定路径的中间点,并将路径起点、路径终点和各中间点的连线确定为折线路径,从而可以在路径起点和路径终点之间,准确确定出大致的目标路径的走向,有效提高了所确定的目标路径的准确性。
(7)虚拟场景的目标路径中所包括的目标子目标的数量小于上述至少两条子路径的数量,由于平滑处理所确定的目标路径,较之于至少两条子路径,实现了子路径数量的减少,从而实现了目标路径的轨迹较之于至少两条子路径相对平滑,有效减少了目标路径的长度,从而使得所确定的目标路径是虚拟场景的路径起点和路径终点之间距离最近,最有利于虚拟对象从路径起点到达路径终点的路径。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。
Claims (15)
1.一种虚拟场景中的路径生成方法,其特征在于,所述方法包括:
获取虚拟场景包括的多个体素,以及所述虚拟场景中的虚拟障碍物;
基于所述虚拟障碍物,从所述虚拟场景包括的多个体素中,选取多个目标体素,所述目标体素与所述虚拟障碍物之间的距离小于距离阈值;
获取各所述目标体素对应的方向向量,并基于所述方向向量,在所述虚拟场景中所述虚拟障碍物以外的三维空间内,构建由多个多面体组成的多面体网格;
获取路径起点及路径终点,并从所述多面体网格中,确定所述路径起点所在的起点多面体和所述路径终点所在的终点多面体;
基于所述起点多面体和所述终点多面体,生成所述虚拟场景中对应所述路径起点和所述路径终点的目标路径。
2.根据权利要求1所述的方法,其特征在于,所述基于所述虚拟障碍物,从所述虚拟场景包括的多个体素中,选取多个目标体素,包括:
针对各所述体素分别执行以下处理:
获取所述体素的中心点,以及所述距离阈值,并确定所述中心点与所述虚拟障碍物之间的距离;
当所述距离小于所述距离阈值时,将所述体素确定为所述目标体素。
3.根据权利要求1所述的方法,其特征在于,所述目标体素包括多个体素面,所述获取各所述目标体素对应的方向向量,包括:
针对各所述目标体素分别执行以下处理:
获取各所述体素面的邻接特征,以及各所述体素面的方向向量,所述邻接特征表征所述体素面是否存在相邻体素面;
基于各所述体素面的邻接特征,确定相应所述体素面的权重;
将各所述体素面的方向向量与对应的所述权重进行加权求和,得到所述目标体素对应的方向向量。
4.根据权利要求3所述的方法,其特征在于,所述基于各所述体素面的邻接特征,确定相应所述体素面的权重,包括:
响应于所述邻接特征表征所述体素面存在所述相邻体素面,将所述体素面的权重设置为非零数值;
响应于所述邻接矩阵表征所述体素面不存在所述相邻体素面,将所述体素面的权重设置为零。
5.根据权利要求1所述的方法,其特征在于,所述基于所述方向向量,在所述虚拟场景中所述虚拟障碍物以外的三维空间内,构建由多个多面体组成的多面体网格,包括:
基于所述方向向量,从所述多个目标体素中,选取多个目标阻挡体素,所述目标阻挡体素的方向向量的大小为非零常数;
基于各所述目标阻挡体素的方向向量,构建所述目标阻挡体素的多个包围体;
对各所述目标阻挡体素的多个包围体进行合并,得到多个阻挡包围体,其中,所述阻挡包围体的数量小于所述包围体的数量;
在所述虚拟场景中所述阻挡包围体以外的三维空间内,构建由多个多面体组成的多面体网格。
6.根据权利要求5所述的方法,其特征在于,所述基于所述方向向量,从所述多个目标体素中,选取多个目标阻挡体素,包括:
针对各所述目标体素分别执行以下处理:
基于所述目标体素的方向向量,确定所述方向向量的向量类型;
当所述向量类型表征所述方向向量的大小为非零常数时,将所述目标体素确定为所述目标阻挡体素。
7.根据权利要求1所述的方法,其特征在于,所述基于所述起点多面体和所述终点多面体,生成所述虚拟场景中对应所述路径起点和所述路径终点的目标路径,包括:
在所述起点多面体和所述终点多面体之间,构建由所述路径起点至所述路径终点的折线路径,其中,所述折线路径包括至少两条子路径;
对所述至少两条子路径进行平滑处理,得到所述虚拟场景的目标路径。
8.根据权利要求7所述的方法,其特征在于,所述在所述起点多面体和所述终点多面体之间,构建由所述路径起点至所述路径终点的折线路径,包括:
基于所述路径起点,确定所述折线路径的第1中间点;
将所述路径起点与所述第1中间点的连线,确定为第1子路径;
基于所述折线路径的第1中间点,确定所述折线路径的第i中间点,2≤i≤N,N表征所述折线路径所包括的所述子路径的数量;
将所述第i中间点与第i-1中间点的连线,确定为第i子路径;
对所述i进行遍历,得到N-1条子路径;
将所述第1子路径和所述N-1条子路径进行连接,得到由所述路径起点至所述路径终点的折线路径。
9.根据权利要求8所述的方法,其特征在于,所述基于所述路径起点,确定所述折线路径的第1中间点,包括:
获取所述路径起点所在的起点多面体的各组成面,并确定各所述组成面的中心点;
确定所述路径起点和各所述中心点之间的路径距离;
将最短的所述路径距离对应的中心点,确定为所述折线路径的第1中间点。
10.根据权利要求7所述的方法,其特征在于,所述对所述至少两条子路径进行平滑处理,得到所述虚拟场景的目标路径,包括:
确定各所述子路径与各所述多面体的组成面的交点,以及各所述交点所在的目标组成面;
基于各所述交点所在的目标组成面,确定所述目标路径的拐点;
将所述路径起点、所述目标路径的拐点和所述路径终点进行连接,得到所述虚拟场景的目标路径。
11.根据权利要求10所述的方法,其特征在于,所述基于各所述交点所在的目标组成面,确定所述目标路径的拐点,包括:
获取目标交点所在的目标组成面,并将所述目标交点所在的目标组成面确定为基准面,并获取所述目标组成面中除所述基准面以外的目标组成面,将所述基准面以外的目标组成面确定为参考组成面;
将各参考组成面投影至所述基准面,得到各所述参考组成面对应的投影结果,其中,所述投影结果表征所述参考组成面在所述基准面上的投影面积;
将所述投影面积为零的所述参考组成面,确定为拐点组成面,并将所述拐点组成面对应的交点,确定为所述目标路径的拐点。
12.一种虚拟场景中的路径生成装置,其特征在于,所述装置包括:
获取模块,用于获取虚拟场景包括的多个体素,以及所述虚拟场景中的虚拟障碍物;
选取模块,用于基于所述虚拟障碍物,从所述虚拟场景包括的多个体素中,选取多个目标体素,所述目标体素与所述虚拟障碍物之间的距离小于距离阈值;
构建模块,用于获取各所述目标体素对应的方向向量,并基于所述方向向量,在所述虚拟场景中所述虚拟障碍物以外的三维空间内,构建由多个多面体组成的多面体网格;
确定模块,用于获取路径起点及路径终点,并从所述多面体网格中,确定所述路径起点所在的起点多面体和所述路径终点所在的终点多面体;
生成模块,用于基于所述起点多面体和所述终点多面体,生成所述虚拟场景中对应所述路径起点和所述路径终点的目标路径。
13.一种电子设备,其特征在于,所述电子设备包括:
存储器,用于存储计算机可执行指令或者计算机程序;
处理器,用于执行所述存储器中存储的计算机可执行指令或者计算机程序时,实现权利要求1至11任一项所述的虚拟场景中的路径生成方法。
14.一种计算机可读存储介质,存储有计算机可执行指令,其特征在于,所述计算机可执行指令被处理器执行时实现权利要求1至11任一项所述的虚拟场景中的路径生成方法。
15.一种计算机程序产品,包括计算机程序或计算机可执行指令,其特征在于,所述计算机程序或计算机可执行指令被处理器执行时实现权利要求1至11任一项所述的虚拟场景中的路径生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211376842.8A CN117982891A (zh) | 2022-11-04 | 2022-11-04 | 虚拟场景中的路径生成方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211376842.8A CN117982891A (zh) | 2022-11-04 | 2022-11-04 | 虚拟场景中的路径生成方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117982891A true CN117982891A (zh) | 2024-05-07 |
Family
ID=90894989
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211376842.8A Pending CN117982891A (zh) | 2022-11-04 | 2022-11-04 | 虚拟场景中的路径生成方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117982891A (zh) |
-
2022
- 2022-11-04 CN CN202211376842.8A patent/CN117982891A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110443893B (zh) | 大规模建筑场景渲染加速方法、系统、装置和存储介质 | |
US9569885B2 (en) | Technique for pre-computing ambient obscurance | |
CN107358649B (zh) | 地形文件的处理方法和装置 | |
US8384711B2 (en) | Ray tracing a three dimensional scene using a grid | |
US7773087B2 (en) | Dynamically configuring and selecting multiple ray tracing intersection methods | |
US20230410433A1 (en) | Navigation mesh update | |
JP2009525526A (ja) | ビーム放出によって仮想画像を合成するための方法 | |
EP3933779A1 (en) | Intersection testing in a ray tracing system | |
US7129951B2 (en) | Method and system for performing speculative collisions for a video game | |
CN112561788B (zh) | 一种bim模型的二维展开方法及纹理贴图方法、装置 | |
EP3940649A1 (en) | Methods and systems for constructing ray tracing acceleration structures | |
CN115294258B (zh) | 三维模型的展开方法、装置、设备及计算机可读存储介质 | |
CN111788608A (zh) | 用于建模光反射的混合射线跟踪方法 | |
CN113750516A (zh) | 一种在游戏引擎中实现三维gis数据加载方法、系统及设备 | |
CN111773688B (zh) | 柔性对象的渲染方法和装置、存储介质、电子装置 | |
WO2017167167A1 (zh) | 模型对象构建的方法、服务器及系统 | |
CN113034688B (zh) | 一种三维地图模型的生成方法以及装置 | |
CN117073706A (zh) | 路径规划方法、装置、电子设备、存储介质及程序产品 | |
CN117101127A (zh) | 虚拟场景中的图像渲染方法、装置、电子设备及存储介质 | |
US20200143589A1 (en) | Computer graphics method for terrain rendering | |
CN117982891A (zh) | 虚拟场景中的路径生成方法、装置、电子设备及存储介质 | |
Dam et al. | Terrain generation based on real world locations for military training and simulation | |
KR101228118B1 (ko) | 다각형 중요도에 기반을 둔 교차 검사 가속화 자료 구조 구성 방법 | |
JP7368950B2 (ja) | 効率的な建物フットプリント特定のための方法及び装置 | |
Alonso et al. | Real-time rendering and physics of complex dynamic terrains modeled as CSG trees of DEMs carved with spheres |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |