三维虚拟环境中虚拟对象的姿态确定方法、装置及介质与流程

文档序号:14876600发布日期:2018-07-07 07:14阅读:179来源:国知局

本申请实施例涉及计算机图形处理领域,特别涉及一种三维虚拟环境中虚拟对象的姿态确定方法、装置及可读介质。



背景技术:

在诸如智能手机、平板电脑之类的终端上,存在很多具有三维虚拟环境的应用程序,如:虚拟现实应用程序、三维地图程序、军事仿真程序、第一人称射击游戏(first-personshootinggame,fps)、多人在线战术竞技游戏(multiplayeronlinebattlearenagames,moba)等。

在上述应用程序中,虚拟人物、虚拟物体、地面等显示元素是使用三维立体模型来实现三维效果的。虚拟人物可以在三维虚拟环境中处于行走、坐立、站立、平躺和匍匐等姿态。当使用者需要虚拟人物以匍匐的姿势在地面上趴下或者前进时,通常由使用者在应用程序的用户界面上触发匍匐指令后,虚拟人物便会在三维虚拟环境中沿水平方向趴下。

当地面条件较为复杂时,如:地面凹凸不平、有障碍物等,会造成沿水平方向趴下的虚拟人物存在一部分身体区域陷入地面中或翘起在空中,不符合现实的物理规律,降低了三维虚拟环境的真实性。



技术实现要素:

本申请实施例提供了一种三维虚拟环境中虚拟对象的姿态确定方法、装置及可读介质,可以解决或缓解虚拟人物在沿水平方向趴下时,不符合现实的物理规律,降低了三维虚拟环境的真实性的问题。所述技术方案如下:

一方面,本申请实施例提供了一种三维虚拟环境中虚拟对象的姿态确定方法,该方法包括:

确定虚拟对象的至少一个采样点,采样点是用于相对于地面做碰撞检测的点;

根据至少一个采样点和虚拟对象所处地面,确定虚拟对象相对于地面的法线方向;

根据法线方向确定虚拟对象在三维虚拟环境中的贴地姿态。

另一方面,提供了一种三维虚拟环境中虚拟人物的姿态确定方法,该方法包括:

显示第一用户界面,第一用户界面包括在三维虚拟环境的地面上处于站立姿态的虚拟人物;

接收姿态切换指令,姿态切换指令用于指示虚拟人物从站立姿态切换为贴地姿态;

根据虚拟人物相对于地面的法线方向,确定虚拟人物的贴地姿态;

显示第二用户界面,第二用户界面包括在三维虚拟环境的地面上处于贴地姿态的虚拟人物。

另一方面,提供了一种三维虚拟环境中虚拟人物的姿态确定方法,该方法包括:

显示第三用户界面,第三用户界面包括在三维虚拟环境的第一地面位置上处于第一贴地姿态的虚拟人物;

接收移动指令,移动指令用于指示虚拟人物从第一地面位置进行移动;

根据虚拟人物相对于第二地面位置的法线方向,确定虚拟人物的第二贴地姿态;

显示第四用户界面,第四用户界面包括在三维虚拟环境的第二地面位置上处于第二贴地姿态的虚拟人物。

另一方面,提供了一种三维虚拟环境中虚拟人物的姿态确定方法,该方法包括:

显示第一用户界面,第一用户界面包括在三维虚拟环境的地面上处于站立姿态的虚拟人物;

接收姿态切换指令,姿态切换指令用于指示虚拟人物从站立姿态切换为贴地姿态;

显示第二用户界面,第二用户界面包括在三维虚拟环境的地面上处于贴地姿态的虚拟人物,地面包括呈夹角的第一地面区域和第二地面区域,虚拟人物的头部在第一地面区域悬空,虚拟人物的脚部在第二地面区域悬空,虚拟人物的腰部在第一地面区域和第二地面区域的交界处嵌入地面。

另一方面,提供了一种三维虚拟环境中虚拟对象的姿态确定装置,该装置包括:

采样点确定模块,用于确定虚拟对象的至少一个采样点,采样点是用于相对于地面进行碰撞检测的点;

法线确定模块,用于根据至少一个采样点和虚拟对象所处地面,确定虚拟对象相对于地面的法线方向;

姿态确定模块,用于根据法线方向确定虚拟对象在三维虚拟环境中的贴地姿态。

另一方面,提供了一种三维虚拟环境中虚拟人物的姿态确定装置,该装置包括:

第一显示模块,用于显示第一用户界面,第一用户界面包括在三维虚拟环境的地面上处于站立姿态的虚拟人物;

第一接收模块,用于接收姿态切换指令,姿态切换指令用于指示虚拟人物从站立姿态切换为贴地姿态;

第一确定模块,用于根据虚拟人物相对于地面的法线方向,确定虚拟人物的贴地姿态;

第一显示模块,还用于显示第二用户界面,第二用户界面包括在三维虚拟环境的地面上处于贴地姿态的虚拟人物。

另一方面,提供了一种三维虚拟环境中虚拟人物的姿态确定装置,该装置包括:

第二显示模块,用于显示第三用户界面,第三用户界面包括在三维虚拟环境的第一地面位置上处于第一贴地姿态的虚拟人物;

第二接收模块,用于接收移动指令,移动指令用于指示虚拟人物从第一地面位置进行移动;

第二确定模块,用于根据虚拟人物相对于第二地面位置的法线方向,确定虚拟人物的第二贴地姿态;

第二显示模块,还用于显示第四用户界面,第四用户界面包括在三维虚拟环境的第二地面位置上处于第二贴地姿态的虚拟人物。

另一方面,还提供了一种三维虚拟环境中虚拟人物的姿态确定装置,该装置包括:

第三显示模块,用于显示第一用户界面,第一用户界面包括在三维虚拟环境的地面上处于站立姿态的虚拟人物;

第三接收模块,用于接收姿态切换指令,姿态切换指令用于指示虚拟人物从站立姿态切换为贴地姿态;

第三显示模块,还用于显示第二用户界面,第二用户界面包括在三维虚拟环境的地面上处于贴地姿态的虚拟人物,地面包括呈夹角的第一地面区域和第二地面区域,虚拟人物的头部在第一地面区域悬空,虚拟人物的脚部在第二地面区域悬空,虚拟人物的腰部在第一地面区域和第二地面区域的交界处嵌入地面。

另一方面,还提供了一种电子装置,电子装置包括处理器和存储器,存储器中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如上述本申请第一方面及其可选的实施例中任一所述的三维虚拟环境中虚拟对象的姿态确定方法。

另一方面,还提供了一种计算机可读存储介质,存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如上述本申请第一方面及其可选的实施例中任一所述的三维虚拟环境中虚拟对象的姿态确定方法。

另一方面,提供了一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行如上述本申请第一方面及其可选的实施例中任一所述的三维虚拟环境中虚拟对象的姿态确定方法。

本申请实施例提供的技术方案带来的有益效果至少包括:

通过根据采样点确定虚拟对象所处地面的法线方向,并根据该法线方向得到虚拟对象在三维虚拟环境中的贴地姿态,由于贴地姿态是根据地面的法线方向确定得到的,通过该法线方向可以模拟该虚拟对象所处地面的近似平面,虚拟对象可以以与该近似平面平行的姿态进行贴地,达到了使虚拟对象的贴地状态更加符合现实的物理规律,提供了更真实的显示效果。

附图说明

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

图1a是本申请一个示例性实施例提供的地面坐标轴的示意图;

图1b是本申请一个示例性实施例提供的对象坐标轴的示意图;

图2是本申请一个示例性实施例提供的三维虚拟环境中虚拟对象的姿态确定方法的流程图;

图3是本申请另一个示例性实施例提供的三维虚拟环境中虚拟对象的姿态确定方法的流程图;

图4a至图4c是本申请一个示例性实施例提供的三维虚拟环境中虚拟对象的姿态确定方法的原理图;

图5是本申请另一个示例性实施例提供的三维虚拟环境中虚拟对象的姿态确定方法的流程图;

图6是本申请一个示例性实施例提供的用户界面示意图;

图7是本申请另一个示例性实施例提供的三维虚拟环境中虚拟对象的姿态确定方法的流程图;

图8是本申请另一个示例性实施例提供的三维虚拟环境中虚拟对象的姿态确定方法的原理图;

图9a至图9b是本申请另一个示例性实施例提供的用户界面示意图;

图10是本申请另一个示例性实施例提供的三维虚拟环境中虚拟对象的姿态确定方法的流程图;

图11是本申请另一个示例性实施例提供的三维虚拟环境中虚拟对象的姿态确定方法的原理图;

图12是本申请另一个示例性实施例提供的三维虚拟环境中虚拟对象的姿态确定方法的流程图;

图13是本申请另一个示例性实施例提供的用户界面示意图;

图14是本申请另一个示例性实施例提供的三维虚拟环境中虚拟对象的姿态确定方法的流程图;

图15是本申请另一个示例性实施例提供的用户界面示意图;

图16是本申请一个示例性实施例提供的三维虚拟环境中虚拟对象的姿态确定装置的结构框图;

图17是本申请另一个示例性实施例提供的三维虚拟环境中虚拟人物的姿态确定装置的结构框图;

图18是本申请另一个示例性实施例提供的三维虚拟环境中虚拟人物的姿态确定装置的结构框图;

图19是本申请另一个示例性实施例提供的三维虚拟环境中虚拟人物的姿态确定装置的结构框图;

图20是本申请一个示例性实施例提供的终端的结构框图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

首先,对本申请实施例中涉及的名词进行解释:

三维虚拟环境:是应用程序在终端上运行时提供的三维虚拟环境。该三维虚拟环境可以是对真实世界的仿真环境,也可以是半仿真半虚构的环境,也可以是纯虚构的环境。

虚拟对象:虚拟对象是指在三维虚拟环境中的可活动对象。该可活动对象可以是虚拟人物、虚拟动物、动漫人物等,比如:在三维虚拟环境中显示的人物、动物、植物、油桶、墙壁、石块等。可选地,虚拟对象是基于动画骨骼技术创建的三维立体模型。每个虚拟对象在三维虚拟环境中具有自身的形状和体积,占据三维虚拟环境中的一部分空间。通常,一个虚拟对象包括一个中心点,当该虚拟对象是规则物体时,该中心点是该虚拟对象的几何中心;当该虚拟对象是不规则物体时,该中心点可以是根据该虚拟对象的运动状态而预先设置的。

采样点:该采样点是用于将虚拟对象相对于地面做碰撞检测的点。该采样点可以是一个、两个、三个或者更多。而且,该采样点的选取方式可以根据采样点的个数的不同进行改变,如:当采样点是一个时,可以将该虚拟对象的中心点确定为采样点;当采样点是两个时,可以根据虚拟对象的中心点选取前部采样点和后部采样点作为采样点;当采样点是三个时,可以根据虚拟对象的中心点选取前部采样点、后部采样点以及侧方采样点作为采样点。其中,中心点是虚拟对象的中心点,前部采样点是从中心点向前第一距离的点,后部采样点是从中心点向后第二距离的点,侧方采样点是从中心点向左第三距离的或向右第四距离的点。采样点可以位于虚拟对象的三维立体模型的内部,也可以位于虚拟对象的三维立体模型的外部,本申请对此不加以限定。

贴地姿态包括但不限于:趴地姿态、仰躺姿态、匍匐姿态中的至少一种。可选地,该贴地姿态是上述虚拟对象在三维虚拟环境中表现出来的一种姿态。可选地,该贴地姿态包括虚拟对象的三维立体模型在贴地时相对于地面坐标系的俯仰角(英文:pitch)、偏航角(英文:yaw)和翻滚角(英文:roll)中的至少一个角度。

贴地点:该贴地点为虚拟对象在三维虚拟环境中处于贴地姿态时,与地面进行碰撞检测得到的点。可选地,该贴地点是由上述采样点对地面做碰撞检测,并在地面上得到的至少一个点。

碰撞检测:碰撞检测是用于在三维虚拟环境中对不同的虚拟对象之间的碰撞进行检测的技术,如:在三维虚拟环境中,虚拟人物与虚拟人物之间的碰撞、虚拟人物与墙壁之间的碰撞、虚拟人物与地面之间的碰撞等。可选地,可以根据该虚拟对象确定一个采样点,并通过该采样点与其他虚拟对象进行碰撞检测。

地面坐标系:上述三维虚拟环境中具有一个地面坐标系,该地面坐标系用于对三维虚拟环境中的虚拟对象的坐标、方向向量、运动矢量等参数进行衡量,通常,该地面坐标系包括三个坐标轴:x轴、y轴以及z轴,如图1a所示。可选地,x轴和z轴所在平面是水平面,也即基准地面,y轴的上半轴表示相对于地面的高度。其中,虚拟对象在三维虚拟环境中的姿态参数包括:三维坐标(x,y,z),其中,x和z代表虚拟对象相对于地面的坐标,y代表虚拟对象相对于地面的高度。

对象坐标系:对象坐标系为以虚拟对象的中心点为原点所作的坐标系,该对象坐标系用于结合地面坐标系对虚拟对象相对于三维虚拟环境的位置、角度、距离等参数进行衡量,通常,该对象坐标系包括三个坐标轴:x轴、y轴以及z轴,如图1b所示。可选地,以虚拟对象为虚拟人物为例进行说明,x轴为从原点出发,指向身体左侧的坐标轴,z轴为从原点出发,指向头顶方向的坐标轴,y轴为从原点出发,垂直背部向上的坐标轴,其中,x轴、y轴以及z轴两两垂直。可选地,当虚拟人物处于贴地姿态,且背部朝上时,y轴方向即为根据虚拟人物在地面上的贴地点所作的法线的方向。

结合地图坐标系和对象坐标系可以得到虚拟对象的三个旋转角,也可称为欧拉角:俯仰角(英文:pitch)、偏航角(英文:yaw)以及翻滚角(英文:roll):

俯仰角:俯仰角为对象坐标系中z轴与地图坐标系中水平面的夹角,当对象坐标系中z轴正半轴的朝向位于地图坐标系的原点的水平面之上时,俯仰角为正;当对象坐标系中z轴正半轴的朝向位于地图坐标系的原点的水平面之下时,俯仰角为负;

偏航角:对象坐标系中的z轴在地面坐标系中的水平面上的投影,与地面坐标系中的x轴的夹角;

翻滚角:对象坐标系中的y轴与通过地面坐标系的x轴的铅垂面,即xoy面之间的夹角。

本申请中的终端可以是手机、平板电脑、电子书阅读器、mp3(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)播放器、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。该终端中安装和运行有支持三维虚拟环境的应用程序。该应用程序可以是虚拟现实应用程序、三维地图程序、军事仿真程序、fps游戏、moba游戏中的任意一种。

图2是本申请一个示例性的实施例提供的三维虚拟环境中虚拟对象的姿态确定方法的流程图,本实施例以该虚拟对象的姿态确定方法应用在终端中为例进行说明,该虚拟对象的姿态确定方法包括:

步骤201,确定虚拟对象的至少一个采样点。

可选地,该采样点是用于将虚拟对象相对于地面进行碰撞检测的点。

可选地,该虚拟对象的至少一个采样点可以是根据虚拟对象的中心点确定的,也可以是预先设置的。

其中,虚拟对象的中心点可以是预先设置的。可选地,当该虚拟对象是规则物体时,该中心点可以是该虚拟对象的几何中心,如:正方体的几何中心、球体的几何中心、长方体的几何中心等;当该虚拟对象为不规则物体时,该中心点可以是根据该虚拟对象的运动状态预先设置的中心点,以虚拟对象是虚拟人物为例进行说明:当虚拟人物处于站立姿势时,该虚拟人物的中心点为腹部的预设点,当虚拟人物处于蹲下姿势时,该虚拟人物的中心点为胸部的预设点。

可选地,该采样点的个数是一个、两个或者三个,本申请实施例对此不加以限定。

步骤202,根据至少一个采样点和虚拟对象所处地面,确定虚拟对象相对于地面的法线方向。

可选地,终端可以根据至少一个采样点和虚拟对象所处的地面,确定该虚拟对象相对于地面的法线方向,该法线方向为垂直于上述地面的方向。

可选地,该地面是非水平地面,该非水平地面包括具有坡度的区域、曲面区域、凹陷区域和凸起区域中的至少一种。若地面是非水平地面,该法线方向用于表示将非水平地面视为一个近似平面时,虚拟对象相对于该近似平面的垂直方向。

可选地,上述法线方向的定义是以数学原理角度定义的,该近似平面不一定需要实际计算得到。本申请可以根据采样点直接对法线方向进行计算,本申请对该近似平面和/或法线方向的确定方式不加以限定。

步骤203,根据法线方向确定虚拟对象在三维虚拟环境中的贴地姿态。

可选地,终端根据法线方向对虚拟对象进行旋转,使得虚拟对象在贴地时与非水平地面对应的近似平面平行,从而得到该虚拟对象在三维虚拟环境中更加符合现实物理规律的贴地姿态。

综上所述,本实施例提供的三维虚拟环境中虚拟对象的姿态确定方法,通过根据采样点确定虚拟对象所处地面的法线方向,并根据该法线方向得到虚拟对象在三维虚拟环境中的贴地姿态,由于贴地姿态是根据地面的法线方向确定得到的,通过该法线方向可以模拟该虚拟对象所处地面的近似平面,虚拟对象可以以与该近似平面平行的方向进行贴地,达到了使虚拟对象的贴地状态更加符合现实的物理规律,提供了更真实的显示效果。

在一个可选的实施例中,终端需要根据采样点对地面做碰撞检测得到贴地点后,根据贴地点确定虚拟对象相对于地面的法线方向。图3是本申请另一个示例性的提供的三维虚拟环境中虚拟对象的姿态确定方法流程图,以该虚拟对象的姿态确定方法应用在终端中为例进行说明,如图3所示,该姿态确定方法包括:

步骤301,确定虚拟对象的至少一个采样点。

可选地,该采样点是用于相对于地面进行碰撞检测的点。

可选地,该虚拟对象的至少一个采样点可以是根据虚拟对象的中心点确定的,也可以是预先设置的。

其中,虚拟对象的中心点可以是预先设置的。可选地,当该虚拟对象是规则物体时,该中心点可以是该虚拟对象的几何中心,如:正方体的几何中心、球体的几何中心、长方体的几何中心等;当该虚拟对象为不规则物体时,该中心点可以是根据该虚拟对象的运动状态预先设置的中心点,以虚拟对象是虚拟人物为例进行说明:当虚拟人物处于站立姿势时,该虚拟人物的中心点为腹部的预设点,当虚拟人物处于蹲下姿势时,该虚拟人物的中心点为胸部的预设点。

可选地,该采样点的个数是一个、两个或者三个,本申请实施例对此不加以限定。

步骤302,从采样点沿垂直向下方向做碰撞检测,确定出虚拟对象与地面碰撞时的碰撞点作为贴地点。

虚拟对象和地面有各自的三维立体模型。碰撞检测用于确定虚拟对象的三维立体模型与地面的三维立体模型在贴地状态时的碰撞位置。

示意性的,以采样点为一个点为例进行说明,请参考图1a以及图4a,该垂直向下方向为如图1a中的地面坐标轴的y轴的反方向,采样点为如图4a中的采样点41。从该采样点41沿y轴反方向做碰撞检测,得到虚拟对象与地面的碰撞点作为贴地点42,该贴地点42为斜面43上的一点。

步骤303,根据贴地点确定虚拟对象相对于地面的法线方向。

可选地,当贴地点为一个点时,该法线方向为以贴地点作为起点,所作的垂直于地面(或弧形地面的切平面)的法线的方向;当该贴地点为两个点时,该法线方向为垂直于该两个点连线的方向;当贴地点为三个点时,该法线方向为垂直于该三个点组成的平面的方向。

示意性的,以该贴地点为一个点为例进行说明,请参考图4a及图4b,图4b中,将斜面43以横切面的形式进行展示;在贴地点42作垂直于斜面43的法线44,该法线44的方向即为根据贴地点42确定的法线方向。

可选地,当地面为弧形地面时,法线方向为以贴地点为起点,所作的垂直于贴地点所在切平面的方向,该切平面与贴地点所在的地面相切。请参考图4c,弧面45为地面的横切面,在该弧面45上有一个贴地点46,在该贴地点46确定与弧面45相切的切平面47,并在贴地点46作垂直于切平面47的法线48,该法线48的方向即为根据贴地点46确定的法线方向。

步骤304,根据法线方向确定虚拟对象在三维虚拟环境中的贴地姿态。

可选地,根据法线方向对虚拟对象进行旋转,将虚拟对象旋转至与法线垂直的近似平面平行的状态,得到该虚拟对象在三维虚拟环境中的贴地姿态。

其中,上述根据法线方向对虚拟对象进行旋转包括:根据法线方向对虚拟对象在三维虚拟环境中的俯仰角进行增加或减少,和/或,根据法线方向对虚拟对象在三维虚拟环境中的翻滚角进行增加或减少。

综上所述,本实施例提供的三维虚拟环境中虚拟对象的姿态确定方法,通过根据采样点确定虚拟对象所处地面的法线方向,并根据该法线方向得到虚拟对象在三维虚拟环境中的贴地姿态,由于贴地姿态是根据地面的法线方向确定得到的,通过该法线方向可以模拟该虚拟对象所处地面的近似平面,虚拟对象可以以与该近似平面平行的方向进行贴地,达到了使虚拟对象的贴地状态更加符合现实的物理规律,提供了更真实的显示效果。

本实施例提供的三维虚拟环境中虚拟对象的姿态确定方法,通过采样点做垂直向下方向的碰撞检测得到贴地点,并通过贴地点计算虚拟对象当前所在地面的法线方向,提高了计算法线方向时的准确度。

根据上文所述,终端为虚拟对象确定的采样点的个数可以是一个、两个或者三个,下面结合这三种情况分别进行说明。

首先,对确定出一个采样点的情况进行说明。图5是本申请另一个示例性的实施例提供的三维虚拟环境中虚拟对象的姿态确定方法流程图,以该虚拟对象的姿态确定方法应用在终端中为例进行说明,如图5所示,该姿态确定方法包括:

步骤501,将虚拟对象的中心点确定为虚拟对象的采样点。

可选地,该虚拟对象的中心点可以是预先设置的。可选地,当该虚拟对象是规则物体时,该中心点可以是该虚拟对象的几何中心,如:正方体的几何中心、球体的球心、长方体的几何中心等;当该虚拟对象为不规则物体时,该中心点可以是根据该虚拟对象的运动状态预先设置的中心点,如:当虚拟人物处于站立姿势时,该虚拟人物的中心点为腹部的预设点,当虚拟人物处于蹲下姿势时,该虚拟人物的中心点为胸部的预设点。

终端可以将虚拟对象的中心点,确定为虚拟对象的采样点。

步骤502,从采样点沿垂直向下方向做碰撞检测,确定出虚拟对象与地面碰撞时的碰撞点作为贴地点。

终端从虚拟对象的中心点沿垂直向下方向做碰撞检测,确定出虚拟对象与地面碰撞时的碰撞点作为贴地点。

步骤503,根据贴地点确定虚拟对象相对于地面的法线方向。

可选地,终端以该贴地点为起点作垂直于地面的第一垂线,并根据该第一垂涎确定虚拟对象相对于地面的法线方向。可选地,该法线方向即该第一垂线的方向。

示意性的,虚拟对象相对于地面的法线方向采用向量(normalvector.x,normalvector.y,normalvector.z)进行表示。

步骤504,根据法线方向相对于地面坐标系的第一偏转角度,确定虚拟对象在三维虚拟环境中的俯仰角pitch。

可选地,以法线方向作为虚拟对象的对象坐标系的y轴方向,然后确定虚拟对象在三维虚拟环境中的俯仰角pitch。

可选地,当以法线方向作为虚拟对象坐标系的y轴方向后,计算对象坐标系中的z轴正半轴与地面坐标系中的水平面,即xoz面的夹角,该夹角即为上述第一偏转角度,而俯仰角即为该第一偏转角度取反;或者,当以法线方向作为虚拟对象坐标系的y轴方向后,计算对象坐标系中的y轴正半轴与地面坐标系中的y轴正半轴之间的夹角,该夹角即为上述第一偏转角度,而俯仰角即为该第一偏转角度取反。

比如,以虚拟对象的中心点为原点建立一个对象坐标系,以该法线作为该对象坐标系的y轴,垂直于该y轴分别作x轴和z轴。其中,以虚拟对象为虚拟人物为例进行说明,x轴为从原点出发,指向身体左侧的坐标轴,z轴为从原点出发,指向头顶方向的坐标轴,y轴为从原点出发,垂直背部向上的坐标轴,其中,x轴、y轴以及z轴两两垂直。可选地,当虚拟人物处于贴地姿态,且背部朝上时,y轴方向即为根据虚拟人物在地面上的贴地点所作的法线方向。

请参考如图6所示的用户界面61,值得注意的是,用户界面61中的坐标轴x,坐标轴y以及坐标轴z皆为示意性说明。在实际的实施例中,用户界面61中不一定显示有上述坐标轴。

可选地,该第一偏转角度为法线方向在地面坐标系中相对于y轴的偏转角度,即根据normalvector.x和normalvector.z确定的偏转角度,而俯仰角pitch为上述第一偏转角度取反。

可选地,根据如下代码可以得到俯仰角pitch:

floatpitch=fmath::atan2(normalvector.x,normalvector.z)*-1.f;

其中,fmath::atan2为调用fmath类里的静态方法atan2,float为浮点数,“*-1.f”用于将得到的第一偏转角度取反并保留浮点数。

步骤505,根据法线方向相对于地面坐标系的第二偏转角度,确定虚拟对象在三维虚拟环境中的翻滚角roll。

可选地,当以法线方向作为虚拟对象坐标系的y轴方向后,计算对象坐标系中的y轴与通过地面坐标系的x轴的铅垂面之间的夹角,即对象坐标系中的y轴与xoy面之间的夹角,该夹角即为上述第二偏转角度,而翻滚角即为该第二偏转角度取反。

可选地,该第二偏转角度为法线方向与地面坐标系的xoy面之间的偏转角度,即根据normalvector.y和normalvector.z确定的偏转角度,而翻滚角roll为上述第二偏转角度取反。

可选地,根据如下代码可以得到翻滚角roll:

floatroll=fmath::atan2(normalvector.y,normalvector.z)*-1.f;

其中,fmath::atan2为调用fmath类里的静态方法atan2,float为浮点数,“*-1.f”用于将得到的偏转角度取反并保留浮点数。

可选地,在得到虚拟对象的俯仰角pitch和翻滚角roll后,将虚拟对象以该俯仰角和翻滚角进行旋转,即将虚拟对象的初始俯仰角结合俯仰角进行增加或减少,以及将虚拟对象的初始翻滚角结合翻滚角进行增加或减少,并将旋转后的虚拟对象以贴地姿态进行贴地。

其中,俯仰角以及翻滚角的增加或者减少,由实际操作中虚拟对象的旋转情况决定。

可选地,根据如下代码可以将虚拟对象根据上述俯仰角和翻滚角进行旋转:

frotatorcharacterrotation=frotator(pitch,0.0f,roll);

其中,frotator为一种旋转方法,characterrotation用于指代虚拟对象的旋转角度,0.0f用于指代虚拟对象无需根据偏航角进行转动。

综上所述,本实施例提供的三维虚拟环境中虚拟对象的姿态确定方法,通过根据采样点确定虚拟对象所处地面的法线方向,并根据该法线方向得到虚拟对象在三维虚拟环境中的贴地姿态,由于贴地姿态是根据地面的法线方向确定得到的,通过该法线方向可以模拟该虚拟对象所处地面的近似平面,虚拟对象可以以与该近似平面平行的方向进行贴地,达到了使虚拟对象的贴地状态更加符合现实的物理规律,提供了更真实的显示效果。

本实施例提供的三维虚拟环境中虚拟对象的姿态确定方法,在斜坡较为平坦时,通过计算地面的法线方向,确保了虚拟对象在坐标轴的不同方向上都能实现较为理想的贴地状态,减少了人物处于贴地姿态时身体的部分区域陷入地面中或障碍物中的情况,更加符合现实的物理规律。

其次,结合根据中心点确定两个采样点的情况进行说明,。该两个采样点分别是前部采样点和后部采样点,前部采样点用于表示虚拟对象在贴地姿态下的上半部的点,后部采样点用于表示虚拟对象在贴地姿态下的下半部的点。

图7是本申请另一个示例性的实施例提供的三维虚拟环境中虚拟对象的姿态确定方法流程图,以该虚拟对象的姿态确定方法应用在终端中为例进行说明,如图7所示,该姿态确定方法包括:

步骤701,将位于虚拟对象的中心点前方第一距离的点,确定为前部采样点。

可选地,该中心点的前方由虚拟对象所面对的方向以及水平方向确定,其中,水平方向即地面坐标系中与y轴的方向垂直的方向。该虚拟对象的中心点前方第一距离的点即从中心点出发,沿水平方向以及虚拟对象所面对的方向向前第一距离的点。

步骤702,将位于虚拟对象的中心点后方第二距离的点,确定为后部采样点。

可选地,该中心点的后方为虚拟对象所面对的方向的反方向。该虚拟对象的中心点后方第二距离的点即从中心点出发,沿水平方向以及虚拟对象所面对的方向的反方向向前第二距离的点。

值得注意的是,上述第一距离和第二距离可以是两个相同的距离长度,也可以是两个不同的距离长度。

可选地,上述第一距离和第二距离不大于虚拟对象的长度的一半。

步骤703,将前部采样点和后部采样点确定为虚拟对象的采样点。

示意性的,请参考图8,虚拟对象的中心点为中心点81,根据虚拟对象面对的方向,确定前部采样点82以及后部采样点83。

步骤704,从采样点沿垂直向下方向做碰撞检测,确定出虚拟对象与地面碰撞时的碰撞点作为贴地点。

从采样点沿垂直向下方向做碰撞检测已在步骤302中进行说明,此处不再赘述。

可选地,从前部采样点沿垂直向下方向做碰撞检测,确定出虚拟对象与地面碰撞时的碰撞点作为第一贴地点;从后部采样点沿垂直向下方向做碰撞检测,确定出虚拟对象与地面碰撞时的碰撞点作为第二贴地点。

示意性的,请参考图8,从前部采样点82沿垂直向下方向做碰撞检测,得到第一贴地点84,从后部采样点83沿垂直向下方向做碰撞检测,得到第二贴地点85。

步骤705,确定第一贴地点和第二贴地点的连线。

示意性的,参考图8,第一贴地点84和第二贴地点85之间的虚线即为第一贴地点84和第二贴地点85的连线。

步骤706,根据与连线垂直且滚动角为0的第二垂线,确定虚拟对象相对于地面的法线方向。

可选地,将该连线旋转90度得到垂直于该直线且滚动角为0的第二垂线。示意性的,请结合图8,当该连线为第一贴地点84指向第二贴地点85的有向射线时,该法线方向为将该有向射线绕地面坐标系的z轴旋转90度得到的方向,即法线86的方向。

可选地,根据如下代码可以得到上述法线方向:

frotatornormalrotator=(target2-target).rotation();

normalrotator.pitch+=90.f;

fvectornormalvector=normalrotator.vector();

其中,target为第一贴地点在地面坐标系中的坐标,target2为第二贴地点在地面坐标系中的坐标;normalvector用于指代法线;normalrotator用于指代将第一贴地点和第二贴地点之间的连线进行旋转的方法;normalrotator.pitch+=90.f用于指代将该连线旋转90度。

步骤707,根据法线方向相对于地面坐标系的x轴的第一偏转角度,确定虚拟对象在三维虚拟环境中的俯仰角。

可选地,当以法线方向作为虚拟对象坐标系的y轴方向后,计算对象坐标系中的z轴正半轴与地面坐标系中的水平面,即xoz面的夹角,该夹角即为上述第一偏转角度,而俯仰角即为该第一偏转角度取反;或者,当以法线方向作为虚拟对象坐标系的y轴方向后,计算对象坐标系中的y轴正半轴与地面坐标系中的y轴正半轴之间的夹角,该夹角即为上述第一偏转角度,而俯仰角即为该第一偏转角度取反。

结合一个具体的实施例,请参考图9a和图9b,在用户界面91中,虚拟对象以站立的姿势站在斜坡上,根据该虚拟对象的中心点92确定出前部采样点93和后部采样点94,将前部采样点93和后部采样点94做垂直碰撞检测,得到第一贴地点95和第二贴地点96,并根据第一贴地点95和第二贴地点96的连线确定法线的方向,即图9a中箭头所指向的方向,根据该法线的方向在如图9b所示的用户界面97中,将虚拟对象以贴地姿态进行显示。

值得注意的是,图9a及图9b中的上述前部采样点、后部采样点、第一贴地点、第二贴地点、中心点,以及各点之间的连线皆为示意所作,在实际的实施例中,用户界面中可以不显示上述点以及各点之间的连线。

综上所述,本实施例提供的三维虚拟环境中虚拟对象的姿态确定方法,通过根据采样点确定虚拟对象所处地面的法线方向,并根据该法线方向得到虚拟对象在三维虚拟环境中的贴地姿态,由于贴地姿态是根据地面的法线方向确定得到的,通过该法线方向可以模拟该虚拟对象所处地面的近似平面,虚拟对象可以以与该近似平面平行的方向进行贴地,所以达到了使虚拟对象的贴地状态更加符合现实的物理规律,提供了更真实的显示效果。

本实施例提供的三维虚拟环境中虚拟对象的姿态确定方法,在地面为两个不同坡度的斜坡的交界处或者地面为弧形地面时,在两个斜坡上各取一点作为贴地点,或者在弧形上取两个贴地点,避免了虚拟对象按照一个倾斜角度进行旋转后,在另一个倾斜角度上大部分腾空的情况,更加符合现实的物理规律。

第三,结合根据中心点确定三个采样点的情况进行说明,该三个采样点分别是前部采样点、后部采样点和侧方采样点,前部采样点用于表示虚拟对象在贴地姿态下的上半部的点,后部采样点用于表示虚拟对象在贴地姿态下的下半部的点,侧方采样点用于表示虚拟对象在贴地姿态下左侧或右侧的点。

图10是本申请另一个示例性的实施例提供的三维虚拟环境中虚拟对象的姿态确定方法流程图,以该虚拟对象的姿态确定方法应用在终端中为例进行说明,如图10所示,该姿态确定方法包括:

步骤1001,将位于虚拟对象的中心点前方第一距离的点,确定为前部采样点。

可选地,该中心点的前方由虚拟对象所面对的方向以及水平方向确定,其中,水平方向即地面坐标系中与y轴的方向垂直的方向。该虚拟对象的中心点前方第一距离的点即从中心点出发,沿水平方向以及虚拟对象所面对的方向向前第一距离的点。

步骤1002,将位于虚拟对象的中心点后方第二距离的点,确定为后部采样点。

可选地,该中心点的后方为虚拟对象所面对的方向的反方向。该虚拟对象的中心点后方第二距离的点即从中心点出发,沿水平方向以及虚拟对象所面对的方向的反方向向前第二距离的点。

值得注意的是,上述第一距离和第二距离可以是两个相同的距离长度,也可以是两个不同的距离长度。

可选地,上述第一距离和第二距离不大于虚拟对象的长度的一半。

步骤1003,将位于虚拟对象的中心点左方第三距离的点或位于虚拟对象右方第四距离的点,确定为侧方采样点。

可选地,该中心点左方为垂直于y轴的方向,且垂直于虚拟对象面对的方向向左的方向;该中心点右方为垂直于y轴的方向,且垂直于虚拟对象面对的方向向右的方向。

可选地,上述第三距离和第四距离不大于虚拟对象宽度的一半。

步骤1004,将前部采样点、后部采样点和侧方采样点确定为虚拟对象的采样点。

示意性的,请参考图11,根据虚拟对象的中心点1101确定前部采样点1102、后部采样点1103以及侧方采样点1104,将上述前部采样点1102、后部采样点1103以及侧方采样点1104确定为虚拟对象的采样点。

步骤1005,从采样点沿垂直向下方向做碰撞检测,确定出虚拟对象与地面碰撞时的碰撞点作为贴地点。

可选地,从前部采样点垂直向下方向做碰撞检测,确定出第一贴地点,从后部采样点垂直向下方向做碰撞检测,确定出第二贴地点,从侧方采样点垂直向下方向做碰撞检测,确定出第三贴地点。

示意性的,请结合图11,从前部采样点1102垂直向下方向做碰撞检测,得到第一贴地点1105,从后部采样点1103垂直向下方向做碰撞检测,得到第二贴地点1106,从侧方采样点1104垂直向下方向做碰撞检测,得到第三贴地点1107。

步骤1006,确定第一贴地点、第二贴地点和第三贴地点所在的平面。

可选地,将第一贴地点、第二贴地点和第三贴地点分别进行连接,三条连接线构成的平面即为第一贴地点、第二贴地点和第三贴地点所在的平面。

示意性的,请参考图11,第一贴地点1105、第二贴地点1106和第三贴地点1107之间的连线构成的阴影部分即为该三点所在的平面。

步骤1007,根据与平面垂直且向上的第三垂线,确定虚拟对象相对于地面的法线方向。

根据平面垂直且向上,是指该法线垂直于该三点构成的平面,且该法线的方向向量中,y轴对应的坐标为正数。

步骤1008,根据法线方向相对于地面坐标系的第一偏转角度,确定虚拟对象在三维虚拟环境中的俯仰角pitch。

可选地,当以法线方向作为虚拟对象坐标系的y轴方向后,计算对象坐标系中的z轴正半轴与地面坐标系中的水平面,即xoz面的夹角,该夹角即为上述第一偏转角度,而俯仰角即为该第一偏转角度取反;或者,当以法线方向作为虚拟对象坐标系的y轴方向后,计算对象坐标系中的y轴正半轴与地面坐标系中的y轴正半轴之间的夹角,该夹角即为上述第一偏转角度,而俯仰角即为该第一偏转角度取反。

可选地,以虚拟对象的中心点为原点作一个对象坐标系,以该法线作为该对象坐标系的y轴,垂直于该y轴分别作x轴和z轴,其中,以虚拟对象为虚拟人物为例进行说明,x轴为从原点出发,指向身体左侧的坐标轴,z轴为从原点出发,指向头顶方向的坐标轴,y轴为从原点出发,垂直背部向上的坐标轴,其中,x轴、y轴以及z轴两两垂直。可选地,当虚拟人物处于贴地姿态,且背部朝上时,y轴方向即为根据虚拟人物在地面上的贴地点所作的法线的方向。

具体请参考如图6所示的用户界面61,值得注意的是,用户界面61中的坐标轴x。坐标轴y以及坐标轴z皆为示意所作,在实际操作中,用户界面61中并不显示上述坐标轴。

可选地,该第一偏转角度为法线方向在地面坐标系中相对于y轴的偏转角度,即根据normalvector.x和normalvector.z确定的偏转角度,而俯仰角pitch为上述第一偏转角度取反。

可选地,根据如下代码可以得到俯仰角pitch:

floatpitch=fmath::atan2(normalvector.x,normalvector.z)*-1.f;

其中,fmath::atan2为调用fmath类里的静态方法atan2,float为浮点数,“*-1.f”用于将得到的偏转角度取反并保留浮点数。

步骤1009,根据法线方向相对于地面坐标系的第二偏转角度,确定虚拟对象在三维虚拟环境中的翻滚角roll。

可选地,当以法线方向作为虚拟对象坐标系的y轴方向后,计算对象坐标系中的y轴与通过地面坐标系的x轴的铅垂面之间的夹角,即对象坐标系中的y轴与xoy面之间的夹角,该夹角即为上述第二偏转角度,而翻滚角即为该第二偏转角度取反。

可选地,该第二偏转角度为法线方向与地面坐标系的xoy面之间偏转角度,即根据normalvector.y和normalvector.z确定的偏转角度,而翻滚角roll为上述第二偏转角度取反。

可选地,根据如下代码可以得到翻滚角roll:

floatroll=fmath::atan2(normalvector.y,normalvector.z)*-1.f;

其中,fmath::atan2为调用fmath类里的静态方法atan2,float为浮点数,“*-1.f”用于将得到的偏转角度取反并保留浮点数。

可选地,在得到虚拟对象的俯仰角pitch和翻滚角roll后,将虚拟对象以该俯仰角和翻滚角进行旋转,即将虚拟对象的初始俯仰角结合俯仰角进行增加或减少,以及将虚拟对象的初始翻滚角结合翻滚角进行增加或减少,并将旋转后的虚拟对象以贴地姿态进行贴地。

可选地,根据如下代码可以将虚拟对象根据上述俯仰角和翻滚角进行旋转:

frotatorcharacterrotation=frotator(pitch,0.0f,roll);

其中,frotator为一种旋转方法,characterrotation用于指代虚拟对象的旋转角度,0.0f用于指代虚拟对象无需根据偏航角进行转动。

综上所述,本实施例提供的三维虚拟环境中虚拟对象的姿态确定方法,通过根据采样点确定虚拟对象所处地面的法线方向,并根据该法线方向得到虚拟对象在三维虚拟环境中的贴地姿态,由于贴地姿态是根据地面的法线方向确定得到的,通过该法线方向可以模拟该虚拟对象所处地面的近似平面,虚拟对象可以以与该近似平面平行的方向进行贴地,所以达到了使虚拟对象的贴地状态更加符合现实的物理规律,提供了更真实的显示效果。

本实施例提供的三维虚拟环境中虚拟对象的姿态确定方法,通过取三个贴地点构成一个平面,并根据平面的法线方向确定虚拟对象的贴地姿态,虚拟对象按照与该平面平行的方向进行贴地,减少了人物处于贴地姿态时身体的大部分区域腾空的情况,且计算得到的俯仰角和翻滚角更贴近现实的物理规律。

值得注意的是,上述图1至图10任一所述的三维虚拟环境中虚拟对象的姿态确定方法,还可以应用在与终端通过通信网络进行连接的服务器上,本申请对该三维虚拟环境中虚拟对象的姿态确定方法的执行主体不加以限定。

图12是本申请另一个示例性的实施例提供的三维虚拟环境中虚拟人物的姿态确定方法流程图,以该虚拟人物的姿态确定方法应用在终端中为例进行说明,如图12所示,该姿态确定方法包括:

步骤1201,显示第一用户界面。

该第一用户界面包括在三维虚拟环境的地面上处于站立姿态的虚拟人物。

步骤1202,接收姿态切换指令。

该姿势切换指令用于指示虚拟人物从站立姿态切换为贴地姿态。

步骤1203,根据虚拟人物相对于地面的法线方向,确定虚拟人物的贴地姿态。

可选地,当终端接收到姿态切换指令后,虚拟人物确定虚拟人物的至少一个采样点,并根据至少一个采样点和地面确定虚拟人物相对于地面的法线方向。

其中,根据至少一个采样点和地面确定虚拟人物相对于地面的法线方向还包括:

首先根据至少一个采样点进行碰撞检测得到贴地点,并根据贴地点确定虚拟人物相对于地面的法线方向。

上述确定法线方向还可以分为三种情况:

第一、确定虚拟人物的一个采样点,根据一个采样点和地面确定虚拟人物相对于地面的法线方向:

可选地,可以将虚拟人物的中心点确定为采样点,并通过采样点进行碰撞检测,得到贴地点,根据贴地点为起点且垂直于地面的第一垂线,确定虚拟人物相对于地面的法线方向,相应的技术细节可以参考图5所示实施例。

第二、确定虚拟人物的两个采样点,根据两个采样点和地面确定虚拟人物相对于地面的法线方向:

确定虚拟人物的上半身采样点和下半身采样点,上半身采样点用于表示虚拟人物在贴地姿态时的上半部的点,下半身采样点用于表示虚拟人物在贴地姿态时的下半部的点;根据上半身采样点和下半身采样点做碰撞检测,得到第一贴地点和第二贴地点;确定第一贴地点和第二贴地点的连线,并将与连线垂直且翻滚角为0的第二垂线,确定为虚拟人物相对于地面的法线方向,相应的技术细节可以参考图7所示实施例。

第三、确定虚拟人物的三个采样点,根据三个采样点和地面确定虚拟人物相对于地面的法线方向:

确定虚拟人物的前部采样点、后部采样点和侧方采样点,前部采样点用于表示虚拟人物在贴地姿态时的上半部的点,后部采样点用于表示虚拟人物在贴地姿态时的下半部的点,侧方采样点用于表示虚拟人物在贴地姿态下左侧或右侧的点;根据前部采样点、后部采样点和侧方采样点做碰撞检测,得到第一贴地点、第二贴地点和第三贴地点;确定第一贴地点、第二贴地点和第三贴地点构成的平面,并将与平面垂直的第三垂线,确定为虚拟人物相对于地面的法线方向,相应的技术细节可以参考图10所示实施例。

步骤1204,显示第二用户界面。

可选地,该第二用户界面中包括在三维虚拟环境的地面上处于贴地姿态的虚拟人物。

可选地,第二用户界面包括在所述三维虚拟环境的地面上处于所述贴地姿态的虚拟人物,地面包括呈夹角的第一地面区域和第二地面区域,虚拟人物的头部在第一地面区域悬空,虚拟人物的脚部在第二地面区域悬空,虚拟人物的腰部在第一地面区域和第二地面区域的交界处嵌入地面。

示意性的,请结合图13,首先,终端显示第一用户界面1301,在该第一用户界面中包括在三维虚拟环境的地面上处于站立姿态的虚拟人物1302,用户在姿态切换按钮1303上进行触摸后,终端接收到姿态切换指令,并根据虚拟人物相对于地面的法线方向,确定虚拟人物的贴地姿态。终端显示第二用户界面1304,该第二用户界面中包括在三维虚拟环境的地面上处于贴地姿态的虚拟人物1305。

综上所述,本实施例提供的三维虚拟环境中虚拟人物的姿态确定方法,通过根据采样点确定虚拟人物所处地面的地面信息,从而确定该地面对应的法线方向,得到虚拟人物在三维虚拟环境中的贴地姿态,由于贴地姿态是根据地面的法线方向确定得到的,所以达到了使虚拟对象的贴地状态更加符合现实的物理规律,提供了更真实的显示效果。

图14是本申请另一个示例性的实施例提供的三维虚拟环境中虚拟人物的姿态确定方法流程图,以该虚拟人物的姿态确定方法应用在终端中为例进行说明,如图14所示,该姿态确定方法包括:

步骤1401,显示第三用户界面。

该第三用户界面包括在三维虚拟环境中的第一地面位置上处于第一贴地姿态的虚拟人物。

步骤1402,接收移动指令。

该移动指令用于指示虚拟人物从第一地面位置进行移动。

步骤1403,根据虚拟人物但相对于第二地面的法线方向,确定虚拟人物的第二贴地姿态。

可选地,终端接收到移动指令后,根据虚拟人物的中心点确定虚拟人物的至少一个采样点,并根据至少一个采样点和第二地面位置,确定虚拟人物相对于第二地面位置的法线方向。

其中,根据至少一个采样点和第二地面位置确定虚拟人物相对于第二地面位置的法相向量还包括:

首先根据至少一个采样点进行碰撞检测得到贴地点,并根据贴点确定虚拟人物相对于第二地面位置的法线方向。

上述确定法线方向还可以分为三种情况:

上述确定法线方向还可以分为三种情况:

第一、确定虚拟人物的一个采样点,根据一个采样点和地面确定虚拟人物相对于地面的法线方向:

可选地,可以将虚拟人物的中心点确定为采样点,并通过采样点进行碰撞检测,得到贴地点,根据贴地点为起点且垂直于地面的第一垂线,确定虚拟人物相对于地面的法线方向,相应的技术细节可以参考图5所示实施例。

第二、确定虚拟人物的两个采样点,根据两个采样点和地面确定虚拟人物相对于地面的法线方向:

确定虚拟人物的上半身采样点和下半身采样点,上半身采样点用于表示虚拟人物在贴地姿态时的上半部的点,下半身采样点用于表示虚拟人物在贴地姿态时的下半部的点;根据上半身采样点和下半身采样点做碰撞检测,得到第一贴地点和第二贴地点;确定第一贴地点和第二贴地点的连线,并将与连线垂直且翻滚角为0的第二垂线,确定为虚拟人物相对于地面的法线方向,相应的技术细节可以参考图7所示实施例。

第三、确定虚拟人物的三个采样点,根据三个采样点和地面确定虚拟人物相对于地面的法线方向:

确定虚拟人物的前部采样点、后部采样点和侧方采样点,前部采样点用于表示虚拟人物在贴地姿态时的上半部的点,后部采样点用于表示虚拟人物在贴地姿态时的下半部的点,侧方采样点用于表示虚拟人物在贴地姿态下左侧或右侧的点;根据前部采样点、后部采样点和侧方采样点做碰撞检测,得到第一贴地点、第二贴地点和第三贴地点;确定第一贴地点、第二贴地点和第三贴地点构成的平面,并将与平面垂直的第三垂线,确定为虚拟人物相对于地面的法线方向,相应的技术细节可以参考图10所示实施例。

步骤1404,显示第四用户界面。

该第四用户界面包括在三维虚拟环境的第二地面位置上处于第二贴地姿态的虚拟人物。

可选地,第二用户界面包括在三维虚拟环境的地面上处于贴地姿态的虚拟人物,地面包括呈夹角的第一地面区域和第二地面区域,虚拟人物的头部在第一地面区域悬空,虚拟人物的脚部在第二地面区域悬空,虚拟人物的腰部在第一地面区域和第二地面区域的交界处嵌入地面。

示意性的,请结合图15,首先,终端显示第三用户界面1501,在该第三用户界面中包括在三维虚拟环境中的第一地面位置上处于第一贴地姿态的虚拟对象1502,用户在移动按钮1503上进行触摸后,终端接收到移动指令,并根据虚拟对象相对于第二地面1504的法线方向,确定虚拟对象的贴地姿态。终端显示第四用户界面1505,该第四用户界面中包括在三维虚拟环境的第二地面位置上处于第二贴地姿态的虚拟对象1506。

综上所述,本实施例提供的三维虚拟环境中虚拟对象的姿态确定方法,通过根据采样点确定虚拟对象所处地面的地面信息,从而确定该地面对应的法线方向,得到虚拟对象在三维虚拟环境中的贴地姿态,由于贴地姿态是根据地面的法线方向确定得到的,所以达到了使虚拟对象的贴地状态更加符合现实的物理规律,提供了更真实的显示效果。

图16是本申请一个示例性的实施例提供的三维虚拟环境中虚拟对象的姿态确定装置的结构框图,该装置包括:采样点确定模块1601、法线确定模块1602、姿态确定模块1603;

采样点确定模块1601,用于确定虚拟对象的至少一个采样点,采样点是用于相对于地面进行碰撞检测的点;

法线确定模块1602,用于根据至少一个采样点和虚拟对象所处地面,确定虚拟对象相对于地面的法线方向;

姿态确定模块1603,用于根据法线方向确定虚拟对象在三维虚拟环境中的贴地姿态。

在一个可选的实施例中,法线确定模块1602,包括:

检测单元,用于从采样点沿垂直向下方向做碰撞检测,确定出虚拟对象与地面碰撞时的碰撞点作为贴地点;

法线确定单元,用于根据贴地点确定虚拟对象相对于地面的法线方向。

在一个可选的实施例中,采样点包括虚拟对象的中心点,贴地点是从中心点作碰撞检测得到的点;

法线确定单元,还用于根据贴地点为起点且垂直于地面的第一垂线,确定虚拟对象相对于地面的法线方向。

在一个可选的实施例中,采样点确定模块1601,还用于将虚拟对象的中心点,确定为虚拟对象的采样点。

在一个可选的实施例中,采样点确定模块1601,包括:

偏转角确定单元,用于根据法线方向相对于地面坐标系的x轴的第一偏转角度,确定虚拟对象在三维虚拟环境中的俯仰角;

偏转角确定单元,还用于根据法线方向相对于地面坐标系的z轴的第二偏转角度,确定虚拟对象在三维虚拟环境中的翻滚角;

其中,地面坐标系是三维虚拟环境所在世界的坐标系。

在一个可选的实施例中,采样点包括前部采样点和后部采样点,前部采样点用于表示虚拟对象在贴地姿态下的上半部的点,后部采样点用于表示虚拟对象在贴地姿态下的下半部的点;

法线确定单元,还用于确定第一贴地点和第二贴地点的连线,第一贴地点是从前部采样点做碰撞检测后得到的点,第二贴地点是从后部采样点做碰撞检测后得到的点;

法线确定单元,还用于根据与连线垂直且翻滚角为0的第二垂线,确定虚拟对象相对于地面的法线方向。

在一个可选的实施例中,采样点确定模块1601,还用于将位于虚拟对象的中心点前方第一距离的点,确定为前部采样点;

采样点确定模块1601,还用于将位于虚拟对象的中心点后方第二距离的点,确定为后部采样点;

采样点确定模块1601,还用于将前部采样点和后部采样点确定虚拟对象的采样点。

在一个可选的实施例中,姿态确定模块1603,包括:

偏转角确定单元,用于根据法线方向相对于地面坐标系的x轴的第一偏转角度,确定虚拟对象在三维虚拟环境中的俯仰角;

其中,地面坐标系是三维虚拟环境所在世界的坐标系。

在一个可选的实施例中,采样点包括前部采样点、后部采样点和侧方采样点,前部采样点用于表示虚拟对象在贴地姿态下的上半部的点,后部采样点用于表示虚拟对象在贴地姿态下的下半部的点,侧方采样点用于表示虚拟对象在贴地姿态下左侧或右侧的点;

法线确定单元,还用于确定第一贴地点、第二贴地点和第三贴地点所在的平面,第一贴地点是从前部采样点做碰撞检测后得到的点,第二贴地点是从后部采样点做碰撞检测后得到的点,第三贴地点是从侧方采样点做碰撞检测后得到的点;

法线确定单元,还用于根据与平面垂直且向上的第三垂线,确定虚拟对象相对于地面的法线方向。

在一个可选的实施例中,采样点确定模块1601,还用于将位于虚拟对象的中心点前方第一距离的点,确定为前部采样点;

采样点确定模块1601,还用于将位于虚拟对象的中心点后方第二距离的点,确定为后部采样点;

采样点确定模块1601,还用于将位于虚拟对象的中心点左方第三距离的点或位于虚拟对象的中心点右方第四距离的点,确定为侧方采样点;

采样点确定模块1601,还用于将前部采样点、后部采样点和侧方采样点确定为虚拟对象的采样点。

在一个可选的实施例中,姿态确定模块1603,包括:

偏转角确定单元,用于根据法线方向相对于地面坐标系的x轴的第一偏转角度,确定虚拟对象在三维虚拟环境中的俯仰角;

偏转角确定单元,还用于根据法线方向相对于地面坐标系的z轴的第二偏转角度,确定虚拟对象在三维虚拟环境中的翻滚角;

其中,地面坐标系是三维虚拟环境所在世界的坐标系。

在一个可选的实施例中,地面包括具有坡度的区域、曲面区域、凹陷区域和凸起区域中的至少一种。

综上所述,本实施例提供的三维虚拟环境中虚拟对象的姿态确定装置,通过根据采样点确定虚拟对象所处地面的地面信息,从而确定该地面对应的法线方向,得到虚拟对象在三维虚拟环境中的贴地姿态,由于贴地姿态是根据地面的法线方向确定得到的,所以达到了使虚拟对象的贴地状态更加符合现实的物理规律,提供了更真实的显示效果。

图17是本申请另一个示例性的实施例提供的三维虚拟环境中虚拟人物的姿态确定装置的结构框图,该装置包括:第一显示模块1701、第一接收模块1702以及第一确定模块1703;

第一显示模块1701,用于显示第一用户界面,第一用户界面包括在三维虚拟环境的地面上处于站立姿态的虚拟人物;

第一接收模块1702,用于接收姿态切换指令,姿态切换指令用于指示虚拟人物从站立姿态切换为贴地姿态;

第一确定模块1703,用于根据虚拟人物相对于地面的法线方向,确定虚拟人物的贴地姿态;

第一显示模块1701,还用于显示第二用户界面,第二用户界面包括在三维虚拟环境的地面上处于贴地姿态的虚拟人物。

在一个可选的实施例中,第一确定模块1703,还用于当接收到姿态切换指令后,根据虚拟人物的中心点确定虚拟人物的至少一个采样点,采样点是用于相对于地面进行碰撞检测的点;

第一确定模块1703,还用于根据至少一个采样点和地面,确定虚拟人物相对于地面的法线方向。

综上所述,本实施例提供的三维虚拟环境中虚拟人物的姿态确定装置,通过根据采样点确定虚拟对象所处地面的地面信息,从而确定该地面对应的法线方向,得到虚拟对象在三维虚拟环境中的贴地姿态,由于贴地姿态是根据地面的法线方向确定得到的,所以达到了使虚拟对象的贴地状态更加符合现实的物理规律,提供了更真实的显示效果。

图18是本申请另一个示例性的实施例提供的三维虚拟环境中虚拟人物的姿态确定装置,该装置包括:第二显示模块1801、第二接收模块1802以及第二确定模块1803;

第二显示模块1801,用于显示第三用户界面,第三用户界面包括在三维虚拟环境的第一地面位置上处于第一贴地姿态的虚拟人物;

第二接收模块1802,用于接收移动指令,移动指令用于指示虚拟人物从第一地面位置进行移动;

第二确定模块1803,用于根据虚拟人物相对于第二地面位置的法线方向,确定虚拟人物的第二贴地姿态;

第二显示模块1801,还用于显示第四用户界面,第四用户界面包括在三维虚拟环境的第二地面位置上处于第二贴地姿态的虚拟人物。

在一个可选的实施例中,第二确定模块1803,还用于当接收到移动指令后,根据虚拟人物的中心点确定虚拟人物的至少一个采样点,采样点是用于相对于地面进行碰撞检测的点;

第二确定模块1803,还用于根据至少一个采样点和第二地面位置,确定虚拟人物相对于第二地面位置的法线方向。

综上所述,本实施例提供的三维虚拟环境中虚拟人物的姿态确定装置,通过根据采样点确定虚拟对象所处地面的地面信息,从而确定该地面对应的法线方向,得到虚拟对象在三维虚拟环境中的贴地姿态,由于贴地姿态是根据地面的法线方向确定得到的,所以达到了使虚拟对象的贴地状态更加符合现实的物理规律,提供了更真实的显示效果。

图19是本申请另一个示例性的实施例提供的三维虚拟环境中虚拟人物的姿态确定装置,该装置包括:第三显示模块1901、第三接收模块1902以及第二确定模块1903;

第三显示模块1901,用于显示第一用户界面,第一用户界面包括在三维虚拟环境的地面上处于站立姿态的虚拟人物;

第三接收模块1902,用于接收姿态切换指令,姿态切换指令用于指示虚拟人物从站立姿态切换为贴地姿态;

第三显示模块1901,还用于显示第二用户界面,第二用户界面包括在三维虚拟环境的地面上处于贴地姿态的虚拟人物,地面包括呈夹角的第一地面区域和第二地面区域,虚拟人物的头部在第一地面区域悬空,虚拟人物的脚部在第二地面区域悬空,虚拟人物的腰部在第一地面区域和第二地面区域的交界处嵌入地面。

在一个可选的实施例中,该装置,还包括:

第三确定模块1903,用于根据虚拟人物的中心点确定虚拟人物的上半身采样点和下半身采样点;

第三确定模块1903,还用于确定第一贴地点和第二贴地点的连线,第一贴地点是从上半身采样点做碰撞检测后得到的且位于第一地面区域的点,第二贴地点是从下半身采样点做碰撞检测后得到的且位于第二地面区域的点;

综上所述,本实施例提供的三维虚拟环境中虚拟人物的姿态确定装置,通过根据采样点确定虚拟对象所处地面的地面信息,从而确定该地面对应的法线方向,得到虚拟对象在三维虚拟环境中的贴地姿态,由于贴地姿态是根据地面的法线方向确定得到的,所以达到了使虚拟对象的贴地状态更加符合现实的物理规律,提供了更真实的显示效果。

图20示出了本申请一个示例性实施例提供的电子装置2000的结构框图。该电子装置2000可以是:智能手机、平板电脑、mp3播放器(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。电子装置2000还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。

通常,电子装置2000包括有:处理器2001和存储器2002。

处理器2001可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器2001可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器2001也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(centralprocessingunit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器2001可以在集成有gpu(graphicsprocessingunit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器2001还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。

存储器2002可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器2002还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器2002中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器2001所执行以实现本申请中方法实施例提供的三维虚拟环境中虚拟对象的姿态确定方法。

在一些实施例中,电子装置2000还可选包括有:外围设备接口2003和至少一个外围设备。处理器2001、存储器2002和外围设备接口2003之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口2003相连。具体地,外围设备包括:射频电路2004、触摸显示屏2005、摄像头2006、音频电路2007、定位组件2008和电源2009中的至少一种。

外围设备接口2003可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器2001和存储器2002。在一些实施例中,处理器2001、存储器2002和外围设备接口2003被集成在同一芯片或电路板上;在一些其他实施例中,处理器2001、存储器2002和外围设备接口2003中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。

射频电路2004用于接收和发射rf(radiofrequency,射频)信号,也称电磁信号。射频电路2004通过电磁信号与通信网络以及其他通信设备进行通信。射频电路2004将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路2004包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路2004可以通过至少一种无线通信协议来与其它电子装置进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2g、3g、4g及5g)、无线局域网和/或wifi(wirelessfidelity,无线保真)网络。在一些实施例中,射频电路2004还可以包括nfc(nearfieldcommunication,近距离无线通信)有关的电路,本申请对此不加以限定。

显示屏2005用于显示ui(userinterface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏2005是触摸显示屏时,显示屏2005还具有采集在显示屏2005的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器2001进行处理。此时,显示屏2005还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏2005可以为一个,设置电子装置2000的前面板;在另一些实施例中,显示屏2005可以为至少两个,分别设置在电子装置2000的不同表面或呈折叠设计;在再一些实施例中,显示屏2005可以是柔性显示屏,设置在电子装置2000的弯曲表面上或折叠面上。甚至,显示屏2005还可以设置成非矩形的不规则图形,也即异形屏。显示屏2005可以采用lcd(liquidcrystaldisplay,液晶显示屏)、oled(organiclight-emittingdiode,有机发光二极管)等材质制备。

摄像头组件2006用于采集图像或视频。可选地,摄像头组件2006包括前置摄像头和后置摄像头。通常,前置摄像头设置在电子装置的前面板,后置摄像头设置在电子装置的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及vr(virtualreality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件2006还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。

音频电路2007可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器2001进行处理,或者输入至射频电路2004以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在电子装置2000的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器2001或射频电路2004的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路2007还可以包括耳机插孔。

定位组件2008用于定位电子装置2000的当前地理位置,以实现导航或lbs(locationbasedservice,基于位置的服务)。定位组件2008可以是基于美国的gps(globalpositioningsystem,全球定位系统)、中国的北斗系统或俄罗斯的伽利略系统的定位组件。

电源2009用于为电子装置2000中的各个组件进行供电。电源2009可以是交流电、直流电、一次性电池或可充电电池。当电源2009包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。

在一些实施例中,电子装置2000还包括有一个或多个传感器2010。该一个或多个传感器2010包括但不限于:加速度传感器2011、陀螺仪传感器2012、压力传感器2013、指纹传感器2014、光学传感器2015以及接近传感器2016。

加速度传感器2011可以检测以电子装置2000建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器2011可以用于检测重力加速度在三个坐标轴上的分量。处理器2001可以根据加速度传感器2011采集的重力加速度信号,控制触摸显示屏2005以横向视图或纵向视图进行用户界面的显示。加速度传感器2011还可以用于游戏或者用户的运动数据的采集。

陀螺仪传感器2012可以检测电子装置2000的机体方向及转动角度,陀螺仪传感器2012可以与加速度传感器2011协同采集用户对电子装置2000的3d动作。处理器2001根据陀螺仪传感器2012采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变ui)、拍摄时的图像稳定、游戏控制以及惯性导航。

压力传感器2013可以设置在电子装置2000的侧边框和/或触摸显示屏2005的下层。当压力传感器2013设置在电子装置2000的侧边框时,可以检测用户对电子装置2000的握持信号,由处理器2001根据压力传感器2013采集的握持信号进行左右手识别或快捷操作。当压力传感器2013设置在触摸显示屏2005的下层时,由处理器2001根据用户对触摸显示屏2005的压力操作,实现对ui界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。

指纹传感器2014用于采集用户的指纹,由处理器2001根据指纹传感器2014采集到的指纹识别用户的身份,或者,由指纹传感器2014根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器2001授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器2014可以被设置电子装置2000的正面、背面或侧面。当电子装置2000上设置有物理按键或厂商logo时,指纹传感器2014可以与物理按键或厂商logo集成在一起。

光学传感器2015用于采集环境光强度。在一个实施例中,处理器2001可以根据光学传感器2015采集的环境光强度,控制触摸显示屏2005的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏2005的显示亮度;当环境光强度较低时,调低触摸显示屏2005的显示亮度。在另一个实施例中,处理器2001还可以根据光学传感器2015采集的环境光强度,动态调整摄像头组件2006的拍摄参数。

接近传感器2016,也称距离传感器,通常设置在电子装置2000的前面板。接近传感器2016用于采集用户与电子装置2000的正面之间的距离。在一个实施例中,当接近传感器2016检测到用户与电子装置2000的正面之间的距离逐渐变小时,由处理器2001控制触摸显示屏2005从亮屏状态切换为息屏状态;当接近传感器2016检测到用户与电子装置2000的正面之间的距离逐渐变大时,由处理器2001控制触摸显示屏2005从息屏状态切换为亮屏状态。

本领域技术人员可以理解,图20中示出的结构并不构成对电子装置2000的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1