一种用于生成动画数据的方法和装置与流程

文档序号:12273131阅读:456来源:国知局
一种用于生成动画数据的方法和装置与流程

本申请涉及计算机技术领域,具体涉及多媒体技术领域,尤其涉及用于生成动画数据的方法和装置。



背景技术:

在动画技术领域中,需要获取各种动画形象的动画数据,才能通过渲染得到相应的动画。现有技术中,通常需要动画师提供动画形象的动画数据,以使所形成的动画形象更加逼真。

然而,一味地依靠动画师提供动画数据,需要大量的人工操作。并且,动画师提供的动画数据使用场景较为限制,不利于多变化的场合,而为各个场景均提供动画数据会在动画制作过程中造成数据臃肿,限制软件的应用。因此,需要减少动画数据的制作,获得能自动适应场景与目的变化的动画数据。



技术实现要素:

本申请的目的在于提出一种用于生成动画数据的方法和装置,来解决以上背景技术部分提到的技术问题。

第一方面,本申请提供了一种用于生成动画数据的方法,所述方法包括:获取待生成的目标动画中至少一个目标动画片段的目标运动参数;将所述目标运动参数映射为与预先训练的径向基函数神经网络模型的输入相匹配的向量后输入至所述径向基函数神经网络模型,其中所述径向基函数神经网络模型是通过样本动画片段序列中的各个样本动画片段进行训练得到的;将所述径向基函数神经网络模型所输出的向量中的各个分量确定为所述样本动画片段序列中各个样本动画片段的融合权重系数;按照所述融合权重系数,使用所述样本动画片段序列中各个样本动画片段的动画数据进行融合,得到目标动画片段的动画数据;基于所述至少一个目标动画片段的动画数据,生成所述目标动画的动画数据。

在一些实施例中,所述样本动画片段序列中的各个样本动画片段为骨骼动画。

在一些实施例中,所述方法包括训练径向基函数神经网络模型的步骤,所述训练径向基函数神经网络模型的步骤包括:针对所述样本动画片段序列中各个样本动画片段,将样本动画片段的运动参数映射为第一向量,并根据样本动画片段在所述样本动画片段序列中的次序生成第二向量,其中,第二向量的维度是所述样本动画片段序列中样本动画片段的个数,且第二向量中与样本动画片段的次序对应的分量上置1,其它分量置0;将第一向量的维度确定为待训练的径向基函数神经网络模型的输入层节点个数,将所述样本动画片段序列中样本动画片段的个数确定为所述径向基函数神经网络模型的中间隐含层的节点个数以及输出层的节点个数;将样本动画片段对应的第一向量作为所述径向基函数神经网络模型的输入,并将样本动画片段对应的第二向量作为所述径向基函数神经网络模型的输出,对所述径向基函数神经网络模型进行训练。

在一些实施例中,所述样本动画片段序列中的各个样本动画片段已预先根据关键时间点划分为至少一个时间片段;以及所述按照所述融合权重系数,使用所述样本动画片段序列中各个样本动画片段的动画数据进行融合,包括:按照各个样本动画片段的融合权重系数,对各个样本动画片段中的时间片段的时长进行加权平均,以确定目标动画片段中时间片段的时长;将各个样本动画片段的时间片段的时长调整为与目标动画片段中的时间片段一致;针对调整后的各个样本动画片段,按照所述融合权重系数对各个时间片段内的动画帧的骨骼参数执行融合插值,得到目标动画片段中相应时间片段内的动画帧的骨骼参数。

在一些实施例中,所述按照所述融合权重系数对各个时间片段内的动画帧的骨骼参数执行融合插值,包括以下至少一项:对动画帧中各个骨骼的旋转参数执行球面插值;对动画帧中根骨骼的位置参数执行线性插值。

在一些实施例中,在所述针对调整后的各个样本动画片段,按照所述融合权重系数对各个时间片段内的动画帧的骨骼参数执行插值操作之前,所述按照所述融合权重系数对各个时间片段内的动画帧的骨骼参数执行融合插值,还包括:获取各个样本动画片段与目标动画片段的根骨骼的水平朝向差和/或水平位置差;调整各个样本动画片段的根骨骼的水平朝向和/或水平位置,以消除所述水平朝向差和/或水平位置差。

在一些实施例中,所述基于所述至少一个目标动画片段的动画数据,生成所述目标动画的动画数据,包括:获取当前目标动画片段的第一个动画帧的骨骼参数以及前一目标动画片段的最后一个动画帧的骨骼参数;根据两个动画帧的骨骼参数,通过插值方法计算待插入所述两个动画帧之间的中间动画帧的骨骼参数;在所述两个动画帧之间插入所述中间动画帧,以生成所述目标动画的动画数据。

在一些实施例中,所述方法还包括:针对目标动画片段的时间片段中的各个动画帧,获取动画帧中待修正骨骼的目标位置参数;确定所述待修正骨骼的当前位置参数与目标位置参数之间的差值;使用反向动力学迭代调整所述待修正骨骼以及相关联的骨骼的旋转参数,以修正所述差值。

在一些实施例中,所述使用反向动力学迭代调整所述待修正骨骼以及相关联的骨骼的旋转参数,以修正所述差值,包括:获取预先保存的、对上一动画帧的待修正骨骼使用反向动力学迭代调整骨骼的旋转参数的调整值;将所述调整值设置为对当前动画帧使用反向动力学迭代调整骨骼的旋转参数时的初始调整值。

在一些实施例中,在将所述调整值设置为对当前动画帧使用反向动力学迭代调整骨骼的旋转参数时的初始调整值之前,所述方法还包括:对所述调整值进行衰减。

第二方面,本申请提供了一种用于生成动画数据的装置,所述装置包括:获取单元,用于获取待生成的目标动画中至少一个目标动画片段的目标运动参数;输入单元,用于将所述目标运动参数映射为与预先训练的径向基函数神经网络模型的输入相匹配的向量后输入至所述径向基函数神经网络模型,其中所述径向基函数神经网络模型是通过样本动画片段序列中的各个样本动画片段进行训练得到的;确定单元,用于将所述径向基函数神经网络模型所输出的向量中的各个分量确定为所述样本动画片段序列中各个样本动画片段的融合权重系数;融合单元,用于按照所述融合权重系数,使用所述样本动画片段序列中各个样本动画片段的动画数据进行融合,得到目标动画片段的动画数据;生成单元,用于基于所述至少一个目标动画片段的动画数据,生成所述目标动画的动画数据。

在一些实施例中,所述样本动画片段序列中的各个样本动画片段为骨骼动画。

在一些实施例中,所述装置还包括用于训练径向基函数神经网络模型的训练单元,所述训练单元具体用于:针对所述样本动画片段序列中各个样本动画片段,将样本动画片段的运动参数映射为第一向量,并根据样本动画片段在所述样本动画片段序列中的次序生成第二向量,其中,第二向量的维度是所述样本动画片段序列中样本动画片段的个数,且第二向量中与样本动画片段的次序对应的分量上置1,其它分量置0;将第一向量的维度确定为待训练的径向基函数神经网络模型的输入层节点个数,将所述样本动画片段序列中样本动画片段的个数确定为所述径向基函数神经网络模型的中间隐含层的节点个数以及输出层的节点个数;将样本动画片段对应的第一向量作为所述径向基函数神经网络模型的输入,并将样本动画片段对应的第二向量作为所述径向基函数神经网络模型的输出,对所述径向基函数神经网络模型进行训练。

在一些实施例中,所述样本动画片段序列中的各个样本动画片段已预先根据关键时间点划分为至少一个时间片段;以及所述融合单元,包括:时长确定子单元,用于按照各个样本动画片段的融合权重系数,对各个样本动画片段中的时间片段的时长进行加权平均,以确定目标动画片段中时间片段的时长;时长调整子单元,用于将各个样本动画片段的时间片段的时长调整为与目标动画片段中的时间片段一致;融合子单元,用于针对调整后的各个样本动画片段,按照所述融合权重系数对各个时间片段内的动画帧的骨骼参数执行融合插值,得到目标动画片段中相应时间片段内的动画帧的骨骼参数。

在一些实施例中,所述融合子单元进一步用于以下至少一项:对动画帧中各个骨骼的旋转参数执行球面插值;对动画帧中根骨骼的位置参数执行线性插值。

在一些实施例中,所述融合单元还包括配准子单元,用于:获取各个样本动画片段与目标动画片段的根骨骼的水平朝向差和/或水平位置差;调整各个样本动画片段的根骨骼的水平朝向和/或水平位置,以消除所述水平朝向差和/或水平位置差。

在一些实施例中,所述生成单元,包括:获取子单元,用于获取当前目标动画片段的第一个动画帧的骨骼参数以及前一目标动画片段的最后一个动画帧的骨骼参数;计算子单元,用于根据两个动画帧的骨骼参数,通过插值方法计算待插入所述两个动画帧之间的中间动画帧的骨骼参数;插入子单元,用于在所述两个动画帧之间插入所述中间动画帧,以生成所述目标动画的动画数据。

在一些实施例中,所述装置还包括:位置参数获取单元,用于针对目标动画片段的时间片段中的各个动画帧,获取动画帧中待修正骨骼的目标位置参数;差值确定单元,用于确定所述待修正骨骼的当前位置参数与目标位置参数之间的差值;调整单元,用于使用反向动力学迭代调整所述待修正骨骼以及相关联的骨骼的旋转参数,以修正所述差值。

在一些实施例中,所述调整单元,包括:调整值获取子单元,用于获取预先保存的、对上一动画帧的待修正骨骼使用反向动力学迭代调整骨骼的旋转参数的调整值;设置子单元,用于将所述调整值设置为对当前动画帧使用反向动力学迭代调整骨骼的旋转参数时的初始调整值。

在一些实施例中,所述调整单元还包括:衰减子单元,用于在将所述调整值设置为对当前动画帧使用反向动力学迭代调整骨骼的旋转参数时的初始调整值之前,对所述调整值进行衰减。

本申请提供的用于生成动画数据的方法和装置,可以利用样本动画片段序列以及样本动画片段序列生成的径向基函数神经网络模型即可根据目标运动参数得到目标动画片段,最终形成目标动画,实现了动画数据的自动生成,减小了人工设计动画的压力,也减小了数据存储压力。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1是本申请可以应用于其中的示例性系统架构图;

图2是根据本申请的用于生成动画数据的方法的一个实施例的流程图;

图3是根据本申请的用于生成动画数据的方法的又一个实施例的流程图;

图4是根据本申请的用于生成动画数据的装置的一个实施例的结构示意图;

图5是适于用来实现本申请实施例的终端设备或服务器的计算机系统的结构示意图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

图1示出了可以应用本申请的用于生成动画数据的方法和装置的实施例的示例性系统架构100。

如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如动画设计软件、动画播放软件等。

终端设备101、102、103可以是具有显示屏并且支持动画展示或动画设计的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。

服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的动画提供支持的后台服务器。后台服务器可以对接收到的动画生成请求等数据进行分析等处理,并将处理结果(例如动画数据)反馈给终端设备。

需要说明的是,本申请实施例所提供的用于生成动画的方法可以由服务器105执行,也可以由终端设备101、102、103执行,也可以由服务器105和终端设备101、102、103分别执行不同的步骤;相应地,用于生成动画的装置可以设置于服务器105中,也可以设置于终端设备101、102、103,也可以在服务器105和终端设备101、102、103设置不同的单元。

应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。

继续参考图2,示出了根据本申请的用于生成动画数据的方法的一个实施例的流程200。所述的用于生成动画数据的方法,包括以下步骤:

步骤201,获取待生成的目标动画中至少一个目标动画片段的目标运动参数。

在本实施例中,待生成的目标动画是用户想得到的动画,该目标动画可以由至少一个目标动画片段组成。针对各个目标动画片段,生成动画数据的方法运行于其上的电子设备(例如图1所示的服务器或终端设备)可以通过各种方法获取目标动画片段的目标运动参数。当电子设备为服务器时,服务器可以获取终端设备发送的目标运动参数,也可以获取预先存储在服务器本地的目标运动参数,还可以从其他服务器获取该参数;当电子设备为终端设备时,终端设备通常可以从用户处获取该目标运动参数,也可以从其他设备获取该参数。目标动画片段的目标运动参数,可以体现目标动画片段中的物体运动时的运动状态。目标运动参数可以是单个参数,也可以是多个参数。例如,行走动画的目标动画片段中的目标运动参数可以包括前进速度、侧向速度和转弯速度。

步骤202,将目标运动参数映射为与预先训练的径向基函数神经网络模型的输入相匹配的向量后输入至径向基函数神经网络模型。

在本实施例中,基于步骤201中得到的目标运动参数,电子设备可以将其映射为与预先训练的径向基函数神经网络模型的输入相匹配的向量,再将该向量输入至该径向基函数神经网络模型中。其中,径向基函数神经网络模型是通过样本动画片段序列中的各个样本动画片段进行训练得到的。实践中,在将映射所形成的向量输入径向基函数神经网络模型之前,可以预先对向量进行范围约束。即,在向量超出训练数据的范围时,对向量进行约束调整,从而保证输入至径向基函数神经网络模型的向量不超出训练数据的范围。

步骤203,将径向基函数神经网络模型所输出的向量中的各个分量确定为样本动画片段序列中各个样本动画片段的融合权重系数。

在本实施例中,基于步骤202输入至径向基函数神经网络模型,该径向基函数神经网络模型可以输出对应的向量,电子设备可以将所输出的向量中的各个分量确定融合权重系数,该权重融合系数用于确定后续对样本动画片段序列中各个样本动画片段融合得到目标动画片段时使用到的样本动画片段以及各自的使用比例。

步骤204,按照融合权重系数,使用样本动画片段序列中各个样本动画片段的动画数据进行融合,得到目标动画片段的动画数据。

在本实施例中,基于步骤203中得到的融合权重系数,电子设备可以使用样本动画片段序列中各个样本动画片段的动画数据进行融合,融合得到的动画数据即可作为对应的目标动画片段的动画数据。

步骤205,基于至少一个目标动画片段的动画数据,生成目标动画的动画数据。

在本实施例中,基于步骤204得到的目标动画片段的动画数据,电子设备可以按照顺序对各个目标动画片段进行拼接,从而得到整个目标动画的动画数据。

在本实施例的一些可选实现方式中,样本动画片段序列中的各个样本动画片段为骨骼动画。骨骼动画由一根根互相作用连接的“骨头”组成,通过控制这些骨骼的位置、旋转方向和大小,并在这些骨头的位置附着皮肤数据,即可渲染成所需的可见动画形象。在骨骼动画中,骨骼按照动画角色的特点形成一个层次结构,即骨骼结构。骨骼结构就是一系列的骨头相结合形成的骨层级,这些骨骼按照父子关系是以树状结构组织起来的,形成角色模型的整个骨骼框架。位于树根处的骨头称为根骨骼,它是形成骨骼结构的关键点。而其他所有的骨骼被称为子骨骼或者兄弟骨骼,它们都附属于根骨骼,都直接或间接连接到根骨骼上。换句话说,每一个骨骼相对于其下一层级的骨骼来说均为其父骨骼。骨骼动画中一般每块骨骼都带有两个矩阵,一个是初始矩阵,用于表示骨骼的初始位置;另一个是变换矩阵,它可以反映出骨骼的变换情况;通过初始矩阵和变化矩阵相乘计算可以得到该骨骼的最终矩阵,主要用于对骨骼进行变换。通常,初始矩阵、变换矩阵以及最终矩阵既可以通过相对矩阵进行表征,也可以通过绝对矩阵进行表征。其中,绝对矩阵是当前骨骼相对于世界的矩阵,相对矩阵是当前骨骼相对于其父骨骼的矩阵。当前骨骼的绝对矩阵可以通过其相对矩阵与父骨骼的绝对矩阵相乘得到,而其父骨骼绝对矩阵可以通过该父骨骼的相对矩阵与上一层骨骼的绝对矩阵相乘得到。因此,以上述方式迭代相乘直到根骨骼,即可以计算得到当前骨骼的绝对矩阵。相邻的骨骼由关节连在一起,可以做相对的运动。当骨骼之间发生旋转时,组成动画角色的骨骼就可以做出不同的动作,从而实现不同的动画效果。相对于顶点动画,骨骼动画只需要存储骨骼变换数据,不需要在每一帧中存储各个顶点的数据,因此使用骨骼动画可以节省许多存储空间。

在本实施例的一些可选实现方式中,上述方法还包括训练径向基函数神经网络模型的步骤。该训练径向基函数神经网络模型的步骤具体包括以下过程:

首先,针对样本动画片段序列中各个样本动画片段,将样本动画片段的运动参数映射为第一向量,并根据样本动画片段在样本动画片段序列中的次序生成第二向量。其中,样本动画片段序列包括至少一个样本动画片段,且各个样本动画片段可以有对应的序号,例如样本动画片段序列包括样本动画片段1、样本动画片段2……样本动画片段n。在将样本动画片段的运动参数映射为第一向量时,动画参数可以包括至少一个物理量,将当前运动的各个物理量的值作为分量,即可形成第一向量。以行走动画为例,行走动画的运动参数可以包括前进速度、侧向速度以及转弯速度等三个物理量,则样本动画片段所映射成的第一向量包括分别与前进速度、侧向速度以及转弯速度的值所对应的三个分量,即第一向量的维度为3。需要说明的是,样本动画片段中的运动参数通常需要与目标动画中的目标运动参数保持一致。

在根据样本动画片段在动画片段序列中的次序生成第二向量,第二向量的维度是样本动画片段序列中动画片段的个数,且第二向量中与样本动画片段的次序对应的分量上置1,其它分量置0。例如,当样本动画片段序列包括样本动画片段1、样本动画片段2……样本动画片段n时,样本动画片段的数量为n,则各个样本动画片段对应的第二向量的维度为n,即第二向量可以用(X1,X2……Xn)的形式表示。对于样本动画片段1,由于其序号为1,则在X1分量上置1,X2……Xn则置为0,即样本动画片段1对应的第二向量是(1,0……0)。对应的,样本动画片段2对应的第二向量是(0,1,0……0),样本动画片段n对应的第二向量是(0,0……0,1)。

其次,将第一向量的维度确定为待训练的径向基函数神经网络模型的输入层节点个数,将样本动画片段序列中动画片段的个数确定为径向基函数神经网络模型的中间隐含层的节点个数以及输出层的节点个数。由于后续训练中需要将样本动画片段对应的第一向量作为径向基函数神经网络模型的输入以及将样本动画片段对应的第二向量作为径向基函数神经网络模型的输出,因此在确定所使用的的径向基函数神经网络模型规模时,可以将第一向量的维度确定为径向基函数神经网络模型的输入层节点个数,并将样本动画片段序列中动画片段的个数确定为径向基函数神经网络模型的中间隐含层的节点个数以及输出层的节点个数,以使得在径向基函数神经网络模型的规模与第一向量以及第二向量的大小相匹配。可选的,上述径向基函数神经网络模型的中间隐含层可以采用高斯核函数。

最后,将样本动画片段对应的第一向量作为径向基函数神经网络模型的输入,并将样本动画片段对应的第二向量作为径向基函数神经网络模型的输出,对径向基函数神经网络模型进行训练。由于径向基函数神经网络模型的规模与第一向量以及第二向量的大小相匹配,可以顺利利用样本动画片段对应的第一向量和第二向量对径向基函数神经网络模型进行训练,每次训练是将同一个样本动画片段对应的第一向量和第二向量作为径向基函数神经网络模型的输入与输出。在训练过程中,采用梯度下降的方法,训练中间隐含层与输出层之间的连接权值以及隐含层的宽度。即,在训练的过程中,由于输入和输出是确定的,通过确定的输入和输出来不断调整中间隐含层的函数。

在本实施例的一些可选的实现方式中,样本动画片段序列中的各个样本动画片段已预先根据关键时间点划分为至少一个时间片段;以及步骤204具体包括:首先,按照各个样本动画片段的融合权重系数,对各个样本动画片段中的时间片段的时长进行加权平均,以确定目标动画片段中时间片段的时长;其次,将各个样本动画片段的时间片段的时长调整为与目标动画片段中的时间片段一致;最后,针对调整后的各个样本动画片段,按照融合权重系数对各个时间片段内的动画帧的骨骼参数执行融合插值,得到目标动画片段中相应时间片段内的动画帧的骨骼参数。

在该实现方式中,关键时间点可以根据样本动画片段所表示的动作而具体确定。例如,以行走动画为例,由于行走动作在每次换脚前后姿态会有明显的变化,而两次换脚之间的姿态则呈渐进变化,因此行走动画的关键时间点可以是每次换脚时对应的动画帧。假设,行走动画对应的行走动作包括以左脚踏地的第一步、以右脚踏地的第二步、以左脚踏地的第三步、以右脚踏地的第四步,则样本动画片段所划分成的至少一个时间片段对应的动作分别是以换脚时间点分成的第一步、第二步、第三步和第四步。

对应的,在步骤204进行融合时,也是使用各个动画片段对应的时间片段的骨骼参数分别计算目标动画片段中相应时间片段内的动画帧的骨骼参数。首先,由于各个样本动画片段中时间片段的时长不一定相同,因此首先需要按照一定方式确定目标动画片段中时间片段的时长。本实现方式中,利用上述融合权重系数,对各个样本动画片段中的时间片段的时长进行加权平均,以确定目标动画片段中时间片段的时长。之后,由于后续融合过程中需要对各个时间片段内的相对应的动画帧的骨骼参数执行融合插值,而各个样本动画片段中时间片段的时长不一定相同,因此需要首先将各个样本动画片段中时间片段的时长调整为与目标动画片段中的时间片段一致。最后,由于调整后的各个样本动画片段的时间片段的时长与目标动画片段中的时间片段一致,因此可以采用调整后样本动画片段的时间片段的对应的动画帧的骨骼参数进行融合操作,得到标动画片段中相应时间片段内的动画帧的骨骼参数。

在上一实现方式的一些可选的实现方式中,按照融合权重系数对各个时间片段内的动画帧的骨骼参数执行融合插值可以包括:对动画帧中各个骨骼的旋转参数执行球面插值;对动画帧中根骨骼的位置参数执行线性插值。对于骨骼动画,每一个动画帧的骨骼参数可以包括根骨骼的位置参数以及各个骨骼的旋转参数。其中,骨骼的旋转参数中,根骨骼的旋转参数可以通过根骨骼的绝对矩阵来表示,而非根骨骼的运动多为相对于其父骨骼的旋转运动,其旋转参数可以通过该骨骼的相对矩阵来表示。通常,在骨骼动画中的动画帧中,位置参数可以用三维向量表示,旋转参数可以用四维向量表示,因此在对位置参数进行融合插值时,对于位置参数可以采用线性插值,对于旋转参数可以采用球面插值方法。

在本实施例的一些可选实现方式中,在针对调整后的各个样本动画片段,按照融合权重系数对各个时间片段内的动画帧的骨骼参数执行插值操作之前,步骤204还包括:首先,获取各个样本动画片段与目标动画片段的根骨骼的水平朝向差和/或水平位置差;之后,调整各个样本动画片段的根骨骼的水平朝向和/或水平位置,以消除水平朝向差和/或水平位置差。在各个样本动画片段中,人物在根骨骼的水平朝向和/或水平位置之间以及与目标动画片段中可能存在偏差,可以对动画片段中的根骨骼的水平朝向和/或水平位置差进行调整,以使其与目标动画片段中水平朝向差和/或水平位置均保持一致。通常,水平朝向差和/或水平位置差可以以各个样本动画片段中起始帧中根骨骼的水平朝向和/或水平位置为准进行计算即可,样本动画片段中的各个动画帧中的根骨骼根据计算出的调整参数进行整体调整即可。

在本实施例的一些可选实现方式中,步骤205具体包括:获取当前目标动画片段的第一个动画帧的骨骼参数以及前一目标动画片段的最后一个动画帧的骨骼参数;根据两个动画帧的骨骼参数,通过插值方法计算待插入两个动画帧之间的中间动画帧的骨骼参数;在两个动画帧之间插入中间动画帧,以生成目标动画的动画数据。

由于各个目标动画片段的动画数据的生成彼此具有一定的独立性,对于目标动画中相邻的两个目标动画片段,前一个目标动画片段最后一个动画帧与后一个目标动画片段的第一个动画帧之间骨骼参数的变化很可能缺乏平滑性,使得目标动画的动作在对应的时间点会出现动作跳变,降低所呈现的动作的逼真性。基于此,本实现方式通过插值方法计算待插入两个动画帧之间的中间动画帧的骨骼参数,并在两个动画帧之间插入该中间动画帧,从而增强动画帧之间变化的平滑性,以减弱所呈现动作的跳变。

本申请的上述实施例提供的方法可以利用样本动画片段序列以及样本动画片段序列生成的径向基函数神经网络模型即可根据目标运动参数得到目标动画片段,最终形成目标动画,实现了动画数据的自动生成,减小了人工设计动画的压力,也减小了数据存储压力。

进一步参考图3,其示出了用于生成动画数据的方法的又一个实施例的流程300。该用于生成动画数据的方法的流程300,包括以下步骤:

步骤301,获取待生成的目标动画中至少一个目标动画片段的目标运动参数。

在本实施例中,步骤301的具体处理可以参考图2对应实施例的步骤201。

步骤302,将目标运动参数映射为与预先训练的径向基函数神经网络模型的输入相匹配的向量后输入至径向基函数神经网络模型。

在本实施例中,步骤302的具体处理可以参考图2对应实施例的步骤202。

步骤303,将径向基函数神经网络模型所输出的向量中的各个分量确定为样本动画片段序列中各个样本动画片段的融合权重系数。

在本实施例中,步骤303的具体处理可以参考图2对应实施例的步骤203。

步骤304,按照融合权重系数,使用样本动画片段序列中各个样本动画片段的动画数据进行融合,得到目标动画片段的动画数据。

在本实施例中,在本实施例中,步骤304的具体处理可以参考图2对应实施例的步骤204。

步骤305,基于至少一个目标动画片段的动画数据,生成目标动画的动画数据。

在本实施例中,步骤305的具体处理可以参考图2对应实施例的步骤205。

步骤306,针对目标动画片段的时间片段中的各个动画帧,获取动画帧中待修正骨骼的目标位置参数。

以行走动画为例,在角色两次换脚之间的时间片段内,角色的一只脚应当是固定在一开始踩住的地面位置。由于目标动画片段是通过融合操作形成的,所呈现的动作中这只脚可能在上述时间片段内发生位移,出现滑步现象,从而影响目标动画所呈现动作的逼真性。因此,有必要对其进行修正。

在本实施例中,电子设备可以在根据用户操作确定动画片段各个动画帧中需要修正的骨骼后,获取将待修正骨骼需要修正到的目标位置参数。该目标位置参数可以由用户进行设置,也可以根据预先配置的规则自动获取。

步骤307,确定待修正骨骼的当前位置参数与目标位置参数之间的差值。

在本实施例中,针对待修复骨骼,电子设备可以基于步骤306所获取的目标位置参数以及通过前述步骤所生成的目标动画片段中该待修复骨骼的当前位置参数,计算出当前位置参数与目标位置参数之间的差值,以用作后续修正过程的参数。

步骤308,使用反向动力学迭代调整待修正骨骼以及相关联的骨骼的旋转参数,以修正差值。

在本实施例中,基于步骤307所得到的差值,电子设备可以通过反向动力学迭代调整待修正骨骼以及相关联的骨骼的旋转参数,对差值进行修正,使待修正骨骼在这一过程中逐渐逼近目标位置。其中,相关联的骨骼可以是用户设置的,也可以根据待修正骨骼以及一定的规则确定的。例如,在对上述滑步现象进行调整时,在调整脚的位置时,同时需要保持躯干(根骨骼)不动,因此需要调整旋转参数的骨骼包括脚对应的骨骼(待修正骨骼)、小腿和大腿分别对应的两个骨骼(相关联的骨骼)。由于调整骨骼的旋转参数的最终目标是待修正骨骼的位置,因此可以通过反向动力学方法,从与修正目标关系最紧密的待修正骨骼出发,向当前骨骼的父骨骼方向进行迭代调整,最终完成对上述差值的修正。反向动力学的具体算法,这里不再赘述。

需要说明的是,步骤306到步骤308,通常可以在步骤304之后执行,也可以在步骤305之后执行。

在本实施例的一些可选实现方式中,上述步骤308可以包括:获取预先保存的、对上一动画帧的待修正骨骼使用反向动力学迭代调整骨骼的旋转参数的调整值;将调整值设置为对当前动画帧使用反向动力学迭代调整骨骼的旋转参数时的初始调整值。

在该实现方式中,可以将通过反向动力学调整对上一动画帧中的骨骼旋转参数的调整值作为对当前动画帧使用反向动力学迭代调整骨骼的旋转参数时的初始调整值,由于通过前述步骤得到的动画片段中需要修正的时间片段内相邻的动画帧之间骨骼参数差异较小,反向动力学上一动画帧中的骨骼旋转参数的调整值出发,可以通过较小的迭代次数即可完成对当前动画帧中待修正骨骼的位置参数的修正,提高了计算效率,减少了所耗用的时间。

在上一实现方式的一些可选实现方式中,在将调整值设置为对当前动画帧使用反向动力学迭代调整骨骼的旋转参数时的初始调整值之前,上述方法还包括:对调整值进行衰减。通常,时间片段内相邻的动画帧之间的骨骼旋转参数存在一定差异,因此可以根据该规律对上一动画帧的调整值进行一定比率的衰减,从而可以进一步提高动画的稳定性。

从图3中可以看出,与图2对应的实施例相比,本实施例中的用于生成动画数据的方法的流程300增加了对动画帧中骨骼的位置进行修正的步骤,进一步提高了所生成的动画数据的逼真性。

进一步参考图4,作为对上述各图所示方法的实现,本申请提供了一种用于生成动画数据的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。

如图4所示,本实施例所述的用于生成动画数据的装置400包括:获取单元401、输入单元402、确定单元403、融合单元404和生成单元405。其中,获取单元401用于获取待生成的目标动画中至少一个目标动画片段的目标运动参数;输入单元402用于将目标运动参数映射为与预先训练的径向基函数神经网络模型的输入相匹配的向量后输入至径向基函数神经网络模型,其中径向基函数神经网络模型是通过样本动画片段序列中的各个样本动画片段进行训练得到的;确定单元403用于将径向基函数神经网络模型所输出的向量中的各个分量确定为样本动画片段序列中各个样本动画片段的融合权重系数;融合单元404用于按照融合权重系数,使用样本动画片段序列中各个样本动画片段的动画数据进行融合,得到目标动画片段的动画数据;而生成单元405用于基于至少一个目标动画片段的动画数据,生成目标动画的动画数据。

在本实施例中,获取单元401、输入单元402、确定单元403、融合单元404和生成单元405的具体处理可以分别参考图2对应实施例中的步骤201、步骤202、步骤203、步骤204和步骤205,这里不再赘述。

在本实施例的一些可选实现方式中,样本动画片段序列中的各个样本动画片段为骨骼动画。

在本实施例的一些可选实现方式中,装置400还包括用于训练径向基函数神经网络模型的训练单元(未示出),该训练单元具体用于:针对样本动画片段序列中各个样本动画片段,将样本动画片段的运动参数映射为第一向量,并根据样本动画片段在样本动画片段序列中的次序生成第二向量,其中,第二向量的维度是样本动画片段序列中样本动画片段的个数,且第二向量中与样本动画片段的次序对应的分量上置1,其它分量置0;将第一向量的维度确定为待训练的径向基函数神经网络模型的输入层节点个数,将样本动画片段序列中样本动画片段的个数确定为径向基函数神经网络模型的中间隐含层的节点个数以及输出层的节点个数;将样本动画片段对应的第一向量作为径向基函数神经网络模型的输入,并将样本动画片段对应的第二向量作为径向基函数神经网络模型的输出,对径向基函数神经网络模型进行训练。

在本实施例的一些可选实现方式中,样本动画片段序列中的各个样本动画片段已预先根据关键时间点划分为至少一个时间片段;以及融合单元404,包括:时长确定子单元(未示出),用于按照各个样本动画片段的融合权重系数,对各个样本动画片段中的时间片段的时长进行加权平均,以确定目标动画片段中时间片段的时长;时长调整子单元(未示出),用于将各个样本动画片段的时间片段的时长调整为与目标动画片段中的时间片段一致;融合子单元(未示出),用于针对调整后的各个样本动画片段,按照融合权重系数对各个时间片段内的动画帧的骨骼参数执行融合插值,得到目标动画片段中相应时间片段内的动画帧的骨骼参数。

在本实施例的一些可选实现方式中,融合子单元进一步用于以下至少一项:对动画帧中各个骨骼的旋转参数执行球面插值;对动画帧中根骨骼的位置参数执行线性插值。

在本实施例的一些可选实现方式中,融合单元404还包括配准子单元(未示出),用于:获取各个样本动画片段与目标动画片段的根骨骼的水平朝向差和/或水平位置差;调整各个样本动画片段的根骨骼的水平朝向和/或水平位置,以消除水平朝向差和/或水平位置差。

在本实施例的一些可选实现方式中,生成单元405包括:获取子单元(未示出),用于获取当前目标动画片段的第一个动画帧的骨骼参数以及前一目标动画片段的最后一个动画帧的骨骼参数;计算子单元(未示出),用于根据两个动画帧的骨骼参数,通过插值方法计算待插入两个动画帧之间的中间动画帧的骨骼参数;插入子单元(未示出),用于在两个动画帧之间插入中间动画帧,以生成目标动画的动画数据。

在本实施例的一些可选实现方式中,装置400还包括:位置参数获取单元(未示出),用于针对目标动画片段的时间片段中的各个动画帧,获取动画帧中待修正骨骼的目标位置参数;差值确定单元(未示出),用于确定待修正骨骼的当前位置参数与目标位置参数之间的差值;调整单元(未示出),用于使用反向动力学迭代调整待修正骨骼以及相关联的骨骼的旋转参数,以修正差值。

在本实施例的一些可选实现方式中,调整单元包括:调整值获取子单元(未示出),用于获取预先保存的、对上一动画帧的待修正骨骼使用反向动力学迭代调整骨骼的旋转参数的调整值;设置子单元(未示出),用于将调整值设置为对当前动画帧使用反向动力学迭代调整骨骼的旋转参数时的初始调整值。

在本实施例的一些可选实现方式中,调整单元还包括:衰减子单元(未示出),用于在将调整值设置为对当前动画帧使用反向动力学迭代调整骨骼的旋转参数时的初始调整值之前,对调整值进行衰减。

下面参考图5,其示出了适于用来实现本申请实施例的终端设备或服务器的计算机系统500的结构示意图。

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

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

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。

附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括获取单元、输入单元、确定单元、融合单元和生成单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,获取单元还可以被描述为“获取待生成的目标动画中至少一个目标动画片段的目标运动参数的单元”。

作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中所述装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或者多个程序,当所述一个或者多个程序被一个设备执行时,使得所述设备:获取待生成的目标动画中至少一个目标动画片段的目标运动参数;将所述目标运动参数映射为与预先训练的径向基函数神经网络模型的输入相匹配的向量后输入至所述径向基函数神经网络模型,其中所述径向基函数神经网络模型是通过样本动画片段序列中的各个样本动画片段进行训练得到的;将所述径向基函数神经网络模型所输出的向量中的各个分量确定为所述样本动画片段序列中各个样本动画片段的融合权重系数;按照所述融合权重系数,使用所述样本动画片段序列中各个样本动画片段的动画数据进行融合,得到目标动画片段的动画数据;基于所述至少一个目标动画片段的动画数据,生成所述目标动画的动画数据。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

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