甲虫课堂 > AE教程 >

AE用表达式制作病毒落地反弹动画

阅读
2021-06-24 09:55:34

效果图:

AE用表达式制作病毒落地反弹动画

画一根橡皮筋,给一个CC Bender特效,固定好橡皮筋的两端,加大Amount值,就能看到橡皮筋产生弯曲变形了,将表达式赋给Amount属性,就能控制弯曲变形程度的变化,从而实现橡皮筋回弹效果。

AE用表达式制作病毒落地反弹动画(1)

t=time-0.58;

freq=t*(t+1)*10;

if (time>0.58){

value+-Math.sin(freq)*80/(Math.exp(t))

else{value}

其中,t=time-0.58是因为动画中病毒从高空落到橡皮筋上时时间线正好走了0.58秒。

freq=t*(t+1)*10是回弹频率越来越快的终极原因,freq的值会随着t的匀速增大以越来越快的速度变大。

变大的速度越来越快就能使回弹频率越来越快,比如填入Math.exp(t)也会有一样的效果,只不过不一定是你想要的效果。

AE用表达式制作病毒落地反弹动画(2)

AE用表达式制作病毒落地反弹动画(3)

设定一个条件,当物体的y坐标大于某个值value的时候,就将正线函数曲线走到大于value值的部分的曲线镜像翻转。

AE用表达式制作病毒落地反弹动画(4)

将红线以上部分波峰以红线为轴镜像翻转到红线以下,就有了粉色曲线,粉色曲线就是物体落地反弹的运动曲线,红线就是地面的y轴坐标,也就是value值。这个值就是病毒位置属性最末关键帧的值。

表达式:

AE用表达式制作病毒落地反弹动画(5)

amp=0.1;

freq=6;

v=1;

decay=2.5/v;

a=numKeys;

n=nearestKey(time).index;

et=key(n).time;

t=time-et;

v=velocityAtTime(et-0.01);

p=value+v*amp*Math.sin(t*(t+1)*freq)/Math.exp(t*decay);

q=value+-v*amp*Math.sin(t*(t+1)*freq)/Math.exp(t*decay);

if (t>0 & n>=a){

p;

if (p>=value) {q;}

else{p;}

}

else{value;}

表达式关键点在“if (p>=value) {q;}”,p和q的差别在于q在正弦函数部分“v*amp*Math.sin(t*(t+1)*freq)”前面乘了一个“-1”,就使得value值以上部分被翻转到value轴线以下。

相关教程
相关评论
X
0条回复

全部回复

回复...
X
X
写评论...
0
更多
X