这次分享的内容很重要! 我自己会不惜分享的! 分享的是强大的外国人(http://www.motion script.com/articles/bounce-and-overshoot.html是Adobe的推荐博客) )写的表达,但这是为了自己
嘿,这次我们要分享一个非常实用高效的公式! 灵活的表达式,Bounce和Overshoot! 使用这两个表达式可以轻松实现各种弹性动画,例如抖动和反弹。 是的,你没有听错。 只要有998的赞许,你就可以自由地得到有弹性的Buff! 快拿起你的鼠标夸奖吧!
公式的导出过程可以点击上面的链接查看。 原作者非常详细地叙述了他的推导过程。 大家快拜吧。 然后作者非常无私地发表了可以直接进行两个(Bounce Overshoot )关键帧的公式(再次拜了一下),室友问我为什么要跪着打字。 稍后将介绍如何快速理解和掌握这种灵活性的两种表示。
首先,让我们了解什么是Bounce和Overshoot。
Bounce
图表:
..
Overshoot:
图表:
我很容易就
Bounce就像球落地反弹的效果一样,理解为“反弹”;
过冲、夸张的(过冲)被理解为像果冻一样的“抖动”。
说了这么多,让我们看看仪式的真容吧! 原作者在他的文章的最后发表了两种可以直接进行关键帧的表达。 分别(斜体部分) )。
密钥帧覆盖
freq=3;
每日=5
n=0;
if(numkeys0
n=nearestkey(time ).index;
if(key(n ).timetime ) n----;
}
if(N0 ) {
t=time-key(n ).time;
AMP=velocityattime(key(n ).time-.001 );
w=freq*Math.PI*2;
valueamp*(math.sin(t*w )/math.exp ) decay*t )/w );
}else
value
..
密钥帧备份
e=.7;
g=5000;
nMax=9;
n=0;
if(numkeys0
n=nearestkey(time ).index;
if(key(n ).timetime ) n----;
}
if(N0 ) {
t=time-key(n ).time;
v=-velocityattime(key(n ).time-.001 ) ) e;
VL=length(v;
虚拟实例体系结构(if ) {
VU=(VL0 )? normalize(v ) : [ 0,0,0 ];
}else{
vu=(v
}
tCur=0;
segDur=2*vl/g;
tNext=segDur;
nb=1; //numberofbounces
wile(tnext
vl*=e;
segDur*=e;
tCur=tNext;
tNext=segDur;
美国全国广播公司
}
if(nb=nmax ) (
德尔塔=叔塔;
valuevu*Delta*(VL-g*Delta/2 );
}else{
value
}
}else value
..
其中运用了很多数学知识,总之我喝醉了。 幸运的是,为了使用它,没有必要完全理解公式的原理。
Ok,你怎么用那个?
第一步,将上面的两个表达式ctrl c复制到云笔记本上,可以随时随地调用。
看这一步,恭喜你! 你已经学到了80%。
.
.........................下面我将拿 Keyframe OverShort 来举例。
该表达式的工作原理需要采样关键帧运动速率,你想要表达式正常工作,就要给最后一个关键帧一个速度值。也就是说抖动效果是由关键帧的速度值及表达式中的频率(freq)、衰减(decay)共同来控制的。简单的讲,使用了该表达式的某属性的最后一个关键帧的速度值将会很大程度的影响表达式的抖动效果(好绕口啊)。所以sydmj感觉抖动效果不明显时,也可以试试改变一下关键帧速率。(我第一次分享该表达式给其他同学时,很多人反映
没有效果,往往都是因为起关键作用的最后一个关键帧速度值为0所导致的)
如下图所示,OverShort表达式中的freq、decay保持不变,改变最后一帧的速率,弹性效果随之改变(红圈表示最后一帧的速度值)。
a:
...........................
b:
[温馨提示]
1.点击“显示后表达式图表”,方便我们更好的感受弹性带震撼(同时计算机的处理负荷会变大哦,所以看完记得随手关掉)。
2.该表达式可以用在一维、二维及三维属性(例如位置、旋转、缩放等等)。
...........................
不知道到这里大家能否学会Bounce 和 Overshoot的用法。其实很简单,只是可能被我说复杂了。没关系,请看下面我蹩脚的演示:
step 1:打好关键帧:
step 2:给关键帧加上运动曲线(由于录屏大小的限制,看不到右键菜单,其实就是给关键帧加了一个缓动):
step 3:让最后一个关键帧的速度值不为0(纵坐标表示速度,我选中其中一个关键帧之后按了F9,让其缓动):
step 4:将表达式复制到位置属性中并轻点小回车键:
step 5:准备好可乐和炸鸡,然后慢慢欣赏你的成果...
相信看到这里你应该已经学会了Bounce 和 Overshoot表达式的用法,是不是超简单,超实用!再次感谢原作者(http://www.motions cript.com/articles/bounce-and-overshoot.html )的无私分享!表达式着实能为我们省下不少宝贵的时间,同时效果还不会打折反而更佳。表达式只是一门语言,sydmj掌握足够多的“词汇”,“语法”,“语句”你也可以尝试编写更实用的表达式,随时调用。期待大家脑洞打开!
分享到此结束,如果你觉对你有帮助就点个赞吧!感谢观看!