CN113384902A - 虚拟对象的移动控制方法、装置、设备及存储介质 - Google Patents
虚拟对象的移动控制方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN113384902A CN113384902A CN202011315153.7A CN202011315153A CN113384902A CN 113384902 A CN113384902 A CN 113384902A CN 202011315153 A CN202011315153 A CN 202011315153A CN 113384902 A CN113384902 A CN 113384902A
- Authority
- CN
- China
- Prior art keywords
- target
- virtual
- terrain
- virtual object
- virtual terrain
- 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
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/80—Special adaptations for executing a specific game genre or game mode
- A63F13/837—Shooting of targets
-
- 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/50—Controlling the output signals based on the game progress
- A63F13/52—Controlling the output signals based on the game progress involving aspects of the displayed game scene
-
- 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/56—Computing the motion of game characters with respect to other game characters, game objects or elements of the game scene, e.g. for simulating the behaviour of a group of virtual soldiers or for path finding
-
- 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/80—Special adaptations for executing a specific game genre or game mode
- A63F13/843—Special adaptations for executing a specific game genre or game mode involving concurrently two or more players on the same game device, e.g. requiring the use of a plurality of controllers or of a specific view of game data for each player
-
- 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
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/30—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by output arrangements for receiving control signals generated by the game device
- A63F2300/308—Details of the user interface
-
- 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
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/60—Methods for processing data by generating or executing the game program
- A63F2300/66—Methods for processing data by generating or executing the game program for rendering three dimensional images
-
- 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
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/80—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game specially adapted for executing a specific type of game
- A63F2300/8076—Shooting
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请公开了一种虚拟对象的移动控制方法、装置、设备及存储介质。方法包括:响应于目标虚拟对象的移动指令,确定目标虚拟对象对应的目标位置信息和目标虚拟对象的半径;基于目标位置信息和至少两个虚拟地形单元的地形信息,确定目标虚拟对象对应的目标可通行距离值;响应于目标可通行距离值不大于目标虚拟对象的半径,基于目标虚拟对象的原移动方向,确定目标虚拟对象的新移动方向,控制目标虚拟对象按照新移动方向进行移动。在此种方式下,地形信息占用的存储空间较小,有利于提高虚拟对象的移动控制性能;此外,在确定虚拟对象无法按照原移动方向继续移动时,控制虚拟对象按照新移动方向进行移动,使得虚拟对象的移动控制的准确性较高。
Description
技术领域
本申请实施例涉及计算机技术领域,特别涉及一种虚拟对象的移动控制方法、装置、设备及存储介质。
背景技术
随着计算机技术的快速发展,能够提供虚拟环境的应用程序越来越多,安装有此类能够提供虚拟环境的应用程序的终端需要根据虚拟环境中的虚拟地形对虚拟环境中的虚拟对象的移动进行实时控制。
相关技术中,终端存储有将虚拟环境中的虚拟地形体素化后的体素数据,然后根据虚拟对象与体素数据之间的碰撞检测结果来控制虚拟对象的移动。
在上述方式下,体素数据的存储需要占用很大的存储空间,导致终端对虚拟对象的移动控制性能较差,此外,在根据虚拟对象与体素数据之间的碰撞检测结果来控制虚拟对象的移动的过程中,若确定虚拟对象因与虚拟地形边缘发生碰撞而无法按照原移动方向进行移动时,终端会控制虚拟对象在原地踏步,导致虚拟对象的移动控制的准确性较低。
发明内容
本申请实施例提供了一种虚拟对象的移动控制方法、装置、设备及存储介质,可用于提高虚拟对象的移动控制的准确性。所述技术方案如下:
一方面,本申请实施例提供了一种虚拟对象的移动控制方法,所述方法应用于终端,所述终端存储有虚拟环境对应的至少两个虚拟地形单元的地形信息;所述方法包括:
响应于目标虚拟对象的移动指令,确定所述目标虚拟对象对应的目标位置信息和所述目标虚拟对象的半径;
基于所述目标位置信息和所述至少两个虚拟地形单元的地形信息,确定所述目标虚拟对象对应的目标可通行距离值;
响应于所述目标可通行距离值不大于所述目标虚拟对象的半径,基于所述目标虚拟对象的原移动方向,确定所述目标虚拟对象的新移动方向,控制所述目标虚拟对象按照所述新移动方向进行移动。
另一方面,提供了一种虚拟对象的移动控制装置,所述装置包括:
第一确定单元,用于响应于目标虚拟对象的移动指令,确定所述目标虚拟对象对应的目标位置信息和所述目标虚拟对象的半径;
第二确定单元,用于基于所述目标位置信息和所述至少两个虚拟地形单元的地形信息,确定所述目标虚拟对象对应的目标可通行距离值;
第三确定单元,用于响应于所述目标可通行距离值不大于所述目标虚拟对象的半径,基于所述目标虚拟对象的原移动方向,确定所述目标虚拟对象的新移动方向;
控制单元,用于控制所述目标虚拟对象按照所述新移动方向进行移动。
在一种可能实现方式中,所述目标位置信息包括目标平面坐标和目标高度值,不同的虚拟地形单元对应不同的平面区域,任一虚拟地形单元的地形信息包括构成所述任一虚拟地形单元的虚拟地形格子的高度值;所述第二确定单元,用于基于所述目标平面坐标和所述至少两个虚拟地形单元分别对应的平面区域,在所述至少两个虚拟地形单元中确定目标虚拟地形单元;基于所述目标高度值和构成所述目标虚拟地形单元的虚拟地形格子的高度值,在所述构成所述目标虚拟地形单元的虚拟地形格子中确定目标虚拟地形格子;基于所述目标虚拟地形格子,确定所述目标虚拟对象对应的目标可通行距离值。
在一种可能实现方式中,所述任一虚拟地形单元的地形信息还包括构成所述任一虚拟地形单元的虚拟地形格子的可通行距离值;所述第二确定单元,还用于确定所述目标虚拟地形格子对应的第一相邻虚拟地形格子;基于所述第一相邻虚拟地形格子的可通行距离值以及所述目标平面坐标与目标平面区域的参考边界之间的距离,确定所述目标虚拟对象对应的目标可通行距离值,所述目标平面区域为所述目标虚拟地形单元对应的平面区域。
在一种可能实现方式中,所述虚拟环境中存在目标动态障碍物,所述第二确定单元,还用于基于所述目标虚拟地形格子,确定所述目标虚拟对象对应的第一可通行距离值;基于所述目标平面坐标和所述目标动态障碍物的平面投影,确定所述目标虚拟对象对应的第二可通行距离值;将所述第一可通行距离值和所述第二可通行距离值中的最小值作为所述目标虚拟对象对应的目标可通行距离值。
在一种可能实现方式中,所述目标动态障碍物的平面投影为目标圆盘;所述第二确定单元,还用于计算所述目标圆盘的圆盘中心的平面坐标和所述目标平面坐标之间的第一距离;将所述第一距离与所述目标圆盘的半径之间的差值作为所述目标虚拟对象对应的第二可通行距离值。
在一种可能实现方式中,所述目标动态障碍物的平面投影为目标矩形;所述第二确定单元,还用于基于所述目标平面坐标、所述目标矩形的矩形中心的平面坐标、所述目标矩形对应的转向角以及所述目标矩形的矩形中心对应的边界距离,确定所述目标虚拟对象对应的第二可通行距离值。
在一种可能实现方式中,所述第三确定单元,用于确定所述目标虚拟对象对应的梯度方向;基于所述梯度方向和所述目标虚拟对象的原移动方向,确定所述目标虚拟对象的新移动方向。
在一种可能实现方式中,所述装置还包括:
检测单元,用于对虚拟环境中的虚拟地形进行射线检测,得到所述虚拟环境对应的至少两个虚拟地形单元的高度值信息,任一虚拟地形单元的高度值信息包括构成所述任一虚拟地形单元的虚拟地形格子的高度值;
获取单元,用于对于所述至少两个虚拟地形单元中的任一虚拟地形单元,基于所述任一虚拟地形单元的高度值信息,获取所述任一虚拟地形单元的可通行距离值信息,所述任一虚拟地形单元的可通行距离值信息包括构成所述任一虚拟地形单元的虚拟地形格子的可通行距离值;
所述获取单元,还用于基于所述至少两个虚拟地形单元的高度值信息和所述至少两个虚拟地形单元的可通行距离值信息,得到所述虚拟环境对应的至少两个虚拟地形单元的地形信息。
在一种可能实现方式中,所述获取单元,还用于对于构成所述任一虚拟地形单元的任一虚拟地形格子,基于所述任一虚拟地形格子的高度值,确定所述任一虚拟地形格子对应的第一高度值区间和所述任一虚拟地形格子对应的第二高度值区间;对所述第一高度值区间和所述第二高度值区间进行射线检测,确定所述任一虚拟地形格子的可通行距离值。
在一种可能实现方式中,所述获取单元,还用于从所述第一高度值区间向外发射第一水平射线,确定所述第一水平射线的射线长度,将所述第一水平射线的射线长度中的最小值作为所述任一虚拟地形格子对应的第一距离值;从外向所述第二高度值区间发射第二水平射线,确定所述第二水平射线的终止位置与所述任一虚拟地形格子的格子中心之间的水平距离,将所述第二水平射线的终止位置与所述任一虚拟地形格子的格子中心之间的水平距离中的最大值作为所述任一虚拟地形格子对应的第二距离值;将所述第一距离值和所述第二距离值中的最小值作为所述任一虚拟地形格子的可通行距离值。
在一种可能实现方式中,所述获取单元,还用于将所述任一虚拟地形格子的高度值和第一参数的和作为第一下界;将所述任一虚拟地形格子的高度值和第二参数的和作为第一上界;将由所述第一下界和所述第一上界构成且与所述任一虚拟地形格子对应的高度值区间作为所述任一虚拟地形格子对应的第一高度值区间;将所述任一虚拟地形格子的高度值和第三参数的差值作为第二下界;将所述任一虚拟地形格子的高度值作为第二上界;将由所述第二下界和所述第二上界构成且与所述任一虚拟地形格子对应的高度值区间作为所述任一虚拟地形格子对应的第二高度值区间;其中,所述第一参数用于指示虚拟对象最大可跨越的障碍物高度,所述第二参数用于指示虚拟对象高度,所述第三参数用于指示虚拟对象最大可跨越的虚拟悬崖高度。
在一种可能实现方式中,所述控制单元,还用于响应于所述目标可通行距离值大于所述目标虚拟对象的半径,控制所述目标虚拟对象按照所述原移动方向进行移动。
另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条计算机程序,所述至少一条计算机程序由所述处理器加载并执行,以实现上述任一所述的虚拟对象的移动控制方法。
另一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行,以实现上述任一所述的虚拟对象的移动控制方法。
另一方面,还提供了一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括计算机指令,所述计算机指令存储在计算机可读存储介质中。计算机设备的处理器从所述计算机可读存储介质读取所述计算机指令,处理器执行所述计算机指令,使得所述计算机设备执行上述任一所述的虚拟对象的移动控制方法。
本申请实施例提供的技术方案至少带来如下有益效果:
在本申请实施例中,终端存储的是虚拟环境对应的至少两个虚拟地形单元的地形信息,相比于存储体素数据,存储地形信息有利于节省存储空间,进而提高虚拟对象的移动控制性能;此外,在预先存储了虚拟地形单元的地形信息的基础上,在确定虚拟对象无法按照原移动方向继续移动时,确定新移动方向且控制虚拟对象按照新移动方向进行移动,使得虚拟对象的移动控制的准确性较高。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种虚拟对象的移动控制方法的实施环境的示意图;
图2是本申请实施例提供的一种虚拟对象的移动控制方法的流程图;
图3是本申请实施例提供的一种目标虚拟地形格子和第一相邻虚拟地形格子之间的位置关系的示意图;
图4是本申请实施例提供的一种目标圆盘的示意图;
图5是本申请实施例提供的一种目标矩形的示意图;
图6是本申请实施例提供的一种新移动方向、原移动方向和梯度方向之间的关系的示意图;
图7是本申请实施例提供的一种虚拟对象在多层虚拟地形中移动的界面示意图;
图8是本申请实施例提供的一种获取虚拟环境对应的至少两个虚拟地形单元的地形信息的方法的流程图;
图9是本申请实施例提供的一种通过射线检测获取虚拟地形格子的高度值的示意图;
图10是本申请实施例提供的一种对第一高度值区间和第二高度值区间进行射线检测的二维示意图;
图11是本申请实施例提供的一种对第一高度值区间和第二高度值区间进行射线检测的三维示意图;
图12是本申请实施例提供的一种虚拟地形格子的可通行距离值的示意图;
图13是本申请实施例提供的一种虚拟对象的移动控制装置的示意图;
图14是本申请实施例提供的一种虚拟对象的移动控制装置的示意图;
图15是本申请实施例提供的一种终端的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
对本申请实施例中涉及的若干个名词进行解释:
虚拟环境:应用程序在终端上运行时提供(或显示)的环境,该虚拟环境是指营造出的供虚拟对象进行活动的环境。虚拟环境可以是二维虚拟环境、2.5维虚拟环境或三维虚拟环境。该虚拟环境可以是对真实世界的仿真环境,也可以是半仿真半虚构的环境,也可以是纯虚构的环境。示例性地,本申请实施例中的虚拟环境为三维虚拟环境。
虚拟对象:虚拟对象是指在虚拟环境中的可活动对象。该可活动对象可以是虚拟人物、虚拟动物、动漫人物等。交互对象可通过外设部件或点击触摸显示屏的方式操控虚拟对象。每个虚拟对象在虚拟环境中具有自身的形状和体积,占据虚拟环境中的一部分空间。示例性地,当虚拟环境为三维虚拟环境时,虚拟对象是基于动画骨骼技术创建的三维立体模型。
本申请实施例提供了一种虚拟对象的移动控制方法,请参考图1,其示出了本申请实施例提供的虚拟对象的移动控制方法的实施环境的示意图。该实施环境包括:终端11和服务器12。
其中,终端11安装有能够提供虚拟环境的应用程序。终端11能够存储应用程序提供的虚拟环境对应的至少两个虚拟地形单元的地形信息,进而根据预先存储的至少两个虚拟地形单元的地形信息实现对虚拟对象的移动控制。
本申请实施例对能够提供虚拟环境的应用程序的类型不加以限定,示例性地,能够提供虚拟环境的应用程序是指游戏类应用程序,例如,第三人称射击(Third-PersonShooting,TPS)游戏、第一人称射击(First-Person Shooting,FPS)游戏、多人在线战术竞技(Multiplayer Online Battle Arena,MOBA)游戏、多人枪战类生存游戏等。在示例性实施例中,本申请实施例中涉及的游戏类应用程序为基于帧同步的游戏类应用程序,也就是说,本申请实施例提供的虚拟对象的移动控制方法可应用于基于帧同步的游戏类应用程序中。
当然,除了游戏类应用程序之外,能够提供虚拟环境的应用程序还可以是其他类型的应用程序,例如,虚拟现实(Virtual Reality,VR)类应用程序、增强现实(AugmentedReality,AR)类应用程序、三维地图程序、军事仿真程序、社交类应用程序、互动娱乐类应用程序等。
服务器12用于为终端11安装的能够提供虚拟环境的应用程序提供后台服务。在一种可能实现方式中,服务器12承担主要计算工作,终端11承担次要计算工作;或者,服务器12承担次要计算工作,终端11承担主要计算工作;或者,服务器12和终端11二者之间采用分布式计算架构进行协同计算。
在一种可能实现方式中,终端11是任何一种可与用户通过键盘、触摸板、触摸屏、遥控器、语音交互或手写设备等一种或多种方式进行人机交互的电子产品,例如PC(Personal Computer,个人计算机)、手机、智能手机、PDA(Personal Digital Assistant,个人数字助手)、可穿戴设备、掌上电脑PPC(Pocket PC)、平板电脑、智能车机、智能电视、智能音箱等。服务器12可以是一台服务器,或者是由多台服务器单元成的服务器集群,再或者是一个云计算服务中心。终端11与服务器12通过有线或无线网络建立通信连接。
本领域技术人员应能理解上述终端11和服务器12仅为举例,其他现有的或今后可能出现的终端或服务器如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
基于上述图1所示的实施环境,本申请实施例提供一种虚拟对象的移动控制方法,以该方法应用于终端11为例。如图2所示,本申请实施例提供的方法包括如下步骤:
在步骤201中,响应于目标虚拟对象的移动指令,确定目标虚拟对象对应的目标位置信息和目标虚拟对象的半径。
本申请实施例由终端执行,终端安装有能够提供虚拟环境的应用程序(简称目标应用程序)。终端存储有目标应用程序提供的虚拟环境对应的至少两个虚拟地形单元的地形信息。在示例性实施例中,不同的虚拟地形单元对应不同的平面区域,任一虚拟地形单元的地形信息包括构成该任一虚拟地形单元的虚拟地形格子的高度值和构成该任一虚拟地形单元的虚拟地形格子的可通行距离值。
虚拟地形单元的地形信息用于描述目标应用程序提供的虚拟环境中的虚拟地形,需要说明的是,该虚拟地形是指在应用程序的开发阶段设定的固定虚拟地形。虚拟地形单元由虚拟地形格子构成,一个虚拟地形单元对应一个平面区域,不同的虚拟地形单元对应不同的平面区域。每个虚拟地形单元对应的平面区域均是指对虚拟环境中的整个地平面区域进行划分后得到的一个小区域。示例性地,对虚拟环境中的整个地平面区域进行划分的划分方式为:将整个地平面区域划分成多个参考尺寸的小区域。此种情况下,每个虚拟地形单元对应的平面区域的尺寸均为参考尺寸。参考尺寸根据经验设置,或者根据应用场景灵活调整,本申请实施例对此不加以限定。示例性地,每个虚拟地形单元对应的平面区域均是指一个正方形平面区域,则参考尺寸为正方形的面积。
虚拟地形单元由虚拟地形格子构成,构成某一虚拟地形单元的虚拟地形格子的尺寸与该虚拟地形单元对应的平面区域的尺寸相同。在示例性实施例中,不同的虚拟地形单元对应的不同的平面区域的尺寸均为参考尺寸,则构成不同的虚拟地形单元的虚拟地形格子的尺寸均为参考尺寸。本申请实施例以构成不同虚拟地形单元的虚拟地形格子的尺寸均为参考尺寸为例进行说明,但本申请实施例并不局限于此,在示例性实施例中,构成不同虚拟地形单元的虚拟地形格子的尺寸也可以不同。
任一虚拟地形单元的地形信息包括构成该任一虚拟地形单元的虚拟地形格子的高度值和构成该任一虚拟地形单元的虚拟地形格子的可通行距离值。需要说明的是,构成任一虚拟地形单元的虚拟地形格子的数量为一个或多个,本申请实施例对此不加以限定。当构成任一虚拟地形单元的虚拟地形格子的数量为多个时,任一虚拟地形单元的地形信息包括构成该任一虚拟地形单元的多个虚拟地形格子的高度值和构成该任一虚拟地形单元的多个虚拟地形格子的可通行距离值。
某一虚拟地形格子的高度值和该虚拟地形格子的可通行距离值用于描述该虚拟地形格子。虚拟地形格子的高度值用于指示虚拟地形格子在虚拟环境中所处的高度位置,示例性地,虚拟地形格子的高度值利用空间坐标中的z轴坐标表示,也就是说,虚拟地形格子的高度值可能为正值,也可能为负值,还可能为0。虚拟地形格子的可通行距离值用于指示虚拟地形格子为虚拟对象提供的最大可移动范围,虚拟地形格子的可通行距离值为不小于0的数值。
需要说明的是,虚拟环境对应的至少两个虚拟地形单元的地形信息在开发目标应用程序的过程中预先获取,终端存储的虚拟环境对应的至少两个虚拟地形单元的地形信息可能是由该终端获取的,也可能是由其他终端获取的,本申请实施例对此不加以限定。示例性地,对于该终端既为目标应用程序的开发终端,又为目标应用程序的使用终端的情况,该终端存储的虚拟环境对应的至少两个虚拟地形单元的地形信息是由该终端获取的;对于该终端仅为目标应用程序的使用终端的情况,该终端存储的虚拟环境对应的至少两个虚拟地形单元的地形信息是由该目标应用程序的开发终端获取的。
目标应用程序的开发终端在获取虚拟环境对应的至少两个虚拟地形单元的地形信息后,将虚拟环境对应的至少两个虚拟地形单元的地形信息与目标应用程序一同发布到用于为目标应用程序服务的服务器中,终端通过从服务器中下载安装目标应用程序将至少两个虚拟地形单元的地形信息存储在本地,进而直接基于本地存储的至少两个虚拟地形单元的地形信息,实现对虚拟对象的移动控制。获取虚拟环境对应的至少两个虚拟地形单元的地形信息的过程将在图8所示的实施例中进行介绍,此处暂不赘述。
需要进一步说明的是,由于虚拟环境对应的至少两个虚拟地形单元的地形信息是在开发目标应用程序的过程中预先获取的,所以对于安装该目标应用程序的各个终端而言,存储的虚拟环境对应的至少两个虚拟地形单元的地形信息均是相同的,以便于不同的终端能够在相同的操作指令下,对虚拟对象进行相同的移动控制。基于此,本申请实施例提供的方法能够应用于基于帧同步的游戏类应用程序中。
本申请实施例中的终端是指安装有能够提供虚拟环境的应用程序(即目标应用程序)的任一终端。终端能够基于存储的虚拟环境对应的至少两个虚拟地形单元的地形信息实现对虚拟对象的移动控制。在实现对虚拟对象的移动控制的过程中,终端首先响应于目标虚拟对象的移动指令,确定目标虚拟对象对应的目标位置信息和目标虚拟对象的半径,然后基于目标虚拟对象对应的目标位置信息和目标虚拟对象的半径,以及存储的虚拟环境对应的至少两个虚拟地形单元的地形信息,实现对目标虚拟对象的移动控制。
目标虚拟对象是指在虚拟环境中活动且需要终端进行移动控制的虚拟对象。目标虚拟对象的移动指令用于指示目标虚拟对象需要进行移动。本申请实施例对终端获取到目标虚拟对象的移动指令的方式不加以限定,示例性地,目标虚拟对象为终端的登录账号对应的虚拟对象,终端通过检测交互对象产生的移动目标虚拟对象的操作,获取到目标虚拟对象的移动指令。
示例性地,目标虚拟对象的移动指令由用于为目标应用程序提供后台服务的服务器转发给终端,由此,终端获取到目标虚拟对象的移动指令。需要说明的是,对于终端获取的目标虚拟对象的移动指令是由服务器转发的情况,目标虚拟对象可能是除终端的登录账号对应的虚拟对象外的其他对象,也可能是终端的登录账号对应的虚拟对象,本申请实施例对此不加以限定。也就是说,终端能够通过获取移动指令的方式,对在虚拟环境中活动的任何虚拟对象进行移动控制。
终端在获取到目标虚拟对象的移动指令后,响应于目标虚拟对象的移动指令,确定目标虚拟对象对应的目标位置信息和目标虚拟对象的半径。目标虚拟对象对应的目标位置信息用于描述目标虚拟对象在虚拟环境中所处的位置,目标虚拟对象的半径用于描述目标虚拟对象在虚拟环境中所占用的空间。
在一些实施例中,目标虚拟对象对应的目标位置信息包括目标平面坐标和目标高度值,目标平面坐标用于指示目标虚拟对象在虚拟环境中所处的位置对应的平面坐标,目标高度值用于指示目标虚拟对象在虚拟环境中所处的位置对应的高度值。示例性地,目标虚拟对象在虚拟环境中所处的位置利用空间坐标(x1,y1,z1)表示,目标平面坐标是指(x1,y1),目标高度值是指z1。空间坐标(x1,y1,z1)是在空间坐标系下的坐标,空间坐标系中的x轴和y轴所在的平面平行于虚拟环境中的地平面,空间坐标系中的z轴垂直于虚拟环境中的地平面。需要说明的是,目标高度值可能为正值,也可能为负值,还可能为0,本申请实施例对此不加以限定。
在一些实施例中,目标虚拟对象在虚拟环境中所处的位置是指目标虚拟对象上的参考点在虚拟环境中所处的位置,参考点根据经验设置,或者根据应用场景灵活调整,例如,参考点是指目标虚拟对象的两个脚之间的连线上的中心点。终端能够根据获取目标虚拟对象的移动指令时,目标虚拟对象上的参考点在虚拟环境中所处的位置确定目标虚拟对象对应的目标位置信息。
在一些实施例中,虚拟对象的半径是虚拟对象的一个属性参数,不同的虚拟对象的半径可能相同,也可能不同。在示例性实施例中,目标虚拟对象的半径携带在目标虚拟对象的属性信息中,终端能够响应于目标虚拟对象的移动指令,从目标虚拟对象的属性信息中自动提取目标虚拟对象的半径。在示例性实施例中,终端中存储有虚拟对象标识和半径的对应关系,终端能够响应于目标虚拟对象的移动指令,根据目标虚拟对象的虚拟对象标识在虚拟对象标识和半径的对应关系中查询目标虚拟对象的半径。目标虚拟对象的虚拟对象标识用于标识目标虚拟对象,例如,目标虚拟对象的虚拟对象标识为目标虚拟对象的名称、目标虚拟对象对应的ID(Identity Document,身份标识号)等。
在步骤202中,基于目标位置信息和至少两个虚拟地形单元的地形信息,确定目标虚拟对象对应的目标可通行距离值。
在确定目标虚拟对象对应的目标位置信息后,基于目标位置信息和存储的至少两个虚拟地形单元的地形信息,确定目标虚拟对象对应的目标可通行距离值。目标可通行距离值用于指示目标虚拟对象的最大可移动范围,能够用来衡量目标虚拟对象能否继续按照原移动方向进行移动。
至少两个虚拟地形单元的地形信息用于描述目标应用程序提供的虚拟环境中的固定虚拟地形,在目标应用程序运行的过程中,可能会出现动态障碍物。动态障碍物是指在目标应用程序的运行过程中不定时出现的障碍物。在获取到目标虚拟对象的移动指令时,虚拟环境中可能存在目标动态障碍物,也可能不存在目标动态障碍物。目标动态障碍物是指可能对目标虚拟对象的移动造成阻碍的动态障碍物。
在示例性实施例中,动态障碍物的底面对应的高度值和顶面对应的高度值构成动态障碍物对应的高度值区域。目标动态障碍物是指对应的高度值区间与目标虚拟对象对应的参考高度值区间存在交集的动态障碍物。参考高度值区间的下界是指目标虚拟对象的脚部对应的高度值与目标虚拟对象最大可跨越的障碍物高度之和,参考高度值区间的上界是指目标虚拟对象的头部对应的高度值。目标虚拟对象最大可跨越的障碍物高度可以与目标虚拟对象的类型有关,也可以是目标应用程序提供的一个固定参数,本申请实施例对此不加以限定。
在一种可能实现方式中,该步骤202的实现过程包括以下步骤2021至步骤2023:
步骤2021:基于目标平面坐标和至少两个虚拟地形单元分别对应的平面区域,在至少两个虚拟地形单元中确定目标虚拟地形单元。
基于目标平面坐标和至少两个虚拟地形单元分别对应的平面区域,能够确定目标平面坐标处于哪个虚拟地形单元对应的平面区域内,进而将该虚拟地形单元作为目标虚拟地形单元。
步骤2022:基于目标高度值和构成目标虚拟地形单元的虚拟地形格子的高度值,在构成目标虚拟地形单元的虚拟地形格子中确定目标虚拟地形格子。
在确定目标虚拟地形单元后,根据目标虚拟地形单元的地形信息即可确定构成目标虚拟地形单元的虚拟地形格子的高度值,然后能够将目标高度值和构成目标虚拟地形单元的虚拟地形格子的高度值进行比对,将构成目标虚拟地形单元的虚拟地形格子中满足选取条件的高度值对应的虚拟地形格子作为目标虚拟地形格子。示例性地,满足选取条件的高度值是指与目标高度值最接近的高度值。
步骤2023:基于目标虚拟地形格子,确定目标虚拟对象对应的目标可通行距离值。
目标虚拟地形格子可视为目标虚拟对象当前所处的虚拟地形格子,根据目标虚拟地形格子能够确定目标虚拟对象对应的目标可通行距离值。在一种可能实现方式中,在虚拟环境中不存在目标动态障碍物的情况下,基于目标虚拟地形格子,确定目标虚拟对象对应的目标可通行距离值的过程是指直接基于目标虚拟地形格子,确定目标虚拟对象对应的目标可通行距离值的过程,该过程包括以下步骤a和步骤b:
步骤a:确定目标虚拟地形格子对应的第一相邻虚拟地形格子。
第一相邻虚拟地形格子是指在目标虚拟地形格子所在的虚拟地形中与目标虚拟地形格子满足第一相邻条件的虚拟地形格子。示例性地,满足第一相邻条件是指在目标虚拟地形格子的四个角的方向上与目标虚拟地形格子相邻。也就是说,第一相邻虚拟地形格子包括目标虚拟地形格子对应的四个角相邻虚拟地形格子。示例性地,将第一相邻虚拟地形格子包括的四个角相邻虚拟地形格子分别称为左下角相邻虚拟地形格子、右下角相邻虚拟地形格子、右上角相邻虚拟地形格子和左上角相邻虚拟地形格子。
例如,目标虚拟地形格子和第一相邻虚拟地形格子之间的位置关系如图3所示,目标虚拟地形格子301对应的第一相邻虚拟地形格子包括的四个角相邻虚拟地形格子分别为左下角虚拟地形格子302、右下角虚拟地形格子303、右上角虚拟地形格子304和左上角虚拟地形格子305。需要说明的是,图3所示的虚拟地形格子中标记的数值为虚拟地形格子的可通行距离值,如,目标虚拟地形格子301的可通行距离值为2。目标虚拟地形格子301中的黑色圆点代表目标虚拟对象。
在一种可能实现方式中,确定目标虚拟地形格子对应的第一相邻虚拟地形格子的方式为:将目标平面坐标所在的平面区域作为基准平面区域,确定在基准平面区域的四个角的方向上与基准平面区域相邻的四个平面区域分别对应的四个角相邻虚拟地形单元;将构成每个角相邻虚拟地形单元的虚拟地形格子中与目标高度值最接近的高度值对应的虚拟地形格子均作为一个角相邻虚拟地形格子;在得到四个角相邻虚拟地形格子后,得到目标虚拟地形格子对应的第一相邻虚拟地形格子。
步骤b:基于第一相邻虚拟地形格子的可通行距离值以及目标平面坐标与目标平面区域的参考边界之间的距离,确定目标虚拟对象对应的目标可通行距离值。其中,目标平面区域为目标虚拟地形单元对应的平面区域。
第一相邻虚拟地形格子的可通行距离值是指第一相邻虚拟地形格子包括的四个角相邻虚拟地形格子分别对应的可通行距离值。根据四个角相邻虚拟地形格子分别构成的虚拟地形单元的地形信息能够确定四个角相邻虚拟地形格子分别对应的可通行距离值。
目标平面区域为目标虚拟地形单元对应的平面区域,目标平面区域的参考边界根据经验预先设定,示例性地,目标平面区域的参考边界是指目标平面区域的左边界和下边界,目标平面坐标与目标平面区域的参考边界之间的距离包括目标平面坐标与目标平面区域的左边界之间的距离和目标平面坐标与目标平面区域的下边界之间的距离。由于目标平面坐标处于目标平面区域内,所以能够直接确定目标平面坐标与目标平面区域的参考边界之间的距离。
在一种可能实现方式中,基于第一相邻虚拟地形格子的可通行距离值以及目标平面坐标与目标平面区域的参考边界之间的距离,确定目标虚拟对象对应的目标可通行距离值的过程利用公式1实现:
y=y0+(y1-y0)U+(y3-y0)V+(y2-y3-y1+y0)UV (公式1)
其中,y表示目标虚拟对象对应的目标可通行距离值;y0表示第一相邻虚拟地形格子包括的左下角相邻虚拟地形格子的可通行距离值;y1表示第一相邻虚拟地形格子包括的右下角相邻虚拟地形格子的可通行距离值;y2表示第一相邻虚拟地形格子包括的右上角相邻虚拟地形格子的可通行距离值;y3表示第一相邻虚拟地形格子包括的左上角相邻虚拟地形格子的可通行距离值;U表示目标平面坐标与目标平面区域的左边界之间的距离;V表示目标平面坐标与目标平面区域的下边界之间的距离。
需要说明的是,以上步骤a和步骤b所述的仅为直接基于目标虚拟地形格子,确定目标虚拟对象对应的目标可通行距离值的一种示例性实现方式,本申请实施例并不局限于此。在示例性实施例中,直接基于目标虚拟地形格子,确定目标虚拟对象对应的目标可通行距离值的方式为:将目标虚拟地形格子的可通行距离值作为目标虚拟对象对应的目标可通行距离值。
在一种可能实现方式中,在虚拟环境中存在目标动态障碍物的情况下,基于目标虚拟地形格子,确定目标虚拟对象对应的目标可通行距离值的过程是指基于目标虚拟地形格子和目标动态障碍物,确定目标虚拟对象对应的目标可通行距离值的过程,该过程包括以下步骤A至步骤C:
步骤A:基于目标虚拟地形格子,确定目标虚拟对象对应的第一可通行距离值。
该步骤A的实现过程参见上述根据步骤a和步骤b确定目标虚拟对象对应的目标可通行距离值的过程,此处不再赘述。
由于虚拟环境中存在目标动态障碍物,所以在确定目标虚拟对象对应的目标可通行距离值的过程中,除需要考虑预先存储的至少两个虚拟地形单元的地形信息外,还需要考虑目标动态障碍物,以提高确定出的目标可通行距离值的准确性,进而提高终端对目标虚拟对象的移动控制的准确性。
步骤B:基于目标平面坐标和目标动态障碍物的平面投影,确定目标虚拟对象对应的第二可通行距离值。
目标动态障碍物的平面投影是指目标动态障碍物在虚拟环境中的地平面上的投影。需要说明的是,目标动态障碍物的数量为一个或多个,本申请实施例对此不加以限定。当目标动态障碍物的数量为多个时,基于目标平面坐标和每个目标动态障碍物的平面投影,均确定目标虚拟对象对应的一个第二可通行距离值。也就是说,目标虚拟对象对应的第二可通行距离值的数量与目标动态障碍物的数量相同。本申请实施例以目标动态障碍物的数量为一个为例进行说明。
在一种可能实现方式中,目标动态障碍物的平面投影为目标圆盘。在此种情况下,目标动态障碍物为底面平行于虚拟环境中的地平面的圆柱体形障碍物。当目标动态障碍物的平面投影为目标圆盘时,基于目标平面坐标和目标动态障碍物的平面投影,确定目标虚拟对象对应的第二可通行距离值的方式为:计算目标圆盘的圆盘中心的平面坐标和目标平面坐标之间的第一距离;将第一距离与目标圆盘的半径之间的差值作为目标虚拟对象对应的第二可通行距离值。
示例性地,如图4所示,目标圆盘的圆盘中心的平面坐标对应点c,目标平面坐标对应点x,目标圆盘的半径为r,则目标动态障碍物的平面投影为目标圆盘时,目标虚拟对象对应的第二可通行距离值利用公式2计算得到:
Φ(x)=||x-c||-r (公式2)
其中,Φ(x)表示目标虚拟对象对应的第二可通行距离值;x表示点x对应的向量;c表示点c对应的向量;||x-c||表示目标圆盘的圆盘中心的平面坐标和目标平面坐标之间的第一距离。
在一种可能实现方式中,目标动态障碍物的平面投影为目标矩形。在此种情况下,目标动态障碍物为上下两个表面平行于虚拟环境中的地平面的长方体形障碍物。当目标动态障碍物的平面投影为目标矩形时,基于目标平面坐标和目标动态障碍物的平面投影,确定目标虚拟对象对应的第二可通行距离值的方式为:基于目标平面坐标、目标矩形的矩形中心的平面坐标、目标矩形对应的转向角以及目标矩形的矩形中心对应的边界距离,确定目标虚拟对象对应的第二可通行距离值。
目标矩形对应的转向角是指目标矩形相对于空间坐标系的z轴的转向角,z轴为垂直于虚拟环境中的地平面的坐标轴。目标矩形的矩形中心对应的边界距离是指目标矩形的矩形中心到目标矩形相邻的两个边界的距离。在一种可能实现方式中,如图5所示,目标矩形的矩形中心的平面坐标对应点c,目标平面坐标对应点x,目标矩形对应的转向角为θ,目标矩形的矩形中心对应的边界距离为b1和b2。基于目标平面坐标、目标矩形的矩形中心的平面坐标、目标矩形对应的转向角以及目标矩形的矩形中心对应的边界距离,确定目标虚拟对象对应的第二可通行距离值的过程利用公式3实现:
其中,x表示点x对应的向量;c表示点c对应的向量;(x-c)R(-θ)表示将从点x到点c的向量逆向旋转θ后得到的向量;b表示由边界距离b1和b2构成的向量,b=(b1,b2);d表示根据公式3中的第一个公式计算得到的向量,向量d利用二维坐标的形式表示;Φ(x)表示目标虚拟对象对应的第二可通行距离值;dx表示向量d对应的二维坐标中的横坐标;dy表示向量d对应的二维坐标中的纵坐标;max(d,0)表示由最大横坐标和最大纵坐标构成的二维坐标对应的向量,最大横坐标是指向量d对应的二维坐标中的横坐标和0之间的最大值,最大纵坐标是指向量d对应的二维坐标中的纵坐标和0之间的最大值。
在基于公式3确定目标虚拟对象对应的第二可通行距离值的过程中,先将目标虚拟对象的目标平面坐标变换到目标矩形的局部坐标系下,然后再计算目标虚拟对象对应的第二可通行距离值。
步骤C:将第一可通行距离值和第二可通行距离值中的最小值作为目标虚拟对象对应的目标可通行距离值。
在确定目标虚拟对象对应的第一通行距离值和第二通行距离值后,将第一可通行距离值和第二可通行距离值中的最小值作为目标虚拟对象对应的目标可通行距离值。示例性地,将通过考虑预先存储的至少两个虚拟地形单元的地形信息确定的第一可通行距离值记为SDF0,将通过考虑目标动态障碍物确定的第二可通行距离值记为Φ(x)。则目标虚拟对象对应的目标可通行距离值SDF表示为:SDF=min(Φ(x),SDF0)。需要说明的是,对于存在多个目标动态障碍物的情况,第二可通行距离值的数量为多个,则目标可通行距离值SDF表示为:SDF=min(Φ(x)1,Φ(x)2,…,Φ(x)n,SDF0),其中,n(n为不小于2的整数)表示第二可通行距离值的数量。
无论哪种情况,均能够确定目标虚拟对象对应的目标可通行距离值,进而判断目标可通行距离值是否大于目标虚拟对象的半径。若目标可通行距离值不大于目标虚拟对象的半径,则说明目标虚拟对象无法继续按照目标虚拟对象的原移动方向进行移动,此时,执行步骤203。若目标可通行距离值大于目标虚拟对象的半径,则说明目标虚拟对象能够继续按照目标虚拟对象的原移动方向进行移动,此种情况下,终端控制目标虚拟对象按照原移动方向进行移动。目标虚拟对象的原移动方向是指在获取目标虚拟对象的移动指令时目标虚拟对象的移动方向。
例如,如图3所示,假设目标虚拟对象对应的目标可通行距离值SDF=1.8,目标虚拟对象的半径=0.5,则说明目标虚拟对象能够按照原移动方向进行移动,即,目标虚拟对象可继续行走。
在示例性实施例中,终端控制目标虚拟对象按照原移动方向进行移动是指终端控制目标虚拟对象按照原移动方向以第一参考移动方式进行移动。第一参考移动方式用于指示目标虚拟对象的移动速度、移动时间等,第一参考移动方式根据实际场景确定,此处不加以限定。
在步骤203中,响应于目标可通行距离值不大于目标虚拟对象的半径,基于目标虚拟对象的原移动方向,确定目标虚拟对象的新移动方向,控制目标虚拟对象按照新移动方向进行移动。
当目标可通行距离值不大于目标虚拟对象的半径时,说明目标虚拟对象无法继续按照目标虚拟对象的原移动方向进行移动,此时需要确定新移动方向,然后控制目标虚拟对象按照新移动方向进行移动。通过控制目标虚拟对象按照新移动方向进行移动能够使目标虚拟对象绕地形边缘或者障碍物平滑移动,提高虚拟对象的移动控制的准确性,减少虚拟对象的移动视觉突兀感,提升用户体验。
在一种可能实现方式中,基于目标虚拟对象的原移动方向,确定目标虚拟对象的新移动方向的过程包括以下步骤2031和步骤2032:
步骤2031:确定目标虚拟对象对应的梯度方向。
目标虚拟对象对应的梯度方向用于指示目标虚拟对象的移动不会受到阻碍的方向。在一种可能实现方式中,确定目标虚拟对象对应的梯度方向的过程包括以下步骤Ⅰ至步骤Ⅲ:
步骤Ⅰ:确定目标虚拟对象对应的目标虚拟地形格子。
该步骤Ⅰ的实现方式参见步骤2021和步骤2022,此处不再赘述。
步骤Ⅱ:确定目标虚拟地形格子对应的第二相邻虚拟地形格子。
第二相邻虚拟地形格子是指在目标虚拟地形格子所在的虚拟地形中与目标虚拟地形格子满足第二相邻条件的虚拟地形格子。示例性地,满足第二相邻条件是指在目标虚拟地形格子的四个边界的方向上与目标虚拟地形格子相邻。也就是说,第二相邻虚拟地形格子包括目标虚拟地形格子对应的四个边界相邻虚拟地形格子。示例性地,将第二相邻虚拟地形格子包括的四个边界相邻虚拟地形格子分别称为上边界相邻虚拟地形格子、下边界相邻虚拟地形格子、左边界相邻虚拟地形格子和右边界相邻虚拟地形格子。
在一种可能实现方式中,确定目标虚拟地形格子对应的第二相邻虚拟地形格子的方式为:将目标平面坐标所在的平面区域作为基准平面区域,确定在基准平面区域的四个边界的方向上与基准平面区域相邻的四个平面区域分别对应的四个边界相邻虚拟地形单元;将构成每个边界相邻虚拟地形单元的虚拟地形格子中与目标高度值最接近的高度值对应的虚拟地形格子均作为一个边界相邻虚拟地形格子;在得到四个边界相邻虚拟地形格子后,得到目标虚拟地形格子对应的第二相邻虚拟地形格子。
步骤Ⅲ:基于第二相邻虚拟地形格子的可通行距离值,确定目标虚拟对象对应的梯度方向。
第二相邻虚拟地形格子的可通行距离值是指第二相邻虚拟地形格子包括的四个边界相邻虚拟地形格子分别对应的可通行距离值。根据四个边界相邻虚拟地形格子分别构成的虚拟地形单元的地形信息能够确定四个边界相邻虚拟地形格子分别对应的可通行距离值。
在确定第二相邻虚拟地形格子后,基于第二相邻虚拟地形格子的可通行距离值,确定目标虚拟对象对应的梯度方向。在一种可能实现方式中,基于第二相邻虚拟地形格子的可通行距离值,确定目标虚拟对象对应的梯度方向的过程为:基于第二相邻虚拟地形格子包括的四个边界相邻虚拟地形格子分别对应的可通行距离值,确定目标虚拟对象对应的梯度向量;将目标虚拟对象对应的梯度向量的方向作为目标虚拟对象对应的梯度方向。
目标虚拟对象对应的梯度向量利用二维坐标的形式表示,确定目标虚拟对象对应的梯度向量的过程即是指确定用于表示目标虚拟对象对应的梯度向量的二维坐标中的横坐标和纵坐标的过程。例如,目标虚拟对象对应的梯度向量利用公式4表示:
在一种可能实现方式中,基于第二相邻虚拟地形格子包括的四个边界相邻虚拟地形格子分别对应的可通行距离值,确定目标虚拟对象对应的梯度向量的方式为:将右边界相邻虚拟地形格子对应的可通行距离值与左边界相邻虚拟地形格子对应的可通行距离值的差值作为用于表示目标虚拟对象对应的梯度向量的二维坐标中的横坐标;将上边界相邻虚拟地形格子对应的可通行距离值与下边界相邻虚拟地形格子对应的可通行距离值的差值作为用于表示目标虚拟对象对应的梯度向量的二维坐标中的纵坐标。在得到用于表示目标虚拟对象对应的梯度向量的二维坐标中的横坐标和纵坐标后,即可得到目标虚拟对象对应的梯度向量。在确定目标虚拟对象对应的梯度向量后,将梯度向量的方向作为梯度方向,然后执行步骤2032。
步骤2032:基于梯度方向和目标虚拟对象的原移动方向,确定目标虚拟对象的新移动方向。
在一种可能实现方式中,基于梯度方向和目标虚拟对象的原移动方向,确定目标虚拟对象的新移动方向的过程利用公式5实现:
在确定目标虚拟对象的新移动方向后,终端控制目标虚拟对象按照新移动方向进行移动。在示例性实施例中,终端控制目标虚拟对象按照新移动方向进行移动是指终端控制目标虚拟对象按照新移动方向以第二参考移动方式进行移动。第二参考移动方式可能与第一参考移动方式相同,也可能与第一参考移动方式不相同,这与实际场景有关,本申请实施例对此不加以限定。
在一种可能实现方式中,在终端控制目标虚拟对象按照新移动方向进行移动的过程中,在移动单位时间后,确定目标虚拟对象对应的新位置信息,然后根据新位置信息确定新可通行距离值,若新可通行距离值大于目标虚拟对象的半径,则继续按照新移动方向移动;若新可通行距离值不大于目标虚拟对象的半径,则终端控制目标虚拟对象沿梯度方向进行移动。
本申请实施例提供的方法能够应用于基于帧同步的游戏类应用程序中,基于本申请实施例提供的方法,能够实现虚拟对象在多层虚拟地形中的移动。例如,如图7所示,虚拟环境中包括两层虚拟地形,第一层虚拟地形701为弧形地形,第二层虚拟地形702为斜坡以及斜坡尽头连接的平台。交互对象能够在终端上通过摇杆操作虚拟对象,基于交互对象的操作,终端能够控制虚拟对象在第一层虚拟地形701行走,也能够控制虚拟对象通过斜坡走上第二层虚拟地形702,还能够控制虚拟对象在弧形边缘进行平滑移动。在此种移动控制方式下,支持多层虚拟地形且支持边缘平滑移动,使得终端的移动控制具有高性能。
在本申请实施例中,终端存储的是虚拟环境对应的至少两个虚拟地形单元的地形信息,相比于存储体素数据,存储地形信息有利于节省存储空间,进而提高虚拟对象的移动控制性能;此外,在预先存储了虚拟地形单元的地形信息的基础上,在确定虚拟对象无法按照原移动方向继续移动时,确定新移动方向且控制虚拟对象按照新移动方向进行移动,使得虚拟对象的移动控制的准确性较高。
本申请实施例提供一种获取虚拟环境对应的至少两个虚拟地形单元的地形信息的方法,以该方法应用于目标应用程序的开发终端为例,该开发终端可能与执行图2所示的实施例的终端为同一终端,也可能与执行图2所示的实施例的终端为不同终端,本申请实施例对此不加以限定。如图8所示,本申请实施例提供的方法包括如下步骤:
在步骤801中,对虚拟环境中的虚拟地形进行射线检测,得到虚拟环境对应的至少两个虚拟地形单元的高度值信息,任一虚拟地形单元的高度值信息包括构成任一虚拟地形单元的虚拟地形格子的高度值。
开发终端用于在发布目标应用程序之前,获取目标应用程序提供的虚拟环境对应的至少两个虚拟地形单元的地形信息。任一虚拟地形单元的地形信息包括高度值信息和可通行距离值信息。在步骤801中,开发终端获取至少两个虚拟地形单元的高度值信息;在步骤802中,开发终端获取至少两个虚拟地形单元的可通行距离值信息。
任一虚拟地形单元的高度值信息包括构成任一虚拟地形单元的虚拟地形格子的高度值,也就是说,获取至少两个虚拟地形单元的高度值信息的过程即是指获取构成至少两个虚拟地形单元的全部虚拟地形格子的高度值的过程。
在本申请实施例中,开发终端通过对虚拟环境中的虚拟地形进行射线检测,得到虚拟环境对应的至少两个虚拟地形单元的高度值信息。需要说明的是,虚拟环境中的虚拟地形是指开发人员根据目标应用程序的应用需求预先设置的虚拟地形,本申请实施例对虚拟地形的层数不加以限定,虚拟环境中可能仅包括一层虚拟地形,也可能包括多层虚拟地形。
在一种可能实现方式中,对虚拟环境中的虚拟地形进行射线检测,得到虚拟环境对应的至少两个虚拟地形单元的高度值信息的过程为:将虚拟环境中的完整地平面划分为参考尺寸的多个平面区域,每个平面区域对应一个虚拟地形单元,边界相邻的两个平面区域的区域中心之间的距离为参考距离,该参考距离根据参考尺寸确定;根据参考距离间隔发射从上至下的射线,根据射线与各层虚拟地形的接触点的高度值确定至少两个虚拟地形单元的高度值信息。
对于任一射线而言,该射线与各层虚拟地形的接触点的高度值即为构成该射线指向的平面区域对应的虚拟地形单元的虚拟地形格子的高度值。构成该射线指向的平面区域对应的虚拟地形单元的虚拟地形格子的数量与该射线与各层虚拟地形的接触点的数量相同。在示例性实施例中,一个接触点对应一个虚拟地形格子的中心,虚拟地形格子的尺寸与平面区域对应的参考尺寸相同。
在示例性实施例中,根据全部射线与同一层虚拟地形的接触点的高度值,能够确定该一层虚拟地形中的全部虚拟地形格子的高度值。根据各层虚拟地形中的全部虚拟地形格子的高度值,即可得到至少两个虚拟地形单元的高度值信息。
例如,如图9所示,假设虚拟环境包括两层虚拟地形,发射的从上至下的射线与这两层虚拟地形有多个接触点,根据接触点的高度值能够得到不同层虚拟地形中的虚拟地形格子的高度值。例如,虚拟地形901中的虚拟地形格子的高度值如903所示,虚拟地形902中的虚拟地形格子的高度值如904所示。在903和904中,虚拟地形格子中标记的数值表示高度值。
需要说明的是,虚拟地形901中的某一虚拟地形格子与虚拟地形902中与该虚拟地形格子对应同一平面区域的虚拟地形格子构成同一个虚拟地形单元。如,虚拟地形901中的虚拟地形格子A与虚拟地形902中与该虚拟地形格子A对应同一平面区域的虚拟地形格子B构成同一个虚拟地形单元,虚拟地形格子A的高度值zA为3,可通行距离值SDFA待确定;虚拟地形格子B的高度值zB为1.3,可通行距离值SDFB待确定。
在一种可能实现方式中,对于目标应用程序是利用UE4(Unreal Engine 4,虚幻4引擎)引擎开发的应用程序的情况,通过调用UE4提供的UWorld::LineTraceMultiByObjectType()方法获取FHitResult.ImpactPoint,即可得到虚拟环境对应的至少两个虚拟地形单元的高度值信息。
在步骤802中,对于至少两个虚拟地形单元中的任一虚拟地形单元,基于任一虚拟地形单元的高度值信息,获取任一虚拟地形单元的可通行距离值信息,任一虚拟地形单元的可通行距离值信息包括构成任一虚拟地形单元的虚拟地形格子的可通行距离值。
由于虚拟地形单元的地形信息包括高度值信息和可通行距离值信息,所以,在获取虚拟地形信息的高度值信息后,需要进一步获取虚拟地形单元的可通行距离值信息。任一虚拟地形单元的可通行距离值信息是基于任一虚拟地形单元的高度值信息获取的。获取任一虚拟地形单元的可通行距离值信息的过程即是指获取构成该任一虚拟地形单元的虚拟地形格子的可通行距离值的过程。构该任一虚拟地形单元的任一虚拟地形格子的可通行距离值是根据该任一虚拟地形格子的高度值确定的。
在一种可能实现方式中,获取构成任一虚拟地形单元的任一虚拟地形格子的可通行距离值的过程包括以下步骤8021和步骤8022:
步骤8021:对于构成任一虚拟地形单元的任一虚拟地形格子,基于任一虚拟地形格子的高度值,确定任一虚拟地形格子对应的第一高度值区间和任一虚拟地形格子对应的第二高度值区间。
任一虚拟地形格子对应的第一高度值区间和任一虚拟地形格子对应的第二高度值区间是根据该任一虚拟地形格子的高度值确定的。在一种可能实现方式中,确定任一虚拟地形格子对应的第一高度值区间的实现过程为:将任一虚拟地形格子的高度值和第一参数的和作为第一下界;将任一虚拟地形格子的高度值和第二参数的和作为第一上界;将由第一下界和第一上界构成且与任一虚拟地形格子对应的高度值区间作为任一虚拟地形格子对应的第一高度值区间。
其中,第一参数用于指示虚拟对象最大可跨越的障碍物高度,第二参数用于指示虚拟对象高度。第一参数和第二参数均由开发人员根据经验设定,对于不同的虚拟地形格子而言均是相同的。由第一下界和第一上界构成且与任一虚拟地形格子对应的高度值区间是指由第一下界和第一上界构成且位于任一虚拟地形格子的格子中心所在的地平面垂线上的高度值区间。地平面垂线是指垂直于虚拟环境中的地平面的直线。
在一种可能实现方式中,确定任一虚拟地形格子对应的第二高度值区间的实现过程为:将任一虚拟地形格子的高度值和第三参数的差值作为第二下界;将任一虚拟地形格子的高度值作为第二上界;将由第二下界和第二上界构成且与任一虚拟地形格子对应的高度值区间作为任一虚拟地形格子对应的第二高度值区间。
其中,第三参数用于指示虚拟对象最大可跨越的虚拟悬崖高度。第三参数由开发人员根据经验设定,对于不同的虚拟地形格子而言均是相同的。由第二下界和第二上界构成且与任一虚拟地形格子对应的高度值区间是指由第二下界和第二上界构成且位于任一虚拟地形格子的格子中心所在的地平面垂线上的高度值区间。
在示例性实施例中,利用TerrainMaxUpStep表示第一参数,即利用TerrainMaxUpStep表示虚拟对象最大可跨越的障碍物高度;利用ActorHeight表示第二参数,即利用ActorHeight表示虚拟对象高度;利用TerrainMaxDownStep表示第三参数,即利用TerrainMaxDownStep表示虚拟对象最大可跨越的虚拟悬崖高度;利用Z表示任一虚拟地形格子对应的高度值。基于此,由第一下界和第一上界构成的区间表示为[Z+TerrainMaxUpStep,Z+ActorHeight],由第二下界和第二上界构成的区间表示为[Z-TerrainMaxDownStep,Z]。
例如,如图10所示,任一虚拟地形格子的格子中心所在的地平面垂线为直线L,由第一下界和第一上界构成且与任一虚拟地形格子对应的第一高度值区间如1001所示,由第二下界和第二上界构成且与任一虚拟地形格子对应的第二高度值区间作为任一虚拟地形格子对应的第二高度值区间如1002所示。
步骤8022:对第一高度值区间和第二高度值区间进行射线检测,确定任一虚拟地形格子的可通行距离值。
在确定任一虚拟地形格子对应的第一高度值区间和第二高度值区间后,对第一高度值区间和第二高度值区间进行射线检测,以确定该任一虚拟地形格子的可通行距离值。
在一种可能实现方式中,对第一高度值区间和第二高度值区间进行射线检测,确定任一虚拟地形格子的可通行距离值的过程包括以下三个步骤:
步骤1:从第一高度值区间向外发射第一水平射线,确定第一水平射线的射线长度,将第一水平射线的射线长度中的最小值作为任一虚拟地形格子对应的第一距离值。
从第一高度值区间向外发射第一水平射线的方式为:从第一高度值区间内,每间隔第一高度确定一个射线起始位置;从每个射线起始位置向外发射水平射线。此种情况下,第一水平射线包括从各个射线起始位置向外发射的水平射线。示例性地,从每个射线起始位置向外发射的水平射线是指全方位的水平射线。第一高度根据经验设置,或者根据应用场景灵活调整,本申请实施例对此不加以限定。
需要说明的是,水平射线碰到障碍物会终止,水平射线的射线长度是指从射线起始位置到射线终止位置之间的长度。在从第一高度值区间向外发射第一水平射线后,能够确定第一水平射线的射线长度,然后将第一水平射线的射线长度中的最小值作为任一虚拟地形格子对应的第一距离值。
步骤2:从外向第二高度区间发射第二水平射线,确定第二水平射线的终止位置与任一虚拟地形格子的格子中心之间的水平距离,将第二水平射线的终止位置与任一虚拟地形格子的格子中心之间的水平距离中的最大值作为任一虚拟地形格子对应的第二距离值。
从外向第二高度区间发射第二水平射线的方式为:从第二高度值区间内,每间隔第二高度确定一个射线目标位置;从外向每个射线目标位置发射水平射线。此种情况下,第二水平射线包括从外向各个射线目标位置发射的水平射线。示例性地,从外向每个射线目标位置发射的水平射线是指全方位的水平射线。第二高度根据经验设置,或者根据应用场景灵活调整,第二高度与第一高度相同,或者与第一高度不同,本申请实施例对此不加以限定。
射线碰到障碍物会终止,在从外向第二高度区间发射第二水平射线后,能够确定第二水平射线的终止位置,然后确定第二水平射线的终止位置与任一虚拟地形格子的格子中心之间的水平距离,然后将第二水平射线的终止位置与任一虚拟地形格子的格子中心之间的水平距离中的最大值作为任一虚拟地形格子对应的第二距离值。
步骤3:将第一距离值和第二距离值中的最小值作为任一虚拟地形格子的可通行距离值。
在确定第一距离值和第二距离值后,将第一距离值和第二距离值中的最小值作为该任一虚拟地形格子对应的可通行距离值。由此,获取到构成任一虚拟地形单元的任一虚拟地形格子的可通行距离值。
示例性地,基于上述步骤1至步骤3对第一高度值区间和第二高度值区间进行射线检测的二维示意图如图10所示,基于上述步骤1至步骤3对第一高度值区间和第二高度值区间进行射线检测的三维示意图如图11所示。
在另一种可能实现方式中,对第一高度值区间和第二高度值区间进行射线检测,确定任一虚拟地形格子的可通行距离值的过程包括以下4个步骤:
1、从第一高度值区间向外发射第一参考方位的水平射线,确定该第一参考方位的水平射线的射线长度中的最小值UpSDF。
其中,第一参考方位根据经验设置,本申请实施例对此不加以限定。
2、从外向第二高度值区间发射第二参考方位的水平射线,确定该第二参考方位的水平射线的终止位置与任一虚拟地形格子中心之间的水平距离中的最大值DownSDF。
其中,第二参考方位根据经验设置,第二参考方位与第一参考方位相同,或者与第一参考方位不同,本申请实施例对此不加以限定。
3、将UpSDF和DownSDF中的最小值作为该任一虚拟地形格子的一个候选可通行距离值。即取min(UpSDF,DownSDF)为该任一虚拟地形格子的一个候选可通行距离值。
4、在[0,360]角度区间内,旋转水平射线,每旋转一个角度,确定一个新的候选可通行距离值;将得到的全部候选可通行距离值中的最小值作为该任一虚拟地形格子的可通行距离值。
需要说明的是,在旋转水平射线的过程中,水平射线始终与该任一虚拟地形格子的格子中心所在的地平面垂线相垂直。
无论通过哪种方式,均能够通过对第一高度值区间和第二高度值区间进行射线检测,确定构成任一虚拟地形单元的任一虚拟地形格子的可通行距离值。根据确定构成任一虚拟地形单元的任一虚拟地形格子的可通行距离值的方式能够确定构成各个虚拟单元的各个虚拟地形格子的可通行距离值,进而得到至少两个虚拟地形单元的可通行距离值信息。
在步骤803中,基于至少两个虚拟地形单元的高度值信息和至少两个虚拟地形单元的可通行距离值信息,得到虚拟环境对应的至少两个虚拟地形单元的地形信息。
由于虚拟地形单元的地形信息包括虚拟地形格子的高度值信息和虚拟地形格子的可通行距离值信息,所以在得到至少两个虚拟地形单元的高度值信息和至少两个虚拟地形单元的可通行距离值信息后,即可得到虚拟环境对应的至少两个虚拟地形单元的地形信息。
示例性地,假设虚拟环境中包括两层虚拟地形,这两层虚拟地形中的虚拟地形格子的可通行距离值分别如图12中的1201和1202所示。结合图9中所示的虚拟地形中的虚拟地形格子的高度值,能够得到虚拟地形单元的地形信息。例如,结合图9和图12可知,一层虚拟地形中的虚拟地形格子A的高度值zA为3,可通行距离值SDFA为1;另外一层虚拟地形中与该虚拟地形格子A构成同一个虚拟地形单元的虚拟地形格子B的高度值zB为1.3,可通行距离值SDFB为2。
基于本申请实施例,能够实现一种高效的地形系统,能够应用于基于帧同步的游戏类应用程序中,当将本申请实施例提供的方式应用于基于帧同步的游戏类应用程序中时,在实现地形系统的过程中使用定点数计算。本申请实施例提供的方法能够支持多层地形场景,例如,螺旋场景等,能够为游戏玩法提供更多可能性。
参见图13,本申请实施例提供了一种虚拟对象的移动控制装置,该装置包括:
第一确定单元1301,用于响应于目标虚拟对象的移动指令,确定目标虚拟对象对应的目标位置信息和目标虚拟对象的半径;
第二确定单元1302,用于基于目标位置信息和至少两个虚拟地形单元的地形信息,确定目标虚拟对象对应的目标可通行距离值;
第三确定单元1303,用于响应于目标可通行距离值不大于目标虚拟对象的半径,基于目标虚拟对象的原移动方向,确定目标虚拟对象的新移动方向;
控制单元1304,用于控制目标虚拟对象按照新移动方向进行移动。
在一种可能实现方式中,目标位置信息包括目标平面坐标和目标高度值,不同的虚拟地形单元对应不同的平面区域,任一虚拟地形单元的地形信息包括构成任一虚拟地形单元的虚拟地形格子的高度值;第二确定单元1302,用于基于目标平面坐标和至少两个虚拟地形单元分别对应的平面区域,在至少两个虚拟地形单元中确定目标虚拟地形单元;基于目标高度值和构成目标虚拟地形单元的虚拟地形格子的高度值,在构成目标虚拟地形单元的虚拟地形格子中确定目标虚拟地形格子;基于目标虚拟地形格子,确定目标虚拟对象对应的目标可通行距离值。
在一种可能实现方式中,任一虚拟地形单元的地形信息还包括构成任一虚拟地形单元的虚拟地形格子的可通行距离值;第二确定单元1302,还用于确定目标虚拟地形格子对应的第一相邻虚拟地形格子;基于第一相邻虚拟地形格子的可通行距离值以及目标平面坐标与目标平面区域的参考边界之间的距离,确定目标虚拟对象对应的目标可通行距离值,目标平面区域为目标虚拟地形单元对应的平面区域。
在一种可能实现方式中,虚拟环境中存在目标动态障碍物,第二确定单元1302,还用于基于目标虚拟地形格子,确定目标虚拟对象对应的第一可通行距离值;基于目标平面坐标和目标动态障碍物的平面投影,确定目标虚拟对象对应的第二可通行距离值;将第一可通行距离值和第二可通行距离值中的最小值作为目标虚拟对象对应的目标可通行距离值。
在一种可能实现方式中,目标动态障碍物的平面投影为目标圆盘;第二确定单元1302,还用于计算目标圆盘的圆盘中心的平面坐标和目标平面坐标之间的第一距离;将第一距离与目标圆盘的半径之间的差值作为目标虚拟对象对应的第二可通行距离值。
在一种可能实现方式中,目标动态障碍物的平面投影为目标矩形;第二确定单元,还用于基于目标平面坐标、目标矩形的矩形中心的平面坐标、目标矩形对应的转向角以及目标矩形的矩形中心对应的边界距离,确定目标虚拟对象对应的第二可通行距离值。
在一种可能实现方式中,第三确定单元1303,用于确定目标虚拟对象对应的梯度方向;基于梯度方向和目标虚拟对象的原移动方向,确定目标虚拟对象的新移动方向。
在一种可能实现方式中,参见图14,该装置还包括:
检测单元1305,用于对虚拟环境中的虚拟地形进行射线检测,得到虚拟环境对应的至少两个虚拟地形单元的高度值信息,任一虚拟地形单元的高度值信息包括构成任一虚拟地形单元的虚拟地形格子的高度值;
获取单元1306,用于对于至少两个虚拟地形单元中的任一虚拟地形单元,基于任一虚拟地形单元的高度值信息,获取任一虚拟地形单元的可通行距离值信息,任一虚拟地形单元的可通行距离值信息包括构成任一虚拟地形单元的虚拟地形格子的可通行距离值;
获取单元1306,还用于基于至少两个虚拟地形单元的高度值信息和至少两个虚拟地形单元的可通行距离值信息,得到虚拟环境对应的至少两个虚拟地形单元的地形信息。
在一种可能实现方式中,获取单元1306,还用于对于构成任一虚拟地形单元的任一虚拟地形格子,基于任一虚拟地形格子的高度值,确定任一虚拟地形格子对应的第一高度值区间和任一虚拟地形格子对应的第二高度值区间;对第一高度值区间和第二高度值区间进行射线检测,确定任一虚拟地形格子的可通行距离值。
在一种可能实现方式中,获取单元1306,还用于从第一高度值区间向外发射第一水平射线,确定第一水平射线的射线长度,将第一水平射线的射线长度中的最小值作为任一虚拟地形格子对应的第一距离值;从外向第二高度值区间发射第二水平射线,确定第二水平射线的终止位置与任一虚拟地形格子的格子中心之间的水平距离,将第二水平射线的终止位置与任一虚拟地形格子的格子中心之间的水平距离中的最大值作为任一虚拟地形格子对应的第二距离值;将第一距离值和第二距离值中的最小值作为任一虚拟地形格子的可通行距离值。
在一种可能实现方式中,获取单元1306,还用于将任一虚拟地形格子的高度值和第一参数的和作为第一下界;将任一虚拟地形格子的高度值和第二参数的和作为第一上界;将由第一下界和第一上界构成且与任一虚拟地形格子对应的高度值区间作为任一虚拟地形格子对应的第一高度值区间;将任一虚拟地形格子的高度值和第三参数的差值作为第二下界;将任一虚拟地形格子的高度值作为第二上界;将由第二下界和第二上界构成且与任一虚拟地形格子对应的高度值区间作为任一虚拟地形格子对应的第二高度值区间;其中,第一参数用于指示虚拟对象最大可跨越的障碍物高度,第二参数用于指示虚拟对象高度,第三参数用于指示虚拟对象最大可跨越的虚拟悬崖高度。
在一种可能实现方式中,控制单元1304,还用于响应于目标可通行距离值大于目标虚拟对象的半径,控制目标虚拟对象按照原移动方向进行移动。
在本申请实施例中,终端存储的是虚拟环境对应的至少两个虚拟地形单元的地形信息,相比于存储体素数据,存储地形信息有利于节省存储空间,进而提高虚拟对象的移动控制性能;此外,在预先存储了虚拟地形单元的地形信息的基础上,在确定虚拟对象无法按照原移动方向继续移动时,确定新移动方向且控制虚拟对象按照新移动方向进行移动,使得虚拟对象的移动控制的准确性较高。
需要说明的是,上述实施例提供的装置在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图15是本申请实施例提供的一种终端的结构示意图。示例性地,该终端可以是:智能手机、平板电脑、笔记本电脑或台式电脑。终端还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端包括有:处理器1501和存储器1502。
处理器1501可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1501可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1501也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1501可以集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1501还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1502可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1502还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1502中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1501所执行以实现本申请中方法实施例提供的虚拟对象的移动控制方法。
在一些实施例中,终端还可选包括有:外围设备接口1503和至少一个外围设备。处理器1501、存储器1502和外围设备接口1503之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1503相连。具体地,外围设备包括:射频电路1504、显示屏1505、摄像头单元件1506、音频电路1507、定位单元件1508和电源1509中的至少一种。
外围设备接口1503可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器1501和存储器1502。在一些实施例中,处理器1501、存储器1502和外围设备接口1503被集成在同一芯片或电路板上;在一些其他实施例中,处理器1501、存储器1502和外围设备接口1503中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1504用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1504通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1504将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1504包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片单元、用户身份模块卡等等。射频电路1504可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1504还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1505用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意单元合。当显示屏1505是触摸显示屏时,显示屏1505还具有采集在显示屏1505的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1501进行处理。此时,显示屏1505还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1505可以为一个,设置在终端的前面板;在另一些实施例中,显示屏1505可以为至少两个,分别设置在终端的不同表面或呈折叠设计;在另一些实施例中,显示屏1505可以是柔性显示屏,设置在终端的弯曲表面上或折叠面上。甚至,显示屏1505还可以设置成非矩形的不规则图形,也即异形屏。显示屏1505可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头单元件1506用于采集图像或视频。可选地,摄像头单元件1506包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头单元件1506还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的单元合,可以用于不同色温下的光线补偿。
音频电路1507可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1501进行处理,或者输入至射频电路1504以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1501或射频电路1504的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1507还可以包括耳机插孔。
定位单元件1508用于定位终端的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位单元件1508可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位单元件。
电源1509用于为终端中的各个单元件进行供电。电源1509可以是交流电、直流电、一次性电池或可充电电池。当电源1509包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端还包括有一个或多个传感器1510。该一个或多个传感器1510包括但不限于:加速度传感器1511、陀螺仪传感器1512、压力传感器1513、指纹传感器1514、光学传感器1515以及接近传感器1516。
加速度传感器1511可以检测以终端建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1511可以用于检测重力加速度在三个坐标轴上的分量。处理器1501可以根据加速度传感器1511采集的重力加速度信号,控制显示屏1505以横向视图或纵向视图进行用户界面的显示。加速度传感器1511还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器1512可以检测终端的机体方向及转动角度,陀螺仪传感器1512可以与加速度传感器1511协同采集用户对终端的3D动作。处理器1501根据陀螺仪传感器1512采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器1513可以设置在终端的侧边框和/或显示屏1505的下层。当压力传感器1513设置在终端的侧边框时,可以检测用户对终端的握持信号,由处理器1501根据压力传感器1513采集的握持信号进行左右手识别或快捷操作。当压力传感器1513设置在显示屏1505的下层时,由处理器1501根据用户对显示屏1505的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器1514用于采集用户的指纹,由处理器1501根据指纹传感器1514采集到的指纹识别用户的身份,或者,由指纹传感器1514根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1501授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1514可以被设置在终端的正面、背面或侧面。当终端上设置有物理按键或厂商Logo时,指纹传感器1514可以与物理按键或厂商Logo集成在一起。
光学传感器1515用于采集环境光强度。在一个实施例中,处理器1501可以根据光学传感器1515采集的环境光强度,控制显示屏1505的显示亮度。具体地,当环境光强度较高时,调高显示屏1505的显示亮度;当环境光强度较低时,调低显示屏1505的显示亮度。在另一个实施例中,处理器1501还可以根据光学传感器1515采集的环境光强度,动态调整摄像头单元件1506的拍摄参数。
接近传感器1516,也称距离传感器,通常设置在终端的前面板。接近传感器1516用于采集用户与终端的正面之间的距离。在一个实施例中,当接近传感器1516检测到用户与终端的正面之间的距离逐渐变小时,由处理器1501控制显示屏1505从亮屏状态切换为息屏状态;当接近传感器1516检测到用户与终端的正面之间的距离逐渐变大时,由处理器1501控制显示屏1505从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图15中示出的结构并不构成对终端的限定,可以包括比图示更多或更少的单元件,或者单元合某些单元件,或者采用不同的单元件布置。
在示例性实施例中,还提供了一种计算机设备,该计算机设备包括处理器和存储器,该存储器中存储有至少一条计算机程序。该至少一条计算机程序由一个或者一个以上处理器加载并执行,以实现上述任一种虚拟对象的移动控制方法。
在示例性实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条计算机程序,该至少一条计算机程序由计算机设备的处理器加载并执行,以实现上述任一种虚拟对象的移动控制方法。
在一种可能实现方式中,上述计算机可读存储介质可以是只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、只读光盘(Compact DiscRead-Only Memory,CD-ROM)、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述任一种虚拟对象的移动控制方法。
需要说明的是,本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以上示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
以上所述仅为本申请的示例性实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (15)
1.一种虚拟对象的移动控制方法,其特征在于,所述方法应用于终端,所述终端存储有虚拟环境对应的至少两个虚拟地形单元的地形信息;所述方法包括:
响应于目标虚拟对象的移动指令,确定所述目标虚拟对象对应的目标位置信息和所述目标虚拟对象的半径;
基于所述目标位置信息和所述至少两个虚拟地形单元的地形信息,确定所述目标虚拟对象对应的目标可通行距离值;
响应于所述目标可通行距离值不大于所述目标虚拟对象的半径,基于所述目标虚拟对象的原移动方向,确定所述目标虚拟对象的新移动方向,控制所述目标虚拟对象按照所述新移动方向进行移动。
2.根据权利要求1所述的方法,其特征在于,所述目标位置信息包括目标平面坐标和目标高度值,不同的虚拟地形单元对应不同的平面区域,任一虚拟地形单元的地形信息包括构成所述任一虚拟地形单元的虚拟地形格子的高度值;
所述基于所述目标位置信息和所述至少两个虚拟地形单元的地形信息,确定所述目标虚拟对象对应的目标可通行距离值,包括:
基于所述目标平面坐标和所述至少两个虚拟地形单元分别对应的平面区域,在所述至少两个虚拟地形单元中确定目标虚拟地形单元;
基于所述目标高度值和构成所述目标虚拟地形单元的虚拟地形格子的高度值,在所述构成所述目标虚拟地形单元的虚拟地形格子中确定目标虚拟地形格子;
基于所述目标虚拟地形格子,确定所述目标虚拟对象对应的目标可通行距离值。
3.根据权利要求2所述的方法,其特征在于,所述任一虚拟地形单元的地形信息还包括构成所述任一虚拟地形单元的虚拟地形格子的可通行距离值;所述基于所述目标虚拟地形格子,确定所述目标虚拟对象对应的目标可通行距离值,包括:
确定所述目标虚拟地形格子对应的第一相邻虚拟地形格子;
基于所述第一相邻虚拟地形格子的可通行距离值以及所述目标平面坐标与目标平面区域的参考边界之间的距离,确定所述目标虚拟对象对应的目标可通行距离值,所述目标平面区域为所述目标虚拟地形单元对应的平面区域。
4.根据权利要求2所述的方法,其特征在于,所述虚拟环境中存在目标动态障碍物,所述基于所述目标虚拟地形格子,确定所述目标虚拟对象对应的目标可通行距离值,包括:
基于所述目标虚拟地形格子,确定所述目标虚拟对象对应的第一可通行距离值;
基于所述目标平面坐标和所述目标动态障碍物的平面投影,确定所述目标虚拟对象对应的第二可通行距离值;
将所述第一可通行距离值和所述第二可通行距离值中的最小值作为所述目标虚拟对象对应的目标可通行距离值。
5.根据权利要求4所述的方法,其特征在于,所述目标动态障碍物的平面投影为目标圆盘;所述基于所述目标平面坐标和所述目标动态障碍物的平面投影,确定所述目标虚拟对象对应的第二可通行距离值,包括:
计算所述目标圆盘的圆盘中心的平面坐标和所述目标平面坐标之间的第一距离;
将所述第一距离与所述目标圆盘的半径之间的差值作为所述目标虚拟对象对应的第二可通行距离值。
6.根据权利要求4所述的方法,其特征在于,所述目标动态障碍物的平面投影为目标矩形;所述基于所述目标平面坐标和所述目标动态障碍物的平面投影,确定所述目标虚拟对象对应的第二可通行距离值,包括:
基于所述目标平面坐标、所述目标矩形的矩形中心的平面坐标、所述目标矩形对应的转向角以及所述目标矩形的矩形中心对应的边界距离,确定所述目标虚拟对象对应的第二可通行距离值。
7.根据权利要求1-6任一所述的方法,其特征在于,所述基于所述目标虚拟对象的原移动方向,确定所述目标虚拟对象的新移动方向,包括:
确定所述目标虚拟对象对应的梯度方向;
基于所述梯度方向和所述目标虚拟对象的原移动方向,确定所述目标虚拟对象的新移动方向。
8.根据权利要求1-6任一所述的方法,其特征在于,所述基于所述目标位置信息和所述至少两个虚拟地形单元的地形信息,确定所述目标虚拟对象对应的目标可通行距离值之前,所述方法还包括:
对虚拟环境中的虚拟地形进行射线检测,得到所述虚拟环境对应的至少两个虚拟地形单元的高度值信息,任一虚拟地形单元的高度值信息包括构成所述任一虚拟地形单元的虚拟地形格子的高度值;
对于所述至少两个虚拟地形单元中的任一虚拟地形单元,基于所述任一虚拟地形单元的高度值信息,获取所述任一虚拟地形单元的可通行距离值信息,所述任一虚拟地形单元的可通行距离值信息包括构成所述任一虚拟地形单元的虚拟地形格子的可通行距离值;
基于所述至少两个虚拟地形单元的高度值信息和所述至少两个虚拟地形单元的可通行距离值信息,得到所述虚拟环境对应的至少两个虚拟地形单元的地形信息。
9.根据权利要求8所述的方法,其特征在于,所述基于所述任一虚拟地形单元的高度值信息,获取所述任一虚拟地形单元的可通行距离值信息,包括:
对于构成所述任一虚拟地形单元的任一虚拟地形格子,基于所述任一虚拟地形格子的高度值,确定所述任一虚拟地形格子对应的第一高度值区间和所述任一虚拟地形格子对应的第二高度值区间;
对所述第一高度值区间和所述第二高度值区间进行射线检测,确定所述任一虚拟地形格子的可通行距离值。
10.根据权利要求9所述的方法,其特征在于,所述对所述第一高度值区间和所述第二高度值区间进行射线检测,确定所述任一虚拟地形格子的可通行距离值,包括:
从所述第一高度值区间向外发射第一水平射线,确定所述第一水平射线的射线长度,将所述第一水平射线的射线长度中的最小值作为所述任一虚拟地形格子对应的第一距离值;
从外向所述第二高度值区间发射第二水平射线,确定所述第二水平射线的终止位置与所述任一虚拟地形格子的格子中心之间的水平距离,将所述第二水平射线的终止位置与所述任一虚拟地形格子的格子中心之间的水平距离中的最大值作为所述任一虚拟地形格子对应的第二距离值;
将所述第一距离值和所述第二距离值中的最小值作为所述任一虚拟地形格子的可通行距离值。
11.根据权利要求9或10所述的方法,其特征在于,所述基于所述任一虚拟地形格子的高度值,确定所述任一虚拟地形格子对应的第一高度值区间和所述任一虚拟地形格子对应的第二高度值区间,包括:
将所述任一虚拟地形格子的高度值和第一参数的和作为第一下界;将所述任一虚拟地形格子的高度值和第二参数的和作为第一上界;将由所述第一下界和所述第一上界构成且与所述任一虚拟地形格子对应的高度值区间作为所述任一虚拟地形格子对应的第一高度值区间;
将所述任一虚拟地形格子的高度值和第三参数的差值作为第二下界;将所述任一虚拟地形格子的高度值作为第二上界;将由所述第二下界和所述第二上界构成且与所述任一虚拟地形格子对应的高度值区间作为所述任一虚拟地形格子对应的第二高度值区间;
其中,所述第一参数用于指示虚拟对象最大可跨越的障碍物高度,所述第二参数用于指示虚拟对象高度,所述第三参数用于指示虚拟对象最大可跨越的虚拟悬崖高度。
12.根据权利要求1-6任一所述的方法,其特征在于,所述确定所述目标虚拟对象对应的目标可通行距离值之后,所述方法还包括:
响应于所述目标可通行距离值大于所述目标虚拟对象的半径,控制所述目标虚拟对象按照所述原移动方向进行移动。
13.一种虚拟对象的移动控制装置,其特征在于,所述装置包括:
第一确定单元,用于响应于目标虚拟对象的移动指令,确定所述目标虚拟对象对应的目标位置信息和所述目标虚拟对象的半径;
第二确定单元,用于基于所述目标位置信息和所述至少两个虚拟地形单元的地形信息,确定所述目标虚拟对象对应的目标可通行距离值;
第三确定单元,用于响应于所述目标可通行距离值不大于所述目标虚拟对象的半径,基于所述目标虚拟对象的原移动方向,确定所述目标虚拟对象的新移动方向;
控制单元,用于控制所述目标虚拟对象按照所述新移动方向进行移动。
14.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条计算机程序,所述至少一条计算机程序由所述处理器加载并执行,以实现如权利要求1至12任一所述的虚拟对象的移动控制方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行,以实现如权利要求1至12任一所述的虚拟对象的移动控制方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011315153.7A CN113384902A (zh) | 2020-11-20 | 2020-11-20 | 虚拟对象的移动控制方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011315153.7A CN113384902A (zh) | 2020-11-20 | 2020-11-20 | 虚拟对象的移动控制方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113384902A true CN113384902A (zh) | 2021-09-14 |
Family
ID=77616591
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011315153.7A Pending CN113384902A (zh) | 2020-11-20 | 2020-11-20 | 虚拟对象的移动控制方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113384902A (zh) |
-
2020
- 2020-11-20 CN CN202011315153.7A patent/CN113384902A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108245893B (zh) | 三维虚拟环境中虚拟对象的姿态确定方法、装置及介质 | |
CN108619721B (zh) | 虚拟场景中的距离信息显示方法、装置及计算机设备 | |
CN111126182B (zh) | 车道线检测方法、装置、电子设备及存储介质 | |
JP7026819B2 (ja) | カメラの位置決め方法および装置、端末並びにコンピュータプログラム | |
CN111068324B (zh) | 虚拟对象控制方法、装置、设备及存储介质 | |
WO2019205881A1 (zh) | 虚拟环境中的信息显示方法、装置、设备及存储介质 | |
JP2022537614A (ja) | マルチ仮想キャラクターの制御方法、装置、およびコンピュータプログラム | |
CN109615686B (zh) | 潜在可视集合的确定方法、装置、设备及存储介质 | |
CN112150560B (zh) | 确定消失点的方法、装置及计算机存储介质 | |
CN112245912B (zh) | 虚拟场景中的声音提示方法、装置、设备及存储介质 | |
JP2024509064A (ja) | 位置マークの表示方法及び装置、機器並びにコンピュータプログラム | |
CN112308103B (zh) | 生成训练样本的方法和装置 | |
CN109806583B (zh) | 用户界面显示方法、装置、设备及系统 | |
CN112306332B (zh) | 确定选中目标的方法、装置、设备及存储介质 | |
CN111589143B (zh) | 动画播放方法、装置、设备及存储介质 | |
CN110597389B (zh) | 虚拟场景中的虚拟对象控制方法、计算机设备及存储介质 | |
CN112717393B (zh) | 虚拟场景中的虚拟物件显示方法、装置、设备及存储介质 | |
CN112950535B (zh) | 视频处理方法、装置、电子设备及存储介质 | |
CN113384902A (zh) | 虚拟对象的移动控制方法、装置、设备及存储介质 | |
CN113689484B (zh) | 深度信息的确定方法、装置、终端及存储介质 | |
CN112755533B (zh) | 虚拟载具涂装方法、装置、设备及存储介质 | |
CN113058266B (zh) | 虚拟环境中场景字体的显示方法、装置、设备及介质 | |
CN111754631B (zh) | 三维模型的生成方法、装置、设备及可读存储介质 | |
CN114470763A (zh) | 显示交互画面的方法、装置、设备及存储介质 | |
CN115869624A (zh) | 游戏区域的标记方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40051748 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |