CN116036604B - 数据处理方法、装置、计算机及可读存储介质 - Google Patents
数据处理方法、装置、计算机及可读存储介质 Download PDFInfo
- Publication number
- CN116036604B CN116036604B CN202310042502.XA CN202310042502A CN116036604B CN 116036604 B CN116036604 B CN 116036604B CN 202310042502 A CN202310042502 A CN 202310042502A CN 116036604 B CN116036604 B CN 116036604B
- Authority
- CN
- China
- Prior art keywords
- virtual object
- boundary
- obstacle
- collision
- obstacle region
- 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
Links
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/55—Controlling game characters or game objects based on the game progress
- A63F13/57—Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game
- A63F13/577—Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game using determination of contact between game characters or objects, e.g. to avoid collision between virtual racing cars
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请实施例公开了一种数据处理方法、装置、计算机及可读存储介质,该方法包括:获取第一虚拟对象的初始碰撞缓存区域中的候选虚拟对象,从候选虚拟对象中获取与第一虚拟对象的距离小于或等于碰撞距离的第二虚拟对象;遍历目标场景的障碍空间二叉树,将与第一虚拟对象之间的距离小于或等于碰撞距离的目标障碍区域边界,确定为碰撞区域边界;障碍空间二叉树中的节点的第一方向子树所包括的障碍区域边界的数量,与第二方向子树所包括的障碍区域边界的数量的差值,小于或等于边界拆分阈值;基于第二虚拟对象与碰撞区域边界,预测更新移动速度,基于更新移动速度控制第一虚拟对象进行移动。采用本申请,可以提高虚拟对象寻路效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据处理方法、装置、计算机及可读存储介质。
背景技术
现在游戏的发展趋势是构建开放大世界,玩家在开放大世界中的交互会影响场景的地形,为了更好地控制虚拟对象的移动,就需要对虚拟对象进行碰撞避免寻路。目前,一般是通过导航网格将整体的空间(可以认为是目标场景)切分为多个凸多边形,相邻的凸多边形之间通过共享边进行连接,多个凸多边形中包括可通行区域及不可通行区域,相当于组成目标场景的场景地图,进一步,基于导航网格计算起始点所在的多边形与终止点所在的多边形之间的连通多边形路径,对连通多边形路径进行优化处理,得到最终多边形路径,按照最终多边形路径对虚拟对象进行逐帧位置更新,实现对虚拟对象的移动。然而这一方式,需要提前生成导航网格的相关数据,使得在目标场景中的布局发生变化时,需要重新基于导航网格构建目标场景的场景地图,再进行连通多边形路径计算,使得寻路效率低下。
发明内容
本申请实施例提供了一种数据处理方法、装置、计算机及可读存储介质,可以提高对数据处理的效率。
本申请实施例一方面提供了一种数据处理方法,该方法包括:
获取位于第一虚拟对象的初始碰撞缓存区域中的候选虚拟对象,从候选虚拟对象中获取第一虚拟对象所关联的第二虚拟对象;第二虚拟对象与第一虚拟对象之间的距离小于或等于第一虚拟对象的碰撞距离;
获取第一虚拟对象所在目标场景的障碍空间二叉树,遍历障碍空间二叉树中的节点,将与第一虚拟对象之间的距离小于或等于碰撞距离的节点所对应的目标障碍区域边界,确定为第一虚拟对象的碰撞区域边界;障碍空间二叉树中的节点对应于目标场景中的障碍区域边界;障碍空间二叉树中的任意一个节点的第一方向子树所包括的障碍区域边界的数量,与第二方向子树所包括的障碍区域边界的数量之间的差值,小于或等于边界拆分阈值;
基于第二虚拟对象与第一虚拟对象的碰撞区域边界,预测第一虚拟对象的更新移动速度,基于更新移动速度控制第一虚拟对象进行移动。
本申请实施例一方面提供了一种数据处理装置,该装置包括:
对象获取模块,用于获取位于第一虚拟对象的初始碰撞缓存区域中的候选虚拟对象;
对象确定模块,用于从候选虚拟对象中获取第一虚拟对象所关联的第二虚拟对象;第二虚拟对象与第一虚拟对象之间的距离小于或等于第一虚拟对象的碰撞距离;
树获取模块,用于获取第一虚拟对象所在目标场景的障碍空间二叉树;
边界确定模块,用于遍历障碍空间二叉树中的节点,将与第一虚拟对象之间的距离小于或等于碰撞距离的节点所对应的目标障碍区域边界,确定为第一虚拟对象的碰撞区域边界;障碍空间二叉树中的节点对应于目标场景中的障碍区域边界;障碍空间二叉树中的任意一个节点所对应的第一方向子树所包括的障碍区域边界的数量,与第二方向子树所包括的障碍区域边界的数量之间的差值,小于或等于边界拆分阈值;
速度预测模块,用于基于第二虚拟对象与第一虚拟对象的碰撞区域边界,预测第一虚拟对象的更新移动速度;
移动控制模块,用于基于更新移动速度控制第一虚拟对象进行移动。
其中,该对象获取模块,包括:
检测确定单元,用于获取第一虚拟对象的第一位置信息及第一虚拟对象的碰撞距离,将第一位置信息及碰撞距离进行融合,得到第一虚拟对象的碰撞检测范围;
网格转换单元,用于获取目标场景的单位网格的单位长度,基于单位长度对碰撞检测范围进行网格转换,得到网格检测范围;
候选获取单元,用于对网格检测范围进行哈希转换,得到第一虚拟对象的初始碰撞缓存区域,将初始碰撞缓存区域在对象管理数组中所对应的虚拟对象,确定为候选虚拟对象。
其中,该装置还包括:
网格构建模块,用于基于单位网格的单位长度,将目标场景构建为M个单位网格;
网格初始化模块,用于初始化M个单位网格分别对应的网格位置信息;M为正整数;
数组创建模块,用于创建N维初始对象管理数组,对M个单位网格分别对应的网格位置信息进行哈希转换,得到M个单位网格分别对应的网格索引;N为正整数;
数组生成模块,用于获取目标场景中所包括的虚拟对象所在的单位网格,基于虚拟对象所在的单位网格的网格索引,将虚拟对象添加至初始对象管理数组,得到对象管理数组;初始碰撞缓存区域用于指示根据网格检测范围转换得到的网格索引;虚拟对象包括候选虚拟对象。
其中,该网格初始化模块具体用于:
获取M个单位网格分别对应的网格标识点的第二位置信息,基于单位长度对M个单位网格分别对应的第二位置信息进行位置网格化转换,得到M个单位网格分别对应的网格位置信息。
其中,该装置还包括:
位置获取模块,用于当第三虚拟对象进入目标场景中时,获取第三虚拟对象在目标场景中的第三位置信息;
索引获取模块,用于基于单位长度将第三位置信息进行网格转换,得到第三虚拟对象的对象网格位置,对对象网格位置进行哈希转换,得到第三虚拟对象所对应的待添加网格索引;
对象缓存模块,用于基于待添加网格索引,将第三虚拟对象添加至对象管理数组。
其中,该对象获取模块,包括:
缓存查找单元,用于从第一虚拟对象所关联的碰撞对象缓存中,获取候选虚拟对象;该碰撞对象缓存用于存储位于第一虚拟对象的初始碰撞缓存区域的虚拟对象。
其中,该装置还包括:
移动获取模块,用于当第一虚拟对象加入目标场景时,获取第一虚拟对象的标准移动速度及碰撞距离;
缓存区域确定模块,用于根据标准移动速度及碰撞距离,确定第一虚拟对象的初始碰撞缓存区域;
候选确定模块,用于将初始碰撞缓存区域中所包括的虚拟对象,确定为第一虚拟对象所关联的候选虚拟对象,将候选虚拟对象添加至第一虚拟对象所关联的碰撞对象缓存中;
对象同步模块,用于将第一虚拟对象添加至候选虚拟对象的碰撞对象缓存中。
其中,该装置还包括:
缓存更新模块,用于若第一虚拟对象的碰撞对象缓存的缓存时长达到缓存更新周期,或者,第一虚拟对象发生位置跳转,则清空第一虚拟对象的碰撞对象缓存,获取第一虚拟对象的当前碰撞缓存区域,将当前碰撞缓存区域中所包括的虚拟对象,添加至第一虚拟对象的碰撞对象缓存中;位置跳转是指第一虚拟对象以大于瞬移速度阈值的速度由第一位置变换至第二位置。
其中,该对象确定模块,包括:
位置获取单元,用于获取候选虚拟对象的候选位置信息,获取第一虚拟对象的第一位置信息;
距离筛选单元,用于计算候选位置信息与第一位置信息之间的对象位置距离,若对象位置距离小于或等于碰撞距离,则将候选虚拟对象确定为第一虚拟对象所关联的第二虚拟对象;第二虚拟对象不包括第一虚拟对象。
其中,该装置还包括:
边界获取模块,用于获取目标场景中所包括的障碍区域,获取障碍区域的原始障碍区域边界,从原始障碍区域边界中获取第一障碍区域边界;位于第一障碍区域边界的第一方向侧的障碍区域边界的数量,与位于第一障碍区域边界的第二方向侧的障碍区域边界的数量的差值,小于或等于边界拆分阈值;任意一个障碍区域边界是指位于第一障碍区域边界的一个方向侧的原始障碍区域边界,或者是指位于第一障碍区域边界的两个方向侧的原始障碍区域边界被第一障碍区域边界分割得到的障碍区域边界;
根确定模块,用于将第一障碍区域边界作为根节点;
边界划分模块,用于以第一障碍区域边界,将原始障碍区域边界划分为第一边界集合与第二边界集合;
树构建模块,用于基于第一边界集合构建根节点的第一方向子树,基于第二边界集合构建根节点的第二方向子树;第一边界集合包括位于第一障碍区域边界的第一方向侧的障碍区域边界,第二边界集合包括位于第一障碍区域边界的第二方向侧的障碍区域边界。
其中,该边界划分模块,包括:
边界分割单元,用于以第一障碍区域边界所在的直线,将原始障碍区域边界C分割为障碍区域边界C1及障碍区域边界C2;障碍区域边界C1是原始障碍区域边界C位于第一障碍区域边界的第一方向侧的部分,障碍区域边界C2是原始障碍区域边界C位于第一障碍区域边界的第二方向侧的部分;
边界划分单元,用于将障碍区域边界A与障碍区域边界C1确定为第一边界集合,将障碍区域边界B与障碍区域边界C2确定为第二边界集合;障碍区域边界A是指位于第一障碍区域边界的第一方向侧的原始障碍区域边界,障碍区域边界B是指位于第一障碍区域边界的第二方向侧的原始障碍区域边界;原始障碍区域边界C是指同时位于第一障碍区域边界的两个方向侧的原始障碍区域边界。
其中,该树构建模块,包括:
第一节点构建单元,用于若障碍区域边界A与障碍区域边界C1的数量小于或等于树形构建阈值,则将障碍区域边界A与障碍区域边界C1作为根节点的第一方向子节点,将根节点的第一方向子节点确定为根节点的第一方向子树;
第二节点构建单元,用于若障碍区域边界A与障碍区域边界C1的数量大于树形构建阈值,则从障碍区域边界A与障碍区域边界C1中获取第二障碍区域边界,将第二障碍区域边界确定为根节点的第一方向子节点,基于第一方向子节点将障碍区域边界A与障碍区域边界C1划分为第三边界集合及第四边界集合,基于第三边界集合构建第一方向子节点的第一方向子树,基于第四边界集合构建第一方向子节点的第二方向子树。
其中,该装置还包括:
边界筛选模块,用于若目标场景所包括的障碍区域的障碍区域边界的数量小于或等于树形构建阈值,则获取障碍区域边界与第一虚拟对象之间的距离,将障碍区域边界中与第一虚拟对象之间的距离小于或等于碰撞距离的障碍区域边界,确定为第一虚拟对象的碰撞区域边界;
树触发模块,用于若目标场景所包括的障碍区域的障碍区域边界的数量大于树形构建阈值,则执行获取第一虚拟对象所在目标场景的障碍空间二叉树的过程。
其中,该装置还包括:
动态获取模块,用于若动态边界集合不为空,则从动态边界集合中获取动态区域边界,将动态区域边界中与第一虚拟对象之间的距离小于或等于碰撞距离的动态区域边界,确定为第一虚拟对象的动态碰撞边界;
该速度预测模块具体用于:
基于第二虚拟对象、第一虚拟对象的碰撞区域边界及第一虚拟对象的动态碰撞边界,预测第一虚拟对象的更新移动速度。
其中,该装置还包括:
树重建模块,用于若动态边界集合中所包括的动态区域边界的数量大于或等于动态支持阈值,或障碍空间二叉树的固定时长大于或等于树更新周期,则基于障碍空间二叉树中的节点及动态区域边界,重新构建障碍空间二叉树;
集合清空模块,用于清空动态边界集合。
其中,该速度预测模块,包括:
信息获取单元,用于获取第一虚拟对象的第一移动速度及第一位置信息;
第一偏移单元,用于获取第二虚拟对象的第二移动速度及对象位置信息,根据第一位置信息及对象位置信息构建第一速度区域,基于第一移动速度及第二移动速度确定第一偏移数据;
第一确定单元,用于根据第一偏移数据及第一速度区域构建第二速度区域,基于第二速度区域确定第一候选速度范围;
第二偏移单元,用于获取第一虚拟对象的碰撞区域边界的边界移动速度及边界位置信息,根据第一位置信息及边界位置信息构建第三速度区域,基于第一移动速度及边界移动速度确定第二偏移数据;
第二确定单元,用于根据第二偏移数据及第三速度区域构建第四速度区域,基于第四速度区域确定第二候选速度范围;
速度确定单元,用于将第一候选速度范围与第二候选速度范围的交集,确定为第一虚拟对象的目标候选速度范围,在目标候选速度范围中选取第一虚拟对象的更新移动速度。
本申请实施例一方面提供了一种计算机设备,包括处理器、存储器、输入输出接口;
处理器分别与存储器和输入输出接口相连,其中,输入输出接口用于接收数据及输出数据,存储器用于存储计算机程序,处理器用于调用该计算机程序,以使包含该处理器的计算机设备执行本申请实施例一方面中的数据处理方法。
本申请实施例一方面提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,该计算机程序适于由处理器加载并执行,以使得具有该处理器的计算机设备执行本申请实施例一方面中的数据处理方法。
本申请实施例一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例一方面中的各种可选方式中提供的方法。换句话说,该计算机指令被处理器执行时实现本申请实施例一方面中的各种可选方式中提供的方法。
实施本申请实施例,将具有如下有益效果:
在本申请实施例中,可以获取位于第一虚拟对象的初始碰撞缓存区域中的候选虚拟对象,从候选虚拟对象中获取第一虚拟对象所关联的第二虚拟对象,通过缓存对第一虚拟对象的候选虚拟对象进行宽泛存储,相当于是初步的虚拟对象的筛选,而这个初始碰撞缓存区域的缓存由于是宽泛存储,也就是预设置的,在进行第二虚拟对象的获取时会减少需要查找的时间,提高虚拟对象筛选效率。进一步,可以获取第一虚拟对象所在目标场景的障碍空间二叉树,遍历障碍空间二叉树中的节点,将与第一虚拟对象之间的距离小于或等于碰撞距离的节点所对应的目标障碍区域边界,确定为第一虚拟对象的碰撞区域边界,其中,障碍空间二叉树中的节点对应于目标场景中的障碍区域边界,或由目标场景中的障碍区域边界分割成的障碍区域边界,障碍空间二叉树中的任意一个节点所对应的第一方向子节点的数量与第二方向子节点的数量之间的差值,小于或等于边界拆分阈值,也就是说,障碍区域二叉树中任意一个节点在两个方向上的子节点的数量差不多,使得在遍历障碍空间二叉树时,可以基于方向进行方向上的筛选,提高障碍区域的筛选效率。进一步,可以基于获取到的第二虚拟对象与第一虚拟对象的碰撞区域边界,预测第一虚拟对象的更新移动速度,基于更新移动速度控制第一虚拟对象进行移动,通过以上过程,提高了更新移动速度获取的各个步骤的效率,进而提高寻路效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据处理的网络交互架构图;
图2是本申请实施例提供的一种数据处理场景示意图;
图3是本申请实施例提供的一种数据处理的方法流程图;
图4是本申请实施例提供的一种对象管理数组生成场景示意图;
图5是本申请实施例提供的另一种对象管理数组生成场景示意图;
图6是本申请实施例提供的一种障碍空间二叉树示意图;
图7是本申请实施例提供的一种场景示意图;
图8是本申请实施例提供的一种速度更新场景示意图;
图9是本申请实施例提供的一种速度区域构建场景示意图;
图10是本申请实施例提供的一种迭代时间示意图;
图11是本申请实施例提供的一种树构建测试结果示意图;
图12是本申请实施例提供的一种数据处理装置示意图;
图13是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
其中,若在本申请中需要收集对象(如用户等)数据,则在收集前、收集中,显示提示界面或者弹窗,该提示界面或者弹窗用于提示用户当前正在搜集数据,仅仅在获取到用户对该提示界面或者弹窗发出确认操作后,开始执行数据获取的相关的步骤,否则结束。而且,对于获取到的用户数据,会在合理合法的场景或用途等上进行使用。可选的,在一些需要使用用户数据但未得到用户授权的场景中,还可以向用户请求授权,在授权通过时,再使用用户数据。
其中,寻路是指计算空间内两个位置之间的连通路径的过程。导航网格是指以凸多边形对空间(如目标场景)的可寻路表面(也就是目标场景中的可通行区域)进行数据描述。碰撞避免是指在虚拟对象移动过程中,对其他虚拟对象及障碍区域进行躲避,避免虚拟对象与其他虚拟对象或障碍区域发生重叠,其中,障碍区域是指不可通行区域,如目标场景中的障碍物所在的区域。动态障碍区域,是指在目标场景中随时添加或删除的不可通行区域,如可以在目标场景中随时添加或删除的障碍物所在的区域。其中,可通行区域是指可以由虚拟对象通行,可以进行寻路的区域;不可通行区域是指虚拟对象无法通行,不能进行寻路的区域。其中,虚拟对象可以认为是由玩家通过计算机设备所控制的游戏角色。
在本申请实施例中,请参见图1,图1是本申请实施例提供的一种数据处理的网络交互架构图,如图1所示,用户可以通过计算机设备进入目标场景,计算机设备可以控制虚拟对象在目标场景中的移动,该虚拟对象可以认为是用户在计算机设备中的角色。任意一个计算机设备可以与其他计算机设备之间进行数据交互,或者可以通过服务器101与其他计算机设备之间进行数据交互,如计算机设备102a、计算机设备102b或计算机设备102c等。第一虚拟对象所在的计算机设备可以获取第一虚拟对象的第二虚拟对象及碰撞区域边界,其中,第二虚拟对象是指与第一虚拟对象之间的距离小于或等于第一虚拟对象的碰撞距离的虚拟对象,也就是可能与第一虚拟对象之间发生碰撞的虚拟对象;第一虚拟对象的碰撞区域边界是指与第一虚拟对象之间的距离小于或等于碰撞距离的障碍区域的边界,也就是可能与第一虚拟对象之间发生碰撞的障碍区域的边界。进一步,计算机设备可以基于第二虚拟对象与第一虚拟对象的碰撞区域边界,预测第一虚拟对象的更新移动速度,基于更新移动速度控制第一虚拟对象进行移动。
具体的,请参见图2,图2是本申请实施例提供的一种数据处理场景示意图。如图2所示,目标场景201中存在第一虚拟对象2011、障碍区域2012及除第一虚拟对象2011之外的虚拟对象等,如虚拟对象2013等,具体的,计算机设备可以获取位于第一虚拟对象2011的初始碰撞缓存区域202中的候选虚拟对象203,其中,该初始碰撞缓存区域202是指用于对第一虚拟对象2011进行碰撞粗筛选的区域,可以从候选虚拟对象203中,获取与第一虚拟对象2011之间的距离小于或等于第一虚拟对象的碰撞距离的第二虚拟对象204。通过上述碰撞粗筛选,减少需要与第一虚拟对象之间进行距离比对的虚拟对象的数量,节省对可能发生碰撞的虚拟对象的获取时间,再基于碰撞距离确定可能与第一虚拟对象发生碰撞的第二虚拟对象,提高虚拟对象的获取精确性,进而提高虚拟对象的获取效率。
其中,计算机设备可以获取第一虚拟对象2011所在目标场景201的障碍空间二叉树205,遍历障碍空间二叉树205中的节点,将与第一虚拟对象2011之间的距离小于或等于碰撞距离的节点所对应的目标障碍区域边界,确定为第一虚拟对象2011的碰撞区域边界206,其中,该障碍空间二叉树205中的任意一个节点的第一方向子树所包括的障碍区域边界的数量,与第二方向子树所包括的障碍区域边界的数量之间的差值,小于或等于边界拆分阈值,也就是说,可以认为是障碍空间二叉树205是一个任意一个节点的左右子树中的障碍区域边界的数量较为平衡的树,而且任意一个主节点的子树中的子节点与该主节点的相对位置,和该主节点对应的障碍区域边界与该主节点的子树中的子节点所对应的障碍区域边界的相对位置相同;例如,节点A存在子节点1与子节点2,该子节点1位于节点A的第一方向子树中,子节点2位于节点A的第二方向子树中,则可以认为子节点1所对应的障碍区域边界位于节点A所对应的障碍区域边界的第一方向侧,子节点2所对应的障碍区域边界位于节点A所对应的障碍区域边界的第二方向侧。其中,该障碍空间二叉树中的任意一个节点可以称为主节点,该主节点的子树中的节点可以认为是该主节点的子节点,也就是说,当障碍空间二叉树中的叶子节点作为主节点时,子节点为空;当障碍空间二叉树中的根节点作为主节点时,该障碍空间二叉树中除根节点之外的节点均可以认为是子节点。通过该障碍空间二叉树,提高对可能与第一虚拟对象发生碰撞的障碍区域边界的获取效率。
进而,可以基于第二虚拟对象与第一虚拟对象的碰撞区域边界,预测第一虚拟对象的更新移动速度,基于更新移动速度控制第一虚拟对象进行移动。通过对该更新移动速度的获取过程中的步骤进行优化,进而提高对第一虚拟对象的寻路效率。
可以理解的是,本申请实施例中所提及的计算机设备包括但不限于终端设备或服务器。换句话说,计算机设备可以是服务器或终端设备,也可以是服务器和终端设备组成的系统。其中,以上所提及的终端设备可以是一种电子设备,包括但不限于手机、平板电脑、台式电脑、笔记本电脑、掌上电脑、车载设备、增强现实/虚拟现实(Augmented Reality/Virtual Reality,AR/VR)设备、头盔显示器、智能电视、可穿戴设备、智能音箱、数码相机、摄像头及其他具备网络接入能力的移动互联网设备(mobile internet device,MID),或者火车、轮船、飞行等场景下的终端设备等。如图1中所示,终端设备可以是一种笔记本电脑(如计算机设备102b所示)、手机(如计算机设备102c所示)或车载设备(如计算机设备102a所示)等,图1仅例举出部分的设备,可选的,该计算机设备102a是指位于交通工具103中的设备,计算机设备102a可以用于进入目标场景,如可以参与目标游戏,该目标场景是指目标游戏中的任意一个场景,目标游戏可以是任意一款可以进行寻路的游戏。其中,以上所提及的服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、车路协同、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
可选的,本申请实施例中所涉及的数据可以存储在计算机设备中,或者可以基于云存储技术或区块链网络对该数据进行存储,在此不做限制。
进一步地,请参见图3,图3是本申请实施例提供的一种数据处理的方法流程图。如图3所示,该数据处理过程包括如下步骤:
步骤S301,获取位于第一虚拟对象的初始碰撞缓存区域中的候选虚拟对象,从候选虚拟对象中获取第一虚拟对象所关联的第二虚拟对象。
在本申请实施例中,计算机设备可以获取位于第一虚拟对象的初始碰撞缓存区域中的候选虚拟对象,该初始碰撞缓存区域是指用于对第一虚拟对象进行碰撞粗筛选的区域,该初始碰撞缓存区域是指第一虚拟对象在对象管理数组中对应的待检测网格索引,或用于构建第一虚拟对象的碰撞对象缓存的区域。其中,该第二虚拟对象与第一虚拟对象之间的距离小于或等于第一虚拟对象的碰撞距离。
具体的,一种方式下,计算机设备可以获取第一虚拟对象的第一位置信息及第一虚拟对象的碰撞距离,将第一位置信息及碰撞距离进行融合,得到第一虚拟对象的碰撞检测范围。例如,将该第一虚拟对象记作agent_A,获取该第一虚拟对象的第一位置信息,该第一位置信息可以是dim维的位置,dim为正整数,是目标场景的空间维度,如目标场景为二维空间,则dim为2,可以认为该第一位置信息为(x1,z1);如目标场景为三维空间,则dim为3,可以认为该第一位置信息为(x1,y1,z1)等。可以获取第一虚拟对象的碰撞距离radius,该碰撞距离是指与第一虚拟对象之间存在碰撞可能性的距离,也就是说,与第一虚拟对象之间的距离小于或等于碰撞距离的虚拟对象,存在与第一虚拟对象发生碰撞的可能性。
进一步地,可以将第一位置信息及碰撞距离进行融合,得到第一虚拟对象的碰撞检测范围,具体的,可以以第一位置信息为圆心,以第一虚拟对象的碰撞距离为半径构建碰撞检测范围,其中,该碰撞检测范围的维度可以是根据目标场景的空间维度所确定的,如目标场景为二维空间,即空间维度dim为2,该碰撞检测范围的维度可以是2;如目标场景为三维空间,即空间维度dim可以为2或3,该碰撞检测范围的维度可以为2或3。或者,可以获取第一位置信息分别在h个待检测维度下的维度位置,根据碰撞距离分别对h个维度位置进行范围确定,得到h个待检测维度分别对应的维度范围,基于h个待检测维度分别对应的维度范围构建碰撞检测范围,h为小于或等于dim的正整数。例如,以h为2为例,计算机设备可以获取第一位置信息分别在可以基于第一位置信息中的第一维度下的第一维度位置及碰撞距离,确定第一维度下的第一维度范围,基于第一位置信息中的第二维度下的第二维度位置及碰撞距离,确定第二维度下的第二维度范围,将第一维度范围及第二维度范围构建碰撞检测范围,例如,该第一维度范围为[x1-radius,x1+radius],第二维度范围为[z1-radius,z1+radius]。或者,可以认为是基于碰撞距离及第一位置信息进行第一位置转换,得到第一范围边界,例如第一位置转换为相减处理,h为2,则该第一范围边界可以记作[x_low,z_low],其中,x_low= x1-radius,z_low= z1-radius;基于碰撞距离及第一位置信息进行第二位置转换,得到第二范围边界,例如第二位置转换为相加处理,h为2,则该第二范围边界可以记作[x_up,z_up],其中,x_up= x1+radius,z_up= z1+radius。
进一步地,可以获取目标场景的单位网格的单位长度,如可以记作(x_uint,z_uint),基于单位长度对碰撞检测范围进行网格转换,得到网格检测范围。如,基于上述第一范围边界及第二范围边界确定网络检测范围,此时该网络检测范围包括第一检测边界及第二检测边界,其中,该第一检测边界的获取过程可以参见公式①所示:
如公式①所示,该第一检测边界为(grid_x_low,grid_z_low)。
其中,该第二检测边界的获取过程可以参见公式②所示:
如公式②所示,该第二检测边界为(grid_x_up,grid_z_up)。
进一步地,可以对网格检测范围进行哈希转换,得到第一虚拟对象的初始碰撞缓存区域。具体的,可以获取位于网络检测范围中的单位网格,将该位于网络检测范围中的单位网格记作待检测单位网格,下面以h为2进行举例,可以将该待检测单位网格的网格位置信息记作(grid_x,grid_z),其中,该待检测单位网格满足(grid_x_low≤grid_x≤grid_x_up,grid_z_low≤grid_z≤grid_z_up),对待检测单位网格的网格位置信息进行哈希转换,得到第一虚拟对象的初始碰撞缓存区域,此时,该初始碰撞缓存区域是指第一虚拟对象在对象管理数组中对应的待检测网格索引。其中,可以基于哈希函数对待检测单位网格的网格位置信息进行哈希转换,得到第一虚拟对象的初始碰撞缓存区域,可以将哈希函数记作grid_hash_func(h个待检测维度分别对应的参数,N),如h为2,该哈希函数为grid_hash_func(参数1,参数2,N),其中,N为正整数,N是对象管理数组的数组维度,也就是说,该哈希转换可以记作grid_hash_func(grid_x,grid_z,N),得到第一虚拟对象所对应的待检测网格索引k,将该待检测网格索引k确定为第一虚拟对象的初始碰撞缓存区域。进一步,可以将初始碰撞缓存区域在对象管理数组中所对应的虚拟对象,确定为候选虚拟对象,也就是说,将对象管理数组中待检测网格索引所指示的数组元素中的虚拟对象,确定为候选虚拟对象。
例如,假定哈希函数grid_hash_func(参数1,参数2,N)=(2*参数1+参数2)%N,N为8,存在[单位网格(0,0),单位网格(0,1),单位网格(0,2),单位网格(0,3),单位网格(1,0),单位网格(1,1),单位网格(1,2),单位网格(1,3),单位网格(2,0),单位网格(2,1),单位网格(2,2),单位网格(2,3),…],各个单位网格分别对应的网格索引依次为0、1、2、3、2、3、4、5、4、5、6、7…。假定第一虚拟对象位于单位网格(1,2)中,得到待检测单位网格包括[单位网格(1,1),单位网格(1,2),单位网格(2,1),单位网格(2,2)],基于哈希函数对待检测单位网格的网格位置信息进行哈希转换,得到待检测网格索引k,k包括[3,4,5,6],从对象管理数组中获取待检测网格索引所对应的数组元素中的虚拟对象,作为候选虚拟对象,例如将对象管理数组记作grid[8],也就是八维数组,则也就是候选虚拟对象为grid[3]、grid[4]、grid[5]及grid[6]的取值。
或者,可以获取位于网络检测范围中的单位网格,将该位于网络检测范围中的单位网格记作待检测单位网格,将待检测单位网格所对应的网格位置信息在对象管理数组中的网格索引,记作待检测网格索引,即第一虚拟对象的初始碰撞缓存区域,将初始碰撞缓存区域在对象管理数组中所对应的虚拟对象,确定为候选虚拟对象。举例来说,参见图4,图4是本申请实施例提供的一种对象管理数组生成场景示意图。如图4所示,以图4所示的对象管理数组40a为例,假定第一虚拟对象为虚拟对象A,该对象管理数组40a记作grid[8],即以N为8为例,该对象管理数组40a中包括网格索引402与单位网格403之间的关联关系,假定得到待检测单位网格包括[单位网格(1,1),单位网格(1,2),单位网格(2,1),单位网格(2,2)],基于上述网格索引402与单位网格403之间的关联关系,获取待检测单位网格所对应的待检测网格索引k,此时,k包括[2,3,4,5],从对象管理数组40a中获取待检测网格索引所对应的虚拟对象,作为候选虚拟对象,该候选虚拟对象包括(虚拟对象G、虚拟对象A、虚拟对象B、虚拟对象C、虚拟对象J、虚拟对象E、虚拟对象H、虚拟对象I)。
其中,由于单位网格是对目标场景的场景地图划分得到的,也就是说,每个单位网格所包括的区域存在一定的范围空间,使得在各个虚拟对象移动的情况下,各个虚拟对象所在的单位网格不会实时变化,而是经过一定时间之后,才可能从一个单位网格移动至另一个单位网格,这也使得对象管理数组在一定时间内不会发生变化,也就无需实时更新对象管理数组,从而可节省时间,提高对虚拟对象碰撞检测的效率及便捷性。通过对象管理数组,对需要进行精确检测的虚拟对象进行删减,从而减少虚拟对象碰撞检测的数据量,进而在一定程度上提高寻路效率。
进一步地,计算机设备可以创建对象管理数组。其中,该对象管理数组是用于对目标场景中所包括的虚拟对象进行管理的数组,也就是用于表示该目标场景中所包括的虚拟对象在目标场景所划分的单位网格中的位置。具体的,可以基于单位网格的单位长度,将目标场景构建为M个单位网格,初始化M个单位网格分别对应的网格位置信息;M为正整数。其中,可以以h为2为例,将单位网格的单位长度记作(x_uint,z_uint),也就是x轴单位长度为x_uint,z轴单位长度为z_uint。进一步,可以创建N维初始对象管理数组,对M个单位网格分别对应的网格位置信息进行哈希转换,得到M个单位网格分别对应的网格索引;N为正整数。可选的,可以根据单位网格的数量M确定数组维度N,或者,可以将默认数组维度确定为数组维度N,或者可以从2的整数次幂中获取数组维度N,在此不做限制。获取目标场景中所包括的虚拟对象所在的单位网格,基于虚拟对象所在的单位网格的网格索引,将虚拟对象添加至初始对象管理数组,得到对象管理数组;或者,可以获取目标场景中所包括的虚拟对象的位置信息,基于单位长度对虚拟对象的位置信息进行网格转换,确定虚拟对象所对应的第一网格位置,对第一网格位置进行哈希转换,确定虚拟对象的网格索引,基于虚拟对象的网格索引,将虚拟对象添加至初始对象管理数组中,得到对象管理数组。通过这一方式,使得将目标场景中的虚拟对象映射到构建的单位网格中,使得该对象管理数组可以表示出各个虚拟对象相对于单位网格的位置,由于单位网格将目标场景进行了划分,减少了目标场景的坐标数量(即由目标场景中的每个位置点的坐标减少至每个单位网格的坐标),从而使得在将目标场景中的坐标映射至对象管理数组时所需处理的数据量减少,进而也在一定程度上减少了基于对象管理数组对虚拟对象进行初步筛选所需耗费的时间,提高对象检测效率。其中,初始碰撞缓存区域用于指示根据网格检测范围转换得到的网格索引,即上述待检测网格索引;虚拟对象包括候选虚拟对象。
其中,在初始化M个单位网格分别对应的网格位置信息时,可以获取M个单位网格分别对应的网格标识点的第二位置信息,基于单位长度对M个单位网格分别对应的第二位置信息进行位置网格化转换,得到M个单位网格分别对应的网格位置信息。其中,网格标识点可以是所在的单位网格的中心点等,以一个单位网格为例,可以将单位网格对应的网格标识点记作center,以h为2为例,该网格标识点的第二位置信息可以是(center_x,center_z),对该单位网格的第二位置信息进行网格化转换,得到该单位网格的网格位置信息(center_x/x_uint,center_z/z_uint)。
举例来说,参见图4,构建M个单位网格401,包括单位网格(0,1)、…及单位网格(3,3)等,对M个单位网格401分别对应的网格位置信息进行哈希转换,得到M个单位网格401分别对应的网格索引,如网格索引402与单位网格403的关联关系。可以将目标场景中的虚拟对象添加至该虚拟对象所在的单位网格的网格索引处的数组元素中,生成对象管理数组40a。其中该对象管理数组40a可以包括网格索引402及网格索引所指示的数组元素404,每个数组元素中用于存储位于该数组元素关联的网格索引所对应的单位网格中的虚拟对象;或者,该对象管理数组40a可以包括网格索引402及网格索引所指示的数组元素404,网格索引401关联网格索引所对应的单位网格403。
其中,当目标场景中进入新的虚拟对象时,可以将新加入的虚拟对象添加之对象管理数组中。具体的,当第三虚拟对象进入目标场景中时,获取第三虚拟对象在目标场景中的第三位置信息;基于单位长度将第三位置信息进行网格转换,得到第三虚拟对象的对象网格位置,对对象网格位置进行哈希转换,得到第三虚拟对象所对应的待添加网格索引;基于待添加网格索引,将第三虚拟对象添加至对象管理数组。其中,本申请中采用同一个哈希转换方法进行哈希转换,该哈希转换方法在此不做限制。可选的,可以基于数组更新周期,生成对象管理数组,也就是说,例如在当前时刻生成对象管理数组,在该对象管理数组生成后经过数组更新周期时,重新生成对象管理数组,使得对象管理数组中所存储的虚拟对象可以对应于目标场景中的虚拟对象的实际位置,也就是说,可以更为准确地获取到可能与第一虚拟对象发生碰撞的虚拟对象,进而在一定程度上提高虚拟对象碰撞检测的准确性。
一种方式下,计算机设备可以从第一虚拟对象所关联的碰撞对象缓存中,获取候选虚拟对象;碰撞对象缓存用于存储位于第一虚拟对象的初始碰撞缓存区域的虚拟对象。也就是说,可以针对目标场景中的任意一个虚拟对象维护一个碰撞对象缓存,在需要获取某一个虚拟对象的候选虚拟对象时,可以获取该虚拟对象的碰撞对象缓存,将碰撞对象缓存中所包括的虚拟对象,确定为该虚拟对象的候选虚拟对象。
其中,当第一虚拟对象加入目标场景时,计算机设备可以获取第一虚拟对象的标准移动速度V及碰撞距离R(即radius);根据标准移动速度及碰撞距离,确定第一虚拟对象的初始碰撞缓存区域。其中,标准移动速度可以认为是第一虚拟对象在缓存更新周期内的最大移动速度。例如,可以将标准移动速度的整数倍与碰撞距离之和,确定为区域半径,如(2V+R)等,基于区域半径确定初始碰撞缓存区域;或者,可以将标准移动速度、碰撞距离及范围扩大长度之和,确定为区域半径,基于区域半径确定初始碰撞缓存区域,在此不做限制。其中,该范围扩大长度用于对需要缓存的范围进行扩充,提高虚拟对象碰撞检测的容错性。进一步,将初始碰撞缓存区域中所包括的虚拟对象,确定为第一虚拟对象所关联的候选虚拟对象,将候选虚拟对象添加至第一虚拟对象所关联的碰撞对象缓存中。同时,可以将第一虚拟对象添加至候选虚拟对象的碰撞对象缓存中。也就是说,当候选虚拟对象存在与第一虚拟对象碰撞的可能性时,也就表明第一虚拟对象存在与候选虚拟对象碰撞的可能性,可以对第一虚拟对象的碰撞对象缓存进行同步。例如,第一虚拟对象的碰撞对象缓存中包括虚拟对象1及虚拟对象2,则将第一虚拟对象添加至虚拟对象1的碰撞对象缓存及虚拟对象2的碰撞对象缓存中。
举例来说,参见图5,图5是本申请实施例提供的另一种对象管理数组生成场景示意图。如图5所示,当第一虚拟对象5011加入目标场景501时,获取第一虚拟对象5011的标准移动速度5021(可以称为V)及碰撞距离5022(可以称为R),根据标准移动速度5021及碰撞距离5022,确定第一虚拟对象5011的初始碰撞缓存区域503,如以(2V+R)作为区域半径502,基于区域半径502及第一虚拟对象5011的第一位置信息,确定第一虚拟对象5011的初始碰撞缓存区域503。将初始碰撞缓存区域503中所包括的虚拟对象,确定为第一虚拟对象5011所关联的候选虚拟对象,将候选虚拟对象添加至第一虚拟对象5011所关联的碰撞对象缓存504中。
可选的,若第一虚拟对象的碰撞对象缓存的缓存时长达到缓存更新周期,或者,第一虚拟对象发生位置跳转,则清空第一虚拟对象的碰撞对象缓存,获取第一虚拟对象的当前碰撞缓存区域,将当前碰撞缓存区域中所包括的虚拟对象,添加至第一虚拟对象的碰撞对象缓存中;位置跳转是指第一虚拟对象以大于瞬移速度阈值的速度由第一位置变换至第二位置,相当于是位置瞬移。其中,第一虚拟对象正常移动时,在1秒内的移动距离被限制在最大移动速度之内,因此,通过标准移动速度与碰撞距离所确定的初始碰撞缓存区域,可以使得第一虚拟对象在缓存更新周期中进行移动后,仍处于初始碰撞缓存区域中,如区域半径为(2V+R)时,可以考虑到其他虚拟对象的移动,也就是说,该初始碰撞缓存区域中的候选虚拟对象,可以考虑到由于第一虚拟对象的移动及除第一虚拟对象之外的其他虚拟对象的移动,也就是可以包括第一虚拟对象在缓存更新周期内移动时的各个时间点下,可能与第一虚拟对象发生碰撞的虚拟对象,使得碰撞对象缓存不需要实时更新,减少了碰撞对象缓存的完整计算频率,从而节省资源,提高缓存管理效率。而如果第一虚拟对象发生位置跳转,也就是该第一虚拟对象的位置发生突变,使得第一虚拟对象的位置信息发生较大变化,导致第一虚拟对象的初始碰撞缓存区域发生较大变化,此时,可以对第一虚拟对象的碰撞对象缓存进行更新,以保障缓存的准确性。
其中,在从候选虚拟对象中获取第一虚拟对象所关联的第二虚拟对象时,可以获取候选虚拟对象的候选位置信息,获取第一虚拟对象的第一位置信息;计算候选位置信息与第一位置信息之间的对象位置距离,若对象位置距离小于或等于碰撞距离,则将候选虚拟对象确定为第一虚拟对象所关联的第二虚拟对象;第二虚拟对象不包括第一虚拟对象。其中,该候选位置信息及第一位置信息均可以认为是dim维的向量。
步骤S302,获取第一虚拟对象所在目标场景的障碍空间二叉树,遍历障碍空间二叉树中的节点,将与第一虚拟对象之间的距离小于或等于碰撞距离的节点所对应的目标障碍区域边界,确定为第一虚拟对象的碰撞区域边界。
在本申请实施例中,障碍空间二叉树中的节点对应于目标场景中的障碍区域边界;障碍空间二叉树中的任意一个节点所对应的第一方向子树所包括的障碍区域边界的数量,与第二方向子树所包括的障碍区域边界的数量之间的差值,小于或等于边界拆分阈值。其中,目标场景中存在障碍区域,障碍区域的边界线可以认为是障碍区域边界,其中,障碍区域是指障碍物(如建筑物主体或场景摆设等)所在的区域,以及其他不可通行区域(如海洋或沼泽等),也就是目标场景中无法通行的区域,其中,建筑物主体是指建筑物中无法通行的部分,如建筑物墙体等。以一个障碍区域边界为例,若该障碍区域边界未被分割,则该障碍区域边界可以认为是原始障碍区域边界,若该障碍区域边界被分割,则该障碍区域边界分割后得到新的障碍区域边界,如障碍区域边界A被分割成两部分,则可以认为该障碍区域边界A被分割为障碍区域边界A1及障碍区域边界A2等,其中,该障碍区域边界A为原始障碍区域边界。其中,障碍空间二叉树中的任意一个节点(可以记作主节点)的子树中的节点(可以记作子节点)与该主节点的相对位置,与该主节点所对应的障碍区域边界与该主节点的子树中的节点所对应的障碍区域边界的相对位置相同,具体参见图2中的相关描述。
具体的,计算机设备可以获取第一虚拟对象,与障碍空间二叉树中的根节点所对应的障碍区域边界所在直线的障碍距离(可以记作第一障碍距离)。若第一障碍距离小于或等于碰撞距离,则将根节点所对应的障碍区域边界确定为第一虚拟对象的碰撞区域边界,遍历根节点的第一方向子树及第二方向子树,获取第一方向子树及第二方向子树所包括的节点中,与第一虚拟对象之间的第二障碍距离小于或等于碰撞距离的目标障碍区域边界,将目标障碍区域边界确定为第一虚拟对象的碰撞障碍边界,或者,将目标障碍区域边界所在的原始障碍区域边界,确定为第一虚拟对象的碰撞障碍边界,也就是说,第一虚拟对象的碰撞障碍边界包括根节点所对应的障碍区域边界,以及由根节点的第一方向子树和第二方向子树查找得到的障碍区域边界;其中,第二障碍距离可以是指对应的障碍区域边界与第一虚拟对象之间的最短距离。
若第一障碍距离大于碰撞距离,则获取第一虚拟对象与根节点所对应的障碍区域边界之间的相对位置关系。若该相对位置关系是指第一虚拟对象位于根节点所对应的障碍区域边界的第一方向侧,则递归处理该根节点的第一方向子树中的节点,直至获取到第一目标节点,该第一目标节点是指在第一方向子树中对应的障碍区域边界所在的直线,与第一虚拟对象之间的第一障碍距离小于或等于碰撞距离的节点,即该第一目标节点对应的障碍区域边界所在的直线,与第一虚拟对象之间的第一障碍距离小于或等于碰撞距离;遍历第一目标节点的第一方向子树及第二方向子树,得到与第一虚拟对象之间的第二障碍距离小于或等于碰撞距离的目标障碍区域边界,将目标障碍区域边界确定为第一虚拟对象的碰撞障碍边界。同理,若该相对位置关系是指第一虚拟对象位于根节点所对应的障碍区域边界的第二方向侧,则递归处理该根节点中的第二方向子树中的节点,直至获取到第二目标节点,该第二目标节点是指在第二方向子树中对应的障碍区域边界所在的直线,与第一虚拟对象之间的第一障碍距离小于或等于碰撞距离的节点,即该第二目标节点对应的障碍区域边界所在的直线,与第一虚拟对象之间的第一障碍距离小于或等于碰撞距离;遍历第一目标节点的第一方向子树及第二方向子树,得到与第一虚拟对象之间的第二障碍距离小于或等于碰撞距离的目标障碍区域边界,将目标障碍区域边界确定为第一虚拟对象的碰撞障碍边界。
其中,第一方向子树是指位于对应的节点的第一方向侧的节点所组成的树形结构,相当于是左子树,第二方向子树是指位于对应的节点的第二方向侧的节点所组成的树形结构,相当于是右子树。举例来说,参见图6,图6是本申请实施例提供的一种障碍空间二叉树示意图,如图6所示,假定该障碍空间二叉树的根节点为节点60a,该节点60a对应第一方向子树601及第二方向子树602;以节点60b为例,该节点60b的第一方向子树是指由节点60c、节点60d及节点60e所组成的树形结构,该节点60b的第二方向子树是指由节点60f及节点60g所组成的树形结构等。同理,可以得到障碍空间二叉树中的任意一个节点的第一方向子树及第二方向子树。
进一步地,上述障碍空间二叉树是根据目标场景中所包括的障碍区域的障碍区域边界所生成的。具体的,计算机设备可以获取目标场景中所包括的障碍区域,获取障碍区域的原始障碍区域边界。举例来说,参见图7,图7是本申请实施例提供的一种场景示意图,如图7所示,假定该目标场景中存在障碍区域701、障碍区域702及障碍区域703等,其中,障碍区域701包括原始障碍区域边界701a、原始障碍区域边界701b、原始障碍区域边界701c及原始障碍区域边界701d,障碍区域702包括原始障碍区域边界702a、原始障碍区域边界702b、原始障碍区域边界702c及原始障碍区域边界702d,障碍区域703包括原始障碍区域边界703a、原始障碍区域边界703b、原始障碍区域边界703c、…及原始障碍区域边界703h等。其中,目标场景中的障碍区域的形状(即轮廓信息)可能是多边形,也可能是弧形(如圆形、椭圆形或不规则曲面等)等,在障碍区域的形状是多边形时,可以明确获取到该障碍区域的原始障碍区域边界,如障碍区域701及障碍区域702等;在障碍区域的形状为弧形时,无法直接获取到障碍区域的原始障碍区域边界,可以对该障碍区域进行多边形转换,得到障碍转换区域,将该障碍转换区域的边界确定为该障碍区域的原始障碍区域边界,如障碍区域703所示等。同理,可以获取到该目标场景中所包括的原始障碍区域边界。
进一步地,可以从原始障碍区域边界中获取第一障碍区域边界。其中,位于第一障碍区域边界的第一方向侧的障碍区域边界的数量,与位于第一障碍区域边界的第二方向侧的障碍区域边界的数量的差值,小于或等于边界拆分阈值;任意一个障碍区域边界是指位于第一障碍区域边界的一个方向侧的原始障碍区域边界,或者是指位于第一障碍区域边界的两个方向侧的原始障碍区域边界被第一障碍区域边界分割得到的障碍区域边界。其中,位于第一障碍区域边界的一个方向侧,是指一个原始障碍区域边界的所有部分都在第一障碍区域边界同一侧,举例来说,以原始障碍区域边界701a为例,原始障碍区域边界701b、原始障碍区域边界701c、原始障碍区域边界701d、原始障碍区域边界702c、…及原始障碍区域边界703h等可以认为是位于原始障碍区域边界701a的一个方向侧的原始障碍区域边界,原始障碍区域边界702d及原始障碍区域边界702b等可以认为是位于原始障碍区域边界701a的两个方向侧的原始障碍区域边界。进一步,可以将第一障碍区域边界作为根节点,以第一障碍区域边界,将原始障碍区域边界划分为第一边界集合与第二边界集合,基于第一边界集合构建根节点的第一方向子树,基于第二边界集合构建根节点的第二方向子树;第一边界集合包括位于第一障碍区域边界的第一方向侧的障碍区域边界,第二边界集合包括位于第一障碍区域边界的第二方向侧的障碍区域边界。可选的,该边界拆分阈值可以是预先设置的数值,或者,可以根据位于第一障碍区域边界的第一方向侧的障碍区域边界的数量,与位于第一障碍区域边界的第二方向侧的障碍区域边界的数量之和(如称为集合数量),确定边界拆分阈值,例如,该边界拆分阈值可以是集合数量的1/10等,在此不做限制。通过边界拆分阈值进行分割线段(即第一障碍区域边界)的选取,使得无需遍历所有原始障碍区域边界去查找用作根节点的原始障碍区域边界,减少树形结构的构建时间,使得单次进行第一边界集合与第二边界集合分割的时间复杂度降低至N*log(N),提高树形结构的构建效率。其中。时间复杂度中的N是指复杂度的一种数量表示,与其他N不同,即本申请中时间复杂度中的N是一种数量表示,除时间复杂度中的N之外的N是指对象管理数组的数组维度。
其中,在以第一障碍区域边界,将障碍区域边界划分为第一边界集合与第二边界集合时,计算机设备可以以第一障碍区域边界所在的直线,将原始障碍区域边界C分割为障碍区域边界C1及障碍区域边界C2;障碍区域边界C1是原始障碍区域边界C位于第一障碍区域边界的第一方向侧的部分,障碍区域边界C2是原始障碍区域边界C位于第一障碍区域边界的第二方向侧的部分。如图7中所示,可以以原始障碍区域边界701a所在的直线,将原始障碍区域边界702d分割为障碍区域边界7021及障碍区域边界7022等。以第一障碍区域边界所在的直线,对原始障碍区域边界C的分割方式,可以参见图7中对原始障碍区域边界702d的分割方式。进一步,可以将障碍区域边界A与障碍区域边界C1确定为第一边界集合,将障碍区域边界B与障碍区域边界C2确定为第二边界集合;障碍区域边界A是指位于第一障碍区域边界的第一方向侧的原始障碍区域边界,障碍区域边界B是指位于第一障碍区域边界的第二方向侧的原始障碍区域边界;原始障碍区域边界C是指同时位于第一障碍区域边界的两个方向侧的原始障碍区域边界。在基于第一边界集合构建根节点的第一方向子树时,可以重复上述基于原始障碍区域边界,确定第一障碍区域边界的过程,直至对第一边界集合遍历完成,确定第一边界集合中各个障碍区域边界所对应的节点分布,进而由第一边界集合中各个障碍区域边界所对应的节点分布,确定根节点的第一方向子树;同理,可以基于第二边界集合构建根节点的第二方向子树。
可选的,障碍空间二叉树中每个节点可以对应一个障碍区域边界。或者,障碍空间二叉树中存在对应多个障碍区域边界的节点,具体的,若障碍区域边界A与障碍区域边界C1的数量小于或等于树形构建阈值,则将障碍区域边界A与障碍区域边界C1作为根节点的第一方向子节点,将根节点的第一方向子节点确定为根节点的第一方向子树;若障碍区域边界A与障碍区域边界C1的数量大于树形构建阈值,则从障碍区域边界A与障碍区域边界C1中获取第二障碍区域边界,将第二障碍区域边界确定为根节点的第一方向子节点,基于第一方向子节点将障碍区域边界A与障碍区域边界C1划分为第三边界集合及第四边界集合,基于第三边界集合构建第一方向子节点的第一方向子树,基于第四边界集合构建第一方向子节点的第二方向子树。同理,若障碍区域边界B与障碍区域边界C2的数量小于或等于树形构建阈值,则将障碍区域边界B与障碍区域边界C2作为根节点的第二方向子节点,将根节点的第二方向子节点确定为根节点的第二方向子树;若障碍区域边界B与障碍区域边界C2的数量大于树形构建阈值,则从障碍区域边界B与障碍区域边界C2中获取第三障碍区域边界,将第三障碍区域边界确定为根节点的第二方向子节点,基于第二方向子节点将障碍区域边界B与障碍区域边界C2划分为第五边界集合及第六边界集合,基于第五边界集合构建第二方向子节点的第一方向子树,基于第六边界集合构建第二方向子节点的第二方向子树。也就是说,在对上述各个边界集合(如第一边界集合、第二边界集合、…及第六边界集合等)进行进一步划分时,当边界集合中所包括的障碍区域边界的数量小于或等于树形构建阈值时,就不再对该边界集合进行划分,直接将该边界集合中所包括的各个障碍区域边界作为一个节点,从而进一步降低了边界集合的划分次数,进而在一定程度上提高树形结构构建效率。
可选的,还可以查找动态边界集合,基于动态边界集合进一步查找可能与第一虚拟对象发生碰撞的障碍区域边界。具体的,若动态边界集合不为空,则从动态边界集合中获取动态区域边界,将动态区域边界中与第一虚拟对象之间的距离小于或等于碰撞距离的动态区域边界,确定为第一虚拟对象的动态碰撞边界。其中,该动态边界集合中包括动态障碍区域时,可以是从动态边界集合中获取动态障碍区域,获取动态障碍区域的动态区域边界。其中,可以将动态碰撞边界及碰撞区域边界统称为碰撞障碍边界,也就是,将动态碰撞边界及碰撞区域边界确定为碰撞障碍边界。
其中,若动态边界集合中所包括的动态区域边界的数量大于或等于动态支持阈值,或障碍空间二叉树的固定时长大于或等于树更新周期,则基于障碍空间二叉树中的节点及动态区域边界,重新构建障碍空间二叉树;或者,若动态边界集合中所包括的动态障碍区域的数量大于或等于动态支持阈值,或障碍空间二叉树的固定时长大于或等于树更新周期(即可以对障碍空间二叉树进行周期性更新),则基于障碍空间二叉树中的节点及动态区域边界,重新构建障碍空间二叉树。其中,该固定时长是指障碍空间二叉树未发生变化的时长,也就是障碍空间二叉树维持不变的连续时长,相当于基于树更新周期对障碍空间二叉树进行周期性更新。进一步,清空动态边界集合,或删除动态边界集合。可选的,可以获取目标场景所包括的障碍区域的障碍总数量,基于障碍总数量确定动态支持阈值。例如,动态障碍区域大于或等于障碍区域的特定百分比时,重新构建障碍空间二叉树,也就是说,可以将障碍总数量与特定百分比的乘积,确定为动态支持阈值。
其中,动态区域边界可以认为是在目标场景中动态增减的障碍区域,若每次在目标场景中增加动态区域边界时就重新构建障碍空间二叉树,由于障碍空间二叉树的重建所需时间较长,则会导致树形构建效率较低,因此,可以通过动态边界集合对动态区域边界进行维护。具体的,计算机设备可以维护动态边界集合AS及整体边界集合TS,可以为障碍空间二叉树中的每个节点,关联该节点所对应的障碍区域边界所属的障碍区域的区域信息,其中,动态边界集合AS用于维护目标场景中动态增减的障碍区域,整体边界集合TS用于维护目标场景中的所有障碍区域。当第一障碍区域添加至目标场景时,可以将该第一障碍区域添加至动态边界集合AS及整体边界集合TS中,其中,处于动态边界集合AS的第一障碍区域可以称为动态障碍区域,处于整体边界集合TS的第一障碍区域可以称为障碍区域,障碍区域包括动态障碍区域。进一步地,当在目标场景中删除第二障碍区域时,可以删除动态边界集合AS中的第二障碍区域,以及整体边界集合TS中的第二障碍区域。此时,在上述得到碰撞区域边界及动态碰撞边界时,可以删除碰撞区域边界及动态碰撞边界中不属于整体边界集合的边界,得到碰撞障碍边界。可选的,可以将第二障碍区域添加至删除区域集合中,在上述得到碰撞区域边界及动态碰撞边界时,可以删除碰撞区域边界及动态碰撞边界中,属于删除区域集合的边界,得到碰撞障碍边界。可选的,在重新构建障碍空间二叉树后,可以删除该删除区域集合。
其中,在基于障碍空间二叉树中的节点及动态区域边界,重新构建障碍空间二叉树时,可以认为是基于整体边界集合所包括的障碍区域的区域信息,重新构建障碍空间二叉树。
可选的,如在dim为3时,在对障碍区域边界及动态区域边界进行距离检测时,可以直接删除所属障碍区域的高度范围与第一虚拟对象的对象高度不存在相交部分的区域边界,得到待检测边界,例如,障碍区域边界1所属的高度范围与第一虚拟对象的对象高度不存在相交部分,则可以删除该障碍区域边界1,也就是,区域边界是指障碍区域边界或动态区域边界,或者两者皆有。从待检测边界中获取与第一虚拟对象之间的距离小于或等于碰撞距离的碰撞障碍边界。
步骤S303,基于第二虚拟对象与第一虚拟对象的碰撞区域边界,预测第一虚拟对象的更新移动速度。
在本申请实施例中,在存在动态碰撞边界时,可以基于第二虚拟对象、第一虚拟对象的碰撞区域边界及第一虚拟对象的动态碰撞边界,预测第一虚拟对象的更新移动速度,也就是基于第二虚拟对象与碰撞障碍边界,预测第一虚拟对象的更新移动速度。
具体的,获取第一虚拟对象的第一移动速度及第一位置信息。获取第二虚拟对象的第二移动速度及对象位置信息,根据第一位置信息及对象位置信息构建第一速度区域,基于第一移动速度及第二移动速度确定第一偏移数据;根据第一偏移数据及第一速度区域构建第二速度区域,基于第二速度区域确定第一候选速度范围。举例来说,参见图8,图8是本申请实施例提供的一种速度更新场景示意图。如图8所示,假定第一虚拟对象801的第一移动速度为VA,第二虚拟对象802的第二移动速度为VB,基于第一位置信息将第一虚拟对象801缩小为一个点,即第一虚拟对象801b,基于对象位置信息将第二虚拟对象802扩大成半径为的对象扩充区域802b,其中,/>,其中,RA是指第一虚拟对象801所占据的空间半径,RB是指第二虚拟对象802所占据的空间半径。根据第一位置信息及对象位置信息构建第一速度区域803,该第一速度区域803可以认为是第一虚拟对象801b与对象扩充区域802b之间可能发生碰撞的一系列相对速度的集合,此时,该第一速度区域803所包括的相对速度可以记作CCAB,参见公式③所示:
进一步,基于第一移动速度及第二移动速度确定第一偏移数据,该第一偏移数据可以包括第一偏移数据A及第一偏移数据B,根据第一偏移数据及第一速度区域构建第二速度区域,第二速度区域包括第二速度区域A及第二速度区域B,基于第二速度区域确定第一候选速度范围。具体的,可以将第二移动速度确定为第一偏移数据A,根据第一偏移数据A及第一速度区域构建第二速度区域A,即图8所示的第二速度区域804,也就是,第一偏移数据A是第二移动速度所指示的向量,将第一速度区域803沿第一偏移数据A进行移动,得到第二速度区域804,该第二速度区域804可以参见公式④所示:
如公式④所示,ΦVO是指第二速度区域A,⊕是指向量平移,通过对第一速度区域803平移第一偏移数据A,相当于是将相对速度转换为绝对速度,也就是说,当第一虚拟对象的移动速度属于第二速度区域A时,可能与第二虚拟对象之间发生碰撞。
进一步,可以基于第一移动速度及第二移动速度,确定第一偏移数据B,如,可以基于第一移动速度与第二移动速度的向量和的一半,确定第一偏移数据B;或者,可以基于第一移动速度与第二速度区域A,确定第一偏移数据B等。该第一偏移数据B用于将第二速度区域A的端点移动至第一移动速度与第二移动速度的向量和的一半。根据第一偏移数据B及第二速度区域A构建第二速度区域B(即第二速度区域805)。该第一偏移数据B用于约束下一时刻速度为第一移动速度与任意不属于第二速度区域A的速度的总和的一半,以适配下一时刻的移动,由于下一时刻的速度选择具有随意性,可能会导致速度方向不断变化,出现抖动现象,从而影响仿真的真实性,通过第一偏移数据B,约束速度方向的变化,提高仿真的真实性,也就是提高速度预测的准确性及真实性。该第二速度区域B可以参见公式⑤所示:
或者,在基于第一移动速度及第二移动速度确定第一偏移数据,根据第一偏移数据及第一速度区域构建第二速度区域时,可以直接将第一移动速度与第二移动速度的向量和的一半,确定为第一偏移数据,基于第一偏移数据对第一速度区域进行平移处理,得到第二速度区域。进一步,根据第二速度区域确定第一候选速度范围,该第一候选速度范围是指不属于第二速度区域的区域所指示的速度范围。
进一步地,获取第一虚拟对象的碰撞区域边界的边界移动速度及边界位置信息,根据第一位置信息及边界位置信息构建第三速度区域,基于第一移动速度及边界移动速度确定第二偏移数据;根据第二偏移数据及第三速度区域构建第四速度区域,基于第四速度区域确定第二候选速度范围。或者,存在动态碰撞边界时,是获取碰撞障碍边界的边界移动速度及边界位置信息,根据第一位置信息及边界位置信息构建第三速度区域,基于第一移动速度及边界移动速度确定第二偏移数据;根据第二偏移数据及第三速度区域构建第四速度区域,基于第四速度区域确定第二候选速度范围。其中,该第三速度区域的构建方式可以参见上述第一速度区域的构建方式,第四速度区域的构建方式可以参见上述第二速度区域的构建方式,在此不再进行赘述。其中,将上述第一速度区域的构建过程中的第二移动速度替换为边界移动速度,得到第三速度区域的构建过程;将上述第二速度区域的构建过程中的第二移动速度替换为边界移动速度,得到第四速度区域的构建过程。其中,该边界移动速度可以认为是0。
可选的,在根据第一位置信息及边界位置信息构建第三速度区域时,可以以第一位置信息为圆心,以该圆心到边界位置信息所指示的障碍区域的轮廓信息的切线,构建第三速度区域,参见图9,图9是本申请实施例提供的一种速度区域构建场景示意图,如图9所示,以第一位置信息901为圆心,以该圆心到碰撞障碍边界902的边界位置信息所指示的障碍区域903的轮廓信息的切线,构建第三速度区域904。对第三速度区域的偏移等与上面相同。其中,在这一方式下,由于是基于障碍区域实现的,因此,可以对碰撞障碍边界进行区域整合,得到碰撞障碍边界所对应的碰撞障碍区域,直接针对第一虚拟对象与碰撞障碍区域进行第四速度区域的构建,从而减少速度预测所需处理的数据量,提高速度预测效率。
进一步,将第一候选速度范围与第二候选速度范围的交集,确定为第一虚拟对象的目标候选速度范围;或者,将第二速度区域与第四速度区域的并集确定为总速度区域,将除总速度区域之外的区域,确定为第一虚拟对象的目标候选速度范围。其中,该第二虚拟对象的数量可以为p个,碰撞障碍边界的数量为q个,p为正整数,q为正整数,可以将p个第二虚拟对象分别对应的第一候选速度范围,以及q个碰撞障碍边界分别对应的第二候选速度范围的交集,确定为第一虚拟对象的目标候选速度范围;或者,可以将p个第二虚拟对象分别对应的第二速度区域,以及q个碰撞障碍边界分别对应的第四速度区域的并集确定为总速度区域,将除总速度区域之外的区域,确定为第一虚拟对象的目标候选速度范围,由于候选速度范围是一个较为宽泛的范围区间,可以通过先整合速度区域,再进行目标候选速度范围的确定,提高速度确定效率。进一步,可以在目标候选速度范围中选取第一虚拟对象的更新移动速度。可选的,可以获取第一位置信息的相邻通行区域(即与第一位置信息相邻的可通行区域),基于相邻通行区域及第一移动速度中的移动方向,确定速度更新方向;基于第一虚拟对象的第一移动速度及最大加速度,确定第一虚拟对象的速度变更范围;基于速度更新方向与速度变更范围,确定第一虚拟对象的更新移动速度,其中,该更新移动速度的方向属于速度更新方向,该更新移动速度的大小属于速度变更范围,通过该过程,使得第一虚拟对象在下一时刻的移动保持在目标场景的可通行区域中,且不会出现速度突变,提高速度预测的准确性、合理性及真实性。或者,可以直接在目标候选速度范围中选取第一虚拟对象的更新移动速度。
步骤S304,基于更新移动速度控制第一虚拟对象进行移动。
在本申请实施例中,基于更新移动速度控制第一虚拟对象进行移动。可选的,在步骤S303中,直接获取更新移动速度vel时,可以基于更新移动速度vel确定初始路径规划,该初始路径规划可以记作vel*Δt;可以基于第一位置信息的相邻通行区域对初始路径规划进行偏移,得到偏移路径规划,基于偏移路径规划控制第一虚拟对象进行移动,使得保持第一虚拟对象位于目标场景的可通行区域中。
可选的,若目标场景所包括的障碍区域的障碍区域边界的数量小于或等于树形构建阈值,则获取障碍区域边界与第一虚拟对象之间的距离,将障碍区域边界中与第一虚拟对象之间的距离小于或等于碰撞距离的障碍区域边界,确定为第一虚拟对象的碰撞区域边界;若目标场景所包括的障碍区域的障碍区域边界的数量大于树形构建阈值,则执行获取第一虚拟对象所在目标场景的障碍空间二叉树的过程。也就是说,当目标场景中所包括的障碍区域的障碍区域边界的数量较少时,可以无需构建障碍空间二叉树,从而节省资源,提高二叉树的管理效率。
在本申请实施例中,可以获取位于第一虚拟对象的初始碰撞缓存区域中的候选虚拟对象,从候选虚拟对象中获取第一虚拟对象所关联的第二虚拟对象,通过缓存对第一虚拟对象的候选虚拟对象进行宽泛存储,相当于是初步的虚拟对象的筛选,而这个初始碰撞缓存区域的缓存由于是宽泛存储,也就是预设置的,在进行第二虚拟对象的获取时会减少需要查找的时间,提高虚拟对象筛选效率。进一步,可以获取第一虚拟对象所在目标场景的障碍空间二叉树,遍历障碍空间二叉树中的节点,将与第一虚拟对象之间的距离小于或等于碰撞距离的节点所对应的目标障碍区域边界,确定为第一虚拟对象的碰撞区域边界,其中,障碍空间二叉树中的节点对应于目标场景中的障碍区域边界,障碍空间二叉树中的任意一个节点所对应的第一方向子树所包括的障碍区域边界的数量,与第二方向子树所包括的障碍区域边界的数量之间的差值,小于或等于边界拆分阈值,也就是说,障碍区域二叉树中任意一个节点在两个方向上的子节点的数量相差不多,使得在遍历障碍空间二叉树时,可以基于方向进行方向上的筛选,提高障碍区域的筛选效率。进一步,可以基于获取到的第二虚拟对象与第一虚拟对象的碰撞区域边界,预测第一虚拟对象的更新移动速度,基于更新移动速度控制第一虚拟对象进行移动,通过以上过程,提高了更新移动速度获取的各个步骤的效率,进而提高寻路效率。
其中,以实验场景为例,该实验场景为一个半径为1000的圆环,在该圆环上均匀分布了U个半径为1的虚拟对象,每个虚拟对象的碰撞距离均为10,标准移动速度为5,每个虚拟对象都需要移动到这个圆角度偏移为150度的位置,移动期间每隔0.1秒计算一次最新位置信息与初始碰撞缓存区域,所有虚拟对象都到达指定位置后,停止计算初始碰撞缓存区域。统计在不同的U下,采用现有算法的完整迭代时间与采用本申请的完整迭代时间,得到如图10所示的测试结果,图10是本申请实施例提供的一种迭代时间示意图,如图10所示,测试结果1001是本申请的完整迭代时间,测试结果1002是现有算法的完整迭代时间,可见,该完整迭代时间缩小很多,对初始碰撞缓存区域的构建效率提升了四倍左右,也就使得同样的计算资源可承载的虚拟对象的数量也同样提升了四倍左右。
进一步,采取在实验场景中随机生成多个带旋转的正方形(即动态障碍区域),可以参见图11,图11是本申请实施例提供的一种树构建测试结果示意图。如图11所示,横轴为正方形的数量,纵轴为障碍空间二叉树的构建时间,该纵轴采取对数坐标轴,如测试结果1101是本申请中障碍空间二叉树的构建时间,测试结果1102是现有算法中障碍空间二叉树的构建时间,可以看出本申请为非严格均衡划分,现有算法为严格均衡划分,可以看出,严格均衡划分的时间复杂度比非严格均衡划分的时间复杂度多一个正方形数目U的常数项,也就是,本申请降低了障碍空间二叉树的构建时间复杂度,提高树形构建效率。其中,本申请中初始碰撞缓存区域构建的时间复杂度为虚拟对象数量的常数倍,障碍空间二叉树构建的时间复杂度也是障碍区域的常数倍,因此,整体系统在非拥挤情况下,运行所需时间与目标场景(包括实验场景)内虚拟对象和障碍区域的数量成简单正相关,性能扩展性很好。
进一步地,请参见图12,图12是本申请实施例提供的一种数据处理装置示意图。该数据处理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码等),例如该数据处理装置可以为一个应用软件;该装置可以用于执行本申请实施例提供的方法中的相应步骤。如图12所示,该数据处理装置1200可以用于图3所对应实施例中的计算机设备,具体的,该装置可以包括:对象获取模块11、对象确定模块12、树获取模块13、边界确定模块14、速度预测模块15及移动控制模块16。
对象获取模块11,用于获取位于第一虚拟对象的初始碰撞缓存区域中的候选虚拟对象;
对象确定模块12,用于从候选虚拟对象中获取第一虚拟对象所关联的第二虚拟对象;第二虚拟对象与第一虚拟对象之间的距离小于或等于第一虚拟对象的碰撞距离;
树获取模块13,用于获取第一虚拟对象所在目标场景的障碍空间二叉树;
边界确定模块14,用于遍历障碍空间二叉树中的节点,将与第一虚拟对象之间的距离小于或等于碰撞距离的节点所对应的目标障碍区域边界,确定为第一虚拟对象的碰撞区域边界;障碍空间二叉树中的节点对应于目标场景中的障碍区域边界;障碍空间二叉树中的任意一个节点的第一方向子树所包括的障碍区域边界的数量,与第二方向子树所包括的障碍区域边界的数量之间的差值,小于或等于边界拆分阈值;
速度预测模块15,用于基于第二虚拟对象与第一虚拟对象的碰撞区域边界,预测第一虚拟对象的更新移动速度;
移动控制模块16,用于基于更新移动速度控制第一虚拟对象进行移动。
其中,该对象获取模块11,包括:
检测确定单元111,用于获取第一虚拟对象的第一位置信息及第一虚拟对象的碰撞距离,将第一位置信息及碰撞距离进行融合,得到第一虚拟对象的碰撞检测范围;
网格转换单元112,用于获取目标场景的单位网格的单位长度,基于单位长度对碰撞检测范围进行网格转换,得到网格检测范围;
候选获取单元113,用于对网格检测范围进行哈希转换,得到第一虚拟对象的初始碰撞缓存区域,将初始碰撞缓存区域在对象管理数组中所对应的虚拟对象,确定为候选虚拟对象。
其中,该装置1200还包括:
网格构建模块17,用于基于单位网格的单位长度,将目标场景构建为M个单位网格;
网格初始化模块18,用于初始化M个单位网格分别对应的网格位置信息;M为正整数;
数组创建模块19,用于创建N维初始对象管理数组,对M个单位网格分别对应的网格位置信息进行哈希转换,得到M个单位网格分别对应的网格索引;N为正整数;
数组生成模块20,用于获取目标场景中所包括的虚拟对象所在的单位网格,基于虚拟对象所在的单位网格的网格索引,将虚拟对象添加至初始对象管理数组,得到对象管理数组;初始碰撞缓存区域用于指示根据网格检测范围转换得到的网格索引;虚拟对象包括候选虚拟对象。
其中,该网格初始化模块18具体用于:
获取M个单位网格分别对应的网格标识点的第二位置信息,基于单位长度对M个单位网格分别对应的第二位置信息进行位置网格化转换,得到M个单位网格分别对应的网格位置信息。
其中,该装置1200还包括:
位置获取模块21,用于当第三虚拟对象进入目标场景中时,获取第三虚拟对象在目标场景中的第三位置信息;
索引获取模块22,用于基于单位长度将第三位置信息进行网格转换,得到第三虚拟对象的对象网格位置,对对象网格位置进行哈希转换,得到第三虚拟对象所对应的待添加网格索引;
对象缓存模块23,用于基于待添加网格索引,将第三虚拟对象添加至对象管理数组。
其中,该对象获取模块11,包括:
缓存查找单元114,用于从第一虚拟对象所关联的碰撞对象缓存中,获取候选虚拟对象;该碰撞对象缓存用于存储位于第一虚拟对象的初始碰撞缓存区域的虚拟对象。
其中,该装置1200还包括:
移动获取模块24,用于当第一虚拟对象加入目标场景时,获取第一虚拟对象的标准移动速度及碰撞距离;
缓存区域确定模块25,用于根据标准移动速度及碰撞距离,确定第一虚拟对象的初始碰撞缓存区域;
候选确定模块26,用于将初始碰撞缓存区域中所包括的虚拟对象,确定为第一虚拟对象所关联的候选虚拟对象,将候选虚拟对象添加至第一虚拟对象所关联的碰撞对象缓存中;
对象同步模块27,用于将第一虚拟对象添加至候选虚拟对象的碰撞对象缓存中。
其中,该装置1200还包括:
缓存更新模块28,用于若第一虚拟对象的碰撞对象缓存的缓存时长达到缓存更新周期,或者,第一虚拟对象发生位置跳转,则清空第一虚拟对象的碰撞对象缓存,获取第一虚拟对象的当前碰撞缓存区域,将当前碰撞缓存区域中所包括的虚拟对象,添加至第一虚拟对象的碰撞对象缓存中;位置跳转是指第一虚拟对象以大于瞬移速度阈值的速度由第一位置变换至第二位置。
其中,该对象确定模块12,包括:
位置获取单元121,用于获取候选虚拟对象的候选位置信息,获取第一虚拟对象的第一位置信息;
距离筛选单元122,用于计算候选位置信息与第一位置信息之间的对象位置距离,若对象位置距离小于或等于碰撞距离,则将候选虚拟对象确定为第一虚拟对象所关联的第二虚拟对象;第二虚拟对象不包括第一虚拟对象。
其中,该装置1200还包括:
边界获取模块29,用于获取目标场景中所包括的障碍区域,获取障碍区域的原始障碍区域边界,从原始障碍区域边界中获取第一障碍区域边界;位于第一障碍区域边界的第一方向侧的障碍区域边界的数量,与位于第一障碍区域边界的第二方向侧的障碍区域边界的数量的差值,小于或等于边界拆分阈值;任意一个障碍区域边界是指位于第一障碍区域边界的一个方向侧的原始障碍区域边界,或者是指位于第一障碍区域边界的两个方向侧的原始障碍区域边界被第一障碍区域边界分割得到的障碍区域边界;
根确定模块30,用于将第一障碍区域边界作为根节点;
边界划分模块31,用于以第一障碍区域边界,将原始障碍区域边界划分为第一边界集合与第二边界集合;
树构建模块32,用于基于第一边界集合构建根节点的第一方向子树,基于第二边界集合构建根节点的第二方向子树;第一边界集合包括位于第一障碍区域边界的第一方向侧的障碍区域边界,第二边界集合包括位于第一障碍区域边界的第二方向侧的障碍区域边界。
其中,该边界划分模块31,包括:
边界分割单元311,用于以第一障碍区域边界所在的直线,将原始障碍区域边界C分割为障碍区域边界C1及障碍区域边界C2;障碍区域边界C1是原始障碍区域边界C位于第一障碍区域边界的第一方向侧的部分,障碍区域边界C2是原始障碍区域边界C位于第一障碍区域边界的第二方向侧的部分;
边界划分单元312,用于将障碍区域边界A与障碍区域边界C1确定为第一边界集合,将障碍区域边界B与障碍区域边界C2确定为第二边界集合;障碍区域边界A是指位于第一障碍区域边界的第一方向侧的原始障碍区域边界,障碍区域边界B是指位于第一障碍区域边界的第二方向侧的原始障碍区域边界;原始障碍区域边界C是指同时位于第一障碍区域边界的两个方向侧的原始障碍区域边界。
其中,该树构建模块32,包括:
第一节点构建单元321,用于若障碍区域边界A与障碍区域边界C1的数量小于或等于树形构建阈值,则将障碍区域边界A与障碍区域边界C1作为根节点的第一方向子节点,将根节点的第一方向子节点确定为根节点的第一方向子树;
第二节点构建单元322,用于若障碍区域边界A与障碍区域边界C1的数量大于树形构建阈值,则从障碍区域边界A与障碍区域边界C1中获取第二障碍区域边界,将第二障碍区域边界确定为根节点的第一方向子节点,基于第一方向子节点将障碍区域边界A与障碍区域边界C1划分为第三边界集合及第四边界集合,基于第三边界集合构建第一方向子节点的第一方向子树,基于第四边界集合构建第一方向子节点的第二方向子树。
其中,该装置1200还包括:
边界筛选模块33,用于若目标场景所包括的障碍区域的障碍区域边界的数量小于或等于树形构建阈值,则获取障碍区域边界与第一虚拟对象之间的距离,将障碍区域边界中与第一虚拟对象之间的距离小于或等于碰撞距离的障碍区域边界,确定为第一虚拟对象的碰撞区域边界;
树触发模块34,用于若目标场景所包括的障碍区域的障碍区域边界的数量大于树形构建阈值,则执行获取第一虚拟对象所在目标场景的障碍空间二叉树的过程。
其中,该装置1200还包括:
动态获取模块35,用于若动态边界集合不为空,则从动态边界集合中获取动态区域边界,将动态区域边界中与第一虚拟对象之间的距离小于或等于碰撞距离的动态区域边界,确定为第一虚拟对象的动态碰撞边界;
该速度预测模块15具体用于:
基于第二虚拟对象、第一虚拟对象的碰撞区域边界及第一虚拟对象的动态碰撞边界,预测第一虚拟对象的更新移动速度。
其中,该装置1200还包括:
树重建模块36,用于若动态边界集合中所包括的动态区域边界的数量大于或等于动态支持阈值,或障碍空间二叉树的固定时长大于或等于树更新周期,则基于障碍空间二叉树中的节点及动态区域边界,重新构建障碍空间二叉树;
集合清空模块37,用于清空动态边界集合。
其中,该速度预测模块15,包括:
信息获取单元151,用于获取第一虚拟对象的第一移动速度及第一位置信息;
第一偏移单元152,用于获取第二虚拟对象的第二移动速度及对象位置信息,根据第一位置信息及对象位置信息构建第一速度区域,基于第一移动速度及第二移动速度确定第一偏移数据;
第一确定单元153,用于根据第一偏移数据及第一速度区域构建第二速度区域,基于第二速度区域确定第一候选速度范围;
第二偏移单元154,用于获取第一虚拟对象的碰撞区域边界的边界移动速度及边界位置信息,根据第一位置信息及边界位置信息构建第三速度区域,基于第一移动速度及边界移动速度确定第二偏移数据;
第二确定单元155,用于根据第二偏移数据及第三速度区域构建第四速度区域,基于第四速度区域确定第二候选速度范围;
速度确定单元156,用于将第一候选速度范围与第二候选速度范围的交集,确定为第一虚拟对象的目标候选速度范围,在目标候选速度范围中选取第一虚拟对象的更新移动速度。
本申请实施例提供了一种数据处理装置,该装置可以获取位于第一虚拟对象的初始碰撞缓存区域中的候选虚拟对象,从候选虚拟对象中获取第一虚拟对象所关联的第二虚拟对象,通过缓存对第一虚拟对象的候选虚拟对象进行宽泛存储,相当于是初步的虚拟对象的筛选,而这个初始碰撞缓存区域的缓存由于是宽泛存储,也就是预设置的,在进行第二虚拟对象的获取时会减少需要查找的时间,提高虚拟对象筛选效率。进一步,可以获取第一虚拟对象所在目标场景的障碍空间二叉树,遍历障碍空间二叉树中的节点,将与第一虚拟对象之间的距离小于或等于碰撞距离的节点所对应的目标障碍区域边界,确定为第一虚拟对象的碰撞区域边界,其中,障碍空间二叉树中的节点对应于目标场景中的障碍区域边界,或由目标场景中的障碍区域边界分割成的障碍区域边界,障碍空间二叉树中的任意一个节点所对应的第一方向子节点的数量与第二方向子节点的数量之间的差值,小于或等于边界拆分阈值,也就是说,障碍区域二叉树中任意一个节点在两个方向上的子节点的数量差不多,使得在遍历障碍空间二叉树时,可以基于方向进行方向上的筛选,提高障碍区域的筛选效率。进一步,可以基于获取到的第二虚拟对象与第一虚拟对象的碰撞区域边界,预测第一虚拟对象的更新移动速度,基于更新移动速度控制第一虚拟对象进行移动,通过以上过程,提高了更新移动速度获取的各个步骤的效率,进而提高寻路效率。
参见图13,图13是本申请实施例提供的一种计算机设备的结构示意图。如图13所示,本申请实施例中的计算机设备可以包括:一个或多个处理器1301、存储器1302和输入输出接口1303。该处理器1301、存储器1302和输入输出接口1303通过总线1304连接。存储器1302用于存储计算机程序,该计算机程序包括程序指令,输入输出接口1303用于接收数据及输出数据,如用于计算机设备与计算机设备之间进行数据交互;处理器1301用于执行存储器1302存储的程序指令。
其中,该处理器1301可以执行如下操作:
获取位于第一虚拟对象的初始碰撞缓存区域中的候选虚拟对象,从候选虚拟对象中获取第一虚拟对象所关联的第二虚拟对象;第二虚拟对象与第一虚拟对象之间的距离小于或等于第一虚拟对象的碰撞距离;
获取第一虚拟对象所在目标场景的障碍空间二叉树,遍历障碍空间二叉树中的节点,将与第一虚拟对象之间的距离小于或等于碰撞距离的节点所对应的目标障碍区域边界,确定为第一虚拟对象的碰撞区域边界;障碍空间二叉树中的节点对应于目标场景中的障碍区域边界;障碍空间二叉树中的任意一个节点的第一方向子树所包括的障碍区域边界的数量,与第二方向子树所包括的障碍区域边界的数量之间的差值,小于或等于边界拆分阈值;
基于第二虚拟对象与第一虚拟对象的碰撞区域边界,预测第一虚拟对象的更新移动速度,基于更新移动速度控制第一虚拟对象进行移动。
在一些可行的实施方式中,该处理器1301可以是中央处理单元(centralprocessing unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digitalsignal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该存储器1302可以包括只读存储器和随机存取存储器,并向处理器1301和输入输出接口1303提供指令和数据。存储器1302的一部分还可以包括非易失性随机存取存储器。例如,存储器1302还可以存储设备类型的信息。
具体实现中,该计算机设备可通过其内置的各个功能模块执行如该图3中各个步骤所提供的实现方式,具体可参见该图3中各个步骤所提供的实现方式,在此不再赘述。
本申请实施例通过提供一种计算机设备,包括:处理器、输入输出接口、存储器,通过处理器获取存储器中的计算机程序,执行该图3中所示方法的各个步骤,进行数据处理操作。本申请实施例实现了可以获取位于第一虚拟对象的初始碰撞缓存区域中的候选虚拟对象,从候选虚拟对象中获取第一虚拟对象所关联的第二虚拟对象,通过缓存对第一虚拟对象的候选虚拟对象进行宽泛存储,相当于是初步的虚拟对象的筛选,而这个初始碰撞缓存区域的缓存由于是宽泛存储,也就是预设置的,在进行第二虚拟对象的获取时会减少需要查找的时间,提高虚拟对象筛选效率。进一步,可以获取第一虚拟对象所在目标场景的障碍空间二叉树,遍历障碍空间二叉树中的节点,将与第一虚拟对象之间的距离小于或等于碰撞距离的节点所对应的目标障碍区域边界,确定为第一虚拟对象的碰撞区域边界,其中,障碍空间二叉树中的节点对应于目标场景中的障碍区域边界,或由目标场景中的障碍区域边界分割成的障碍区域边界,障碍空间二叉树中的任意一个节点所对应的第一方向子节点的数量与第二方向子节点的数量之间的差值,小于或等于边界拆分阈值,也就是说,障碍区域二叉树中任意一个节点在两个方向上的子节点的数量差不多,使得在遍历障碍空间二叉树时,可以基于方向进行方向上的筛选,提高障碍区域的筛选效率。进一步,可以基于获取到的第二虚拟对象与碰撞区域边界,预测第一虚拟对象的更新移动速度,基于更新移动速度控制第一虚拟对象进行移动,通过以上过程,提高了更新移动速度获取的各个步骤的效率,进而提高寻路效率。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序适于由该处理器加载并执行图3中各个步骤所提供的数据处理方法,具体可参见该图3中各个步骤所提供的实现方式,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。作为示例,计算机程序可被部署为在一个计算机设备上执行,或者在位于一个地点的多个计算机设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行。
该计算机可读存储介质可以是前述任一实施例提供的数据处理装置或者该计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行图3中的各种可选方式中所提供的方法,实现了可以获取位于第一虚拟对象的初始碰撞缓存区域中的候选虚拟对象,从候选虚拟对象中获取第一虚拟对象所关联的第二虚拟对象,通过缓存对第一虚拟对象的候选虚拟对象进行宽泛存储,相当于是初步的虚拟对象的筛选,而这个初始碰撞缓存区域的缓存由于是宽泛存储,也就是预设置的,在进行第二虚拟对象的获取时会减少需要查找的时间,提高虚拟对象筛选效率。进一步,可以获取第一虚拟对象所在目标场景的障碍空间二叉树,遍历障碍空间二叉树中的节点,将与第一虚拟对象之间的距离小于或等于碰撞距离的节点所对应的目标障碍区域边界,确定为第一虚拟对象的碰撞区域边界,其中,障碍空间二叉树中的节点对应于目标场景中的障碍区域边界,或由目标场景中的障碍区域边界分割成的障碍区域边界,障碍空间二叉树中的任意一个节点所对应的第一方向子节点的数量与第二方向子节点的数量之间的差值,小于或等于边界拆分阈值,也就是说,障碍区域二叉树中任意一个节点在两个方向上的子节点的数量差不多,使得在遍历障碍空间二叉树时,可以基于方向进行方向上的筛选,提高障碍区域的筛选效率。进一步,可以基于获取到的第二虚拟对象与碰撞区域边界,预测第一虚拟对象的更新移动速度,基于更新移动速度控制第一虚拟对象进行移动,通过以上过程,提高了更新移动速度获取的各个步骤的效率,进而提高寻路效率。
本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在该说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本申请实施例装置中的模块可以根据实际需要进行合并、划分和删减。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (19)
1.一种数据处理方法,其特征在于,所述方法包括:
获取位于第一虚拟对象的初始碰撞缓存区域中的候选虚拟对象,从所述候选虚拟对象中获取所述第一虚拟对象所关联的第二虚拟对象;所述第二虚拟对象与第一虚拟对象之间的距离小于或等于所述第一虚拟对象的碰撞距离;
获取所述第一虚拟对象所在目标场景的障碍空间二叉树,遍历所述障碍空间二叉树中的节点,将与所述第一虚拟对象之间的距离小于或等于所述碰撞距离的节点所对应的目标障碍区域边界,确定为所述第一虚拟对象的碰撞区域边界;所述障碍空间二叉树中的节点对应于所述目标场景中的障碍区域边界;所述障碍空间二叉树中的任意一个节点的第一方向子树所包括的障碍区域边界的数量,与第二方向子树所包括的障碍区域边界的数量之间的差值,小于或等于边界拆分阈值;
基于所述第二虚拟对象与所述第一虚拟对象的碰撞区域边界,预测所述第一虚拟对象的更新移动速度,基于所述更新移动速度控制所述第一虚拟对象进行移动。
2.如权利要求1所述的方法,其特征在于,所述获取位于第一虚拟对象的初始碰撞缓存区域中的候选虚拟对象,包括:
获取第一虚拟对象的第一位置信息及所述第一虚拟对象的碰撞距离,将所述第一位置信息及所述碰撞距离进行融合,得到所述第一虚拟对象的碰撞检测范围;
获取所述目标场景的单位网格的单位长度,基于所述单位长度对所述碰撞检测范围进行网格转换,得到网格检测范围;
对所述网格检测范围进行哈希转换,得到所述第一虚拟对象的初始碰撞缓存区域,将所述初始碰撞缓存区域在对象管理数组中所对应的虚拟对象,确定为候选虚拟对象。
3.如权利要求2所述的方法,其特征在于,所述方法还包括:
基于所述单位网格的单位长度,将所述目标场景构建为M个单位网格,初始化所述M个单位网格分别对应的网格位置信息;M为正整数;
创建N维初始对象管理数组,对所述M个单位网格分别对应的网格位置信息进行哈希转换,得到所述M个单位网格分别对应的网格索引;N为正整数;
获取所述目标场景中所包括的虚拟对象所在的单位网格,基于所述虚拟对象所在的单位网格的网格索引,将所述虚拟对象添加至所述初始对象管理数组,得到所述对象管理数组;所述初始碰撞缓存区域用于指示根据所述网格检测范围转换得到的网格索引;所述虚拟对象包括所述候选虚拟对象。
4.如权利要求3所述的方法,其特征在于,所述初始化所述M个单位网格分别对应的网格位置信息,包括:
获取所述M个单位网格分别对应的网格标识点的第二位置信息,基于所述单位长度对所述M个单位网格分别对应的第二位置信息进行位置网格化转换,得到所述M个单位网格分别对应的网格位置信息。
5.如权利要求3所述的方法,其特征在于,所述方法还包括:
当第三虚拟对象进入所述目标场景中时,获取所述第三虚拟对象在所述目标场景中的第三位置信息;
基于所述单位长度将所述第三位置信息进行网格转换,得到所述第三虚拟对象的对象网格位置,对所述对象网格位置进行哈希转换,得到所述第三虚拟对象所对应的待添加网格索引;
基于所述待添加网格索引,将所述第三虚拟对象添加至所述对象管理数组。
6.如权利要求1所述的方法,其特征在于,所述获取位于第一虚拟对象的初始碰撞缓存区域中的候选虚拟对象,包括:
从所述第一虚拟对象所关联的碰撞对象缓存中,获取候选虚拟对象;所述碰撞对象缓存用于存储位于所述第一虚拟对象的初始碰撞缓存区域的虚拟对象。
7.如权利要求6所述的方法,其特征在于,所述方法还包括:
当所述第一虚拟对象加入所述目标场景时,获取所述第一虚拟对象的标准移动速度及所述碰撞距离;
根据所述标准移动速度及所述碰撞距离,确定所述第一虚拟对象的所述初始碰撞缓存区域;
将所述初始碰撞缓存区域中所包括的虚拟对象,确定为所述第一虚拟对象所关联的候选虚拟对象,将所述候选虚拟对象添加至所述第一虚拟对象所关联的碰撞对象缓存中;
将所述第一虚拟对象添加至所述候选虚拟对象的碰撞对象缓存中。
8.如权利要求6所述的方法,其特征在于,所述方法还包括:
若所述第一虚拟对象的碰撞对象缓存的缓存时长达到缓存更新周期,或者,所述第一虚拟对象发生位置跳转,则清空所述第一虚拟对象的碰撞对象缓存,获取所述第一虚拟对象的当前碰撞缓存区域,将所述当前碰撞缓存区域中所包括的虚拟对象,添加至所述第一虚拟对象的碰撞对象缓存中;所述位置跳转是指所述第一虚拟对象以大于瞬移速度阈值的速度由第一位置变换至第二位置。
9.如权利要求1所述的方法,其特征在于,所述从所述候选虚拟对象中获取所述第一虚拟对象所关联的第二虚拟对象,包括:
获取所述候选虚拟对象的候选位置信息,获取所述第一虚拟对象的第一位置信息;
计算所述候选位置信息与所述第一位置信息之间的对象位置距离,若所述对象位置距离小于或等于所述碰撞距离,则将所述候选虚拟对象确定为所述第一虚拟对象所关联的第二虚拟对象;所述第二虚拟对象不包括所述第一虚拟对象。
10.如权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述目标场景中所包括的障碍区域,获取所述障碍区域的原始障碍区域边界,从所述原始障碍区域边界中获取第一障碍区域边界;位于所述第一障碍区域边界的第一方向侧的障碍区域边界的数量,与位于所述第一障碍区域边界的第二方向侧的障碍区域边界的数量的差值,小于或等于所述边界拆分阈值;任意一个障碍区域边界是指位于所述第一障碍区域边界的一个方向侧的原始障碍区域边界,或者是指位于所述第一障碍区域边界的两个方向侧的原始障碍区域边界被所述第一障碍区域边界分割得到的障碍区域边界;
将所述第一障碍区域边界作为根节点,以所述第一障碍区域边界,将所述原始障碍区域边界划分为第一边界集合与第二边界集合,基于所述第一边界集合构建所述根节点的第一方向子树,基于所述第二边界集合构建所述根节点的第二方向子树;所述第一边界集合包括位于所述第一障碍区域边界的第一方向侧的障碍区域边界,所述第二边界集合包括位于所述第一障碍区域边界的第二方向侧的障碍区域边界。
11.如权利要求10所述的方法,其特征在于,所述以所述第一障碍区域边界,将所述原始障碍区域边界划分为第一边界集合与第二边界集合,包括:
以所述第一障碍区域边界所在的直线,将原始障碍区域边界C分割为障碍区域边界C1及障碍区域边界C2;所述障碍区域边界C1是所述原始障碍区域边界C位于所述第一障碍区域边界的第一方向侧的部分,所述障碍区域边界C2是所述原始障碍区域边界C位于所述第一障碍区域边界的第二方向侧的部分;
将障碍区域边界A与所述障碍区域边界C1确定为第一边界集合,将障碍区域边界B与所述障碍区域边界C2确定为第二边界集合;所述障碍区域边界A是指位于所述第一障碍区域边界的第一方向侧的原始障碍区域边界,所述障碍区域边界B是指位于所述第一障碍区域边界的第二方向侧的原始障碍区域边界;所述原始障碍区域边界C是指同时位于所述第一障碍区域边界的两个方向侧的原始障碍区域边界。
12.如权利要求11所述的方法,其特征在于,所述基于所述第一边界集合构建所述根节点的第一方向子树,包括:
若所述障碍区域边界A与所述障碍区域边界C1的数量小于或等于树形构建阈值,则将所述障碍区域边界A与所述障碍区域边界C1作为根节点的第一方向子节点,将所述根节点的第一方向子节点确定为所述根节点的第一方向子树;
若所述障碍区域边界A与所述障碍区域边界C1的数量大于所述树形构建阈值,则从所述障碍区域边界A与所述障碍区域边界C1中获取第二障碍区域边界,将所述第二障碍区域边界确定为所述根节点的第一方向子节点,基于所述第一方向子节点将所述障碍区域边界A与所述障碍区域边界C1划分为第三边界集合及第四边界集合,基于所述第三边界集合构建所述第一方向子节点的第一方向子树,基于所述第四边界集合构建所述第一方向子节点的第二方向子树。
13.如权利要求1所述的方法,其特征在于,所述方法还包括:
若所述目标场景所包括的障碍区域的障碍区域边界的数量小于或等于树形构建阈值,则获取所述障碍区域边界与所述第一虚拟对象之间的距离,将所述障碍区域边界中与所述第一虚拟对象之间的距离小于或等于所述碰撞距离的障碍区域边界,确定为所述第一虚拟对象的碰撞区域边界;
若所述目标场景所包括的障碍区域的障碍区域边界的数量大于所述树形构建阈值,则执行所述获取所述第一虚拟对象所在目标场景的障碍空间二叉树的过程。
14.如权利要求1所述的方法,其特征在于,所述方法还包括:
若动态边界集合不为空,则从所述动态边界集合中获取动态区域边界,将所述动态区域边界中与所述第一虚拟对象之间的距离小于或等于所述碰撞距离的动态区域边界,确定为所述第一虚拟对象的动态碰撞边界;
所述基于所述第二虚拟对象与所述第一虚拟对象的碰撞区域边界,预测所述第一虚拟对象的更新移动速度,包括:
基于所述第二虚拟对象、所述第一虚拟对象的碰撞区域边界及所述第一虚拟对象的动态碰撞边界,预测所述第一虚拟对象的更新移动速度。
15.如权利要求14所述的方法,其特征在于,所述方法还包括:
若所述动态边界集合中所包括的所述动态区域边界的数量大于或等于动态支持阈值,或所述障碍空间二叉树的固定时长大于或等于树更新周期,则基于所述障碍空间二叉树中的节点及所述动态区域边界,重新构建障碍空间二叉树;
清空所述动态边界集合。
16.如权利要求1所述的方法,其特征在于,所述基于所述第二虚拟对象与所述第一虚拟对象的碰撞区域边界,预测所述第一虚拟对象的更新移动速度,包括:
获取所述第一虚拟对象的第一移动速度及第一位置信息;
获取所述第二虚拟对象的第二移动速度及对象位置信息,根据所述第一位置信息及所述对象位置信息构建第一速度区域,基于所述第一移动速度及所述第二移动速度确定第一偏移数据;
根据所述第一偏移数据及所述第一速度区域构建第二速度区域,基于所述第二速度区域确定第一候选速度范围;
获取所述第一虚拟对象的碰撞区域边界的边界移动速度及边界位置信息,根据所述第一位置信息及所述边界位置信息构建第三速度区域,基于所述第一移动速度及所述边界移动速度确定第二偏移数据;
根据所述第二偏移数据及所述第三速度区域构建第四速度区域,基于所述第四速度区域确定第二候选速度范围;
将所述第一候选速度范围与所述第二候选速度范围的交集,确定为所述第一虚拟对象的目标候选速度范围,在所述目标候选速度范围中选取所述第一虚拟对象的更新移动速度。
17.一种数据处理装置,其特征在于,所述装置包括:
对象获取模块,用于获取位于第一虚拟对象的初始碰撞缓存区域中的候选虚拟对象;
对象确定模块,用于从所述候选虚拟对象中获取所述第一虚拟对象所关联的第二虚拟对象;所述第二虚拟对象与第一虚拟对象之间的距离小于或等于所述第一虚拟对象的碰撞距离;
树获取模块,用于获取所述第一虚拟对象所在目标场景的障碍空间二叉树;
边界确定模块,用于遍历所述障碍空间二叉树中的节点,将与所述第一虚拟对象之间的距离小于或等于所述碰撞距离的节点所对应的目标障碍区域边界,确定为所述第一虚拟对象的碰撞区域边界;所述障碍空间二叉树中的节点对应于所述目标场景中的障碍区域边界;所述障碍空间二叉树中的任意一个节点所对应的第一方向子树所包括的障碍区域边界的数量,与第二方向子树所包括的障碍区域边界的数量之间的差值,小于或等于边界拆分阈值;
速度预测模块,用于基于所述第二虚拟对象与所述第一虚拟对象的碰撞区域边界,预测所述第一虚拟对象的更新移动速度;
移动控制模块,用于基于所述更新移动速度控制所述第一虚拟对象进行移动。
18.一种计算机设备,其特征在于,包括处理器、存储器、输入输出接口;
所述处理器分别与所述存储器和所述输入输出接口相连,其中,所述输入输出接口用于接收数据及输出数据,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以使得所述计算机设备执行权利要求1-16任一项所述的方法。
19.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于由处理器加载并执行,以使得具有所述处理器的计算机设备执行权利要求1-16任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310042502.XA CN116036604B (zh) | 2023-01-28 | 2023-01-28 | 数据处理方法、装置、计算机及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310042502.XA CN116036604B (zh) | 2023-01-28 | 2023-01-28 | 数据处理方法、装置、计算机及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116036604A CN116036604A (zh) | 2023-05-02 |
CN116036604B true CN116036604B (zh) | 2023-05-30 |
Family
ID=86116095
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310042502.XA Active CN116036604B (zh) | 2023-01-28 | 2023-01-28 | 数据处理方法、装置、计算机及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116036604B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117244243B (zh) * | 2023-11-20 | 2024-02-02 | 腾讯科技(深圳)有限公司 | 一种虚拟对象处理方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101593366A (zh) * | 2009-06-24 | 2009-12-02 | 北京航空航天大学 | 一种基于平衡二叉树的大规模虚拟场景碰撞检测方法 |
CN101739713A (zh) * | 2008-11-14 | 2010-06-16 | 上海电机学院 | 一种基于剖分的并行碰撞检测方法 |
CN105488851A (zh) * | 2015-11-30 | 2016-04-13 | 腾讯科技(深圳)有限公司 | 实时虚拟场景中碰撞体之间碰撞探测的方法和装置 |
CN109558676A (zh) * | 2018-11-28 | 2019-04-02 | 珠海金山网络游戏科技有限公司 | 一种碰撞检测方法及装置、一种计算设备及存储介质 |
CN111009033A (zh) * | 2019-12-06 | 2020-04-14 | 北京国润健康医学投资有限公司 | 一种基于OpenGL的病灶区域的可视化方法和系统 |
CN111062980A (zh) * | 2019-11-22 | 2020-04-24 | 西安理工大学 | 一种软体碰撞检测方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7002571B2 (en) * | 2002-06-04 | 2006-02-21 | Intel Corporation | Grid-based loose octree for spatial partitioning |
JP4192976B2 (ja) * | 2006-08-02 | 2008-12-10 | ソニー株式会社 | 接触形状算出装置及び接触形状算出方法、並びにコンピュータ・プログラム |
US9563555B2 (en) * | 2011-03-18 | 2017-02-07 | Sandisk Technologies Llc | Systems and methods for storage allocation |
-
2023
- 2023-01-28 CN CN202310042502.XA patent/CN116036604B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101739713A (zh) * | 2008-11-14 | 2010-06-16 | 上海电机学院 | 一种基于剖分的并行碰撞检测方法 |
CN101593366A (zh) * | 2009-06-24 | 2009-12-02 | 北京航空航天大学 | 一种基于平衡二叉树的大规模虚拟场景碰撞检测方法 |
CN105488851A (zh) * | 2015-11-30 | 2016-04-13 | 腾讯科技(深圳)有限公司 | 实时虚拟场景中碰撞体之间碰撞探测的方法和装置 |
CN109558676A (zh) * | 2018-11-28 | 2019-04-02 | 珠海金山网络游戏科技有限公司 | 一种碰撞检测方法及装置、一种计算设备及存储介质 |
CN111062980A (zh) * | 2019-11-22 | 2020-04-24 | 西安理工大学 | 一种软体碰撞检测方法 |
CN111009033A (zh) * | 2019-12-06 | 2020-04-14 | 北京国润健康医学投资有限公司 | 一种基于OpenGL的病灶区域的可视化方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116036604A (zh) | 2023-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108444482B (zh) | 一种无人机自主寻路避障方法及系统 | |
CN110648529B (zh) | 一种车辆行驶轨迹的渲染方法、装置、设备及存储介质 | |
US8234234B2 (en) | Utilizing ray tracing for enhanced artificial intelligence path-finding | |
CN111968229A (zh) | 高精度地图制图方法及装置 | |
CN108763287A (zh) | 大规模可通行区域驾驶地图的构建方法及其无人驾驶应用方法 | |
CN104866500A (zh) | 图片分类展示方法和装置 | |
CN112700479B (zh) | 一种基于cnn点云目标检测的配准方法 | |
CN116036604B (zh) | 数据处理方法、装置、计算机及可读存储介质 | |
CN114440916B (zh) | 一种导航方法、装置、设备及存储介质 | |
CN111090712A (zh) | 一种数据处理方法、装置、设备及计算机存储介质 | |
US9910878B2 (en) | Methods for processing within-distance queries | |
EP2589933B1 (en) | Navigation device, method of predicting a visibility of a triangular face in an electronic map view | |
Lin et al. | Error bounded line simplification algorithms for trajectory compression: An experimental evaluation | |
CN103500278A (zh) | 基于最短路径算法的路径相似台风分析方法 | |
Li et al. | Online real-time trajectory analysis based on adaptive time interval clustering algorithm | |
KR20230109768A (ko) | 공간적 2-튜플의 결정 방법, 장치, 컴퓨터 기기 및저장 매체 | |
CN112417070B (zh) | 路网拓扑构建方法、装置、电子设备及存储介质 | |
CN115779424B (zh) | 一种导航网格寻路方法、装置、设备及介质 | |
WO2015034464A1 (en) | Global grid building in reverse faulted areas by an optimized unfaulting method | |
KR20090064155A (ko) | 광선 집합을 이용한 병렬 광선 추적 방법 및 시스템 | |
CN114159777A (zh) | 层次化寻路方法、装置、电子设备及可读介质 | |
CN116036603B (zh) | 数据处理方法、装置、计算机及可读存储介质 | |
CN112263836B (zh) | 虚拟场景的处理方法和装置以及存储介质 | |
CN114168700A (zh) | 一种路网合并更新方法、系统、电子设备及存储介质 | |
CN110887503B (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40086148 Country of ref document: HK |