动画曲线大百科.docx
- 文档编号:4057432
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:34
- 大小:1.69MB
动画曲线大百科.docx
《动画曲线大百科.docx》由会员分享,可在线阅读,更多相关《动画曲线大百科.docx(34页珍藏版)》请在冰点文库上搜索。
动画曲线大百科
Splinophilia--byVictorNavone动画曲线大百科-VictorNavone最新教程
许多新手3D动画师(甚至有些老手)都会对他们所使用的动画软件里面的曲线编辑器(splineeditor)感到不适应,甚至有些犯怵。
也许他们像儿童一样,被那些带着小球的彩色纱线迷花了眼睛;也许他们感觉好像是伦敦的地铁线路一样让人迷惑;又或者也许他们只是看见彩色的乱麻理不出头绪来。
不论什么原因,都很丢人呵,因为曲线编辑器可是一个很强大的动画工具哦。
我个人非常喜欢调节这些动画曲线;有事我甚至直接在曲线编辑器里直接做动画,碰都不碰我的模型。
只要知道曲线应该看起来怎样,我就能大体上预测出我的物体会怎样运动了,诊断并修复我动画中的问题,然后就跳到我的调节细节(polish)的阶段。
在这两部分教程中,我将要试图传授给你们一些简单的规则和概念,来帮助你们更好的理解动画曲线的含义和功能(或者叫“功能曲线”functioncurves,它们有时候这么叫)。
我将使用Maya的GraphEditor来讲述我的例子。
但是我这里阐述的规律适用于任何主流3D动画程序。
希望看完这篇教程,你就已经上了曲线调节的正途了!
在这些课程里我会使用一些基本的动画术语,诸如“渐入”(ease-in),“间隔”(spacing),“关键帧”(key),和“交迭”(overlap);如果你对这些不够熟悉的话,那么你可能还没准备好看这篇教程。
但是如果你想重温一下你记忆里关于这些东西的印象,还有基本动画规律,那么请看这里,或者拾取一个“IllusionofLife”的拷贝。
基础
为了避免让任何人掉队,我将要从曲线编辑器最基础的解释开始讲起。
这里我用一个简单的动画实例:
一个球从一个地方移动到另一个地方(我称之为"PoseA"和"PoseB")。
两个pose之间的红点表示了动画的间隔。
球是沿着X轴运动的,所以我在曲线编辑器中载入TranslateX进行核查。
图表的水平坐标表示时间(以帧数测量),垂直坐标表示数值(可以是英寸,米,角度,百分比等等)。
黑色点表示我设置的关键帧,红色的取消穿过所有的关键帧告诉你在关键帧之间发生了什么曲线从图表的左边贯穿到右边告诉我们当物体随时间推移时,X位移的数值变化。
所有第1帧的X位移是0,第30帧是10。
注意我设置了4个key:
2个给PoseA,2个给PoseB。
这是因为我想让球开始和结尾在一个pose上呆处。
前两个key之间和后两个key之间的曲线是完全水平的,也就是说没有移动。
这是因为数值在这些key之间没有变化,只有时间在变化。
只有当时间和数值都变化时才会产生运动(于是曲线才有了倾斜度),在这个例子中,运动发生在关键帧2和3之间。
倾斜的越陡,运动就越快越明显。
倾斜的越平缓,运动越慢越微弱。
这样讲清楚吗?
注意:
不要期望曲线的形状就实实在在的代表物体在你的场景里怎样运动;曲线主要是告诉你物体何时运动和运动多少的信息。
它不代表一个物体在摄像机里所看到的运动路径(虽然有时可能是,但那是巧合)。
与之类似,一个地震仪告诉你地球何时地震和强烈程度,但不是告诉你怎样地震。
曲线倾斜的方向可以告诉我们物体沿着给定的轴向运动的走向,在这个例子里,给定的轴向是TranslateX。
从左边看到右边,如果曲线在上升,那就意味着数值是在增加,球就是在向右运动。
如果曲线是下降的,那么数值就是在减少,球就是在向左动。
记住朝哪边倾斜代表什么方向并不重要;重要的是要记住,倾斜方向的改变就意味着运动方向的变化。
这在我讲到anticipation和overshoot(中文一般译为预备动作和过拍)的时候就变得很重要了。
大家还跟得上我吗?
我想提的最后一件事就是切线手柄(tangenthandles),在上图用棕色显示。
如果你已经用过诸如AdobeIllustrator这样的基于矢量的图形设计软件的话,你应该对bezierpath贝塞尔曲线路径不陌生。
曲线与之相类似。
在曲线上的每个关键帧都有切线手柄,你可以通过拉长和旋转来影响通过关键帧的曲线的形状,这对于把弯曲的线条放入运动曲线是必需的。
使得你可以在关键帧之间营造优雅的转换过渡,而不需要手动添加很多多余的in-between和breakdown帧。
通过把你的关键帧转换成线性或者保持(linearorheld),你就完全可以实现切线手柄的调节,但是这需要你在计算好时间线上多下功夫,这样才能获得优雅的运动和timing。
如果你愿意,你当然可以在每一帧都设置关键帧,实际上是做你的一拍一动画,不再让曲线的切线对你的动画有任何的影响。
但是有时有必要很快的或者很精确的动画,那种工作方式效率不太高,而且也没有利用到电脑最擅长的优点:
光滑的插中间帧。
现在我们对曲线编辑器展示给我们的东西建立了基本的概念,我们怎样把这些以一种有用的方式应用到你的动画中去呢?
传统的动画timing概念比如“慢入ease-in”和“慢出ease-out”在曲线编辑器里看起来是怎样的呢?
让我们谈谈应用到动画曲线的timing。
任何时候,当一个物体或者角色动一个pose运动到另一个pose时,你都要给这个动作定下时间。
它怎样运动出PoseA的位置?
它是慢出还是快出?
有没有向反方向的预备动作?
同样的,它怎样到达PoseB?
它是慢入还是快入的?
有没有overshoot和settle?
你更喜欢哪个pose,A还是B?
你应该问你自己这些问题,只要有东西在你的场景里移动。
否则电脑会替你做决定的。
而且电脑的决定往往不是有趣的选择。
当我blocking我的动画时,我开始总是给我所有的key都设置flat-tangent曲线,但是我很少把它们留到最终的成品动画。
如你在上面的片段中所看到的,如果我把从PoseA到PoseB的一般般的水平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,让我们先集中看看到PoseB的ease-in。
我选择第三个key并把它降低一点,然后旋转它的切线手柄使得曲线平滑的经过它。
现在球不再是停止并保持在PoseB了,而是几乎要到达PoseB时开始慢入ease-in。
这样在动作的结尾处增加了一些缓冲,也给了球更多真实的减速和重量的感觉。
注意在上面的片段中,更多的点聚集在靠近PoseB的地方。
换句话说,这个动画更偏爱PoseB。
如果我用同样的方式抬高第二个key的话,我就得到PoseA的ease-out慢出。
现在球不是从保持突然开始动,而是逐渐加速开始移动。
我不想在动作中做一样的慢入和慢出(像上例)因为那样会使timing和spacing显得对称,也不是很有趣。
最好偏向某一端的pose。
为了做出一个ease而移动和倾斜key的多少,取决于许多因素:
两个pose直接的距离,物体的重量和体积,行为的强度,还有动画的风格。
一个好的开始位置是,移动key使它的数值在两个pose差别的85%到95%之间。
然后让手柄倾斜,使得曲线保持平滑。
确保曲线不要超过第二个pose,除非你想要一个overshoot而不是ease(更多消息请参看SplineHygiene曲线卫生学部分)。
我也可以加强ease的量,只要拉长第2第3个key的切线手柄就行了。
拉长手柄这种方法有时很有用但是对曲线的控制不如用一个key来定义ease形状的方式好
Fast-In&Out's快入和快出:
你不用调节任何key的数值来得到fast-in和fast-out。
你可以把key变成线性linear的,打断key两端的切线手柄,或者让它们变短直到它们几乎影响不到曲线形状为止。
这个例子里曲线的倾斜处理成在key前后有个陡峭的尖角,所以这里会有个突然的停止或者移动。
一般你可以用这种timing来处理一个物体突然受到外力作用。
比如,一个球被高尔夫球杆打飞,它会从保持状态突然fast-out快出。
这里是一个PoseA的快出加上一个PoseB的慢入。
在上面的片段中你可以看到spacing没有加速,只有减速,因为球刚刚被击打时是最快的,然后它只会减速。
如果球正在滚动然后突然撞到什么东西停下来,它会在撞击处快入。
这里我融合了一个PoseA的慢出和PoseB的快入,好像球开始沿着斜坡滚下,然后撞到墙停了下来。
这次没有减速;惯性和重力让球一直滚动直到一个不动的物体阻挡了它。
Anticipation(预备动作)和Overshoot(过拍):
(以下简称Antic和OVS)简单点儿的版本也是在曲线编辑器里就可以实现的。
这些要点对于让一个物体显得“生动”和有弹力是非常重要的。
为了让球在PoseB处OVS,我简单地让第三个key稍微超出原始的pose,然后让它回到第四个key。
因为曲线在第三个key处变方向了,所以球也是。
同样,为了模拟预备动作我把第二个key的位置降低,让球在朝PoseB移动前先向反方向移动。
这里我做了A的Antic和B的慢入。
这次你同样也可以按照物理规律和品味偏好来调节这些key的变化量。
这个方法不总是给你完美的antic和OVS,但是对于简单的动作来说这是一个快速和简单的捷径。
我也可以通过不改变数值,仅仅倾斜key2和3的切线手柄来得到近似的效果,但是这样会让曲线超过它的key的范围,这是我要尽力避免的。
更多关于这个话题的内容在Hygiene曲线卫生学部分。
对于那些Ease,Antic和Overshoot你也可以通过偏移key的时间上的位置或者添加一些key来缩短或者加长影响效果。
到现在我把key留在所在的时间上,集中精力调节数值和切线手柄。
现在有一个更加复杂的例子,综合了多种timing的方案。
本例中,我添加了更多的key并沿着时间移动它们,但是所有的前期概念还是可见的。
这个动画完全是在GraphEditor中创建的。
想法是这样的:
一个球打算从屏幕的右边出画,但是被一堵看不见的墙挡住了去路。
这个动画不是要获得Annie奖的,它只是要告诉你在一个Translatechannel中你能做些什么,并且能够理解曲线调节。
这里是动画的breakdown:
Frame1-3:
这是一个hold保持,因为动画曲线没有倾斜。
Frame4-12:
这是一个大的Antic预备动作,而且在frame7上有个对Antic的ease-in。
因为它看起来正计划下一步的动作,所以暗示你这个球是活的。
Frame12-18:
球快速向右边移动,加速。
Frame18-24:
球撞到了看不见的墙,有个fast-in,然后马上弹回来,接一个fast-out。
Frame24-33:
球又撞在墙上弹了几次,在接触的key上一直是fast-in和fast-out。
Frame35-38:
球停下来,保持。
注意:
上图中的许多切线手柄都有freeTangentweight而且打断了切线连续。
Maya让你的工作变得有点艰苦,这样才能获得你想要的精确的tangent形状,但是不要让这一点阻碍了你!
这篇是讲述关于动画曲线上的timing的基础教程。
Timing是需要花很长时间去研究的技能;希望这些技巧能帮助你更容易的得到你要的timing。
作为职业动画师,我们偶尔也会被叫去修改别的动画师的动画。
这在制作的最后收官阶段并非不常见。
当我看到别的动画师的镜头时,恐惧总是笼罩在我心头;这有点像你走进了别人的卫生间。
大多数时候它都还行,但是有时候你碰上的那位很明显嫌打扫卫生麻烦,然后现在搞得我无处下脚,不得不收拾这一片狼籍。
可能tangent手柄四面八方支棱着,key们都是水平保持的或者是线性模式的,还有那为了让动画看起来平滑而大量补帧导致的锯齿状的动画曲线。
我对动画曲线颇有些洁癖,所以这样的事情真的让我咬牙切齿。
我愿意花些时间在这儿,来灌输一些关于动画曲线卫生学的基本概念,只是为了防止万一我赶上修改你们的镜头。
实用的基本卫生学能避免许多timing,spacing和arcs的问题,也能赋予你一个开始迈向polish阶段的脑筋。
这也是种礼貌!
这是一些常见的典型脏曲线的问题,还有如何把他们清理干净。
(鼠标悬停在图像上面看清理“前”和“后”的区别)
(因为此空间似乎不容易实现这种效果,所以把前后的效果图片并列显示,请见谅。
希望没有影响读者理解此文,译者注。
)
光滑度-切线手柄是否旋转在合适的角度,使得动画曲线光滑的通过这些key?
这些key是否让曲线描述了一个自然的,赏心悦目的形状?
就像你的场景里动作的路径和弧线一样,动画曲线也应该有一个赏心悦目的流动感。
即使每帧都有key,我甚至也会将曲线弄平滑。
这使得曲线更便于查看,而且如果我需要在以后需要拉长这段动画的话,新的中间帧也比较可能会“做正确的事”。
例外情况:
当你正要添加一种战战兢兢和噪波的动画效果的话,那么以这种方式扭曲你的曲线手柄可能会有用。
曲线包含-你的动画曲线超过了临近的key的数值了吗?
你应该用key来描述你的极限位置,而不是曲线。
否则一旦你开始给你的key在时间上做offset,你的极限位置就有可能改变或者消失。
当你知道极限位置是用key来表示时,在dopesheet编辑器里保持你的动画组织良好也将变得更加简单。
例外情况:
如果你处在动画的细调阶段而且你需要给一个运动添加一些简单的overshoot的话,这是一个可以接受的捷径。
我在手指和面部的控制上这样去做。
我也可能用这种技巧来把一个动作推向极限,只用半帧,有时候一帧都嫌太多!
你也应该尽力避免让动画曲线的手柄在时间的方向上越过其他的key,因为这样会让你的动作磕磕绊绊。
节约关键帧-你是不是有许多无关紧要的key?
有时最好删掉曲线上一些多余的key,来让电脑做smooth,这样会给你一个平滑的运动的。
一旦你的blocking通过了,清理所有多余的key也是个好主意(那些有水平的tangent而且具有相同的数值的key)。
这样会让你的动画曲线看起来更干净,更容易编辑。
例外情况:
如果你的key需要非常精确的话(比如展示两个肢体部分之间的接触时)你可能就得有更多的key来描述曲线了。
富于变化-你的动画曲线中有重复的曲线吗?
如果你的曲线中有东西看起来在重复,那么你的动画也很有可能看起来是在重复运动。
试着在曲线上添加一些不同,比如数值,tangent,和timing上的变化,这样让你的动画打破重复,而是富于一些微妙的变化。
调节动画曲线,肯定是一门艺术-知道你是否需要拉动tangent手柄,或者是添加另一个key,知道哪条曲线需要最细心的平滑,而且知道怎样避免动画曲线过于平滑。
这些知识需要大量的实践和经验的积累。
简单的ease松弛曲线-不是每个动作都需要3到4个key去描述的。
有时你可以仅仅通过拉伸tangent手柄来实现。
例如,对于小的运动比如手指的弯曲,你可以通过拉长引导进入Bpose的tangent手柄来创建ease-in。
我经常同时对多个动画曲线进行这样的操作,以此来加速我的工作流程。
随着你对动画和曲线的经验的日渐丰富,你会学到在哪里你可以像这样走捷径,而哪里又是你应该给予更多关注的。
简单的overlap-给尾巴,头发甚至脊柱这样的东西添加overlap可能会比较沉闷,但是展示重量是必需的。
这里有个快速的方法,从一个动画曲线上取得key,然后应用到其他的关节上,以获得连续的打断关节。
第一个曲线是角色Taylor的TranslateY(AnimationM友情提供)
通过copy这些key到尾巴上的其他关节上,并且给一定的时间偏移,我可以创建一个快速的难看的overlap。
在此例中我给每个关节偏移了一帧,使得每个关节都在不同的帧上达到它的极限,而且旋转的进程好像是一个通过尾巴链条传播下去的波浪。
每个关节偏移帧的数量取决于动画的速度。
开始给每个关节偏移一帧,并按需要增加。
我也需要缩放key的数值到合适的范围;TranslateY从0到0.8个单位,所以我使用缩放和位移的工具让RatateX的曲线范围在-30到45之间。
这里是调节后曲线的样子:
当然这看起来并不完美,而且在动作的开始和结束的地方也需要更多的自定义key,但是这是一个好的开始。
在上面的例子中,我只是复制了那些key到同一轴向的rotation中。
通过拷贝-粘贴-偏移key从一个旋转轴向到同一关节的另一个旋转轴向上,你可以给一个简单的运动添加overlap和趣味性。
在下面的例子中我会把角色的左右旋转(Z)复制到(Y)的旋转上。
首先这是只有Z轴旋转的头部:
现在我会复制这些key到Y旋转曲线上。
你决定把Y的旋转向前或者向后偏移,会得到不同的结果。
在这里我把Y的转动移动到早5帧发生,来让头部倾斜后有延迟,创建了一个不错的StevieWonder的效果!
Spline-BasedWorkflow基于动画曲线的工作流程
现在,我要展示给你我的工作流程,怎样从stepped曲线的blocking进入到曲线平滑的粗动画。
我不想把这个教程膨胀为一个完整的工作流程,所以我略掉我做计划和block的过程,也没有包括最后收尾的动画阶段。
我会展示给你我的工作流程中取巧的“次要动作”。
动画片段中用红色的点标示出了骨盆的arcs和spacing,所以你可以看到动画曲线是怎样影响到他们的。
Blocking:
我已经以pose-2-pose的方式用stepped曲线做出了blocking,而且我也做了breakdown的细分,这样至少4帧就会有一个key。
我确保在每个pose的每个控制器上key过了。
甚至在角色没有移动的保持帧,我也添加了额外的key。
所有这些key在后面都会在控制我的timing时变得非常顺手,而且避免了key的漂移。
这是blocking的角色根节点的Z和Y的位移动画曲线(骨盆)。
即便是在stepped模式下,你仍然可以看出ease发生在哪里。
转换到spline曲线模式:
一旦你从stepped曲线转换到spline的曲线模式,你就可能要遭受很多的罪。
你那美妙的,干脆的timing就这样“水”掉了,而且这种模式会以不可预知的方式给你的key之间做in-between中间帧。
甚至当你使用“成对拷贝”的方法做blocking,还是会有潜在的可能会使你的timing溜掉,如果你不对spline曲线加以控制的话。
如果我只是简单的把我所有的stepped的key都转换成spline曲线的话,我的动画会看起来像这样:
看看动画是看起来多么的摇摆不定,看红点的位置也是扎堆成一团,比如10-15,32-37,38-43帧等处。
也看到脚在地上打滑,而并没有踩实。
这是因为默认的spline光滑允许spline越过key设定的数值,就是我在SplineHygiene章节提到过的,非常的淘气,因为它给了我们不想要的overshoot。
从stepped曲线出来的最好的方式,是把所有的key都转换成flat的tangent形式。
那样你可以自己决定那个tangent手柄应该做光滑。
这是我的已经变为flat的tangent的动画。
显然,这个也不好(跳跃过程中的spacing尤其难看,就像红点显示的一样)但是运动的范围已经更加忠实于blocking了,而且保持了相似的timing。
我也已经把滑步定住了。
现在是时候该开始应用我在教程的Part1中和Hygieneprinciples卫生学一章节中提到的timing的规律了,来给spline曲线进行第一步的smooth工作。
我会从根部开始(这是一个非常好的开始的位置)然后会弄躯干和头部,最后才是腿。
光滑根节点:
看看骨盆的位移曲线,有一些明显的位置需要进行光滑,比如YTranslation在跳跃的大弧线的地方。
我也可以添加更多的ease并把现有的ease加强一点。
在靠近他站住的动画要结束的地方,我忽略了添加一个ease-in的breakdown。
别着急;我可以直接在spline的编辑器里面添加。
在下面的动画中请注意骨盆的arcs和spacing改善了多少。
我也在TranslateZ的spline的第48帧上添加了一点overshoot,来使得骨盆在他向后看的时候向前overshoot。
鼠标悬停在图像上看看前后的对比。
光滑其余的部分:
一旦我觉得骨盆的运动满意了,我就转移到脊柱和头部上,应用同样的技巧。
这是经过第一轮粗调的躯干和头部的RotateX曲线。
我倾向于在pose和smooth的时候把脊柱的骨骼视为一个物体(鼠标悬停在图像上看看前后的对比):
然后整理腿和手臂(如果它有这些的话)。
首先光滑完根节点是非常重要的,因为它会影响身体所有其他部分的动画,下面是我称为“粗糙”或者“进行中”的动画。
仍然还有很多的工作要做:
左腿看上去有点飘;头和身体之间没有引导和跟随,而且膝盖也需要细调。
然而没有添加或者偏移一帧,我已经可以从blocking阶段转换到平滑的动画,而不用损害到我的基本timing和动作路径。
动画也依然组织良好,因为所有的key都落在同一帧上,而且每个控制器都key过了。
这就使得修改更加容易。
从现在起,只要我觉得合适,我就可以添加和删除key,而且在时间轴上向前和向后移动这些key。
就是这些了。
我现在想要告诉你们的就是这些了。
Splines。
(样条状的动画曲线)
好爱它们。
现在,去做点动画吧。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 动画 曲线 大百科