AE常用的五个表达式
五个最常用的AE表达式
前言
在制作视频的时候,往往要添加各种效果,每种效果都要单独K帧。效果一多,K帧就非常麻烦且痛苦。经常1秒钟的效果要做半小时。使用表达式的话,就可以极大地提升效率节省时间。并不需要自己一个一个参数去手动K帧了。
表达式能帮助我们快速地制作一些效果,避免重复造轮子,可以高效产出需要的效果
注意:请使用英文版ae添加 以免出现表达式错误
1.弹性表达式 Bounce
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 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 && t < 1){
v = velocityAtTime(key(n).time - thisComp.frameDuration/10);
amp = .06;
freq = 3;
decay = 5.0;
value v*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);
}else{
value;
}
使用方法:
在ae中创建有两个关键帧的动画 然后按住alt单击码表激活表达式输入栏,输入以上代码即可 (开启运动模糊效果更好喔)
2.抖动表达式 wiggle
使用方法:
wiggle就不用多说了吧,很常用,代码为 wiggle(x,y)
第一个参数X表示抖动频率 即1秒抖动多少次
第二个参数表示抖动幅度 具体需要根据你视频片段确定参数
PS:记得把视频稍微放大一些以减少因为抖动导致的黑边现象
3. 挤压与伸展 效果类似于果冻
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13 maxDev = 13; // max deviation in pixels
spd = 30; //speed of oscillation
decay = 1.0; //how fast it slows down
t = time - inPoint;
x = scale[0] maxDev*Math.sin(spd*t)/Math.exp(decay*t);
y = scale[0]*scale[1]/x;
[x,y]
使用方法:
直接施加到你的目标图层上,动画参数可以直接修改上述表达式内的数值。
请看// 后面的内容,那是对这一行代码的解释,英文不好的童鞋请借助词典。
这个表达式可以应用在给视频里的点击事件做出回应,突出某个元素效果。
4. 运动拖尾
代码:
1
2
3
4
5 delay = 5; //number of frames to delay
d = delay*thisComp.frameDuration*(index - 1);
thisComp.layer(1).position.valueAtTime(time - d)
使用方法:
先制作一些运动的关键帧,然后alt点击码表激活表达式输入栏,把上述代码复制进去,接着复制几层你要做运动的图层,如果动画不如意可以直接更改参数 。
opacityFactor = .75;
Math.pow(opacityFactor,index - 1)*100
这两行代码是针对不透明度做拖尾的。直接复制到不透明度的表达式栏里即可
5. 计时&倒计时
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 > //Define time values
>
> var hour = Math.floor((time/60)/60);
>
> var min = Math.floor(time/60);
>
> var sec = Math.floor(time);
>
> var mili = Math.floor(time*60);
>
> // Cleaning up the values
>
> if (mili > 59){ mili = mili - sec*60; }
>
> if (mili < 10){ mili = '0' mili; } if (sec > 59){ sec = sec - min*60; }
>
> if (sec < 10){ sec = '0' sec; } if (min >= 59){ min = min - hour*60; }
>
> if (min < 10){ min = '0' min; }
>
> // no hour cleanup
>
> if (hour < 10){ hour = '0' hour; }
>
> //Output
>
> hour ' : ' min ' : ' sec ' : ' mili;
使用方法:
在ae里创建一个文字图层,然后在源文本(source text)里键入即可。
然后他就会以合成的长度开始计时,如果想增加计时的区间只需改变合成长度即可。
如果你想要制作倒计时效果,需要先把该文字图层预合成下,然后选中图层 右键—>时间—>时间反转 即可。
当然你可以先把文字的样式制作的好看一些,这不影响内容表达式的实现。如果你只需要显示到分钟,可以在最后一行代码 output 把hour删掉即可。