掌桥专利:专业的专利平台
掌桥专利
首页

根骨骼关键帧数据的生成方法、装置、介质及设备

文献发布时间:2023-06-19 18:37:28


根骨骼关键帧数据的生成方法、装置、介质及设备

技术领域

本公开涉及渲染技术领域,具体而言,涉及一种根骨骼关键帧数据的生成方法、根骨骼关键帧数据的生成装置、计算机可读存储介质及电子设备。

背景技术

通过计算机构造的虚拟世界中包括虚拟对象例如虚拟模型,需要控制虚拟模型进行交互,其中就包括通过根骨骼的运动数据来标识角色的位置和朝向。

通常情况下,动画文件中不包括根骨骼的运动数据,由于根骨骼为为盆骨骨骼的父节点,因此,可以利用盆骨骼的运动数据确定根骨骼的运动数据。

相关技术中,通过人工根据盆骨骨骼的运动数据确定根骨骼的运动数据,不仅浪费人工,且容易出错;且由于根骨骼的运动数据中会存在冗余数据,浪费存储空间,也会导致动画展示过程中计算资源的消耗。

需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。

发明内容

本公开实施例的目的在于提供一种根骨骼关键帧数据的生成方法、装置、介质及电子设备。通过自动化确定动画文件中根骨骼的第二运动数据,以及将根骨骼的第二运动数据中的冗余数据删除。在一定程度上,可以提升根骨骼的第二运动数据的确定效率和精准度,并减小动画文件的存储空间占用以及降低动画渲染的性能压力。

本公开实施例的第一方面,提供了一种根骨骼关键帧数据的生成方法,所述方法包括:

获取初始动画文件,所述动画文件包括虚拟模型对应的多帧骨骼关键帧,所述骨骼关键帧至少包括盆骨骨骼对应的第一运动数据;

基于所述第一运动数据,确定所述虚拟模型在运动过程中的运动趋势参数;

基于所述运动趋势参数,对所述第一运动数据进行简化处理得到与所述盆骨骨骼对应的根骨骼的第二运动数据;

根据所述根骨骼在每一骨骼关键帧中的第二运动数据,对所述多帧骨骼关键帧进行逐帧的运动数据向量运算,以得到用于表征所述根骨骼在所述多帧骨骼关键帧中运动变化的速度差异向量;

当与多帧相邻的骨骼关键帧分别对应的所述速度差异向量的和大于预设阈值时,删除所述多帧相邻的帧骨骼关键帧的中间骨骼关键帧中的第二运动数据,以得到用于生成所述初始动画文件对应的根骨骼动画所需的简化关键帧数据,所述多帧相邻的骨骼关键帧的帧数包括至少三帧。

根据本公开实施例的第二方面,提供一种根骨骼关键帧数据的生成装置,其特征在于,所述装置包括:

获取模块,被配置为获取初始动画文件,所述动画文件包括虚拟模型对应的多帧骨骼关键帧,所述骨骼关键帧至少包括盆骨骨骼对应的第一运动数据;

确定模块,被配置基于所述第一运动数据,确定所述虚拟模型在运动过程中的运动趋势参数;

处理模块,被配置基于所述运动趋势参数,对所述第一运动数据进行简化处理得到与所述盆骨骨骼对应的根骨骼的第二运动数据;

运算模块,被配置为根据所述根骨骼在每一骨骼关键帧中的第二运动数据,对所述多帧骨骼关键帧进行逐帧的运动数据向量运算,以得到用于表征所述根骨骼在所述多帧骨骼关键帧中运动变化的速度差异向量;

删除模块,被配置为当与多帧相邻的骨骼关键帧分别对应的所述速度差异向量的和大于预设阈值时,删除所述多帧相邻的帧骨骼关键帧的中间骨骼关键帧中的第二运动数据,以得到用于生成所述初始动画文件对应的根骨骼动画所需的简化关键帧数据,所述多帧相邻的骨骼关键帧的帧数包括至少三帧。

根据本公开实施例的第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如上述实施例中第一方面所述的方法。

根据本公开实施例的第四方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现如上述实施例中第一方面所述的方法。

根据本公开的第五方面,提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述的各种可选实现方式中提供的方法。

本公开实施例提供的技术方案可以包括以下有益效果:

本公开实施例提供的根骨骼关键帧数据的生成方法、装置、设备和介质,一方面,可以根据虚拟模型的运动趋势参数,对虚拟模型的盆骨骨骼的第一运动数据进行简化处理,得到根骨骨骼的第二运动数据,实现根骨骼的第二运动数据的自动化生成,减少了人力资源的消耗,提升了确定的根骨骼的第二运动数据的精准度;另一方面,可以删除运动趋势不发生显著变化的骨骼关键帧中的第二运动数据,在不影响动画渲染效果的基础上,减少数据存储空间的浪费以及降低动画渲染的性能压力。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示意性示出了可以应用本公开实施例的一种根骨骼关键帧数据的生成系统的示意图;

图2示意性示出了根据本公开的一个实施例的根骨骼关键帧数据的生成方法流程图;

图3示意性示出了根据本公开的一个实施例中的虚拟模型不运动时盆骨骨骼和根骨骼的位置示意图;

图4示意性示出了根据本公开的一个实施例中的虚拟模型进行运动时盆骨骨骼和根骨骼的位置流程图;

图5示意性示出了根据本公开的一个实施例中骨骼关键帧之间的位移差异向量的变化示意图;

图6示意性示出了根据本公开的一个实施例中骨骼关键帧之间的速度差异向量的示意图;

图7示意性示出了根据本公开的一个实施例中多个相邻的速度差异向量之和的示意图;

图8示意性示出了根据本公开的一个实施例中简化后的根骨骼位置变化示意图;

图9示意性示出了根据本公开的一个实施例中根骨骼关键帧数据的生成装置的结构框图;

图10示意性示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。

此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

相关技术中,对于动画文件,可以通过人工复制盆骨骨骼的运动数据粘贴到根骨骼,并将盆骨骨骼的运动数据中不需要轴向的运动数据删除,得到根骨骼的运动数据。

但是,这种通过人工确定根骨骼的运动数据的方式,通常需要花费大量的时间和人力,且容易出现错误;同时,由于根骨骼的运动数据主要用于标定虚拟模型的位置和朝向,直接利用根据盆骨骨骼的运动数据确定的根骨骼的运动数据展示动画,不仅浪费存储空间,也会导致动画展示过程中计算资源的消耗。

鉴于上述问题,本公开的示例性实施方式提供一种根骨骼关键帧数据的生成方法,针对于动画处理业务。该根骨骼关键帧数据的生成方法的应用场景包括但不限于:在虚拟模型的根骨骼的运动数据生成业务中,获取初始动画文件,动画文件包括虚拟模型对应的多帧骨骼关键帧,该骨骼关键帧至少包括盆骨骨骼对应的第一运动数据;基于第一运动数据,确定虚拟模型在运动过程中的运动趋势参数;基于运动趋势参数,对第一运动数据进行简化处理得到与盆骨骨骼对应的根骨骼的第二运动数据;根据根骨骼在每一骨骼关键帧中的第二运动数据,对多帧骨骼关键帧进行逐帧的运动数据向量运算,以得到用于表征根骨骼在多帧骨骼关键帧中运动变化的速度差异向量;当与多帧相邻的骨骼关键帧分别对应的速度差异向量的和大于预设阈值时,删除多帧相邻的帧骨骼关键帧的中间骨骼关键帧中的第二运动数据,以得到用于生成初始动画文件对应的根骨骼动画所需的简化关键帧数据,多帧相邻的骨骼关键帧的帧数包括至少三帧。可以根据盆骨骼的第一运动数据,自动确定根骨骼的第二运动数据,提高根骨骼的第二运动数据的确定效率和精准度,减少人力消耗;进一步的,可以对根骨骼的第二运动数据中的冗余数据进行删除,在不影响动画渲染效果的基础上,减少数据存储空间的浪费。

为了实现上述根骨骼关键帧数据的生成方法,本公开的示例性实施方式提供一种根骨骼关键帧数据的生成系统。图1示出了根骨骼关键帧数据的生成系统的示意性架构图。如图1所示,根骨骼关键帧数据的生成系统可以包括终端设备110和服务器120,其中,终端设备110可以是具有显示功能的各种电子设备,包括但不限于台式计算机、便携式计算机、智能手机和平板电脑等。终端设备可以安装三维动画软件、游戏程序等可以进行动画渲染的程序。服务器120可以是游戏开发方部署的服务器。

在一种可选的实施方式中,初始动画文件可以存储于终端设备110中,终端设备110可以执行本公开实施例中提供的根骨骼关键帧数据的生成方案;

在另一种可选的实施方式中,初始动画文件可以存储于服务器120中,在游戏开发人员需要处理初始动画文件时,终端设备110可以根据获取到与初始动画文件标识关联的初始动画文件加载操作,根据初始动画文件标识生成初始动画文件获取指令,并将初始动画文件获取指令发送至服务器120,服务器120可以根据初始动画文件获取指令中的初始动画文件标识,获取初始动画文件,并将初始动画文件发送至终端设备110,以使终端设备110执行本公开实施例中提供的根骨骼关键帧数据的生成方案。

本示例实施方式提供了一种根骨骼关键帧数据的生成方法,根骨骼关键帧数据的生成方法可以应用于终端设备中,如图2所示,根骨骼关键帧数据的生成方法包括:

步骤S201、获取初始动画文件;

其中,动画文件包括虚拟模型对应的多帧骨骼关键帧,骨骼关键帧至少包括盆骨骨骼对应的第一运动数据;

步骤S202、基于第一运动数据,确定虚拟模型在运动过程中的运动趋势参数;

步骤S203、基于运动趋势参数,对第一运动数据进行简化处理得到与盆骨骨骼对应的根骨骼的第二运动数据;

步骤S204、根据根骨骼在每一骨骼关键帧中的第二运动数据,对多帧骨骼关键帧进行逐帧的运动数据向量运算,以得到用于表征根骨骼在多帧骨骼关键帧中运动变化的速度差异向量;

步骤S205、当与多帧相邻的骨骼关键帧分别对应的速度差异向量的和大于预设阈值时,删除多帧相邻的帧骨骼关键帧的中间骨骼关键帧中的第二运动数据,以得到用于生成初始动画文件对应的根骨骼动画所需的简化关键帧数据;

其中,多帧相邻的骨骼关键帧的帧数包括至少三帧。

综上所述,本公开实施例提供的根骨骼关键帧数据的生成方法,一方面,可以根据虚拟模型的运动趋势参数,对虚拟模型的盆骨骨骼的第一运动数据进行简化处理,得到根骨骨骼的第二运动数据,实现根骨骼的第二运动数据的自动化生成,减少了人力资源的消耗,提升了确定的根骨骼的第二运动数据的精准度;另一方面,可以删除运动趋势不发生显著变化的骨骼关键帧中的第二运动数据,在不影响动画渲染效果的基础上,减少数据存储空间的浪费以及降低动画渲染的性能压力。

下面对本公开涉及的概念进行说明:

静态模型是由空间中的点连接成面组成的三维模型,没有骨骼绑定,模型是静止的。给静态模型绑定骨骼后,骨骼运动即可牵动模型运动。

盆骨骨骼:三维模型的骨骼系统是树状结构的,头骨骼的父节点是脖子骨骼,脖子骨骼的父节点是脊柱骨骼。一套人体骨骼一般是从盆骨骨骼(pelvis)为起点的,盆骨的位置和朝向,可以约等于人体的位置和朝向。

根骨骼:根骨骼是树状骨骼系统的根节点,根骨骼是盆骨骨骼的父节点。根骨骼不绑定模型,可以用于标识虚拟对象如虚拟模型的位置和朝向,并且可以用来挂载碰撞体等对象。在三维游戏中,在虚拟对象形状复杂的情况下,难以模拟物理计算,所以通过在根骨骼挂载一个近似物体形状的简单几何体的碰撞体来模拟这个物体的物理表面。

举例而言,如图3所示,图中所示为虚拟模型的三维模型在执行一组原地释放的动作时每一帧的画面,盆骨骨骼位于三维模型的盆骨位置,根骨骼的位置在三维模型的底部,方框为挂载于根骨骼的碰撞体。如图3所示,盆骨骨骼每一帧都在运动,处于不同的位置,根骨骼没有动画所以位置保持不变,同时碰撞体也没有变化。

如果虚拟模型不在原地不动或执行有位移的动作,则根骨骼需要和三维模型或盆骨骨骼一起运动,否则会造成碰撞体的位置不发生变化,进而导致无法进行进一步交互等问题。

举例而言,如图4所示。图4上部为虚拟模型进行跑步动作,根骨骼未和盆骨骨骼一起运动,则碰撞体实际位置没有改变。图3下部同样为虚拟模型进行跑步动作,根骨骼和盆骨骨骼一起运动,则碰撞体实际位置跟随着虚拟模型。

下面,对于本示例实施方式的上述步骤进行更加详细的说明。

在步骤S201中,终端设备可以获取初始动画文件。

在本公开实施例中,初始动画文件可以是虚拟模型的动画信息文件,动画文件包括虚拟模型对应的多帧骨骼关键帧,骨骼关键帧至少包括盆骨骨骼对应的第一运动数据,其中,与盆骨骨骼对应的第一运动数据至少包括盆骨骨骼的位置数据,与盆骨骨骼对应的第一运动数据还可以包括盆骨骨骼的朝向数据中。

在一种可选的实施方式中,终端设备获取初始动画文件的过程可以包括:在终端设备运行三维动画处理软件时,响应于对初始动画文件的选中操作,获取初始动画文件,其中,初始动画文件可以为终端设备中存储的任一动画文件。

在一种可选的实施方式中,终端设备获取初始动画文件的过程可以包括:在终端设备运行三维动画处理软件时,终端设备获取到与初始动画文件标识关联的初始动画文件加载操作,根据初始动画文件标识生成初始动画文件获取指令,并将初始动画文件获取指令发送至服务器,服务器可以根据初始动画文件获取指令中的初始动画文件标识,获取初始动画文件,并将初始动画文件返回终端设备。

在步骤S202中,终端设备可以基于第一运动数据,确定虚拟模型在运动过程中的运动趋势参数。

在本公开实施例中,运动趋势参数用于表征虚拟模型的运动趋势,运动趋势包括位置趋势和朝向趋势中的至少一个,例如,位置趋势可以包括:在三维虚拟场景中,虚拟模型在y轴发生运动;运动趋势参数可以包括三维的虚拟模型的位置轴向参数(xp,yp,zp),以及旋转轴向参数zr,其中,xp为三维虚拟场景中x轴的轴向参数,yp为三维虚拟场景中y轴的轴向参数,以及zp为三维虚拟场景中z轴的轴向参数。

需要说明的是,在本公开实施例中,位置轴向参数可以为0或1,位置轴向参数为0,表示虚拟模型在位置轴向上未发生运动,位置轴向参数为1,表示虚拟模型在位置轴向上发生运动;例如,若x轴的轴向参数xp为1,表示虚拟模型在x轴的轴向上发生了运动。

在一种可选的实施方式中,终端设备基于第一运动数据,确定虚拟模型在运动过程中的运动趋势参数的过程可以包括:获取预先生成的与初始动画文件关联的运动趋势参数,其中,与初始动画文件关联的虚拟模型在运动过程中的运动趋势参数,是基于与初始动画文件关联的第一运动数据确定的。

其中,终端设备基于与初始动画文件关联的第一运动数据,确定虚拟模型在运动过程中的运动趋势参数的过程可以包括:在终端设备运行三维动画处理软件时,响应于与初始动画文件关联的渲染操作,根据与每帧骨骼关键帧中的盆骨骨骼对应的第一运动数据,渲染并展示与初始动画文件对应的动画画面;响应于获取到用户输入的运动趋势参数,得到与初始动画文件关联的虚拟模型在运动过程中的运动趋势参数。

在步骤S203中,终端设备可以基于运动趋势参数,对第一运动数据进行简化处理得到与盆骨骨骼对应的根骨骼的第二运动数据。

在一种可选的实施方式中,第一运动数据包括盆骨骨骼位置数据,终端设备基于运动趋势参数,对第一运动数据进行简化处理得到与盆骨骨骼对应的根骨骼的第二运动数据,包括:获取运动趋势参数中的位置轴向参数;根据盆骨骨骼位置数据以及位置轴向参数,确定根骨骼位置数据,并将根骨骼位置数据确定为与盆骨骨骼对应的根骨骼的第二运动数据。可以根据用于表征虚拟模型的位置变化情况的位置轴向参数,以及作为根骨骼的子节点的盆骨骨骼的盆骨骨骼位置数据,快速准确的确定根骨骼位置数据,简化了确定根骨骼的运动数据的难度。

其中,根据盆骨骨骼位置数据以及位置轴向参数,确定根骨骼位置数据的过程可以包括:根据盆骨骨骼位置数据、位置轴向参数以及第一公式(公式1),确定根骨骼位置数据p2:

p2=(p1.x·xp,p1.y·yp,p1.z·zp); 公式1

其中,p1.x表示盆骨骨骼在x轴上的盆骨骼位置数据,p1.y表示盆骨骨骼在y轴上的盆骨骼位置数据,p1.z表示盆骨骨骼在z轴上的盆骨骼位置数据;需要说明的是,若xp为0,则表示虚拟模型的位置在x轴上未发生运动,p1.x·xp表示在确定根骨骼位置数据时,不保留盆骨骨骼在x轴上的位置数据;或者若xp为1,则表示虚拟模型的位置在x轴上发生运动,p1.x·xp表示在确定根骨骼位置数据时,保留盆骨骨骼在x轴上的位置数据。p1.y·yp和p1.z·zp与p1.x·xp类似,本公开实施例在此不再赘述。

在一种可选的实施方式中,第一运动数据包括盆骨骨骼朝向数据,终端设备基于运动趋势参数,对第一运动数据进行简化处理得到与盆骨骨骼对应的根骨骼的第二运动数据的过程可以包括:获取运动趋势参数中的旋转轴向参数;根据盆骨骨骼朝向数据以及旋转轴向参数,确定根骨骼朝向数据,并将根骨骼朝向数据确定为与盆骨骨骼对应的根骨骼的第二运动数据。可以根据用于表征虚拟模型的朝向变化情况的旋转轴向参数,以及作为根骨骼的子节点的盆骨骨骼的盆骨骨骼朝向数据,快速准确的确定根骨骼朝向数据,简化了确定根骨骼的运动数据的难度。

其中,终端设备根据盆骨骨骼朝向数据以及旋转轴向参数,确定根骨骼朝向数据的过程可以包括:根据盆骨骨骼朝向数据、位置轴向参数以及第二公式(公式2),确定根骨骼朝向数据r2:

其中,r1.

可以理解的是,与盆骨骨骼对应的根骨骼的第二运动数据至少包括根骨骼位置数据,与盆骨骨骼对应的根骨骼的第二运动数据还可以包括朝向数据。

在步骤S204中,终端设备可以根据根骨骼在每一骨骼关键帧中的第二运动数据,对多帧骨骼关键帧进行逐帧的运动数据向量运算,以得到用于表征根骨骼在多帧骨骼关键帧中运动变化的速度差异向量。

在一种可选的实施方式中,终端设备根据根骨骼在每一骨骼关键帧中的第二运动数据,对多帧骨骼关键帧进行逐帧的运动数据向量运算,以得到用于表征根骨骼在多帧骨骼关键帧中运动变化的速度差异向量的过程可以包括:

从多帧骨骼关键帧中的第二帧骨骼关键帧开始,依次确定当前骨骼关键帧中的根骨骼位置数据,以及上一骨骼关键帧中的根骨骼位置数据的第一差值,得到与每帧骨骼关键帧关联的位移差异向量;从多帧骨骼关键帧中的第二帧骨骼关键帧开始,依次确定与当前骨骼关键帧关联的位移差异向量,以及与上一骨骼关键帧关联的位移差异向量的第二差值,得到与每帧骨骼关键帧关联的速度差异向量,其中,位移差异向量用于表征相邻两帧的位置变化程度,速度差异向量用于表征相邻两帧的速度变化程度。可以根据相邻两帧骨骼关键帧中的根骨骼位置数据,确定虚拟模型的速度变化情况,可以提升确定的虚拟模型的速度变化情况的精准度。

示例的,如图5所示,图5中的圆形表示根骨骼的位置,从左至右是初始动画文件的多帧骨骼关键帧中,根骨骼的位置逐渐移动的过程,从第一个圆形的位置移动到第二个圆形的位置,对应经过一帧。从第二帧骨骼关键帧开始,确定第二帧骨骼关键帧中的根骨骼位置数据502和第一帧骨骼关键帧中的根骨骼位置数据501的第一差值,可以得到与第二帧骨骼关键帧关联的位移差异向量V

进一步的,如图6所示,从第二帧骨骼关键帧开始,确定与第二帧骨骼关键帧关联的位移差异向量V

在一种可选的实施方式中,终端设备根据根骨骼在每一骨骼关键帧中的第二运动数据,对多帧骨骼关键帧进行逐帧的运动数据向量运算,以得到用于表征根骨骼在多帧骨骼关键帧中运动变化的速度差异向量的过程可以包括:

从多帧骨骼关键帧中的第三帧骨骼关键帧开始,间隔一帧确定当前骨骼关键帧中的根骨骼位置数据,以及上一骨骼关键帧中的根骨骼位置数据的第一差值,得到与奇数帧骨骼关键帧关联的位移差异向量;从多帧骨骼关键帧中的第三帧骨骼关键帧开始,间隔一帧确定与当前骨骼关键帧关联的位移差异向量,以及与间隔上一骨骼关键帧关联的位移差异向量的第二差值,得到与奇数帧骨骼关键帧关联的速度差异向量。可以根据间隔帧骨骼关键帧中的根骨骼位置数据,确定虚拟模型的速度变化情况,可以提升确定的虚拟模型的速度变化情况的效率。

可以理解的是,终端设备从多帧骨骼关键帧中的第三帧骨骼关键帧开始,间隔一帧确定当前骨骼关键帧中的根骨骼位置数据,以及上一骨骼关键帧中的根骨骼位置数据的第一差值,得到与奇数帧骨骼关键帧关联的位移差异向量的过程,可以参考上述实施例中,终端设备从多帧骨骼关键帧中的第二帧骨骼关键帧开始,依次确定当前骨骼关键帧中的根骨骼位置数据,以及上一骨骼关键帧中的根骨骼位置数据的第一差值,得到与每帧骨骼关键帧关联的位移差异向量的过程,本公开实施例对此不作赘述。

类似的,终端设备从多帧骨骼关键帧中的第三帧骨骼关键帧开始,间隔一帧确定与当前骨骼关键帧关联的位移差异向量,以及与间隔上一骨骼关键帧关联的位移差异向量的第二差值,得到与奇数帧骨骼关键帧关联的速度差异向量的过程,可以参考上述实施例中,终端设备从多帧骨骼关键帧中的第二帧骨骼关键帧开始,依次确定与当前骨骼关键帧关联的位移差异向量,以及与上一骨骼关键帧关联的位移差异向量的第二差值,得到与每帧骨骼关键帧关联的速度差异向量的过程,本公开实施例对此不作赘述。

在步骤S205中,当与多帧相邻的骨骼关键帧分别对应的速度差异向量的和大于预设阈值时,删除多帧相邻的帧骨骼关键帧的中间骨骼关键帧中的第二运动数据,以得到用于生成初始动画文件对应的根骨骼动画所需的简化关键帧数据。

在本公开实施例中,当与多帧相邻的骨骼关键帧分别对应的速度差异向量的和大于预设阈值时,可以确定虚拟模型在多帧相邻的帧骨骼关键帧的中间骨骼关键帧中的运动趋势并无大的变化,可以删除多帧相邻的帧骨骼关键帧的中间骨骼关键帧中的第二运动数据,且不会对虚拟模型的视觉效果产生影响;其中,多帧相邻的骨骼关键帧的帧数包括至少三帧。

在一种可选的实施方式中,当与多帧相邻的骨骼关键帧分别对应的速度差异向量的和大于预设阈值时,终端设备删除多帧相邻的帧骨骼关键帧的中间骨骼关键帧中的第二运动数据的构成可以包括:确定与多帧骨骼关键帧中的任一帧骨骼关键帧至目标骨骼关键帧分别关联的速度差异向量的和值,得到累计速度差异向量;若累计速度差异向量大于预设阈值,则删除任一帧骨骼关键帧和目标骨骼关键帧之间的骨骼关键帧中的第二运动数据。其中,目标骨骼关键帧处于任一帧骨骼关键帧之后,且与任一帧骨骼关键帧间隔至少一帧;可以从多帧骨骼关键帧中的任一帧骨骼关键帧开始,对多帧骨骼关键帧中的冗余数据进行删除,满足用户对根骨骼的第二运动数据的多样化简化需求。

需要说明的是,预设阈值可以基于实际需要确定,本公开实施例对此不作限定,例如,可以基于动画精度、渲染性能等在内的参考因素,可以针对不同动画文件配置不同的预设阈值。

在一种可选的实施方式中,当与多帧相邻的骨骼关键帧分别对应的速度差异向量的和大于预设阈值时,终端设备删除多帧相邻的帧骨骼关键帧的中间骨骼关键帧中的第二运动数据的构成可以包括:

确定与多帧骨骼关键帧中的第一帧骨骼关键帧至目标骨骼关键帧分别关联的速度差异向量的和值,得到累计速度差异向量;若累计速度差异向量大于预设阈值,则删除第一帧骨骼关键帧和目标骨骼关键帧之间的骨骼关键帧中的第二运动数据。其中,目标骨骼关键帧处于第一帧骨骼关键帧之后,且与第一帧骨骼关键帧间隔至少一帧,示例的,目标骨骼关键帧可以为第三帧骨骼关键帧;可以从多帧骨骼关键帧中的第一帧骨骼关键帧开始,对多帧骨骼关键帧中的冗余第二运动数据进行删除,减少得到的用于生成初始动画文件对应的根骨骼动画所需的简化关键帧数据的数据量,减少数据存储空间的占用。

在一种可选的实施方式中,若第一累计速度差异向量小于或者等于预设阈值,则将多帧骨骼关键帧中,处于目标帧骨骼关键帧之后的下一帧骨骼关键帧确定为更新后的目标骨骼关键帧;确定与第一帧骨骼关键帧至更新后的目标骨骼关键帧分别关联的速度差异向量的和值,得到第一更新累计速度差异向量;若第一更新累计速度差异向量大于预设阈值,则删除第一帧骨骼关键帧和更新后的目标骨骼关键帧之间的骨骼关键帧。可以从多帧骨骼关键帧中的第一帧骨骼关键帧开始,在确定第一帧骨骼关键帧至目标骨骼关键帧中,不存在冗余第二运动数据的骨骼关机键帧时,更新目标关键帧,直至遍历多帧骨骼关键帧中的每个骨骼关键帧,进一步减少得到的用于生成初始动画文件对应的根骨骼动画所需的简化关键帧数据的数据量。

举例而言,如图7所示。图7中包括连接圆形的位移差异向量,速度差异向量,以及多帧相邻的骨骼关键帧分别对应的速度差异向量的和向量,位移差异向量在图7中用第一箭头指示,速度差异向量在图7中用第二箭头指示,速度差异向量的和向量在图7中用第三箭头指示;在图7中,多帧相邻的骨骼关键帧分别对应的速度差异向量的和向量包括701和702。

则多帧相邻的帧骨骼关键帧的中间骨骼关键帧中的第二运动数据后,将根骨骼的第二运动数据进行简化。举例而言,继续参考图7,从左至右可以分别为第一帧骨骼关键帧、第二帧骨骼关键帧、第三帧骨骼关键帧和第四帧骨骼关键帧。从第一帧骨骼关键帧至第四帧关骨骼键帧,累计速度差异向量的和大于预设阈值,表示在第四帧骨骼关键帧时虚拟模型的运动趋势发生较大变化。则表示在第一骨骼关键帧和第四骨骼关键帧之间的第二骨骼关键帧和第三骨骼关键帧中,虚拟模型的运动趋势并没有发生大的变化,可以将第二关键帧和第三关键帧中的第二运动数据删除,同时也不会影响动画画面的视觉效果。

在一种可选的实施方式中,在删除第一帧骨骼关键帧和目标骨骼关键帧之间的骨骼关键帧中的第二运动数据之后,终端设备还可以:将多帧骨骼关键帧中,处于目标骨骼关键帧之后的下一帧骨骼关键帧确定为更新后的第一帧骨骼关键帧;将多帧骨骼关键帧中,处于更新后的第一帧骨骼关键帧之后,且与更新后的第一帧骨骼关键帧间隔至少一帧的骨骼关键帧,确定为更新后的目标骨骼关键帧;确定与更新后的第一帧骨骼关键帧至更新后的目标骨骼关键帧分别关联的速度差异向量的和值,得到第二更新累计速度差异向量;若第二更新累计速度差异向量大于预设阈值,则删除更新后的第一帧骨骼关键帧和更新后的目标骨骼关键帧之间的骨骼关键帧中的第二运动数据。可以从多帧骨骼关键帧中的第一帧骨骼关键帧开始,在确定第一帧骨骼关键帧至目标骨骼关键帧中,存在冗余第二运动数据的骨骼关机键帧,并对冗余第二运动数据删除后,继续确定新的第一骨骼关键帧和新的目标骨骼关键帧,直至遍历多帧骨骼关键帧中的每个骨骼关键帧,删除对多帧骨骼关键帧中的所有冗余数据,进一步减少得到的用于生成初始动画文件对应的根骨骼动画所需的简化关键帧数据的数据量。

如图8所示,图8是对图7所示根骨骼的位置变化过程,进行了两处简化后生成的根骨骼的位置变化图。图7中包括九个骨骼关键帧,九个骨骼关键帧中有两个关键帧指示了根骨骼动画的较大变化。因此图8中,将九个关键帧中,从左至右的第二和第三关键帧删除,将第五和第六关键帧删除,得到进行两处简化后的根骨骼的位置变化图。

需要说明的是,在本公开实施例中,在得到用于生成所述初始动画文件对应的根骨骼动画所需的简化关键帧数据之后,在初始动画文件的渲染过程中,在渲染至保留有根骨骼的第二运动数据的第一骨骼关键帧时,可以按照根骨骼的第二运动数据渲染虚拟模型的运动状态,在渲染至未保留根骨骼的第二运动数据的第二骨骼关键帧时,可以上一保留根骨骼的第二运动数据的骨骼关键帧,以及下一保留根骨骼的第二运动数据的骨骼关键帧,自动补齐第二骨骼关键帧的根骨骼的第二运动数据,以渲染虚拟模型的运动状态。

本示例实施方式中,还提供了一种根骨骼关键帧数据的生成装置900。参考图9所示,该根骨骼关键帧数据的生成装置900可以包括:

获取模块901,被配置为获取初始动画文件,动画文件包括虚拟模型对应的多帧骨骼关键帧,骨骼关键帧至少包括盆骨骨骼对应的第一运动数据;

确定模块902,被配置基于第一运动数据,确定虚拟模型在运动过程中的运动趋势参数;

处理模块903,被配置基于运动趋势参数,对第一运动数据进行简化处理得到与盆骨骨骼对应的根骨骼的第二运动数据;

运算模块904,被配置为根据根骨骼在每一骨骼关键帧中的第二运动数据,对多帧骨骼关键帧进行逐帧的运动数据向量运算,以得到用于表征根骨骼在多帧骨骼关键帧中运动变化的速度差异向量;

删除模块905,被配置为当与多帧相邻的骨骼关键帧分别对应的速度差异向量的和大于预设阈值时,删除多帧相邻的帧骨骼关键帧的中间骨骼关键帧中的第二运动数据,以得到用于生成初始动画文件对应的根骨骼动画所需的简化关键帧数据,多帧相邻的骨骼关键帧的帧数包括至少三帧。

可选的,第一运动数据包括盆骨骨骼位置数据,处理模块903,被配置为:

获取运动趋势参数中的位置轴向参数;

根据盆骨骨骼位置数据以及位置轴向参数,确定根骨骼位置数据,并将根骨骼位置数据确定为与盆骨骨骼对应的根骨骼的第二运动数据。

可选的,第一运动数据包括盆骨骨骼朝向数据,处理模块903,被配置为:

获取运动趋势参数中的旋转轴向参数;

根据盆骨骨骼朝向数据以及旋转轴向参数,确定根骨骼朝向数据,并将根骨骼朝向数据确定为与盆骨骨骼对应的根骨骼的第二运动数据。

可选的,运算模块904,被配置为:

从多帧骨骼关键帧中的第二帧骨骼关键帧开始,依次确定当前骨骼关键帧中的根骨骼位置数据,以及上一骨骼关键帧中的根骨骼位置数据的第一差值,得到与每帧骨骼关键帧关联的位移差异向量;

从多帧骨骼关键帧中的第二帧骨骼关键帧开始,依次确定与当前骨骼关键帧关联的位移差异向量,以及与上一骨骼关键帧关联的位移差异向量的第二差值,得到与每帧骨骼关键帧关联的速度差异向量。

可选的,删除模块905,被配置为:

确定与多帧骨骼关键帧中的第一帧骨骼关键帧至目标骨骼关键帧分别关联的速度差异向量的和值,得到累计速度差异向量,目标骨骼关键帧处于第一帧骨骼关键帧之后,且与第一帧骨骼关键帧间隔至少一帧;

若累计速度差异向量大于预设阈值,则删除第一帧骨骼关键帧和目标骨骼关键帧之间的骨骼关键帧中的第二运动数据。

可选的,如图9所示,根骨骼关键帧数据的生成装置900还包括,第一更新模块906,被配置为:

若第一累计速度差异向量小于或者等于预设阈值,则将多帧骨骼关键帧中,处于目标帧骨骼关键帧之后的下一帧骨骼关键帧确定为更新后的目标骨骼关键帧;

确定与第一帧骨骼关键帧至更新后的目标骨骼关键帧分别关联的速度差异向量的和值,得到第一更新累计速度差异向量;

若第一更新累计速度差异向量大于预设阈值,则删除第一帧骨骼关键帧和更新后的目标骨骼关键帧之间的骨骼关键帧。

可选的,如图9所示,根骨骼关键帧数据的生成装置还包括,第二更新模块907,被配置为:

将多帧骨骼关键帧中,处于目标骨骼关键帧之后的下一帧骨骼关键帧确定为更新后的第一帧骨骼关键帧;

将多帧骨骼关键帧中,处于更新后的第一帧骨骼关键帧之后,且与更新后的第一帧骨骼关键帧间隔至少一帧的骨骼关键帧,确定为更新后的目标骨骼关键帧;

确定与更新后的第一帧骨骼关键帧至更新后的目标骨骼关键帧分别关联的速度差异向量的和值,得到第二更新累计速度差异向量;

若第二更新累计速度差异向量大于预设阈值,则删除更新后的第一帧骨骼关键帧和更新后的目标骨骼关键帧之间的骨骼关键帧中的第二运动数据。

图10示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图,电子设备可以为终端设备。

需要说明的是,图10示出的电子设备的计算机系统仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图10所示,计算机系统包括中央处理单元(CPU),其可以根据存储在只读存储器(ROM)中的程序或者从存储部分加载到随机访问存储器(RAM)中的程序而执行各种适当的动作和处理。在RAM中,还存储有系统操作所需的各种程序和数据。CPU、ROM以及RAM通过总线彼此相连。输入/输出(I/O)接口也连接至总线。

以下部件连接至(I/O)接口:包括键盘、鼠标等的输入部分;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分;包括硬盘等的存储部分;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分。通信部分经由诸如因特网的网络执行通信处理。驱动器也根据需要连接至(I/O)接口。可拆卸介质,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器上,以便于从其上读出的计算机程序根据需要被安装入存储部分。

应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

由于本公开的示例实施例的根骨骼动画简化装置的各个功能模块与上述根骨骼动画生成方法的示例实施例的步骤对应,因此对于本公开装置实施例中未披露的细节和效果,请参照本公开上述的根骨骼动画生成方法的实施例。

以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器(Digital Singnal Processor,简称DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(CentralProcessing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(System-on-a-chip,简称SOC)的形式实现。

在本公开所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本发明各个实施例所述方法的部分步骤。

上仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

技术分类

06120115629058