关键帧相当于二维动画中的原画,指角色或者物体运动或变化中的关键动作所处的那一帧。关键帧与关键帧之间的动画可以由软件来创建,叫做过渡帧或者中间帧。关于flash的应用:在flash中,每个关键帧都可以被赋予更多的用途。每个关键帧都同时可以被赋予几种用途(引导层关键帧外),关键帧也可以通过影片图层实现叠加的效果。
关键帧的概念来源于传统的卡通片制作。在早期WaltDisney的制作室,熟练的动画师设计卡通片中的关键画面,也即所谓的关键帧,然后由一般的动画师设计中间帧。在三维计算机动画中,中间帧的生成由计算机来完成,插值代替了设计中间帧的动画师。所有影响画面图象的参数都可成为关键帧的参数,如位置、旋转角、纹理的参数等。关键帧技术是计算机动画中最基本并且运用最广泛的方法。另外一种动画设置方法是样条驱动动画。
无论是样条驱动动画还是关键帧插值方法,都会碰到这个问题:给定物体运动的轨迹,求物体在某一帧画面中的位置。物体运动的轨迹一般由参数样条来表示。如果直接将参数和帧频联系起来,对参数空间进行等间隔采样,有可能带来运动的不均匀性。为了使物体沿一样条匀速运动,必须建立弧长与样条参数的一一对应关系。
Guenter等提出用Gauss型数值积分方法计算弧长,用Newton-Raphason迭代来确定给定弧长点在曲线上的位置,并采用查找表法记录参数点弧长值的方法来加速计算。在动画设计中,动画师经常需调整物体运动的轨迹来观察物体运动的效果,交互的速度是一个很重要的因素。Watt等提出了用向前差分加查找表的方法来提高交互的速度。在精度要求不是很高的情况下,他们的方法非常有效。
从原理上讲,关键帧插值问题可归结为参数插值问题,传统的插值方法都可应用到关键帧方法中。但关键帧插值又与纯数学的插值不同,它有其特殊性。一个好的关键帧插值方法必须能够产生逼真的运动效果并能给用户提供方便有效的控制手段。一个特定的运动从空间轨迹来看可能是正确的,但从运动学或动画设计来看可能是错误的或者不合适的。
用户必须能够控制运动的运动学特性,即通过调整插值函数来改变运动的速度和加速度。为了很好地解决插值过程中的时间控制问题,Steketee等提出了用双插值的方法来控制运动参数。其中之一为位置样条,它是位置对关键帧的函数;另一条为运动样条,它是关键帧对时间的函数。