上一次介绍的是动画中影格率设定的方法,这次介绍的是关键影格的参数编辑。
插补
在关键影格动画中,插补是将前后两个关键帧中的参数作为基准,产生一个方程式并计算出插补值来产生中间帧,因此,我们可以通过修改方程式来改变插补值的计算结果,进而改变产生的动作效果。
大多数的3D动画软件不会要求动画师一定要以数学的方式来修改方程式,而是将方程式以可视化的函数曲线图形来呈现,让动画师可以利用调整控制点的方式来改变图形外观进而微调插补值。
在动画软件中,插补值的图形一般建立在一个二维坐标系上,水平轴是时间,也就是影格或者帧,而垂直轴则是某个变换值的数值。
最简单的插补称为Liner Interpolation线性插补,也就是说,它的图形是以直线的方式来呈现的,时间与数值的变化是等比例的。使用线性插补所产生的图形是一段直线。
在有多个关键帧的情况下,各段直线会以不同的角度连接,而直线的斜度则代表了数值变化的速率。线段越陡,表示变化越快,因此,在线段的折角部分,也就是关键帧的地方会铲射鞥瞬间的速率变化。
但是实际运用中,我们并不希望动画的速度做如此突然的改变,而让这两种动作改变得比较顺畅的插补方式就可以派上用场了,称为Spline Interpolation(云型线插补)。
云型线插补的动作效果可以让数值的改变速率较为流畅它的图形是一段平滑的曲线,也就是云型线。
云型线是由多个控制点来决定外形的曲线。每个点都控制了一部分线段。移动它就能改变曲线的形状。
插补中最常见的云型曲线称为bezier spline(贝兹云型曲线)。这种曲线在控制点上有两条切线tangent,包括进切线与出切线。分别控制进入与离开控制点的曲线曲率。这两条切线通常是连接成一条直线的状态以确保云型线的平滑度。
有时候实际动画制作过程中需要动作有一定的不连贯性,就可以切断这两条切线之间的连接来产生歧点cusp,使其成为相对独立的两条切线分别控制这一条曲线(如上右图),就可以做出突然性的变化。
利用云型线可以得到较为缓和的动态效果。一般来说由较陡的曲率向较缓的曲率发展,代表动画进入关键影格时的数值变化是越来越慢的,称为easy-in或者slow-in(缓进)。由关键帧出来后的数值变化由缓和到比较陡则称为缓出easy-out或者slow-out。而同时具有两个特性的插补则称为缓进出easy-in-out或者slow-in-out。此外,还有另一种常见的插补形式称为阶段插补stepped interpolation。
这种插补方式就是将数值维持在一段帧当中,并在关键影格的部分突然改变数值。这样有可能会使动画产生瞬间移动一样的效果。
插补图形调整
大部分的动画软件提供了插补图形的检视与调整工具,是使用者可以自由选择插补方式或者相互转换。并且可以在曲线图中使用控制点改变图形形状,利用缩放工具改变比例甚至使用编辑工具来复制某段图形让图形可以符合动画师的要求从而产生合适的插补值。
利用插补的调整工具一方面可以将关键影格的数量降到最低,一方面也可以使动画效果更加符合实际需求。
以之前做好的球体弹跳动画举例。
Maya中供使用者使用的插补值曲线编辑工具称为grapheditor(曲线图编辑器),想要开启它,需要从main menubar中打开Window选项,并从animation editors子选单中点击graph editor。
就能将graph editor以浮动窗口的方式启动。
或者我们也可以从tool bar中开启:
或者在hotbox的north area中选择persp/graph来开启。
或者在panel menubar中开启panels选单,再从panel子选单中点选graph editor开启。
graph editor主要由menubar、toolbar、outliner以及graph view四个部分组成,最初打开grapheditor时并不会显示任何曲线,要想显示一个物件的曲线资料,需要选定该物件。
graph view用来浏览与调整动画的插补图形,在选定我们制作好的球体后可以看到有两条不同颜色的曲线。注意一下,这里一般设定了几个channel就会有几条曲线,我这个球体之前是设定了X/Y两个不同的channel,如果之前只做了一个跳动的球体但是没有对它的X轴向位移做设定的话会只显示一条曲线。自己可以试着设定一下X轴方向的位移,正反方向位移量可以自己按感觉设定一个)。
先以translate Y这个曲线做示范,在graph outliner中点选translate Y,就可以在graph view中只显示translate Y这个channel的图形。
当画面中选定了多个物件,而这多个物件各自都拥有关键帧的channel时,利用graph outliner的阶层式清单就可以让graph view中显示的图形单纯许多。或者可以使用shift+鼠标左键同时选取多个channel,就可以使graph view中只显示想要检视的曲线。
Graph view是一个二维坐标系统,如前文介绍,水平轴代表的是时间,以帧为单位,原点位置代表的是第一帧,垂直轴则是channel的数值,综合起来看,这条曲线就是channel数值随着时间的变化过程,因此在没有设定关键帧也就是动画效果的位置是没有曲线的。
Graph view中有一条红色的垂线,代表目前的时间指标,它与time slider的时间指标是同步显示的。这条曲线本身是一条bezier spline,因此在控制点的位置会有切线来控制曲率,它的控制点就是关键帧,而曲线部分则是生成的插补值。
Graph view可以利用滚动鼠标中间的方式来显示比例的大小,而快捷键a则能完整显示这条曲线。改变控制点在graphview的位置就能改变关键帧的时间与数值信息。要调整控制点的位置时,先按下graph toolbar左边的move nearest picked key tool来开启功能。
当它开启时,鼠标指针会变成亮灰色的方块,使用鼠标点击曲线,会变成上图所示的样子。按着鼠标中间不放并拖动鼠标,就可以改变控制点在graph的位置。
如果控制点只能沿着水平或者垂直移动的话,将graph toolbar上方的constrained X-axis drag按钮点击一下,它的功能是控制点只在x轴或Y轴上移动。它有三种模式:X轴位移,Y轴位移,以及未限制方向。切换这个按钮至unconstrained drag模式,就可以将控制点往任何一个方向移动了。
Maya预设的插补类型是一段缓进出的曲线,因此我们之前做的小球跳动的动作动画其实是有那么一点不自然的,我们可以利用切线来调整曲线的曲率,选取控制点以后我们可以看到两条切线,我们选择其中一端的切线,使其呈现黄色高亮显示。
选定后就可以按住鼠标中键对切线方向进行调整,进而改变曲线的形状。
而球体落地时会受到重力加速度的影响的,为了使这条曲线显示符合实际情况,那么球体落地时候的关键帧应该显示的是球体速度逐渐加快的动作。框选第一个和第三个关键帧,并使用graph toolbar中的linear tangents,将这两个关键影格转换为线性插补,接着我们需要将这个曲线与X轴的角度调整得更为锐利。
但是你若有动手就会发现目前的关键帧上面进切线和出切线处于联动状态,不能单一调整。这时请按下toolbar中的break tangents按钮将两条切线断开。
这时再来调整切线的角度,另一半切线就不会随之变动了。
如果想要将切线恢复至联动状态,按下unify tangents即可。
有时,调整完某个关键帧的切线保持在水平状态,比如球体弹跳的最高点。此时可以框选最高点的控制点,并按下graph toolbar中的flat tangents图示:
就可以确保这个切线处于水平状态。
在调整结束后我们可以观察一下调整前后这个小球跳动动作的动态差异。
下次将介绍动画输出的算图设定。
(ps.因为每次敲“影格”需要两个字,而“帧”只需要一个字,本着能少写一个字就少写一个字的精神,很果断的把每一个词都换掉了~好像台湾同胞使用“影格”这个词汇比较多一些,而大陆大多数情况下会说“帧”。)