CN112717404A - 虚拟对象的移动处理方法、装置、电子设备及存储介质 - Google Patents
虚拟对象的移动处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112717404A CN112717404A CN202110096125.9A CN202110096125A CN112717404A CN 112717404 A CN112717404 A CN 112717404A CN 202110096125 A CN202110096125 A CN 202110096125A CN 112717404 A CN112717404 A CN 112717404A
- Authority
- CN
- China
- Prior art keywords
- virtual object
- verification
- collision
- target
- 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.)
- Granted
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Human Computer Interaction (AREA)
- Architecture (AREA)
- Computer Graphics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请提供了一种虚拟对象的移动处理方法、装置、电子设备及计算机可读存储介质;方法包括:获取目标虚拟对象在虚拟场景中发生移动时对应的移动方式;在基于虚拟场景的物理几何数据的校验接口、以及基于虚拟场景的导航网格数据的校验接口中,确定与移动方式相匹配的目标校验接口;调用目标校验接口对虚拟对象的移动进行校验处理,以形成对应的移动校验结果。通过本申请,能够准确和高效地校验虚拟对象在虚拟场景中的移动,提高虚拟场景中人机交互的准确性。
Description
技术领域
本申请涉及计算机人机交互技术,尤其涉及一种虚拟对象的移动处理方法、装置、电子设备及计算机可读存储介质。
背景技术
基于图形处理硬件的显示技术,扩展了感知环境以及获取信息的渠道,尤其是虚拟场景的显示技术,能够根据实际应用需求实现受控于用户或人工智能的虚拟对象之间的多样化的交互,具有各种典型的应用场景,例如在军事演习仿真、以及游戏等的虚拟场景中,能够模拟虚拟对象之间的真实的对战过程。
如果通过作弊软件的方式控制虚拟对象移动,则会在虚拟场景中出现各种违背物理规则的移动方式,例如飞天、穿墙等形式,这影响了虚拟场景中人机交互的准确性。
发明内容
本申请实施例提供一种虚拟对象的移动处理方法、装置、电子设备及计算机可读存储介质,能够准确和高效地校验虚拟对象在虚拟场景中的移动,提高虚拟场景中人机交互的准确性。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种虚拟对象的移动处理方法,包括:
获取目标虚拟对象在虚拟场景中发生移动时对应的移动方式;
在基于所述虚拟场景的物理几何数据的校验接口、以及基于所述虚拟场景的导航网格数据的校验接口中,确定与所述移动方式相匹配的目标校验接口;
调用所述目标校验接口对所述目标虚拟对象的移动进行校验处理,以形成对应的移动校验结果。
上述技术方案中,当所述目标校验接口为基于所述虚拟场景的物理几何数据的校验接口、且校验场景为穿墙校验时,所述调用所述目标校验接口对所述目标虚拟对象的移动进行校验处理,以形成对应的移动校验结果,包括:
确定所述目标虚拟对象在所述虚拟场景中发生移动的起点以及终点;
在所述起点到所述终点的方向上发射碰撞查询射线;
当所述碰撞查询射线与虚拟对象存在碰撞时,将所述目标虚拟对象移动至碰撞点,并将所述碰撞点作为新的起点;
在所述新的起点到所述终点的方向上发射新的碰撞查询射线;
当所述新的碰撞查询射线与所述虚拟对象不存在碰撞时,将未穿墙作为移动校验结果;
当所述新的碰撞查询射线与所述虚拟对象存在碰撞时,将穿墙作为移动校验结果。
上述技术方案中,当所述目标校验接口为基于所述虚拟场景的物理几何数据的校验接口、且所述移动方式的校验场景为随机可站立校验时,所述调用所述目标校验接口对所述目标虚拟对象的移动进行校验处理,以形成对应的移动校验结果,包括:
确定所述目标虚拟对象在所述虚拟场景中发生移动的起点以及终点;
基于所述起点以及所述终点确定多个测试点;
基于所述目标虚拟对象对应的物理几何数据在所述多个测试点进行基于地面方向的碰撞查询处理;
当任一所述测试点的碰撞查询处理的结果表征未发生碰撞时,将随机可站立校验不合理作为移动校验结果;
当所述多个测试点的碰撞查询处理的结果都表征发生碰撞时,将随机可站立校验合理作为移动校验结果。
上述技术方案中,当所述目标校验接口为基于所述虚拟场景的物理几何数据的校验接口、且所述移动方式为空中移动方式时,所述调用所述目标校验接口对所述目标虚拟对象的移动进行校验处理,以形成对应的移动校验结果,包括:
确定所述目标虚拟对象在所述虚拟场景中发生移动的起点以及终点;
基于所述起点以及所述终点确定多个测试点;
针对所述多个测试点的任一测试点执行以下处理:基于所述测试点、所述测试点的下一测试点以及所述目标虚拟对象对应的物理几何数据进行碰撞查询处理;
当任一所述测试点的碰撞查询处理的结果表征发生碰撞时,将飞行未通过作为移动校验结果;
当所述多个测试点的碰撞查询处理的结果都表征未发生碰撞时,将飞行通过作为移动校验结果。
上述技术方案中,当所述目标校验接口为基于所述虚拟场景的导航网格数据的校验接口、且所述移动方式的校验场景为地面寻路校验时,所述调用所述目标校验接口对所述目标虚拟对象的移动进行校验处理,以形成对应的移动校验结果,包括:
确定所述目标虚拟对象在所述虚拟场景中发生移动的起点以及终点;
基于所述虚拟场景的导航网格数据、所述起点以及所述终端进行寻路处理,得到所述目标虚拟对象的移动路径;
当所述目标虚拟对象的移动路径不包括所述终点时,将地面寻路不合理作为移动校验结果;
当所述目标虚拟对象的移动路径包括所述终点时,将地面寻路合理作为移动校验结果。
本申请实施例提供一种虚拟对象的移动处理装置,包括:
逻辑模块,用于获取目标虚拟对象在虚拟场景中发生移动时对应的移动方式;
算法模块,用于在基于所述虚拟场景的物理几何数据的校验接口、以及基于所述虚拟场景的导航网格数据的校验接口中,确定与所述移动方式相匹配的目标校验接口;
接口模块,用于调用所述目标校验接口对所述目标虚拟对象的移动进行校验处理,以形成对应的移动校验结果。
上述技术方案中,所述算法模块还用于当确定所述移动方式为空中移动方式或所述移动方式的校验场景属于第一校验场景时,将基于所述虚拟场景的物理几何数据的校验接口作为与所述移动方式相匹配的目标校验接口;
当确定所述移动方式为地面移动方式、且所述移动方式的校验场景属于第二校验场景时,将基于所述虚拟场景的导航网格数据的校验接口作为与所述移动方式相匹配的目标校验接口;
其中,所述第一校验场景的类型包括:碰撞查询校验、地面查询校验、直线通过性校验、随机可站立校验、穿墙校验;所述第二校验场景的类型包括:地面寻路校验。
上述技术方案中,当所述目标校验接口为基于所述虚拟场景的物理几何数据的校验接口、且所述移动方式的校验场景为碰撞查询校验时,所述接口模块还用于基于所述虚拟场景中的多个虚拟对象对应的物理几何数据,构建所述虚拟场景对应的二叉树;
确定所述目标虚拟对象在所述虚拟景中移动的起点以及终点;
基于所述起点、所述终点以及所述虚拟场景对应的二叉树进行过滤处理,得到所述虚拟场景中的候选虚拟对象;
基于所述候选虚拟对象以及所述目标虚拟对象进行碰撞查询处理,将所述碰撞查询处理的结果作为所述移动校验结果。
上述技术方案中,所述接口模块还用于确定所述虚拟场景中的多个静态虚拟对象以及多个动态虚拟对象;
基于所述多个静态虚拟对象对应的物理几何数据,构建所述虚拟场景对应的静态二叉树;
基于所述多个动态虚拟对象对应的物理几何数据,构建所述虚拟场景对应的动态二叉树;
当所述虚拟场景中的动态虚拟对象处于开放状态时,基于所述起点、所述终点、所述虚拟场景对应的静态二叉树以及所述虚拟场景对应的动态二叉树进行过滤处理,得到所述虚拟场景中的候选虚拟对象;
当所述虚拟场景中的动态虚拟对象处于封闭状态时,基于所述起点、所述终点以及所述虚拟场景对应的静态二叉树进行过滤处理,得到所述虚拟场景中的候选虚拟对象。
上述技术方案中,所述接口模块还用于基于所述起点以及所述终点构建碰撞射线;
基于所述碰撞射线遍历所述虚拟场景对应的二叉树,将所述二叉树中与所述碰撞射线相交的节点作为所述虚拟场景中的候选虚拟对象。
上述技术方案中,所述接口模块还用于确定所述虚拟场景对应的二叉树的碰撞查询距离;
基于所述碰撞查询距离以及所述碰撞射线,确定所述二叉树中与所述碰撞射线相交的节点;
当所述节点与所述目标虚拟场景之间的碰撞距离小于所述碰撞查询距离时,将所述碰撞查询距离压缩至所述碰撞距离,并将所述节点作为所述虚拟场景中的候选虚拟对象。
上述技术方案中,所述接口模块还用于在所述起点到所述终点的方向上发射碰撞查询射线;
当所述碰撞查询射线与所述候选虚拟对象存在碰撞时,确定所述目标虚拟对象与所述候选虚拟对象发生碰撞,并将发生碰撞作为所述移动校验结果;
当所述碰撞查询射线与所述候选虚拟对象不存在碰撞时,确定所述目标虚拟对象与所述候选虚拟对象未发生碰撞,并将未发生碰撞作为所述移动校验结果。
上述技术方案中,所述接口模块还用于确定所述目标虚拟对象与所述候选虚拟对象的碰撞点的法线;
基于所述法线的角度确定所述目标虚拟对象的碰撞部位;
当所述碰撞部位属于目标碰撞部位、且所述目标虚拟对象与所述候选虚拟对象之间的碰撞距离小于碰撞距离阈值时,确定所述目标虚拟对象与所述候选虚拟对象发生碰撞。
上述技术方案中,当所述目标校验接口为基于所述虚拟场景的物理几何数据的校验接口、且所述移动方式的校验场景为直线通过性校验时,所述接口模块还用于确定所述目标虚拟对象在所述虚拟场景中发生移动的起点以及终点;
基于所述起点、所述终点以及所述目标虚拟对象对应的物理几何数据进行直线通过性校验处理,将所述直线通过性校验处理的结果作为所述移动校验结果。
上述技术方案中,所述接口模块还用于基于所述目标虚拟对象对应的物理几何数据确定所述目标虚拟对象所在的物理几何形状;
在所述起点与所述终点之间进行基于所述物理几何形状的扫描处理,以得到所述目标虚拟对象在所述起点与所述终点之间的直线通过性校验处理的结果。
上述技术方案中,所述接口模块还用于基于所述目标虚拟对象对应的物理几何数据确定所述目标虚拟对象所在的物理几何形状的中间切面圆;
基于所述中间切面圆上的多个点在所述起点与所述终点之间进行射线查询处理,以得到所述目标虚拟对象在所述起点与所述终点之间的直线通过性校验处理的结果。
上述技术方案中,当所述目标校验接口为基于所述虚拟场景的物理几何数据的校验接口、且所述移动方式的校验场景为地面查询校验时,所述接口模块还用于确定所述目标虚拟对象在所述虚拟场景中发生移动对应的位置;
基于所述位置以及地面查询的搜索高度,确定多个测试点;
基于所述目标虚拟对象对应的物理几何数据,对所述多个测试点进行基于地面方向的碰撞查询处理,得到所述多个测试点的地面查询结果,并作为所述目标虚拟对象的移动校验结果。
上述技术方案中,当所述目标校验接口为基于所述虚拟场景的物理几何数据的校验接口、且校验场景为穿墙校验时,所述接口模块还用于确定所述目标虚拟对象在所述虚拟场景中发生移动的起点以及终点;
在所述起点到所述终点的方向上发射碰撞查询射线;
当所述碰撞查询射线与虚拟对象存在碰撞时,将所述目标虚拟对象移动至碰撞点,并将所述碰撞点作为新的起点;
在所述新的起点到所述终点的方向上发射新的碰撞查询射线;
当所述新的碰撞查询射线与所述虚拟对象不存在碰撞时,将未穿墙作为移动校验结果;
当所述新的碰撞查询射线与所述虚拟对象存在碰撞时,将穿墙作为移动校验结果。
上述技术方案中,当所述目标校验接口为基于所述虚拟场景的物理几何数据的校验接口、且所述移动方式的校验场景为随机可站立校验时,所述接口模块还用于确定所述目标虚拟对象在所述虚拟场景中发生移动的起点以及终点;
基于所述起点以及所述终点确定多个测试点;
基于所述目标虚拟对象对应的物理几何数据在所述多个测试点进行基于地面方向的碰撞查询处理;
当任一所述测试点的碰撞查询处理的结果表征未发生碰撞时,将随机可站立校验不合理作为移动校验结果;
当所述多个测试点的碰撞查询处理的结果都表征发生碰撞时,将随机可站立校验合理作为移动校验结果。
上述技术方案中,当所述目标校验接口为基于所述虚拟场景的物理几何数据的校验接口、且所述移动方式为空中移动方式时,所述接口模块还用于确定所述目标虚拟对象在所述虚拟场景中发生移动的起点以及终点;
基于所述起点以及所述终点确定多个测试点;
针对所述多个测试点的任一测试点执行以下处理:基于所述测试点、所述测试点的下一测试点以及所述目标虚拟对象对应的物理几何数据进行碰撞查询处理;
当任一所述测试点的碰撞查询处理的结果表征未发生碰撞时,将飞行未通过作为移动校验结果;
当所述多个测试点的碰撞查询处理的结果都表征发生碰撞时,将飞行通过作为移动校验结果。
上述技术方案中,当所述目标校验接口为基于所述虚拟场景的导航网格数据的校验接口、且所述移动方式的校验场景为地面寻路校验时,所述接口模块还用于确定所述目标虚拟对象在所述虚拟场景中发生移动的起点以及终点;
基于所述虚拟场景的导航网格数据、所述起点以及所述终端进行寻路处理,得到所述目标虚拟对象的移动路径;
当所述目标虚拟对象的移动路径不包括所述终点时,将地面寻路不合理作为移动校验结果;
当所述目标虚拟对象的移动路径包括所述终点时,将地面寻路合理作为移动校验结果。
本申请实施例提供一种用于移动处理的电子设备,所述电子设备包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的虚拟对象的移动处理方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现本申请实施例提供的虚拟对象的移动处理方法。
本申请实施例具有以下有益效果:
通过在基于虚拟场景的物理几何数据的校验接口以及基于虚拟场景的导航网格数据的校验接口中,确定与目标虚拟对象的移动方式相匹配的目标校验接口,从而能够基于物理几何数据或者导航数据,对目标虚拟对象的移动是否存在作弊行为进行准确和高效地校验,进而能够为屏蔽虚拟场景作弊提供准确的参考数据,由此可以提高虚拟场景中人机交互的准确性。
附图说明
图1A是相关技术提供的多层网格的示意图;
图1B是相关技术提供的体素的示意图;
图1C是相关技术提供的螺旋梯的示意图;
图2A是本申请实施例提供的虚虚拟对象的移动处理方法的应用模式示意图;
图2B是本申请实施例提供的虚拟对象的移动处理方法的应用模式示意图;
图3A是本申请实施例提供的用于移动处理的电子设备的结构示意图;
图3B是本申请实施例提供的虚拟对象的移动处理装置中安装的人机交互引擎的原理示意图;
图4A-图4B是本申请实施例提供的虚拟对象的移动处理方法的流程示意图;
图5是本申请实施例提供的导航网格的示意图;
图6是本申请实施例提供的系统架构示意图;
图7A是本申请实施例提供的Sweep扫描查询的示意图;
图7B是本申请实施例提供的带宽度的Raycast射线查询的示意图;
图8A是本申请实施例提供的Sweep版本的地面查询的示意图;
图8B是本申请实施例提供的Raycast版本的地面查询的示意图;
图9是本申请实施例提供的贴地直线通过校验的示意图;
图10是本申请实施例提供的抬脚收缩胶囊体Sweep校验通过性的示意图;
图11是本申请实施例提供的穿墙通过性校验的示意图;
图12是本申请实施例提供的飞天校验的示意图;
图13A是本申请实施例提供的Raycast飞行通过校验的示意图;
图13B是本申请实施例提供的Sweep飞行通过校验的示意图;
图14A是本申请实施例提供的可视化调试器的界面示意图;
图14B是本申请实施例提供的可视化调试工具的界面示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,所涉及的术语“第一\第二”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)虚拟场景:利用设备输出的区别于现实世界的场景,通过裸眼或设备的辅助能够形成对虚拟场景的视觉感知,例如通过显示屏幕输出的二维影像,通过立体投影、虚拟现实和增强现实技术等立体显示技术来输出的三维影像;此外,还可以通过各种可能的硬件形成听觉感知、触觉感知、嗅觉感知和运动感知等各种模拟现实世界的感知。
2)响应于:用于表示所执行的操作所依赖的条件或者状态,当满足所依赖的条件或状态时,所执行的一个或多个操作可以是实时的,也可以具有设定的延迟;在没有特别说明的情况下,所执行的多个操作不存在执行先后顺序的限制。
3)客户端:终端中运行的用于提供各种服务的应用程序,例如游戏客户端等、军事演习仿真客户端。
4)虚拟对象:虚拟场景中可以进行交互的各种人和物的形象,或在虚拟场景中的不可活动对象。该可活动对象可以是虚拟人物、虚拟动物、动漫人物等,比如,在虚拟场景中显示的人物、动物、植物、油桶、墙壁、石块等。该虚拟对象可以是该虚拟场景中的一个虚拟的用于代表用户的虚拟形象。虚拟场景中可以包括多个虚拟对象,每个虚拟对象在虚拟场景中具有自身的形状和体积,占据虚拟场景中的一部分空间。
例如,该虚拟对象可以是通过客户端上的操作进行控制的用户角色,也可以是通过训练设置在虚拟场景对战中的人工智能(AI,Artificial Intelligence),还可以是设置在虚拟场景互动中的非用户角色(NPC,Non-Player Character)。例如,该虚拟对象可以是在虚拟场景中进行对抗式交互的虚拟人物。例如,该虚拟场景中参与互动的虚拟对象的数量可以是预先设置的,也可以是根据加入互动的客户端的数量动态确定的。
以射击类游戏为例,用户可以控制虚拟对象在该虚拟场景的天空中自由下落、滑翔或者打开降落伞进行下落等,在陆地上中跑动、跳动、爬行、弯腰前行等,也可以控制虚拟对象在海洋中游泳、漂浮或者下潜等,当然,用户也可以控制虚拟对象乘坐虚拟载具在该虚拟场景中进行移动,例如,该虚拟载具可以是虚拟汽车、虚拟飞行器、虚拟游艇等,在此仅以上述场景进行举例说明,本申请实施例对此不作具体限定。用户也可以控制虚拟对象通过虚拟道具与其他虚拟对象进行对抗式的交互,例如,该虚拟道具可以是手雷、集束雷、粘性手雷等投掷类虚拟道具,也可以是机枪、手枪、步枪等射击类虚拟道具,本申请对虚拟道具的类型不作具体限定。
5)场景数据:表示虚拟场景中的对象在交互过程中受所表现的各种特征,例如,可以包括对象在虚拟场景中的位置。当然,根据虚拟场景的类型可以包括不同类型的特征;例如,在游戏的虚拟场景中,场景数据可以包括虚拟场景中配置的各种功能时需要等待的时间(取决于在特定时间内能够使用同一功能的次数),还可以表示游戏角色的各种状态的属性值,例如包括生命值(也称为红量)和魔法值(也称为蓝量)等。
6)层次包围盒树(BVH,Bounding Volume Hierarchical Tree):一种以包围盒为节点的二叉树数据结构,用来存储包围盒形状,它的根节点代表一个最大的包围盒,其多个子节点则代表多个子包围盒。
7)碰撞查询:一种检测碰撞的方式,包括扫描查询(Sweep)、射线查询(Raycast)以及重叠查询(Overlap)。其中,Sweep通过从指定起点开始向指定方向指定距离内做指定几何体的扫描查询,来实现检测碰撞;Raycast通过从指定起点开始向指定方向指定距离内做无体积射线查询,来实现检测碰撞;Overlap通过判断指定几何体是否陷入某个碰撞中,来实现检测碰撞。
申请人在实施本申请实施例的过程中发现,如图1A所示,多层网格可以将原来的一层网格地图拓展成多层网格来描述3D地图,只需要做好切层操作就可以继承2D时代的移动逻辑,描述数据结构简单,查询效率高,因此是大多数2D转3D服务器所采用的一个伪3D服务器地形的解决方案;如图1B所示,体素101是描述3D世界的最小单元,有对3D世界较强的还原能力,并且碰撞查询效率高,大部分移动逻辑也可以延续2D网格时代的做法。
然而,相关技术中,多层网格方案对3D地形的描述力不足,如图1C所示,面对楼梯、螺旋梯102这种地形将陷入描述困难,导致内容和数据制作空间比较受限,无法满足现代游戏对高品质、高自由度的需求;体素方案存在以下问题:1)精度问题,现代高品质游戏都带有大地图和复杂的碰撞模型,体素方案在大世界和复杂模型之间很难取得平衡,一旦提高精度就会带来地图资源体积膨胀,然而降低精度又无法描述复杂地形;2)体积问题,为了前后端碰撞查询数据的一致性,前端(客户端)必须放弃原生的物理碰撞查询,使用和后端(服务器)一样的体素碰撞查询,增加了前端的体积;3)体验问题,因为前端也使用体素做碰撞查询,由于精度问题导致了体验欠佳。
为了解决上述问题,本申请实施例提供一种虚拟对象的移动处理方法、装置、电子设备和计算机可读存储介质,能够校验虚拟对象在虚拟场景中的移动,提高虚拟场景中人机交互的准确性。下面说明本申请实施例提供的电子设备的示例性应用,本申请实施例提供的电子设备可以实施为笔记本电脑,平板电脑,台式计算机,机顶盒,移动设备(例如,移动电话,便携式音乐播放器,个人数字助理,专用消息设备,便携式游戏设备)等各种类型的用户终端,也可以实施为服务器。下面,将说明设备实施为终端时示例性应用。
为便于更容易理解本申请实施例提供的虚拟对象的移动处理方法,首先说明本申请实施例提供的虚拟对象的移动处理方法的示例性实施场景,虚拟场景可以完全基于终端输出,或者基于终端和服务器的协同来输出。
在一些实施例中,虚拟场景可以是军事演习仿真中所呈现的画面,用户可以在虚拟场景中,通过属于不同团队的虚拟对象来模拟战局、战略或战术,对于军事作战的指挥有着很大的指导作用。
在一些实施例中,虚拟场景可以是供游戏角色交互的环境,例如可以是供游戏角色在虚拟场景中进行对战,通过控制虚拟对象的行动可以在虚拟场景中进行双方互动,从而使用户能够在游戏的过程中舒缓生活压力。
在一个实施场景中,参见图2A,图2A是本申请实施例提供的虚虚拟对象的移动处理方法的应用模式示意图,适用于一些完全依赖终端400的计算能力即可完成虚拟场景100的相关数据计算的应用模式,例如单机版/离线模式的游戏,通过智能手机、平板电脑和虚拟现实/增强现实设备等终端400完成虚拟场景的输出。
当形成虚拟场景100的视觉感知时,终端400通过图形计算硬件计算显示所需要的数据,并完成显示数据的加载、解析和渲染,在图形输出硬件输出能够对虚拟场景形成视觉感知的视频帧,例如,在智能手机的显示屏幕呈现二维的视频帧,或者,在增强现实/虚拟现实眼镜的镜片上投射实现三维显示效果的视频帧;此外,为了丰富感知效果,设备还可以借助不同的硬件来形成听觉感知、触觉感知、运动感知和味觉感知的一种或多种。
作为示例,终端400运行客户端410(例如单机版的游戏应用),在客户端410的运行过程中输出包括有角色扮演的虚拟场景,虚拟场景是供游戏角色交互的环境,例如可以是用于供游戏角色进行对战的平原、街道、山谷等等;虚拟场景中包括目标虚拟对象110和虚拟对象120,目标虚拟对象110可以是受用户(或称玩家)控制的游戏角色,即目标虚拟对象110受控于真实用户,将响应于真实用户针对按钮(包括摇杆按钮、攻击按钮、防御按钮等)的操作而在虚拟场景中操作,例如当真实用户向左移动摇杆按钮时,目标虚拟对象将在虚拟场景中向左部移动,还可以保持原地静止、跳跃以及使用各种功能(如技能和道具);虚拟对象120可以是在虚拟场景中的障碍物,例如,目标虚拟对象110可以通过移动摇杆按钮130绕过虚拟对象120进行移动,从而避免穿过障碍物,影响虚拟场景中人机交互的可靠性。
在另一个实施场景中,参见图2B,图2B是本申请实施例提供的虚拟对象的移动处理方法的应用模式示意图,应用于终端400和服务器200,适用于依赖服务器200的计算能力完成虚拟场景计算、并在终端400输出虚拟场景的应用模式。
以形成虚拟场景100的视觉感知为例,服务器200进行虚拟场景相关显示数据的计算并发送到终端400,终端400依赖于图形计算硬件完成计算显示数据的加载、解析和渲染,依赖于图形输出硬件输出虚拟场景以形成视觉感知,例如可以在智能手机的显示屏幕呈现二维的视频帧,或者,在增强现实/虚拟现实眼镜的镜片上投射实现三维显示效果的视频帧;对于虚拟场景的形式的感知而言,可以理解,可以借助于终端的相应硬件输出,例如使用麦克风输出形成听觉感知,使用振动器输出形成触觉感知等等。
作为示例,终端400运行客户端410(例如网络版的游戏应用),通过连接游戏服务器(即服务器200)与其他用户进行游戏互动,终端400输出客户端410的虚拟场景100,其中包括目标虚拟对象110和虚拟对象120,目标虚拟对象110可以是受用户控制的游戏角色,即目标虚拟对象110受控于真实用户,将响应于真实用户针对按钮(包括摇杆按钮、攻击按钮、防御按钮等)的操作而在虚拟场景中操作,例如当真实用户向左移动摇杆时,目标虚拟对象将在虚拟场景中向左部移动,还可以保持原地静止、跳跃以及使用各种功能(如技能和道具);虚拟对象120可以是在虚拟场景中的障碍物,例如,目标虚拟对象110可以通过移动摇杆按钮130绕过虚拟对象120进行移动,从而避免穿过障碍物,影响虚拟场景中人机交互的可靠性。
在一些实施例中,终端400可以通过运行计算机程序来实现本申请实施例提供的虚拟对象的移动处理方法,例如,计算机程序可以是操作系统中的原生程序或软件模块;可以是本地(Native)应用程序(APP,Application),即需要在操作系统中安装才能运行的程序,例如游戏APP(即上述的客户端410);也可以是小程序,即只需要下载到浏览器环境中就可以运行的程序;还可以是能够嵌入至任意APP中的游戏小程序。总而言之,上述计算机程序可以是任意形式的应用程序、模块或插件。
本申请实施例可以借助于云技术(Cloud Technology)实现,云技术是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云技术是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、以及应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源。
作为示例,服务器200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端400可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、以及智能手表等,但并不局限于此。终端400以及服务器200可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例中不做限制。
参见图3A,图3A是本申请实施例提供的用于移动处理的电子设备的结构示意图,以电子设备为服务器为例进行说明,图3A所示的电子设备包括:至少一个处理器410、存储器450、至少一个网络接口420和用户接口430。电子设备400中的各个组件通过总线系统440耦合在一起。可理解,总线系统440用于实现这些组件之间的连接通信。总线系统440除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图3A中将各种总线都标为总线系统440。
处理器410可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口430包括使得能够呈现媒体内容的一个或多个输出装置431,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口430还包括一个或多个输入装置432,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器450可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器450例如包括在物理位置上远离处理器410的一个或多个存储设备。
存储器450包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Me mory),易失性存储器可以是随机存取存储器(RAM,Random Access Memor y)。本申请实施例描述的存储器450旨在包括任意适合类型的存储器。
在一些实施例中,存储器450能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统451,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块452,用于经由一个或多个(有线或无线)网络接口420到达其他计算设备,示例性的网络接口420包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
呈现模块453,用于经由一个或多个与用户接口430相关联的输出装置431(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);
输入处理模块454,用于对一个或多个来自一个或多个输入装置432之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本申请实施例提供的虚拟对象的移动处理装置可以采用软件方式实现,图3A示出了存储在存储器450中的虚拟对象的移动处理装置455,其可以是程序和插件等形式的软件,包括以下软件模块:逻辑模块4551、算法模块4552以及接口模块4553,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分,将在下文中说明各个模块的功能。
参见图3B,图3B是本申请实施例提供的虚拟对象的移动处理装置中安装的人机交互引擎的原理示意图,以应用于游戏为例,又可以称为游戏引擎,游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件,这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始,游戏引擎包括:渲染引擎(即“渲染器”,含二维图像引擎和三维图像引擎)、物理引擎、障碍物检测系统、音效、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理,游戏引擎是一个为运行某一类游戏的机器设计的能够被机器识别的代码(指令)集合,它像一个发动机,控制着游戏的运行,一个游戏程序可以分为游戏引擎和游戏资源两大部分,游戏资源包括图像,声音,动画等部分,游戏=引擎(程序代码)+资源(图像,声音,动画等),游戏引擎则是按游戏设计的要求顺序地调用这些资源。
本申请实施例提供的虚拟对象的移动处理方法是由图3A中所示出的虚拟对象的移动处理装置中的各个模块通过调用图3B所示出的人机交互引擎的相关组件实现的,下面示例性说明。
例如,逻辑模块4551用于获取目标虚拟对象在虚拟场景中发生移动时对应的移动方式,逻辑模块4551调用图3B所示游戏引擎中的用户界面部分实现用户与游戏之间的交互,获取目标虚拟对象在虚拟场景中发生移动时对应的移动方式,通过调用游戏引擎中的模型部分制作二维或者三维模型,并在模型制作完毕之后,通过骨骼动画部分按照不同的面把材质贴图赋予模型,这相当于为骨骼蒙上皮肤,最后再通过渲染部分将模型、动画、光影、特效等所有效果实时计算出来并展示在人机交互界面上。
例如,算法模块4552用于在基于虚拟场景的物理几何数据的校验接口、以及基于虚拟场景的导航网格数据的校验接口中,确定与移动方式相匹配的目标校验接口,并调用接口模块4553,以调用目标校验接口对目标虚拟对象的移动进行校验处理,以形成对应的移动校验结果,并显示目标虚拟对象在虚拟场景中发生的移动,通过渲染模块对虚拟场景进行渲染并展示在人机交互界面上。
如前,本申请实施例提供的虚拟对象的移动处理方法可以由各种类型的电子设备实施,例如服务器。参见图4A,图4A是本申请实施例提供的虚拟对象的移动处理方法的流程示意图,结合图3A示出的步骤进行说明。
在下面步骤中,目标虚拟对象在该虚拟场景的天空中自由下落、滑翔或者打开降落伞进行下落等,在地面上中跑动、跳动、爬行、弯腰前行等。其中,目标虚拟对象可以是用户通过客户端上的操作进行控制的用户角色,还可以是设置在虚拟场景互动中的非用户角色等。
在步骤101中,获取目标虚拟对象在虚拟场景中发生移动时对应的移动方式。
作为获取移动方式的示例,用户通过客户端上的操作控制目标虚拟对象在虚拟场景中移动,从而客户端获取目标虚拟对象在虚拟场景中发生移动,并将目标虚拟对象在虚拟场景中发生移动的数据发送至服务器,服务器接收目标虚拟对象在虚拟场景中发生移动的数据,并确定目标虚拟对象在虚拟场景中发生移动时对应的移动方式。
其中,移动方式包括空中移动方式以及地面移动方式,例如,天空中自由下落、滑翔、跳跃等都属于空中移动方式,地面上中跑动、爬行、弯腰前行等都属于地面移动方式。
在步骤102中,在基于虚拟场景的物理几何数据的校验接口、以及基于虚拟场景的导航网格数据的校验接口中,确定与移动方式相匹配的目标校验接口。
其中,用于描述虚拟场景的物理几何数据包括七种物理几何形状(即凸包、长方体、球体、胶囊体、高度域、三角网格以及平面),通过物理几何形状描述虚拟场景,即可以保证准确描述虚拟场景中的复杂地形,又可以避免虚拟场景的地图资源体积较大的膨胀。用于描述虚拟场景的导航网格数据实际上是一堆平面数据,可以带来很好的贴地移动解决方案,支持动态阻挡,精度较高,并且还支持很多生成参数调整。
基于虚拟场景的物理几何数据的校验接口以及基于虚拟场景的导航网格数据的校验接口分别适用于不同的校验场景。从而在基于虚拟场景的物理几何数据的校验接口、以及基于虚拟场景的导航网格数据的校验接口中,确定与移动方式相匹配的目标校验接口,以提高移动校验的效率。
在一些实施例中,确定与移动方式相匹配的目标校验接口,包括:当确定移动方式为空中移动方式或移动方式的校验场景属于第一校验场景时,将基于虚拟场景的物理几何数据的校验接口作为与移动方式相匹配的目标校验接口;当确定移动方式为地面移动方式、且移动方式的校验场景属于第二校验场景时,将基于虚拟场景的导航网格数据的校验接口作为与移动方式相匹配的目标校验接口;其中,第一校验场景的类型包括:碰撞查询校验、地面查询校验、直线通过性校验、随机可站立校验、穿墙校验;第二校验场景的类型包括:地面寻路校验。
例如,空中移动方式需要进行飞行通过校验,而基于虚拟场景的导航网格数据的校验接口不适用于飞行通过校验,因此,当确定移动方式为空中移动方式时,将基于虚拟场景的物理几何数据的校验接口作为与移动方式相匹配的目标校验接口,以便后续基于虚拟场景的物理几何数据进行飞行通过校验。另外,当需要进行碰撞查询校验、地面查询校验、直线通过性校验、随机可站立校验、穿墙校验等校验时,不论目标虚拟对象的移动方式,将基于虚拟场景的物理几何数据的校验接口作为与移动方式相匹配的目标校验接口,以便后续基于虚拟场景的物理几何数据进行精确地移动校验。当需要进行地面寻路校验时,将基于虚拟场景的导航网格数据的校验接口作为与移动方式相匹配的目标校验接口,以便后续基于虚拟场景的导航网格数据进行快速寻路校验。
在步骤103中,调用目标校验接口对虚拟对象的移动进行校验处理,以形成对应的移动校验结果。
在从基于虚拟场景的物理几何数据的校验接口以及基于虚拟场景的导航网格数据的校验接口中,确定出与移动方式相匹配的目标校验接口后,调用目标校验接口对虚拟对象的移动进行校验处理,即可形成对应的移动校验结果,以确定目标虚拟对象在虚拟场景中的移动是否作弊,当目标虚拟对象在虚拟场景中的移动作弊,及时纠正目标虚拟对象在虚拟场景中的移动。
参见图4B,图4B是本发明实施例提供的虚拟对象的移动处理方法的一个可选的流程示意图,当目标校验接口为基于虚拟场景的物理几何数据的校验接口、且移动方式的校验场景为碰撞查询校验时,图4B示出图4A中还包括步骤104:在步骤104中,基于虚拟场景中的多个虚拟对象对应的物理几何数据,构建虚拟场景对应的二叉树。图4A中的步骤103可通过步骤1031-步骤1033实现:在步骤1031中,确定目标虚拟对象在虚拟景中移动的起点以及终点;在步骤1032中,基于起点、终点以及虚拟场景对应的二叉树进行过滤处理,得到虚拟场景中的候选虚拟对象;在步骤1033中,基于候选虚拟对象以及目标虚拟对象进行碰撞查询处理,将碰撞查询处理的结果作为移动校验结果。
例如,对于虚拟场景的物理几何数据,为方便后续进行碰撞查询校验,需要先基于虚拟场景中的多个虚拟对象对应的物理几何数据,构建虚拟场景对应的二叉树,该二叉树具体可为BVH树。先通过虚拟场景对应的二叉树进行过滤,滤除不太可能碰撞的虚拟对象,以便减小后续碰撞查询的计算量,加快校验的速度。
在一些实施例中,基于虚拟场景中的多个虚拟对象对应的物理几何数据,构建虚拟场景对应的二叉树,包括:确定虚拟场景中的多个静态虚拟对象以及多个动态虚拟对象;基于多个静态虚拟对象对应的物理几何数据,构建虚拟场景对应的静态二叉树;基于多个动态虚拟对象对应的物理几何数据,构建虚拟场景对应的动态二叉树;基于起点、终点以及虚拟场景对应的二叉树进行过滤处理,得到虚拟场景中的候选虚拟对象,包括:当虚拟场景中的动态虚拟对象处于开放状态时,基于起点、终点、虚拟场景对应的静态二叉树以及虚拟场景对应的动态二叉树进行过滤处理,得到虚拟场景中的候选虚拟对象;当虚拟场景中的动态虚拟对象处于封闭状态时,基于起点、终点以及虚拟场景对应的静态二叉树进行过滤处理,得到虚拟场景中的候选虚拟对象。
例如,静态二叉树用于装载静态场景地图,即静态虚拟对象,从服务器启动之后就不再调整,目的是保持二叉树平衡,动态二叉树用于装载动态场景地图,即动态虚拟对象,例如火墙、定时开启的悬崖、陡坡等,用来运行时动态增加或者删除虚拟对象,使用通过静态二叉树以及动态二叉树,支持动态阻挡,又保证了静态场景的碰撞查询效率。例如,当虚拟场景中的火墙处于开放状态时,基于起点、终点、虚拟场景对应的静态二叉树以及虚拟场景对应的动态二叉树进行过滤处理,得到虚拟场景中的候选虚拟对象,当虚拟场景中的火墙处于封闭状态时,基于起点、终点以及虚拟场景对应的静态二叉树进行过滤处理,得到虚拟场景中的候选虚拟对象。
在一些实施例中,基于起点、终点以及虚拟场景对应的二叉树进行过滤处理,得到虚拟场景中的候选虚拟对象,包括:基于起点以及终点构建碰撞射线;基于碰撞射线遍历虚拟场景对应的二叉树,将二叉树中与碰撞射线相交的节点作为虚拟场景中的候选虚拟对象。
例如,确定当前虚拟场景对应的二叉树的碰撞查询距离,并基于碰撞查询距离以及碰撞射线,确定二叉树中与碰撞射线相交的节点,当节点与目标虚拟场景之间的碰撞距离小于碰撞查询距离时,将碰撞查询距离压缩至碰撞距离,并将节点作为虚拟场景中的候选虚拟对象,从而压缩碰撞查询距离,避免之后的二叉树遍历对更远的查询点的计算,以减少计算量。
在一些实施例中,基于候选虚拟对象以及目标虚拟对象进行碰撞查询处理,将碰撞查询处理的结果作为移动校验结果,包括:在起点到终点的方向上发射碰撞查询射线;当碰撞查询射线与候选虚拟对象存在碰撞时,确定目标虚拟对象与候选虚拟对象发生碰撞,并将发生碰撞作为移动校验结果;当碰撞查询射线与候选虚拟对象不存在碰撞时,确定目标虚拟对象与候选虚拟对象未发生碰撞,并将未发生碰撞作为移动校验结果。
例如,当对于低精度要求的移动校验场景时,通过Raycast射线查询以进行碰撞查询校验,当对于高精度要求的移动校验场景时,通过Sweep扫描查询以进行碰撞查询校验。例如,如图7B所示,对于Raycast射线查询,在起点到终点的方向上发射碰撞查询射线,检测碰撞查询射线是否与候选虚拟对象发生碰撞,当碰撞查询射线与候选虚拟对象存在碰撞时,确定目标虚拟对象与候选虚拟对象发生碰撞,并将发生碰撞点作为移动校验结果;当碰撞查询射线与候选虚拟对象不存在碰撞时,确定目标虚拟对象与候选虚拟对象未发生碰撞,并将未发生碰撞作为移动校验结果。
在一些实施例中,确定目标虚拟对象与候选虚拟对象发生碰撞,包括:确定目标虚拟对象与候选虚拟对象的碰撞点的法线;基于法线的角度确定目标虚拟对象的碰撞部位;当碰撞部位属于目标碰撞部位、且目标虚拟对象与候选虚拟对象之间的碰撞距离小于碰撞距离阈值时,确定目标虚拟对象与候选虚拟对象发生碰撞。
例如,为了实现忽略指定阈值的碰撞,当基于法线的角度确定目标虚拟对象的碰撞部位在目标虚拟对象的上半部位,且碰撞距离小于碰撞距离阈值时,发生了大段碰撞,则确定发生了碰撞;否则,发生了小段碰撞,可以忽略该小段碰撞,例如可以避免因为部分穿透墙面时贴地被贴到墙顶上。
在一些实施例中,当目标校验接口为基于虚拟场景的物理几何数据的校验接口、且移动方式的校验场景为直线通过性校验时,调用目标校验接口对目标虚拟对象的移动进行校验处理,以形成对应的移动校验结果,包括:确定目标虚拟对象在虚拟场景中发生移动的起点以及终点;基于起点、终点以及目标虚拟对象对应的物理几何数据进行直线通过性校验处理,将直线通过性校验处理的结果作为移动校验结果。
例如,如图7A所示,基于目标虚拟对象对应的物理几何数据确定目标虚拟对象所在的物理几何形状;在起点与终点之间进行基于物理几何形状的扫描处理,以得到目标虚拟对象在起点与终点之间的直线通过性校验处理的结果,当在起点与终点之间扫描到有障碍物(即其他虚拟对象,例如墙壁)时,则将直线未通过作为移动校验结果;当在起点与终点之间未扫描到有障碍物时,则将直线通过作为移动校验结果。
例如,如图7B所示,基于目标虚拟对象对应的物理几何数据确定目标虚拟对象所在的物理几何形状的中间切面圆;基于中间切面圆上的多个点在起点与终点之间进行射线查询处理,以得到目标虚拟对象在起点与终点之间的直线通过性校验处理的结果,当通过射线查询到起点与终点之间扫描到有障碍物(即其他虚拟对象,例如墙壁)时,则将直线未通过作为移动校验结果;当通过射线未查询到起点与终点之间扫描到有障碍物时,则将直线通过作为移动校验结果。
在一些实施例中,当目标校验接口为基于虚拟场景的物理几何数据的校验接口、且移动方式的校验场景为地面查询校验时,调用目标校验接口对目标虚拟对象的移动进行校验处理,以形成对应的移动校验结果,包括:确定目标虚拟对象在虚拟场景中发生移动对应的位置;基于位置以及地面查询的搜索高度,确定多个测试点;基于目标虚拟对象对应的物理几何数据,对多个测试点进行基于地面方向的碰撞查询处理,得到多个测试点的地面查询结果,并作为目标虚拟对象的移动校验结果。
例如,如图8A所示,将位置到地面查询的最大搜索高度之间拆分得到多个测试点,按照从下往上的顺序,对多个测试点进行基于地面方向的碰撞查询处理,得到多个测试点的地面查询结果,当所有测试点的地面查询结果都表征查询到地面,则说明目标虚拟对象没有凹陷,将目标虚拟对象没有凹陷作为移动校验结果;当存在测试点的地面查询结果表征未查询到地面,则说明目标虚拟对象凹陷,将目标虚拟对象凹陷作为移动校验结果。其中,碰撞查询方式可以是Sweep扫描查询,也可以是Raycast射线查询。
在一些实施例中,当目标校验接口为基于虚拟场景的物理几何数据的校验接口、且校验场景为穿墙校验时,调用目标校验接口对目标虚拟对象的移动进行校验处理,以形成对应的移动校验结果,包括:确定目标虚拟对象在虚拟场景中发生移动的起点以及终点;在起点到终点的方向上发射碰撞查询射线;当碰撞查询射线与虚拟对象存在碰撞时,将目标虚拟对象移动至碰撞点,并将碰撞点作为新的起点;在新的起点到终点的方向上发射新的碰撞查询射线;当新的碰撞查询射线与虚拟对象不存在碰撞时,将未穿墙作为移动校验结果;当新的碰撞查询射线与虚拟对象存在碰撞时,将穿墙作为移动校验结果。
例如,如图11所示,校验是否穿墙是通过在起点和终点之间打射线,当碰撞查询射线与虚拟对象(例如墙等障碍物)不发生碰撞时,则说明通过,将未穿墙作为移动校验结果;当碰撞查询射线与虚拟对象(例如墙等障碍物)存在碰撞时,则将目标虚拟对象移动至碰撞点,作为新的起点,在新的起点到终点的方向上发射新的射线,再校验是否发生碰撞,当碰撞查询射线与虚拟对象(例如墙等障碍物)发生碰撞,将穿墙作为移动校验结果。
在一些实施例中,当目标校验接口为基于虚拟场景的物理几何数据的校验接口、且移动方式的校验场景为随机可站立校验时,调用目标校验接口对目标虚拟对象的移动进行校验处理,以形成对应的移动校验结果,包括:确定目标虚拟对象在虚拟场景中发生移动的起点以及终点;基于起点以及终点确定多个测试点;基于目标虚拟对象对应的物理几何数据在多个测试点进行基于地面方向的碰撞查询处理;当任一测试点的碰撞查询处理的结果表征未发生碰撞时,将随机可站立校验不合理作为移动校验结果;当多个测试点的碰撞查询处理的结果都表征发生碰撞时,将随机可站立校验合理作为移动校验结果。
例如,如图12所示,校验是否随机可站立,起点到终点之间按一定的步进拆分,得到多个测试点,对每个测试点基于地面方向的碰撞查询,当任一测试点的碰撞查询处理的结果表征未发生碰撞时,则说明该测试点出现鸿沟,出现飞天挂的情况,不能随机站立,将随机可站立校验不合理作为移动校验结果;当多个测试点的碰撞查询处理的结果都表征发生碰撞时,则说明起点到终点之间没有出现鸿沟,可以随机站立,将随机可站立校验合理作为移动校验结果。
在一些实施例中,当目标校验接口为基于虚拟场景的物理几何数据的校验接口、且移动方式为空中移动方式时,调用目标校验接口对目标虚拟对象的移动进行校验处理,以形成对应的移动校验结果,包括:确定目标虚拟对象在虚拟场景中发生移动的起点以及终点;基于起点以及终点确定多个测试点;针对多个测试点的任一测试点执行以下处理:基于测试点、测试点的下一测试点以及目标虚拟对象对应的物理几何数据进行碰撞查询处理;当任一测试点的碰撞查询处理的结果表征发生碰撞时,将飞行未通过作为移动校验结果;当多个测试点的碰撞查询处理的结果都表征未发生碰撞时,将飞行通过作为移动校验结果。
例如,如图13A所示,起点到终点之间按一定的步进拆分,得到多个测试点,对任意相邻的两个测试点进行基于目标虚拟对象对应的物理几何数据进行碰撞查询,当任一测试点的碰撞查询处理的结果表征发生碰撞时,则说明飞行的过程中遇到障碍物,将飞行未通过作为移动校验结果;当多个测试点的碰撞查询处理的结果都表征未发生碰撞时,则说明飞行的过程中未遇到障碍物,将飞行通过作为移动校验结果。
在一些实施例中,当目标校验接口为基于虚拟场景的导航网格数据的校验接口、且移动方式的校验场景为地面寻路校验时,调用目标校验接口对目标虚拟对象的移动进行校验处理,以形成对应的移动校验结果,包括:确定目标虚拟对象在虚拟场景中发生移动的起点以及终点;基于虚拟场景的导航网格数据、起点以及终端进行寻路处理,得到目标虚拟对象的移动路径;当目标虚拟对象的移动路径不包括终点时,将地面寻路不合理作为移动校验结果;当目标虚拟对象的移动路径包括终点时,将地面寻路合理作为移动校验结果。
例如,在获取虚拟场景的导航网格数据后,通过A星算法基于虚拟场景的导航网格数据、起点以及终端进行寻路,得到目标虚拟对象的移动路径,当目标虚拟对象的移动路径不包括终点时,则说明目标虚拟对象无法到达终点,将地面寻路不合理作为移动校验结果;当目标虚拟对象的移动路径包括终点时,则说明目标虚拟对象能够到达终点,将地面寻路合理作为移动校验结果。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。
申请人在实施本申请实施例的过程中发现,多层网格方案对3D地形的描述力不足,体素方案存在精度问题、体积问题以及体验问题。
为了解决上述问题,本申请实施例提供一种基于物理几何碰撞查询和导航网格的3D游戏服务器引擎,结合了物理几何数据和导航网格数据来感知游戏3D世界,兼顾性能和体验,并且实现了一套专为三维大型多人在线角色扮演游戏(3DMMORPG,3DimensionMassive Multiplayer Online Role Playing Ga me)打造的基于物理几何碰撞查询的通过性查询计算和校验算法,极大提高了玩家作弊成本,将大大增加三维大型多人在线(3DMMO,3Dimension Massi ve Multiplayer Online)游戏服务器的开发速度和安全性,给玩家带来更好的游戏体验。
其中,如图5所示,导航网格(RecastNavigation)是一种用于在复杂空间中导航寻路、标记哪些地方可行走的多边形网格数据结构,导航网格是由各种多边形501构成的,导航网格被内嵌于虚幻4引擎(UE4,Unreal Engine 4)和Unity两个游戏引擎中,支持动态阻挡,精度较高,并且还支持很多生成参数调整,前端几乎不需要额外的开发,并且导航网格模块也较为独立,可以拆分出来供服务器侧使用,以保证前后端的算法和数据的一致性。
本申请实施例是面向游戏服务器开发者的引擎,对游戏服务器逻辑层主要提供如下服务:1)地面查询;2)飞行通过的计算和校验;3)贴地直线通过的计算和校验;4)地面寻路;5)随机可站立点;6)增删动态阻挡。
如图6所示,本申请实施例融合了物理几何数据和导航网格数据,两项数据互为补充,为服务器侧提供了和客户端一样的对3D世界的感知或者查询能力,并在感知能力上开发了一套3D移动和校验常用的接口。其中,数据层(数据模块)负责物理几何数据和导航网格数据的反序列化,应用程序接口(API,Application Programming Interface)层(接口模块)负责对外提供一些碰撞查询、寻路查询或者数据管理的接口,其中,数据管理的接口用于管理游戏中的各种数据,算法层(算法模块)提供一些移动基础接口,例如贴地移动,空中移动等。下面具体说明本申请实施例的系统架构图:
A)数据层
1)本申请实施例使用的物理几何数据为物理引擎(PhysX)定义的七种基本几何,物理几何数据包括凸包、长方体、球体、胶囊体、高度域、三角网格以及平面。物理几何数据在客户端序列化到地图资源文件,每个物理几何体都带一组姿态信息(位置数据、缩放数据、旋转数据),每个物体几何体带一组姿态信息的目的是为了复用物理几何数据,避免同一个物理几何数据放在虚拟场景不同的位置导致物理几何数据拷贝。服务器以同样的数据协议从地图资源中反序列化出物理几何数据(携带有位置信息、旋转信息、缩放信息),并插入一棵静态BVH树,为静态场景的碰撞查询用。
2)本申请实施例的导航网格数据则按UE4中网格导航(RecastNavigation)模块自带的序列化和反序列化方法来做导航网格数据的导出和导入,使用分块(tile)版本的导航网格(Navmesh)数据还可以达到更高的查询效率的目的。
B)API层
API层用于对物理几何碰撞查询和导航网格的API的封装,统一对外提供碰撞查询、导航、数据管理的接口,封装底层细节和两个系统的不同实现。由于游戏中的角色都是胶囊体,因此本申请实施例在胶囊体的碰撞查询还做了相关的优化。
1)优化了BVH树的查询效率。本申请实施例使用BVH树做碰撞的快速剪枝过滤,并对BVH碰撞查询做了进一步的剪枝优化,在BVH剪枝过程中的每次几何碰撞查询结束后,如果当前的碰撞结果距离比查询距离要小,就基于当前的碰撞结果距离压缩查询距离,避免之后的BVH遍历对更远的查询点的计算,以减少计算量。
2)让胶囊体的Sweep碰撞查询更加强大。在BVH剪枝过程中判断碰撞法线(碰撞点的法线),根据法线的方向来判断是水平碰撞、上半球碰撞或者下半球碰撞,并结合碰撞距离用来做碰撞忽略,使得胶囊体碰撞支持忽略指定阈值的碰撞,这使得服务器在做一些需要一定通过率的场景的时候更方便,例如贴地的时候需要忽略胶囊体的外层小段碰撞,可以避免因为部分穿透墙面时贴地被贴到墙顶上。
3)基于Sweep和Raycast封装的通过性接口,用于确定两点之间是否可以通过。如果碰撞,输出碰撞点。对外提供Sweep、带宽度的Raycast和单Rayc ast三个实现版本的选择,外层逻辑可以根据具体场景选择不同的实现。具体的实现如下:
如图7A所示,Sweep版本用角色的胶囊体701在两点(点A、点B)之间做Sweep扫描查询;如图7B所示,带宽度的Raycast则是在射线方向上取胶囊体的中间切面圆702的中点703和垂直于射线方向上圆周上的两个点(点704和点705)做射线查询,三条射线查询结果取最近一个碰撞作为碰撞查询结果;单Raycast版本则是直接在两点之间做射线查询。
其中,低频高精度要求的场景使用Sweep版本,只有横向体积要求没有纵向体积要求的场景可以使用带宽度的Raycast版本,只用来做通过校验的可以使用单Raycast版本,Sweep版本、带宽度的Raycast版本、单Raycast版本的中央处理器(CPU,CentralProcessing Unit)消耗比是6:3:1。
4)地面查询。在三大碰撞查询Raycast、Sweep、Overlap之外,本申请实施例还提供了一个专门为服务器侧设计的地面查询策略。地面查询一共有两个实现版本,分别是Sweep版本和Raycast版本,同样也是为了不同的使用场景考虑。对于服务器而言可能会在任何一个不是地面的地方找地面,例如GM命令、策划配的出生点、飞行过程中的贴地等,因此服务器的地面查询需要能支持在建议点(输入点位置)的某个指定范围内做地面查询。贴地方法是一个输入为{胶囊体,地图,建议点,搜索范围},输出为{地面z值,胶囊体中心z值}的函数,将建议点到搜索最大高度之间拆分得到多个测试点,例如保证最小步进不低于角色的半身高,最大拆分次数不超过10次,然后从下往上依次在每个测试点做向下的碰撞查询一但产生碰撞,碰撞点即是地面。
如图8A所示,建议点到搜索最大高度之间拆分得到测试点0、测试点1以及测试点2,按照测试点0、测试点1以及测试点2,依次向地面801做Sweep碰撞查询,一但产生碰撞,碰撞点即是地面。
如图8B所示,Raycast版本搜索策略和Sweep是一样的,由于Raycast没有体积,本申请实施例除了在胶囊体中心向下查询外,如果查询没有结果,还会在胶囊体圆周上用0,120,240度上的三个点做查询,如果再没有结果就用60,180,300度三个点做查询。从而Raycast版本最好情况下是Sweep版本的6倍(一次查询),最差情况下也接近Sweep版本的1倍(7次Raycast查询)。对于高频的验算或者精确度要求不是很高的逻辑,Raycast版本可以带来可观的提升。
C)算法层
1)对外屏蔽了物理几何坐标系和导航网格的坐标系,统一物理几何坐标系和导航网格的坐标系至左手Z轴向上的左坐标系。
2)基于物理几何数据的贴地直线移动计算接口,输入为起点和终点,输出最远可达点和贴地直线移动关键点路径。具体实现是:如图9所示,在起点和终点之间做分步踩点,计算点与点之间的高度差是否在规定范围内,以避免飞跃鸿沟、上下陡坡等情况。并且在点与点之间“抬脚”收缩胶囊体做Sweep碰撞查询,以忽略脚下地形碰撞,同时避免穿透墙体等大碰撞。整个思想其实就是把一个长路径切割成一个个小路径来做近似计算,将不可预测的3D世界通过踩点的方式探测出来,最后将这些点用共线算法(三点一线,去除中间点,以减少关键点)提炼成关键点路径,供智能机器人(AI)、角色等的移动使用,例如,在起点和终点之间分步踩点,确定相邻点之间的高度差是否在规定范围内,例如点901与点902之间的高度差不在规定范围内时,将点901作为最远可达点。
如图10所示,在点与点之间“抬脚”收缩胶囊体做Sweep碰撞查询,以忽略脚下地形碰撞,同时避免穿透墙体等大碰撞。基于抬脚前的胶囊体1001以及抬脚后的胶囊体1002,生成全量的胶囊体1003,并基于全量的胶囊体1003做Sweep碰撞查询,以获得碰撞点。
3)基于导航网格的Raycast的贴地直线移动计算接口,和基于物理几何数据的贴地直线移动计算接口的输入输出一样。由于导航网格的Raycast自带通过信息,可以省很多的碰撞查询,但是确定碰撞点之后仍需要进行物理的贴地,因为导航网格所确定出的高度并不是真实地面高度。另外导航网格的Raycast并不能输出贴地过程中的关键路径,本申请实施例还是需要使用分步踩点加共线提炼关键点的方式生成贴地直线移动关键点路径。其中,导航网格的实现要比物理几何的实现性能高两倍多,对于服务器而言大部分移动计算其实不需要非常精确,采用该导航网格的实现要比物理的实现更高效。
4)基于物理的短距离高效贴地直线通过校验接口,用于贴地移动的反作弊校验,用于校验是否穿墙、是否上下陡坡、是否飞跃悬崖等。如图11所示,校验是否穿墙是通过在起点和终点之间打射线,没有碰撞则说明通过,如果产生碰撞则在贴地点向下贴地,然后再在贴地点1101向终点打射线,再校验是否通过。利用Raycast无体积和角色身高,对崎岖的地形有了一定的宽容度,之所以碰撞后贴地再试一次主要是为了解决下坡的问题。校验是否上下陡坡是通过检查起点与终点的斜率是否在合法范围内。如图12所示,校验是否飞跃悬崖是按一定的步进拆分起点到终点,得到多个测试点,检查每个测试点上的贴地情况,避免飞天挂,例如,测试点2检测到未贴地,则存在飞天挂的作弊情况。整个校验过程其实是非常宽松的,但是依然有效避免了穿墙挂、飞天挂等情况,并且可以根据实际情况动态调整严格程度,兼顾了安全和性能。
5)基于物理碰撞查询的飞行通过校验接口。可以采用如图13A所示的Ra ycast进行射线碰撞查询,校验是否会碰撞到障碍物(例如墙壁1301),或者采用如图13B所示的全量的胶囊体Sweep进行扫描碰撞查询,校验是否会碰撞到障碍物(例如墙壁1301),由于空中打空的概率比较大,因此Sweep和raycast的效率都很高。
6)动态阻挡。一张地图使用两棵BVH树,一棵静态BVH树,一棵动态B VH树,静态BVH树装载静态场景地图,从服务器启动之后就不再调整,目的是保持二叉树平衡,二叉树越平衡查询效率越高。一棵动态BVH树用来运行时动态增加或者删除碰撞使用,其中,动态的碰撞需求比较少,例如火墙(定时开启的墙)之类的才会做动态碰撞,所以可以保证动态BVH树的高效。由于API层封装了查询,所以一次查询会同时查询静态BVH树和动态BVH树,整个逻辑对外透明,对于外层来说就像在查一个静态场景一样。这样一来即支持了动态阻挡,又保证了静态场景的碰撞查询效率,而且封装后对外层逻辑并不影响。
如图14A所示,本申请实施例使用PhysX的物理几何数据,将物理几何数据导入PhysX引擎的物理场景并使用可视化调试器(PVD,PhysX Visual Deb ugger)来可视化调试服务器场景地图,例如图14A中的山1401是由凸包这种物理几何体构成;如图14B所示,本申请实施例使用UE4的RecastNavigation实现的导航网格数据,使用RecastNavigation的可视化调试工具用来调试导航网格,例如图14B中的地图资源是由导航网格中的多边形1402构成。
综上,本申请实施例在服务器侧实现了物理几何的碰撞查询和导航网格,融合物理几何和导航网格实现3D游戏服务器,兼顾性能和体验,更适合大世界的3D MMORPG游戏,并且对游戏服务器框架没有影响;提供一套基于物理几何的通过性计算和校验逻辑,极大提高了作弊成本,同时降低了服务器和客户端的开发成本;支持高效的动态阻挡;支持主流的UE4和Unity引擎;提高了策划和美术对内容制作的自由度。
至此已经结合本申请实施例提供的服务器的示例性应用和实施,说明本申请实施例提供的虚拟对象的移动处理方法,下面继续说明本申请实施例提供的虚拟对象的移动处理装置455中各个模块配合实现虚拟对象的移动处理的方案。
逻辑模块4551,用于获取目标虚拟对象在虚拟场景中发生移动时对应的移动方式;算法模块4552,用于在基于所述虚拟场景的物理几何数据的校验接口、以及基于所述虚拟场景的导航网格数据的校验接口中,确定与所述移动方式相匹配的目标校验接口;接口模块4553,用于调用所述目标校验接口对所述目标虚拟对象的移动进行校验处理,以形成对应的移动校验结果。
在一些实施例中,所述算法模块4552还用于当确定所述移动方式为空中移动方式或所述移动方式的校验场景属于第一校验场景时,将基于所述虚拟场景的物理几何数据的校验接口作为与所述移动方式相匹配的目标校验接口;当确定所述移动方式为地面移动方式、且所述移动方式的校验场景属于第二校验场景时,将基于所述虚拟场景的导航网格数据的校验接口作为与所述移动方式相匹配的目标校验接口;其中,所述第一校验场景的类型包括:碰撞查询校验、地面查询校验、直线通过性校验、随机可站立校验、穿墙校验;所述第二校验场景的类型包括:地面寻路校验。
在一些实施例中,当所述目标校验接口为基于所述虚拟场景的物理几何数据的校验接口、且所述移动方式的校验场景为碰撞查询校验时,所述接口模块4553还用于基于所述虚拟场景中的多个虚拟对象对应的物理几何数据,构建所述虚拟场景对应的二叉树;确定所述目标虚拟对象在所述虚拟景中移动的起点以及终点;基于所述起点、所述终点以及所述虚拟场景对应的二叉树进行过滤处理,得到所述虚拟场景中的候选虚拟对象;基于所述候选虚拟对象以及所述目标虚拟对象进行碰撞查询处理,将所述碰撞查询处理的结果作为所述移动校验结果。
在一些实施例中,所述接口模块4553还用于确定所述虚拟场景中的多个静态虚拟对象以及多个动态虚拟对象;基于所述多个静态虚拟对象对应的物理几何数据,构建所述虚拟场景对应的静态二叉树;基于所述多个动态虚拟对象对应的物理几何数据,构建所述虚拟场景对应的动态二叉树;当所述虚拟场景中的动态虚拟对象处于开放状态时,基于所述起点、所述终点、所述虚拟场景对应的静态二叉树以及所述虚拟场景对应的动态二叉树进行过滤处理,得到所述虚拟场景中的候选虚拟对象;当所述虚拟场景中的动态虚拟对象处于封闭状态时,基于所述起点、所述终点以及所述虚拟场景对应的静态二叉树进行过滤处理,得到所述虚拟场景中的候选虚拟对象。
在一些实施例中,所述接口模块4553还用于基于所述起点以及所述终点构建碰撞射线;基于所述碰撞射线遍历所述虚拟场景对应的二叉树,将所述二叉树中与所述碰撞射线相交的节点作为所述虚拟场景中的候选虚拟对象。
在一些实施例中,所述接口模块4553还用于确定所述虚拟场景对应的二叉树的碰撞查询距离;基于所述碰撞查询距离以及所述碰撞射线,确定所述二叉树中与所述碰撞射线相交的节点;当所述节点与所述目标虚拟场景之间的碰撞距离小于所述碰撞查询距离时,将所述碰撞查询距离压缩至所述碰撞距离,并将所述节点作为所述虚拟场景中的候选虚拟对象。
在一些实施例中,所述接口模块4553还用于在所述起点到所述终点的方向上发射碰撞查询射线;当所述碰撞查询射线与所述候选虚拟对象存在碰撞时,确定所述目标虚拟对象与所述候选虚拟对象发生碰撞,并将发生碰撞作为所述移动校验结果;当所述碰撞查询射线与所述候选虚拟对象不存在碰撞时,确定所述目标虚拟对象与所述候选虚拟对象未发生碰撞,并将未发生碰撞作为所述移动校验结果。
在一些实施例中,所述接口模块4553还用于确定所述目标虚拟对象与所述候选虚拟对象的碰撞点的法线;基于所述法线的角度确定所述目标虚拟对象的碰撞部位;当所述碰撞部位属于目标碰撞部位、且所述目标虚拟对象与所述候选虚拟对象之间的碰撞距离小于碰撞距离阈值时,确定所述目标虚拟对象与所述候选虚拟对象发生碰撞。
在一些实施例中,当所述目标校验接口为基于所述虚拟场景的物理几何数据的校验接口、且所述移动方式的校验场景为直线通过性校验时,所述接口模块4553还用于确定所述目标虚拟对象在所述虚拟场景中发生移动的起点以及终点;基于所述起点、所述终点以及所述目标虚拟对象对应的物理几何数据进行直线通过性校验处理,将所述直线通过性校验处理的结果作为所述移动校验结果。
在一些实施例中,所述接口模块4553还用于基于所述目标虚拟对象对应的物理几何数据确定所述目标虚拟对象所在的物理几何形状;在所述起点与所述终点之间进行基于所述物理几何形状的扫描处理,以得到所述目标虚拟对象在所述起点与所述终点之间的直线通过性校验处理的结果。
在一些实施例中,所述接口模块4553还用于基于所述目标虚拟对象对应的物理几何数据确定所述目标虚拟对象所在的物理几何形状的中间切面圆;基于所述中间切面圆上的多个点在所述起点与所述终点之间进行射线查询处理,以得到所述目标虚拟对象在所述起点与所述终点之间的直线通过性校验处理的结果。
在一些实施例中,当所述目标校验接口为基于所述虚拟场景的物理几何数据的校验接口、且所述移动方式的校验场景为地面查询校验时,所述接口模块4553还用于确定所述目标虚拟对象在所述虚拟场景中发生移动对应的位置;基于所述位置以及地面查询的搜索高度,确定多个测试点;基于所述目标虚拟对象对应的物理几何数据,对所述多个测试点进行基于地面方向的碰撞查询处理,得到所述多个测试点的地面查询结果,并作为所述目标虚拟对象的移动校验结果。
在一些实施例中,当所述目标校验接口为基于所述虚拟场景的物理几何数据的校验接口、且校验场景为穿墙校验时,所述接口模块4553还用于确定所述目标虚拟对象在所述虚拟场景中发生移动的起点以及终点;在所述起点到所述终点的方向上发射碰撞查询射线;当所述碰撞查询射线与虚拟对象存在碰撞时,将所述目标虚拟对象移动至碰撞点,并将所述碰撞点作为新的起点;在所述新的起点到所述终点的方向上发射新的碰撞查询射线;当所述新的碰撞查询射线与所述虚拟对象不存在碰撞时,将未穿墙作为移动校验结果;当所述新的碰撞查询射线与所述虚拟对象存在碰撞时,将穿墙作为移动校验结果。
在一些实施例中,当所述目标校验接口为基于所述虚拟场景的物理几何数据的校验接口、且所述移动方式的校验场景为随机可站立校验时,所述接口模块4553还用于确定所述目标虚拟对象在所述虚拟场景中发生移动的起点以及终点;基于所述起点以及所述终点确定多个测试点;基于所述目标虚拟对象对应的物理几何数据在所述多个测试点进行基于地面方向的碰撞查询处理;当任一所述测试点的碰撞查询处理的结果表征未发生碰撞时,将随机可站立校验不合理作为移动校验结果;当所述多个测试点的碰撞查询处理的结果都表征发生碰撞时,将随机可站立校验合理作为移动校验结果。
在一些实施例中,当所述目标校验接口为基于所述虚拟场景的物理几何数据的校验接口、且所述移动方式为空中移动方式时,所述接口模块4553还用于确定所述目标虚拟对象在所述虚拟场景中发生移动的起点以及终点;基于所述起点以及所述终点确定多个测试点;针对所述多个测试点的任一测试点执行以下处理:基于所述测试点、所述测试点的下一测试点以及所述目标虚拟对象对应的物理几何数据进行碰撞查询处理;当任一所述测试点的碰撞查询处理的结果表征发生碰撞时,将飞行未通过作为移动校验结果;当所述多个测试点的碰撞查询处理的结果都表征未发生碰撞时,将飞行通过作为移动校验结果。
在一些实施例中,当所述目标校验接口为基于所述虚拟场景的导航网格数据的校验接口、且所述移动方式的校验场景为地面寻路校验时,所述接口模块4553还用于确定所述目标虚拟对象在所述虚拟场景中发生移动的起点以及终点;基于所述虚拟场景的导航网格数据、所述起点以及所述终端进行寻路处理,得到所述目标虚拟对象的移动路径;当所述目标虚拟对象的移动路径不包括所述终点时,将地面寻路不合理作为移动校验结果;当所述目标虚拟对象的移动路径包括所述终点时,将地面寻路合理作为移动校验结果。
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的虚拟对象的移动处理方法。
本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的虚拟对象的移动处理方法,例如,如图4A-图4B示出的虚拟对象的移动处理方法。
在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EP ROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(H TML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。
Claims (15)
1.一种虚拟对象的移动处理方法,其特征在于,包括:
获取目标虚拟对象在虚拟场景中发生移动时对应的移动方式;
在基于所述虚拟场景的物理几何数据的校验接口、以及基于所述虚拟场景的导航网格数据的校验接口中,确定与所述移动方式相匹配的目标校验接口;
调用所述目标校验接口对所述虚拟对象的移动进行校验处理,以形成对应的移动校验结果。
2.根据权利要求1所述的方法,其特征在于,所述确定与所述移动方式相匹配的目标校验接口,包括:
当确定所述移动方式为空中移动方式或所述移动方式的校验场景属于第一校验场景时,将基于所述虚拟场景的物理几何数据的校验接口作为与所述移动方式相匹配的目标校验接口;
当确定所述移动方式为地面移动方式、且所述移动方式的校验场景属于第二校验场景时,将基于所述虚拟场景的导航网格数据的校验接口作为与所述移动方式相匹配的目标校验接口;
其中,所述第一校验场景的类型包括:碰撞查询校验、地面查询校验、直线通过性校验、随机可站立校验、穿墙校验;所述第二校验场景的类型包括:地面寻路校验。
3.根据权利要求1所述的方法,其特征在于,
当所述目标校验接口为基于所述虚拟场景的物理几何数据的校验接口、且所述移动方式的校验场景为碰撞查询校验时,所述调用所述目标校验接口对所述目标虚拟对象的移动进行校验处理之前,还包括:
基于所述虚拟场景中的多个虚拟对象对应的物理几何数据,构建所述虚拟场景对应的二叉树;
所述调用所述目标校验接口对所述目标虚拟对象的移动进行校验处理,以形成对应的移动校验结果,包括:
确定所述目标虚拟对象在所述虚拟景中移动的起点以及终点;
基于所述起点、所述终点以及所述虚拟场景对应的二叉树进行过滤处理,得到所述虚拟场景中的候选虚拟对象;
基于所述候选虚拟对象以及所述目标虚拟对象进行碰撞查询处理,将所述碰撞查询处理的结果作为所述移动校验结果。
4.根据权利要求3所述的方法,其特征在于,
所述基于所述虚拟场景中的多个虚拟对象对应的物理几何数据,构建所述虚拟场景对应的二叉树,包括:
确定所述虚拟场景中的多个静态虚拟对象以及多个动态虚拟对象;
基于所述多个静态虚拟对象对应的物理几何数据,构建所述虚拟场景对应的静态二叉树;
基于所述多个动态虚拟对象对应的物理几何数据,构建所述虚拟场景对应的动态二叉树;
所述基于所述起点、所述终点以及所述虚拟场景对应的二叉树进行过滤处理,得到所述虚拟场景中的候选虚拟对象,包括:
当所述虚拟场景中的动态虚拟对象处于开放状态时,基于所述起点、所述终点、所述虚拟场景对应的静态二叉树以及所述虚拟场景对应的动态二叉树进行过滤处理,得到所述虚拟场景中的候选虚拟对象;
当所述虚拟场景中的动态虚拟对象处于封闭状态时,基于所述起点、所述终点以及所述虚拟场景对应的静态二叉树进行过滤处理,得到所述虚拟场景中的候选虚拟对象。
5.根据权利要求3所述的方法,其特征在于,所述基于所述起点、所述终点以及所述虚拟场景对应的二叉树进行过滤处理,得到所述虚拟场景中的候选虚拟对象,包括:
基于所述起点以及所述终点构建碰撞射线;
基于所述碰撞射线遍历所述虚拟场景对应的二叉树,将所述二叉树中与所述碰撞射线相交的节点作为所述虚拟场景中的候选虚拟对象。
6.根据权利要求5所述的方法,其特征在于,所述基于所述碰撞射线遍历所述虚拟场景对应的二叉树,将所述二叉树中与所述碰撞射线相交的节点作为所述虚拟场景中的候选虚拟对象,包括:
确定所述虚拟场景对应的二叉树的碰撞查询距离;
基于所述碰撞查询距离以及所述碰撞射线,确定所述二叉树中与所述碰撞射线相交的节点;
当所述节点与所述目标虚拟场景之间的碰撞距离小于所述碰撞查询距离时,将所述碰撞查询距离压缩至所述碰撞距离,并将所述节点作为所述虚拟场景中的候选虚拟对象。
7.根据权利要求3所述的方法,其特征在于,所述基于所述候选虚拟对象以及所述目标虚拟对象进行碰撞查询处理,将所述碰撞查询处理的结果作为所述移动校验结果,包括:
在所述起点到所述终点的方向上发射碰撞查询射线;
当所述碰撞查询射线与所述候选虚拟对象存在碰撞时,确定所述目标虚拟对象与所述候选虚拟对象发生碰撞,并将发生碰撞作为所述移动校验结果;
当所述碰撞查询射线与所述候选虚拟对象不存在碰撞时,确定所述目标虚拟对象与所述候选虚拟对象未发生碰撞,并将未发生碰撞作为所述移动校验结果。
8.根据权利要求7所述的方法,其特征在于,所述确定所述目标虚拟对象与所述候选虚拟对象发生碰撞,包括:
确定所述目标虚拟对象与所述候选虚拟对象的碰撞点的法线;
基于所述法线的角度确定所述目标虚拟对象的碰撞部位;
当所述碰撞部位属于目标碰撞部位、且所述目标虚拟对象与所述候选虚拟对象之间的碰撞距离小于碰撞距离阈值时,确定所述目标虚拟对象与所述候选虚拟对象发生碰撞。
9.根据权利要求1所述的方法,其特征在于,当所述目标校验接口为基于所述虚拟场景的物理几何数据的校验接口、且所述移动方式的校验场景为直线通过性校验时,所述调用所述目标校验接口对所述目标虚拟对象的移动进行校验处理,以形成对应的移动校验结果,包括:
确定所述目标虚拟对象在所述虚拟场景中发生移动的起点以及终点;
基于所述起点、所述终点以及所述目标虚拟对象对应的物理几何数据进行直线通过性校验处理,将所述直线通过性校验处理的结果作为所述移动校验结果。
10.根据权利要求9所述的方法,其特征在于,所述基于所述起点、所述终点以及所述目标虚拟对象对应的物理几何数据进行直线通过性校验处理,包括:
基于所述目标虚拟对象对应的物理几何数据确定所述目标虚拟对象所在的物理几何形状;
在所述起点与所述终点之间进行基于所述物理几何形状的扫描处理,以得到所述目标虚拟对象在所述起点与所述终点之间的直线通过性校验处理的结果。
11.根据权利要求9所述的方法,其特征在于,所述基于所述起点、所述终点以及所述目标虚拟对象对应的物理几何数据进行直线通过性校验处理,包括:
基于所述目标虚拟对象对应的物理几何数据确定所述目标虚拟对象所在的物理几何形状的中间切面圆;
基于所述中间切面圆上的多个点在所述起点与所述终点之间进行射线查询处理,以得到所述目标虚拟对象在所述起点与所述终点之间的直线通过性校验处理的结果。
12.根据权利要求1所述的方法,其特征在于,当所述目标校验接口为基于所述虚拟场景的物理几何数据的校验接口、且所述移动方式的校验场景为地面查询校验时,所述调用所述目标校验接口对所述目标虚拟对象的移动进行校验处理,以形成对应的移动校验结果,包括:
确定所述目标虚拟对象在所述虚拟场景中发生移动对应的位置;
基于所述位置以及地面查询的搜索高度,确定多个测试点;
基于所述目标虚拟对象对应的物理几何数据,对所述多个测试点进行基于地面方向的碰撞查询处理,得到所述多个测试点的地面查询结果,并作为所述目标虚拟对象的移动校验结果。
13.一种虚拟对象的移动处理装置,其特征在于,所述装置包括:
逻辑模块,用于获取目标虚拟对象在虚拟场景中发生移动时对应的移动方式;
算法模块,用于在基于所述虚拟场景的物理几何数据的校验接口、以及基于所述虚拟场景的导航网格数据的校验接口中,确定与所述移动方式相匹配的目标校验接口;
接口模块,用于调用所述目标校验接口对所述目标虚拟对象的移动进行校验处理,以形成对应的移动校验结果。
14.一种电子设备,其特征在于,所述电子设备包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至12任一项所述的虚拟对象的移动处理方法。
15.一种计算机可读存储介质,其特征在于,存储有可执行指令,用于被处理器执行时实现权利要求1至12任一项所述的虚拟对象的移动处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110096125.9A CN112717404B (zh) | 2021-01-25 | 2021-01-25 | 虚拟对象的移动处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110096125.9A CN112717404B (zh) | 2021-01-25 | 2021-01-25 | 虚拟对象的移动处理方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112717404A true CN112717404A (zh) | 2021-04-30 |
CN112717404B CN112717404B (zh) | 2022-11-29 |
Family
ID=75593493
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110096125.9A Active CN112717404B (zh) | 2021-01-25 | 2021-01-25 | 虚拟对象的移动处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112717404B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113476843A (zh) * | 2021-06-23 | 2021-10-08 | 网易(杭州)网络有限公司 | 多层地图的显示方法和装置 |
CN113577772A (zh) * | 2021-09-27 | 2021-11-02 | 深圳易帆互动科技有限公司 | 基于瓦片地图的单位移动方法、装置及可读存储介质 |
CN113786615A (zh) * | 2021-09-28 | 2021-12-14 | 腾讯科技(深圳)有限公司 | 互动方法、装置、终端 |
CN114177613A (zh) * | 2022-02-15 | 2022-03-15 | 腾讯科技(深圳)有限公司 | 导航网格更新方法、装置、设备及计算机可读存储介质 |
WO2023142609A1 (zh) * | 2022-01-27 | 2023-08-03 | 腾讯科技(深圳)有限公司 | 虚拟场景中的对象处理方法、装置、设备、存储介质及程序产品 |
WO2024156218A1 (zh) * | 2023-01-28 | 2024-08-02 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机及可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107451460A (zh) * | 2017-06-28 | 2017-12-08 | 努比亚技术有限公司 | 接口处理方法、设备、服务器及计算机可读存储介质 |
WO2018104834A1 (en) * | 2016-12-07 | 2018-06-14 | Yogesh Chunilal Rathod | Real-time, ephemeral, single mode, group & auto taking visual media, stories, auto status, following feed types, mass actions, suggested activities, ar media & platform |
CN109933989A (zh) * | 2019-02-25 | 2019-06-25 | 腾讯科技(深圳)有限公司 | 一种检测漏洞的方法及装置 |
CN109939442A (zh) * | 2019-03-15 | 2019-06-28 | 深圳市腾讯信息技术有限公司 | 应用角色位置异常识别方法、装置、电子设备及存储介质 |
CN112121431A (zh) * | 2020-09-29 | 2020-12-25 | 腾讯科技(深圳)有限公司 | 虚拟道具的交互处理方法、装置、电子设备及存储介质 |
-
2021
- 2021-01-25 CN CN202110096125.9A patent/CN112717404B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018104834A1 (en) * | 2016-12-07 | 2018-06-14 | Yogesh Chunilal Rathod | Real-time, ephemeral, single mode, group & auto taking visual media, stories, auto status, following feed types, mass actions, suggested activities, ar media & platform |
CN107451460A (zh) * | 2017-06-28 | 2017-12-08 | 努比亚技术有限公司 | 接口处理方法、设备、服务器及计算机可读存储介质 |
CN109933989A (zh) * | 2019-02-25 | 2019-06-25 | 腾讯科技(深圳)有限公司 | 一种检测漏洞的方法及装置 |
CN109939442A (zh) * | 2019-03-15 | 2019-06-28 | 深圳市腾讯信息技术有限公司 | 应用角色位置异常识别方法、装置、电子设备及存储介质 |
CN112121431A (zh) * | 2020-09-29 | 2020-12-25 | 腾讯科技(深圳)有限公司 | 虚拟道具的交互处理方法、装置、电子设备及存储介质 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113476843A (zh) * | 2021-06-23 | 2021-10-08 | 网易(杭州)网络有限公司 | 多层地图的显示方法和装置 |
CN113476843B (zh) * | 2021-06-23 | 2024-02-23 | 网易(杭州)网络有限公司 | 多层地图的显示方法和装置 |
CN113577772A (zh) * | 2021-09-27 | 2021-11-02 | 深圳易帆互动科技有限公司 | 基于瓦片地图的单位移动方法、装置及可读存储介质 |
CN113786615A (zh) * | 2021-09-28 | 2021-12-14 | 腾讯科技(深圳)有限公司 | 互动方法、装置、终端 |
CN113786615B (zh) * | 2021-09-28 | 2023-06-16 | 腾讯科技(深圳)有限公司 | 互动方法、装置、终端 |
WO2023142609A1 (zh) * | 2022-01-27 | 2023-08-03 | 腾讯科技(深圳)有限公司 | 虚拟场景中的对象处理方法、装置、设备、存储介质及程序产品 |
CN114177613A (zh) * | 2022-02-15 | 2022-03-15 | 腾讯科技(深圳)有限公司 | 导航网格更新方法、装置、设备及计算机可读存储介质 |
WO2024156218A1 (zh) * | 2023-01-28 | 2024-08-02 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112717404B (zh) | 2022-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112717404B (zh) | 虚拟对象的移动处理方法、装置、电子设备及存储介质 | |
US11245872B2 (en) | Merged reality spatial streaming of virtual spaces | |
JP7125992B2 (ja) | 現実世界の仮想現実マップを用いた仮想現実(vr)ゲーム環境の構築 | |
US8411092B2 (en) | 2D imposters for simplifying processing of plural animation objects in computer graphics generation | |
EP3846058A1 (en) | Multi-dimensional 3d engine computing and virtualization-based dynamic load balancing of virtual or real worlds | |
Murray | Building virtual reality with unity and steamvr | |
US11724191B2 (en) | Network-based video game editing and modification distribution system | |
US11704868B2 (en) | Spatial partitioning for graphics rendering | |
CN114177613B (zh) | 导航网格更新方法、装置、设备及计算机可读存储介质 | |
WO2023142609A1 (zh) | 虚拟场景中的对象处理方法、装置、设备、存储介质及程序产品 | |
CN112121417B (zh) | 虚拟场景中的事件处理方法、装置、设备及存储介质 | |
CN112090078B (zh) | 游戏角色移动控制方法、装置、设备和介质 | |
KR102698789B1 (ko) | 가상 장면의 정보 처리 방법 및 장치, 디바이스, 매체 및 프로그램 제품 | |
Kuiper et al. | Agent vision in multi-agent based simulation systems | |
KR20230145430A (ko) | 가상 환경에서의 좌표축 표시 방법 및 장치, 그리고 단말기 및 매체 | |
CN115082607A (zh) | 虚拟角色头发渲染方法、装置、电子设备和存储介质 | |
CN111389007B (zh) | 一种游戏控制方法、装置、计算设备及存储介质 | |
CN115631320B (zh) | 预计算单元格显示方法、预计算单元格生成方法及装置 | |
KR101951225B1 (ko) | 물리엔진을 사용하지 않는 리얼타임 렌더링 오브젝트 표현 방법 및 시스템 | |
CN112870694B (zh) | 虚拟场景的画面显示方法、装置、电子设备及存储介质 | |
CN117635891A (zh) | 虚拟场景中的模型展示方法、装置、设备及存储介质 | |
CN114247132B (zh) | 虚拟对象的控制处理方法、装置、设备、介质及程序产品 | |
KR20240137047A (ko) | 가상 시나리오의 정보 디스플레이 방법, 장치, 전자 기기, 저장 매체 및 컴퓨터 프로그램 제품 | |
US20240299848A1 (en) | Guiding movement of virtual object | |
WO2024012016A1 (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40042035 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |