AE制作逼真的弹跳和缓冲效果

机构:杭州玛雅动漫 时间:2016-01-09 点击:832

  反弹是一个完全不同的野兽。当一个对象的反弹,它失去在每个反弹,这会影响二者的幅度和频率的能量。作为反弹的幅度降低,它们发生更频繁。这意味着正弦波模拟不足以反弹。事实上,反弹的波形实际上是一系列降幅的抛物线。物体停止在反弹的顶部,然后加速(由于一些重力状现象的力),因此所涉及的数学运算是完全不同的。

  该波形通过模拟反弹表达式生成。请注意,反弹出现较多的对象失去能量。

  一个基本的反弹表达已应用到旋转属性。

  缓冲详情

  看一看基本表达式为指数衰减正弦波:

  amp = 80;freq = 1;decay = 1;t = time - inPoint;amp*Math.sin(t*freq*Math.PI*2)/Math.exp(t*decay);

  因为它位于,这种表达会引发衰减的正弦波振荡图层的入点。前三行只需设定的波形参数进行:80最大振幅,每秒一个振荡的频率,和一个衰减(多快的振幅减小)之一值。变量t是用来计算由于层的In点的时间。所有真正的数学发生在最后一行。

  注:

  JavaScript函数Math.sin()和Math.cos()实现都产生正弦波,但他们的目的不同表达作家。该Math.sin()函数从零开始,增加价值。 Math.cos()实现为90度的相位差Math.sin(),这意味着它开始于最大值和减小。

  你通常会选择Math.cos()实现当你想一开始就在完全伸展,或完全旋转状态的对象。例如,您可能要开始与摆在最高转速,而不是零钟摆运动。我们不会在这里使用它,但它是一个很好的工具来了解。

  有三样东西,在最后一行回事。所述Math.sin()片产生频率频率而变化的正负之一之间振幅的正弦波。该Math.exp()件产生的曲线,在可变衰减所确定的速率成倍增加。正弦波得到由幅值变量(安培​​)相乘,并且该结果被由指数曲线的值除以,产生所希望的指数衰减正弦波。

  这是一个方便的表达,有时是你所需要的。更多的时候,你会想用指数衰减正弦波提供一些振荡尖峰另一个运动结束。诀窍是让冲振荡的幅度,以进向速度相匹配。你做到这一点的方式取决于您的动画的性质。在某些情况下,可能必须即输入的速度由表达式本身确定的动画。例如,假设您想要一个层从零到200%的比例增加在很短的时间段,然后冲过一点点,并定居在200%。所以动画触发器的层的在一点上,我们会对其进行设置。这里有一个基本的表达,将图层从规模0到100%超过十分之一秒,开始在一层的分析:

  t = time - inPoint;startVal = [0,0];endVal = [200,200];dur = 0.1;linear(t,0,dur,startVal,endVal);

  计算缓冲

  现在,我们将添加一些超调。在这种情况下,由于进入的动画是通过一个linear()函数生成,我们可以很容易地计算速度进入过冲。事实证明,该速度是刚结束值减去开始值,由持续时间,在这种情况下将是分割(endVal - startVal)/dur。因此,我们需要修改规模化表达,使其持续上升直到它达到endVal,然后切换到超调振荡。最终的表达式如下所示:

  freq = 3;decay = 5;t = time - inPoint;startVal = [0,0];endVal = [200,200];dur = 0.1;if (t < dur){ linear(t,0,dur,startVal,endVal);}else{ amp = (endVal - startVal)/dur; w = freq*Math.PI*2; endVal + amp*(Math.sin((t-dur)*w)/Math.exp(decay*(t-dur))/w);}

  了解更多关于影视后期方面的知识,请访问杭州影视后期培训学校

返回顶部