五个最常用的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删掉即可。


本文转载自https://m.wang1314.com/doc/webapp/topic/20905515.html