AE弹性表达式

北尼兰杜/设计爱好者/4年前/294浏览
AE弹性表达式

AE弹性表达式




末帧的弹性表达式:适用于多种形式,移动、形状、渐变、旋转

amp=0.1;


freq=2;


decay=2;


n=numKeys;


if(n==0){value;}


else{


t=time-key(n).time;


if(t>0){v=velocityAtTime(key(n).time-thisComp.frameDuration/10);


value+v*amp*Math.sin(freq*2*Math.PI*t)/Math.exp(decay*t);}


else{value};


}


作者:拉蒙娜的叔叔

https://www.bilibili.com/read/cv3108669

出处: bilibili


表达式解析:

首先,


定义变量并赋值


amp =0.1;(振幅)


freq = 2.0;(频率)


decay = 2.0;(衰减)


n=numKeys;(关键帧的数量)


有两种情况,一种是n等于0,没有关键帧,直接返回物体本身位置的值,


if(n==0){value;}      


另一种是当n不等于0时,也就是说key了关键帧时的情况。首先我们要明确以下的这些判定都是在n不等于0的条件下成立的,所以else这里用了一个嵌套。


else{


无论有几个关键帧,我们都希望在最后一个关键帧处开始做弹性动画,所以首先我们要判定指针与末帧的位置关系。


{t=time-key(n).time;}


当t>0,指针在末帧的右侧,开始做弹性动画。


if(t>0)


我们要让物体到达末帧后速度越来越小,直到0的时候,再返回回去,就像一个正弦运动。


首先我们要找到物体在末帧的速度值,因为末帧物体停止,所以此处我们应该找到指针在末帧左侧并无限逼近末帧时的物体的速度值。


{v=velocityAtTime(key(n).time-thisComp.frameDuration/2);


因为正弦运动是等幅的,但我们要让它随着时间的推移,幅度越来越小,所以我们要在正弦函数上除以一个随着时间推移成指数倍增大的一个值。


value+v*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);}


当t<=0时,即指针在末帧左侧,此时我们直接返回物体本身位置值。


else{value;}


}

作者:拉蒙娜的叔叔

https://www.bilibili.com/read/cv3108669

出处: bilibili


0
阅读原文
|
Report
|
3
Share
相关推荐
评论
in to comment
Add emoji
喜欢TA的作品吗?喜欢就快来夸夸TA吧!
推荐素材
You may like
Penny妹妹抽象表情包
Homepage recommendation
IP形象——十二牛马
Homepage recommendation
相关收藏夹
ip形象设计+表情包
ip形象设计+表情包
ip形象设计+表情包
ip形象设计+表情包
精选收藏夹
作品收藏夹
小家电
小家电
小家电
小家电
精选收藏夹
作品收藏夹
IP形象及IP内容
IP形象及IP内容
IP形象及IP内容
IP形象及IP内容
精选收藏夹
作品收藏夹
IP形象——动物类
IP形象——动物类
IP形象——动物类
IP形象——动物类
精选收藏夹
作品收藏夹
一些小动物
一些小动物
一些小动物
一些小动物
精选收藏夹
作品收藏夹
平面线条
平面线条
平面线条
平面线条
精选收藏夹
作品收藏夹
大家都在看
Log in