AE制作抖动动画
AE表达式实现抖动效果
昨天在一个模板中分析得到了以下几组表达式,虽然刚接触AE,并不懂什么意思,但是,我意外发现利用它们似乎能制作出比较有意思的抖动效果,先看一下表达式:
//bounce
n=0;
if(numKeys>0){
n=nearestKey(time).index;
if(key(n).time>time){
n--;
}
}
if(n==0){
t=0;
}else{
t=time-key(n).time;
}
if(n>0){
v=velocityAtTime(key(n).time-thisComp.frameDuration/10);
amp=0.03;
freq=2,0;
decay=2.0;
value+v*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);
}else{
value;
}
Keyframe Overshoot
freq = 3;
decay = 5;
n = 0;
if (numKeys > 0){
n = nearestKey(time).index;
if (key(n).time > time) n--;
}
if (n > 0){
t = time - key(n).time;
amp = velocityAtTime(key(n).time - .001);
w = freq*Math.PI*2;
value + amp*(Math.sin(t*w)/Math.exp(decay*t)/w);
}else
value
Keyframe Bounce Back
e = .7;
g = 5000;
nMax = 9;
n = 0;
if (numKeys > 0){
n = nearestKey(time).index;
if (key(n).time > time) n--;
}
if (n > 0){
t = time - key(n).time;
v = -velocityAtTime(key(n).time - .001)*e;
vl = length(v);
if (value instanceof Array){
vu = (vl > 0) ? normalize(v) : [0,0,0];
}else{
vu = (v < 0) ? -1 : 1;
}
tCur = 0;
segDur = 2*vl/g;
tNext = segDur;
nb = 1; // number of bounces
while (tNext < t && nb <= nMax){
vl *= e;
segDur *= e;
tCur = tNext;
tNext += segDur;
nb++
}
if(nb <= nMax){
delta = t - tCur;
value + vu*delta*(vl - g*delta/2);
}else{
value
}
}else value
每个效果稍有不同,个人比较喜欢第一组表达式的效果
这里是用法:超级简单
(以第一组表达式为例)
step 1:做关键帧动画
step 2:摁 F9,在曲线编辑器里面调运动曲线(注意一点:最后一个关键点的速度不能为0)
step 3:粘贴表达式
step 4:带上炸鸡和啤酒,坐下来慢慢欣赏吧




































