动画曲线大百科

You might also like

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 9

Splinophilia --by Victor Navone 动画曲线大百科 - VictorNavone 最新教程

http://www.navone.org/HTML/Tutorial_Splines1_2.htm
许多新手 3D 动画师(甚至有些老手)都会对他们所使用的动画软件里面的曲线编辑器(spline editor)感到不适应,
甚至有些犯怵。也许他们像儿童一样,被那些带着小球的彩色纱线迷花了眼睛;也许他们感觉好像是伦敦的地铁线路
一样让人迷惑;又或者也许他们只是看见彩色的乱麻理不出头绪来。不论什么原因,都很丢人呵,因为曲线编辑器可
是一个很强大的动画工具哦。
我个人非常喜欢调节这些动画曲线;有事我甚至直接在曲线编辑器里直接做动画,碰都不碰我的模型。只要知道
曲线应该看起来怎样,我就能大体上预测出我的物体会怎样运动了,诊断并修复我动画中的问题,然后就跳到我的调
节细节(polish)的阶段。
在这两部分教程中,我将要试图传授给你们一些简单的规则和概念,来帮助你们更好的理解动画曲线的含义和功
能(或者叫“功能曲线”function curves,它们有时候这么叫)。我将使用 Maya 的 Graph Editor 来讲述我的例子。但
是我这里阐述的规律适用于任何主流 3D 动画程序。希望看完这篇教程,你就已经上了曲线调节的正途了!
在这些课程里我会使用一些基本的动画术语,诸如“渐入”(ease-in),“间隔”(spacing),“关键帧”(key),
和“交迭”(overlap);如果你对这些不够熟悉的话,那么你可能还没准备好看这篇教程。但是如果你想重温一下你记
忆里关于这些东西的印象,还有基本动画规律,那么请看这里,或者拾取一个“Illusion of Life”的拷贝。
基础
为了避免让任何人掉队,我将要从曲线编辑器最基础的解释开始讲起。这里我用一个简单的动画实例:一个球从
一个地方移动到另一个地方(我称之为"Pose A"和"Pose B")。

两个 pose 之间的红点表示了动画的间隔。球是沿着 X 轴运动的,所以我在曲线编辑器中载入 Translate X 进行核查。


图表的水平坐标表示时间(以帧数测量),垂直坐标表示数值(可以是英寸,米,角度,百分比等等)。黑色点表示
我设置的关键帧,红色的取消穿过所有的关键帧告诉你在关键帧之间发生了什么曲线从图表的左边贯穿到右边告诉我
们当物体随时间推移时,X 位移的数值变化。所有第 1 帧的 X 位移是 0,第 30 帧是 10。
注意我设置了 4 个 key:2 个给 Pose A,2 个给 Pose B。这是因为我想让球开始和结尾在一个 pose 上呆处。前两个 key
之间和后两个 key 之间的曲线是完全水平的,也就是说没有移动。这是因为数值在这些 key 之间没有变化,只有时间
在变化。只有当时间和数值都变化时才会产生运动(于是曲线才有了倾斜度),在这个例子中,运动发生在关键帧 2
和 3 之间。倾斜的越陡,运动就越快越明显。倾斜的越平缓,运动越慢越微弱。这样讲清楚吗?
注意:不要期望曲线的形状就实实在在的代表物体在你的场景里怎样运动;曲线主要是告诉你物体何时运动和运动多
少的信息。它不代表一个物体在摄像机里所看到的运动路径(虽然有时可能是,但那是巧合)。与之类似,一个地震仪
告诉你地球何时地震和强烈程度,但不是告诉你怎样地震。
曲线倾斜的方向可以告诉我们物体沿着给定的轴向运动的走向,在这个例子里,给定的轴向是 Translate X。从左边看
到右边,如果曲线在上升,那就意味着数值是在增加,球就是在向右运动。如果曲线是下降的,那么数值就是在减少,
球就是在向左动。记住朝哪边倾斜代表什么方向并不重要;重要的是要记住,倾斜方向的改变就意味着运动方向的变
化。这在我讲到 anticipation 和 overshoot(中文一般译为预备动作和过拍)的时候就变得很重要了。大家还跟得上我吗?
我想提的最后一件事就是切线手柄(tangent handles),在上图用棕色显示。如果你已经用过诸如 Adobe Illustrator
这样的基于矢量的图形设计软件的话,你应该对 bezier path 贝塞尔曲线路径不陌生。曲线与之相类似。在曲线上的每
个关键帧都有切线手柄,你可以通过拉长和旋转来影响通过关键帧的曲线的形状,这对于把弯曲的线条放入运动曲线
是必需的。使得你可以在关键帧之间营造优雅的转换过渡,而不需要手动添加很多多余的 in-between 和 breakdown 帧。
通过把你的关键帧转换成线性或者保持(linear or held),你就完全可以实现切线手柄的调节,但是这需要你在计算
好时间线上多下功夫,这样才能获得优雅的运动和 timing。如果你愿意,你当然可以在每一帧都设置关键帧,实际上
是做你的一拍一动画,不再让曲线的切线对你的动画有任何的影响。但是有时有必要很快的或者很精确的动画,那种
工作方式效率不太高,而且也没有利用到电脑最擅长的优点:光滑的插中间帧。
现在我们对曲线编辑器展示给我们的东西建立了基本的概念,我们怎样把这些以一种有用的方式应用到你的动画中去
呢?传统的动画 timing 概念比如“慢入 ease-in”和“慢出 ease-out”在曲线编辑器里看起来是怎样的呢?

让我们谈谈应用到动画曲线的 timing。任何时候,当一个物体或者角色动一个 pose 运动到另一个 pose 时,你都要给


这个动作定下时间。它怎样运动出 Pose A 的位置?它是慢出还是快出?有没有向反方向的预备动作?同样的,它怎样
到达 Pose B?它是慢入还是快入的?有没有 overshoot 和 settle?你更喜欢哪个 pose,A 还是 B?你应该问你自己这
些问题,只要有东西在你的场景里移动。否则电脑会替你做决定的。而且电脑的决定往往不是有趣的选择。当我
blocking 我的动画时,我开始总是给我所有的 key 都设置 flat-tangent 曲线,但是我很少把它们留到最终的成品动画。

http://www.uecg.cn/an/video/Ball_02_FlatTans.mov

如你在上面的片段中所看到的,如果我把从 Pose A 到 Pose B 的一般般的水平 tangent(或线性)的 key 就放在那,动


作的 timing 会非常均匀和无趣的。只有很小的加速和减速,看起来不自然。注意 spacing 的平均,用红点表示出来了。
这种 timing 通常只在机械运动中有用,但是即使在这些情况下,你也许还是可以找到更有趣的 timing 解决方案的。

注意:当我要讨论曲线的编辑来达到不同类型的 timing 时,不是暗示说我赞成你所有的 timing 都这样弄。你还是应该


在 blocking 的阶段来在你的 pose 和 breakdown 中建立你的 ease,anticipation 和 overshoot。在这讲这个技巧是为了
标识,清理,推敲和细化你的 blocking 的 timing,而且为了添加补充可能在你的 blocking 中忘在一边的细节。

Ease-In's 和 Ease-Out's:
这些是最普通的了,而且非常容易在曲线编辑器中做正确。如我先前指出的,每个 pose 都有个 copy 的 key,以使得它
们保持在位置上。但是如果我稍微提高一些第二个 key 或者放低一些第三个 key 的话,我会分别得到一个 ease-out 或
ease-in,让我们先集中看看到 Pose B 的 ease-in。我选择第三个 key 并把它降低一点,然后旋转它的切线手柄使得曲
线平滑的经过它。现在球不再是停止并保持在 Pose B 了,而是几乎要到达 Pose B 时开始慢入 ease-in。这样在动作的结
尾处增加了一些缓冲,也给了球更多真实的减速和重量的感觉。
http://www.uecg.cn/an/video/Ball_03_EaseIn.mov
注意在上面的片段中,更多的点聚集在靠近 Pose B 的地方。换句话说,这个动画更偏爱 Pose B。如果我用同样的方式
抬高第二个 key 的话,我就得到 Pose A 的 ease-out 慢出。现在球不是从保持突然开始动,而是逐渐加速开始移动。

http://www.uecg.cn/an/video/Ball_04_EaseOutEaseIn.mov
我不想在动作中做一样的慢入和慢出(像上例)因为那样会使 timing 和 spacing 显得对称,也不是很有趣。最好偏向
某一端的 pose。

为了做出一个 ease 而移动和倾斜 key 的多少,取决于许多因素:两个 pose 直接的距离,物体的重量和体积,行为的


强度,还有动画的风格。一个好的开始位置是,移动 key 使它的数值在两个 pose 差别的 85%到 95%之间。然后让手柄
倾斜,使得曲线保持平滑。确保曲线不要超过第二个 pose,除非你想要一个 overshoot 而不是 ease(更多消息请参看
Spline Hygiene 曲线卫生学部分)。我也可以加强 ease 的量,只要拉长第 2 第 3 个 key 的切线手柄就行了。
拉长手柄这种方法有时很有用但是对曲线的控制不如用一个 key 来定义 ease 形状的方式好

Fast-In & Out's 快入和快出:你不用调节任何 key 的数值来得到 fast-in 和 fast-out。你可以把 key 变成线性 linear 的,
打断 key 两端的切线手柄,或者让它们变短直到它们几乎影响不到曲线形状为止。这个例子里曲线的倾斜处理成在 key
前后有个陡峭的尖角,所以这里会有个突然的停止或者移动。一般你可以用这种 timing 来处理一个物体突然受到外力
作用。比如,一个球被高尔夫球杆打飞,它会从保持状态突然 fast-out 快出。这里是一个 Pose A 的快出加上一个 Pose
B 的慢入。
http://www.uecg.cn/an/video/Ball_08_FastOutEaseIn.mov
在上面的片段中你可以看到 spacing 没有加速,只有减速,因为球刚刚被击打时是最快的,然后它只会减速。
如果球正在滚动然后突然撞到什么东西停下来,它会在撞击处快入。这里我融合了一个 Pose A 的慢出和 Pose B 的快
入,好像球开始沿着斜坡滚下,然后撞到墙停了下来。

http://www.uecg.cn/an/video/Ball_08a_EaseOutFastIn.mov
这次没有减速;惯性和重力让球一直滚动直到一个不动的物体阻挡了它。

Anticipation(预备动作)和 Overshoot(过拍):(以下简称 Antic 和 OVS)简单点儿的版本也是在曲线编辑器里


就可以实现的。这些要点对于让一个物体显得“生动”和有弹力是非常重要的。为了让球在 Pose B 处 OVS,我简单地
让第三个 key 稍微超出原始的 pose,然后让它回到第四个 key。因为曲线在第三个 key 处变方向了,所以球也是。
http://www.uecg.cn/an/video/Ball_09a_EaseOutFastIn.mov
同样,为了模拟预备动作我把第二个 key 的位置降低,让球在朝 Pose B 移动前先向反方向移动。这里我做了 A 的 Antic
和 B 的慢入。

http://www.uecg.cn/an/video/Ball_10_Antic.mov
这次你同样也可以按照物理规律和品味偏好来调节这些 key 的变化量。这个方法不总是给你完美的 antic 和 OVS,但是
对于简单的动作来说这是一个快速和简单的捷径。我也可以通过不改变数值,仅仅倾斜 key2 和 3 的切线手柄来得到近
似的效果,但是这样会让曲线超过它的 key 的范围,这是我要尽力避免的。
更多关于这个话题的内容在 Hygiene 曲线卫生学部分。
对于那些 Ease,Antic 和 Overshoot 你也可以通过偏移 key 的时间上的位置或者添加一些 key 来缩短或者加长影响效
果。到现在我把 key 留在所在的时间上,集中精力调节数值和切线手柄。现在有一个更加复杂的例子,综合了多种
timing 的方案。本例中,我添加了更多的 key 并沿着时间移动它们,但是所有的前期概念还是可见的。这个动画完全是
在 Graph Editor 中创建的。想法是这样的:一个球打算从屏幕的右边出画,但是被一堵看不见的墙挡住了去路。这个动
画不是要获得 Annie 奖的,它只是要告诉你在一个 Translate channel 中你能做些什么,并且能够理解曲线调节。

http://www.uecg.cn/an/video/Ball_11_Combo.mov
这里是动画的 breakdown:
Frame 1-3:这是一个 hold 保持,因为动画曲线没有倾斜。
Frame 4-12:这是一个大的 Antic 预备动作,而且在 frame 7 上有个对 Antic 的 ease-in。因为它看起来正计划下一步
的动作,所以暗示你这个球是活的。
Frame 12-18:球快速向右边移动,加速。
Frame 18-24:球撞到了看不见的墙,有个 fast-in,然后马上弹回来,接一个 fast-out。
Frame 24-33:球又撞在墙上弹了几次,在接触的 key 上一直是 fast-in 和 fast-out。
Frame 35-38:球停下来,保持。
注意:上图中的许多切线手柄都有 free Tangent weight 而且打断了切线连续。Maya 让你的工作变得有点艰苦,这样
才能获得你想要的精确的 tangent 形状,但是不要让这一点阻碍了你!

这篇是讲述关于动画曲线上的 timing 的基础教程。Timing 是需要花很长时间去研究的技能;希望这些技巧能帮助你更


容易的得到你要的 timing。
敬请期待:动画曲线 Part 2
里面我讨论了动画曲线的卫生学,工作流程,还有更多内容。

You might also like