相关分类
AE实例教程
AE特效教程
AE视频教程
VIP会员AE教程
飞特网 顶部通栏广告

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

将军发布于:2015-8-17 10:54 |原作者: 郑囧前端|
将军
北京市 西城区 GUI设计师
发私信 + 关注
简介: 这篇教程教飞特的AE爱好者们使用AE制作逼真的弹跳和缓冲效果,教程难度中等,算是AE表达式运用的一个列子吧,推荐一下和飞特的朋友们一起分享学习了,喜欢的朋友给好评啦,好评越多越好哦! ... ...

      有时你可能想美化您的动画动作有位物理真实感。例如,你可能有一个快速层从零扩展到100%,并要加一点过冲和振荡,有它最终定居在100%。另一个例子是,如果你有一个对象落入框架,你想,当它击中了底部反弹了一点。这两种情况看起来相似,但它们代表了完全不同的物理过程。任一这些模拟可以使用表达式来创建,但选择正确的一方面,这是很重要的。在这篇文章中,我将详细讨论这些动画工具以及就如何以及何时使用它们的一些技巧。

       在这两个弹跳和缓冲的情况,你正在处理的衰减幅度。过冲,你一般都处理一个谐波振荡,就像你有一个摆或弹簧。这意味着频率保持不变(在对象的共振频率)作为振幅衰减。这通常是用模拟的指数衰减正弦波。这是一个简单的解决办法,但肯定是有窍门能让初始幅度正确匹配与传入的动画)。

 这是一种用于模拟谐波共振指数衰减正弦波的波形。注意,频率是恒定的振幅衰减。

FEVTE编注:更多After Effects特效教程学习交流和After Effects作品发布请访问飞特网After Effects特效教程栏目,地址:https://www.fevte.com/moive/AE/AE_texiaojiaocheng/

                                                              

基本衰减的正弦波振荡应用到旋转属性。

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

                                 

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

                                                            

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


缓冲详情

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

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);
}

请注意,从linear()坡道的过冲振荡(其中发生在5f)的过渡完美匹配。

缓冲动画匹配传入动画的速度。

    诀窍使这两个动画比赛的速度就是神秘的可变瓦特这里,w表示角速度振荡。没有进入很多细节,事实证明,除以输入速度与角速度的振荡给出了一个匹配完美的超调。具体而言,这意味着更高的振荡频率越低,产生的过冲的幅度。记得有过冲的一个重要的事情是,你没有直接控制超调幅度(放大器变量由下式计算)。如果你想有一个较大的超调,你或者需要增加进来的速度,或者减少其振荡频率。这是值得摆弄表情看频率,传入速度,并导致超调幅度之间的相互作用。

    这是一个非常有用的和通用的表达。这里有好玩的,你可以使用文本图层来获取文本字符,随机从零到100%的比例增加,有超调的变化。为了得到这个工作,你想补充一个动画缩放你的文字层,缩放值设置为百分之零,添加表达式选择器,(那么你可以删除范围选择),最后,更换式的默认表情选择的物业数量与此:

freq = 3;
decay = 5;
maxDelay = 1.0;seedRandom(textIndex,true);
myDelay = random(maxDelay);
t = time - (inPoint + myDelay);
startVal = [100,100];
endVal = [0,0];
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);
}

 这里是你可以用它来获得文字层的3D人物依次摆成视图冲另一种变体。

12下一页
46

好评
33

差评

刚表态过的朋友 (79 人)

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

将军
北京市 西城区 GUI设计师
+关注 发私信
发表评论

最新评论

引用
咬蛋自尽发布于:2016-1-28 10:07
感觉不错 ,,虽然没看懂!

查看全部评论(1)

您需要登录后才可以评论和提交作业 登录 | 立即注册
本周热点文章
2020 新飞特 从心开始
关于飞特| 广告服务| 付款方式| 版权申明| 网站地图| 联系我们| 加入我们| 举报| 帮助中心| 移动版| 手机版| 飞特网

委托设计