首页> 中国专利> 一种三维角色动画非线性修改方法

一种三维角色动画非线性修改方法

摘要

本发明公开了一种三维角色动画非线性修改方法。使用发明能够在原始角色动画数据基础上进行局部加速/减速等非线性节奏变化,甚至是原有动作的逆序化。发明根据关键帧样的时间数据,以及控制曲线与节奏变化之间的关系,通过归一化、控制曲线的映射和逆归一化过程,获得局部节奏可变化的角色动画,实现简单、可靠。

著录项

  • 公开/公告号CN104574481A

    专利类型发明专利

  • 公开/公告日2015-04-29

    原文格式PDF

  • 申请/专利权人 北京科艺有容科技有限责任公司;

    申请/专利号CN201510037498.3

  • 发明设计人 吴峰风;李朋;

    申请日2015-01-26

  • 分类号G06T13/40;

  • 代理机构北京理工大学专利中心;

  • 代理人付雷杰

  • 地址 100083 北京市海淀区中关村东路95号

  • 入库时间 2023-12-18 08:25:28

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-08-25

    授权

    授权

  • 2016-06-01

    专利申请权的转移 IPC(主分类):G06T13/40 登记生效日:20160513 变更前: 变更后: 申请日:20150126

    专利申请权、专利权的转移

  • 2015-05-27

    实质审查的生效 IPC(主分类):G06T13/40 申请日:20150126

    实质审查的生效

  • 2015-04-29

    公开

    公开

说明书

技术领域

本发明涉及三维动画技术领域,具体涉及一种三维角色动画非线性修改方法。

背景技术

三维动画技术,是近年来随着计算机软硬件技术的发展而产生的一种新兴技术,可以方便快捷地制作出满足导演需求的三维动画或影视特效镜头。

三维动画片的制作原理一般为:首先,利用三维软件(比如3ds Max、Maya或Houdini)在计算机中建立一个虚拟的世界;然后,在这个虚拟的三维世界中添加场景和三维卡通角色等三维模型;最后,设定模型的动画曲线、虚拟摄影机的运动轨迹和其它动画参数,渲染得到角色动画。

由于三维动画技术具备可精确模拟真实景象、几乎没有创作限制等特点,目前被广泛应用于娱乐、教育、军事等诸多领域。针对娱乐领域的应用,通常需要根据设计师提供的卡通人物造型,制作出具备对应的三维动画角色和骨骼绑定系统,并通过在不同的时间点设置不同的关键帧,从而使之具备符合角色性格、年龄或其他特征的逼真动作。

因为动画是每秒24帧或更多,而人眼对角色动作较为敏感,所以为了赋予三维角色栩栩如生的肢体动画或表情动画,往往需要动画师为角色的每个部位以0.04秒左右的精度设置关键帧,即使是一段一分钟的角色动画,常需要数小时来制作,工作量不小。但一段动作的制作完成并非终点,常需要根据故事情节或角色心情调整角色的动作的节奏,此外在群体动画中也需要角色之间的动作节奏不全一致,因此需要调整该段动作,使其在局部有加速或减速等节奏变 化,但现有软件只提供对动画曲线的整体时间的线性缩放,不支持局部的非线性变化,所以动画师只能逐关键帧的调整时间值。而且一段角色动画,往往是角色身上不同部位之间的协调动作,所以还需保证不同部位间的调整是一致的,工作量不亚于重新制作。因此,如何能够使之前制作的动画动作具有丰富的节奏变化,就成为三维动画技术中亟待解决的问题。

发明内容

有鉴于此,本发明提供了一种三维角色动画非线性修改方法,能够在原始角色动画数据基础上进行加速/减速等非线性节奏变化,甚至是原有动作的逆序化。

本发明的三维角色动画非线性修改方法,包括如下步骤:

步骤1,提取原始角色动画的整体时长和n个关键帧的时间值T1,T2,…,Tk,…,Tn,对整体时长进行归一化处理,获得归一化后的原始角色动画关键帧的时间值t11,t12,…,t1k,…,t1n

所述关键帧是由动画师根据角色动画所需在动画帧序列中选定的帧,动画师在关键帧时刻设定动画属性的值,关键帧信息包括时间值和属性值;关键帧之间的帧时的属性值由三维动画制作软件根据相邻关键帧时的属性值进行插值而得到,以动画时间为X轴,关键帧的属性值为Y轴,通过插值得到连续的动画曲线;本技术中仅修改各关键帧的时间值,其属性值保持不变;

步骤2,建立二维坐标系,横、纵坐标区间均为[0,1],其中,横坐标为归一化后的原始角色动画关键帧的时间值,纵坐标为待求的新角色动画关键帧的时间值,在坐标系中根据动画节奏变化要求绘制控制曲线f,控制曲线f的绘制方法为:如果在局部时间内原动作不做任何节奏变化,则控制曲线在该局部时间区间内的导数是1;如果在局部时间内动作节奏变慢,则控制曲线在该局部时间 区间内的导数大于1;如果在某局部时间内节奏变快,则控制曲线在该局部时间区间内的导数小于1且大于0;如果在某局部时间内动作发生的时序逆转,则控制曲线在该局部时间区间内的导数小于0;

步骤3,根据控制曲线f,获得与归一化后的原始角色动画关键帧的时间值t11,t12,…,t1k,…,t1n一一对应的新角色动画关键帧的时间值t21,t22,…,t2k,…,t2n,t2k=f(t1k),然后将根据角色动画的整体时长将新角色动画关键帧的时间值进行逆归一化,获得新角色动画的关键帧的时间值T′1,T′2,…,T′k,…,T′n,原始角色动画的关键帧的时间值T1,T2,…,Tk,…,Tn与新角色动画的关键帧的时间值T′1,T′2,…,T′k,…,T′n一一对应;各关键帧的属性值不变,根据新角色动画的关键帧的时间值T′k和属性值,通过关键帧插值获得新动画曲线;

步骤4,将新动画曲线和原始动画曲线以设定的比例权重w进行混合,其中,w∈[0,1],混合后的第k个关键帧的属性值为w·x1+(1-w)·x0,其中,x0为原始动画曲线第k个关键帧的属性值,x1为步骤3获得的心动画曲线第k个关键帧的属性值,通过关键帧插值获得最终的角色新动作;

当w为0时,则完全不使用新的动画曲线,角色动作节奏不变,当w为1时则完全使用新的动画曲线,角色动作节奏彻底改变,动画师通过对比例权重w设置关键帧,可以实现角色动作在某一时间段内从节奏不变到节奏改变的渐进变化,从而能够更精细的调控,并避免了反复调整控制曲线。

进一步地,控制曲线f的绘制方法为:任意选取4个以上的样本点,采用二次贝塞尔曲线插值绘制控制曲线。

进一步地,当角色某部位动画节奏不需要变化时,关闭控制曲线对角色该部位控制器以及该控制器下一层级的所有控制器的影响。

进一步地,采用并行处理的方式完成原始角色动画的关键帧的时间值Tk到 新角色动画的关键帧的时间值T′k的变换。

有益效果:

本发明能够根据关键帧样本的时间变化数据,以及控制曲线与节奏变化之间的关系,在原始角色动画数据的基础上,通过控制曲线映射,获得局部节奏可变化的角色动画,实现简单、可靠。

附图说明

图1为本发明流程图。

图2为控制曲线与节奏变化之间的关系示意图。

具体实施方式

下面结合附图并举实施例,对本发明进行详细描述。

本发明提供了一种三维角色动画非线性修改方法,流程如图1所示,具体包括如下步骤:

步骤1,提取原始角色动画数据中角色各肢体动作的时间信息并进行归一化。

原始角色动画是一段根据动画师提供的角色原始动作关键帧信息(包括时间值和属性值),通过关键帧差值绘制的原始角色曲线,从原始角色动画中提取该动作所持续的整体时长,以及n个关键帧时间T1,T2,…,Tk,…,Tn,对整体时长做归一化处理,映射到0至1的区间,归一化后的原始动画关键帧时间记为t11,t12,…,t1k,…,t1n

步骤2,建立二维坐标系,横、纵坐标区间均为[0,1],其中,横坐标(X轴)为归一化后的原始动画关键帧时间t1,纵坐标(Y轴)为待求的新动画关键帧时间t2,在控制坐标系中根据要求的节奏变化绘制控制曲线f,其中,在控制曲 线上,针对每个X值,都对应一个唯一的新动画关键帧时间,即t2=F(t1),函数F即为控制曲线f所表示的函数,通过控制曲线形状达到控制角色动画节奏的目的。控制曲线形状和节奏变换之间的关系如图2所示。控制曲线的具体含义为:

(1)如果控制曲线在某个局部时间区间内的导数是1,对于该区间内的任意两个关键帧时间t1i,t1j,设其距离为d1,对应的t2i=F(t2i)和t2j=F(t1j)的距离为d2,那么d1小于d2,即变换后的时间t2i、t2j之间的间隔时间没有变化,等价于在局部时间内对原动作不做任何节奏变化。

(2)如果控制曲线在某个局部时间区间内的导数大于1,对于该区间内的任意两个关键帧时间t1i,t1j,设其距离为d1,对应的t2i=F(t2i)和t2j=F(t1j)的距离为d2,那么d1小于d2,即变换后的时间t2i、t2j之间的间隔时间拉长了,也就是说动作节奏变慢了。

(3)如果控制曲线在某个局部时间区间内的导数小于1且大于0,对于该区间内的任意两个关键帧时间t1i,t1j,设其距离为d1,对应的t2i=F(t2i)和t2j=F(t1j)的距离为d2,那么d1小于d2,即变换后的时间t2i、t2j之间的间隔时间缩短了,也就是说动作节奏变快了。

(4)如果控制曲线在某个局部时间区间内的导数小于0,对于该区间内的任意两个关键帧时间t1i,t1j,假设t1i<t1j,则变换后的时间t2i=F(t2i)>t2j=F(t1j),相当于时间倒流,也就是说动作发生的时序逆转了。

绘制控制曲线时,样本量越大,控制曲线对动画节奏的控制就越精确,但其工作量也会变大。任意选取4个以上的样本点就可以采用二次贝塞尔曲线插值绘制出完整的控制曲线。其原理是:选取三个样本点P0、P1、P2,其时间值Pt0,Pt1,Pt2依次增大,则位于时间值区间[Pt0,Pt2]上的分段函数B(x)为

B(x)=(1-x)2·P0+2x·(1-x)·P1+x2·P2

其中x的取值范围是[0,1]。对于位于时间值区间[Pt0,Pt2]内的t1,两者间关系为x=(t1-Pt0)/(Pt2-Pt0)。至此,对于任意位于该区间内的t,可以得到对应的期望动作的时间值。对于下一个样本点P3和其时间值Pt3,则位于时间值区间[Pt1,Pt3]上的分段函数为:

B(x)=(1-x)2·P1+2x·(1-x)·P2+x2·P3

依次类推,可以得到动画师选取的Pn个样本点的经过插值处理的完整控制曲线函数。

步骤3,将原始动作关键帧时间t11,t12,…,t1k,…,t1n通过控制曲线f一一映射到新动作关键帧时间t21,t22,…,t2k,…,t2n上,然后将t2进行逆归一化,获得与原始角色动画的关键帧时间T1,T2,…,Tk,…,Tn一一对应的新角色动画的关键帧时间T′1,T′2,…,T′k,…,T′n,关键帧的属性值不变,通过关键帧插值获得新动画曲线。

步骤4,将新动画曲线和原始动画曲线以一定的比例权重w进行混合,获得最终的角色新动作。动画节奏调整模块输出的新动作可能不满足动画师的要求,还需要将动画节奏调整模块输出的新动作与原始动作以一定的比例进行混合,从而获得最终的角色动作。其中,权重w∈[0,1],动作混合时,混合该控制器以及位于它下一层级的所有控制器的所有数据,即对于第k个关键帧,其关键帧时间不变,将新动画曲线关键帧的属性值和原始动画曲线关键帧的属性值进行比例混合,混合后的属性值为w·x1+(1-w)·x0,x0为原始动画曲线第k个关键帧的属性值,x1为新动画曲线第k个关键帧的属性值。

步骤2中获得的控制曲线是适用于角色身上所有控制器的,但是,并非角色所有部位均需要进行节奏变化,因此,通过调整效果开关模块关闭控制曲线对角色某部位控制器以及该控制器下一层级的所有控制器的影响,角色该部位保持原动画节奏不变。

为了方便动画师利用该技术,在三维动画软件Maya中利用python制作了操作界面,包括了关键帧批量提取和修改函数、控制曲线的映射函数等。从而使动画师只要选择了角色动画的片段范围,然后在Maya的动画曲线工具中选择贝塞尔曲线连接方式,绘制出控制曲线,就可以对原动作进行节奏变化。

由于技术方案中,对各关键帧的时间信息是独立处理的,所以实施中可以采用并行化处理方法,比如利用Intel公司的开源工具Threading Building Blocks,能进一步发挥多核处理器的性能,使T1到T′1、T2到T′2、…,Tn到T′n的变换同时进行,快速完成变换。

综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号