2024年4月16日发(作者:)

AE常用表达式与应用

表达式的运用------------

通过expression control中的 slider控制 一个定值变化 假如控制变化的随机位移然

后让其停止 slider=effects("SliderControl")("Slider") 然后对slider做函数运算 例如随

机函数

wiggle(8,slider)这样就可以控制表达式。也可以控制摄像机镜头的调整。

的运用--------------- 假如在做随机函数的控制时 wiggle(5,40)[0]

中括号里面的数值0表示---XYZ在AE中定义的是 X轴用0表示 Y用1表示 Z用2

表示。 5是每秒抖动5次,40是每次抖动40个像素。

通常和摄像机的position(位移) 和 point of interest(聚焦点)一起使用,对摄像机的

镜头进行调整。

抖动表达式还可以和mask的移动,人偶工具的节点进行抖动的设置。

表达式的运用: 平滑表达式,这是可以使素材进行平滑效果的表达式

smooth(),括号里面的默认值是0.2和5.就是smooth(0.2,5) 0.2表示--每多少秒进行

平滑。5表示--采样率,采样率越高越平滑。 平滑表达式在跟踪素材时会常常用到。

表达式的运用: 随机表达式random()

random(1,10)是在1到10之间进行随机值的抽取,随机抽取的最小值是1,最大

值是10 [[0],random(5,15)]

这句表达式的意思是在layer的gradientOverlay的第一个数值不改变,effect[0]就

是代表gradientOverlay的x值,

effect[1]是第二个值,即是y值。在这里 x值不变,y值是random(5,15)

t表达式的运用: 循环表达式

基本格式:loopOut(type="类型",numkeyframes=0)

loopOut(type="pingpong",numkeyframes=0)这是个兵乓的类型的循环,就像那

样兵乓球的作用来使用。

loopOut(type="cycle",numkeyframes=0)这是个圆形的类型的循环,就是对一组动

作进行循环。

loopOut(type="continue")这是计算机继续计算未完成的运动。

numkeyframes=0是循环的次数,0为无限循环,1是只循环一次,2是循环2次,

如此类推。

6.反弹表达式

k=100; // 反弹最终结果

a=5; // 反弹阻力

b=50; //反弹变化时间

x=k*((-a*time)*(b*time));

[x,x]

9.弹性表达式

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 - uration/10);

amp = .03;

freq = 2.5;

decay = 4.0;

value + v*amp*(freq*t*2*)/(decay*t);

}else{value;}

这里要更改的就三个后面的数值

amp=振幅

freq=频率

decay=衰减或者叫阻力

10.数字递增表达式

StartNumber=1;

EndNumber=1000;

StartTime=1;

EndTime=3;

t=linear(time,StartTime,EndTime,StartNumber,EndNumber);

(t)

用法:输入到文字图层的源文本

11.线性表达式

linear(t, value1, value2) {t 是一个数, value1 和 value2 是一个数或数组}当t的范

围从0到1时,返回一个从value1到value2的线性插值。当 t <= 0时返回value1,当

t >= 1时返回 value2

linear(t, tMin, tMax, value1, value2) {t, tMin和 tMax are 数, value1和value2 是

数或数组} 当 t <= tmin时返回value1;当t >= tMax时,返回value2 ;当tMin < t <

tMax 时, 返回 value1和value2 的线性联合

时间 表达式

map 抽帧

timeRemap*数值,这里数值以帧为单位

用法:在素材上鼠标右键时间重映射上输入timeRemap*10

14.倒计时表达式:

a=linear(time, 4, 6, 1000, 0);

(a)

公式

a=linear(time, 开始变化的时间, 结束变化的时间, 开始变化时的数字, 结束变化的

数字);

//将a复制linear变化的结果(a) // 向下取整(a)

后期持续更新

整理群号:563104062

更多学习资源分享请加群询问

表达式书写

P 位置 例子:[100,100] 如果打开三维开关则写为 [100,100,300]

如果想得到3维效果,[100,100,index*5],然后直接复制该图层很多。这里面的数值都

可以通过滑块儿来控制。

1.运动回弹 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**2;

value + amp*((t*w)/(decay*t)/w);

}else

value

2.物体下缀重力回弹 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

3.循环表达式

loopOut(type = "cycle", numKeyframes = 0)

loopOut=往向循环

cycle表示为类型 有以下四种 cycle 、pingpong、continue、offset

numKeyframes = 0 表示从第几帧开始循环 0是全部关键帧,1为倒数第二帧,

以此类推。

loopOutDuration(type = "cycle", numKeyframes = 0)

numKeyframes = 0 0表示为关键帖, 全部循环,1表示以最后一帧向前数1一

个关键帧开始循环。以此类推。

说明:循环的表达式其实就是预设里的,cycle(类型)可以用以下四种方式。

cycle=当第三帧播放完后立马跳到第一帧然后循环播放

pingpong =第三帧播完后进行一个逆向运动(沿着原路径),然后循环

continue=以第三帧开始,沿着第三帧的方向做一个直线运动,不受到外力影响(用

该方式,表达式必须删除 , duration = 0),否则会报错)也就是说保持最后两

帧的运动方式不变。

offset=按照前三帧的曲线轨迹来继续这个曲线运动,让以后的循环第一帧的数值与上

一循环的第三帧相同,呈递增形循环。

说明:loopinDuration 是以第一个关键帧为起点,向前进行循环。

4.抖动表达式

函数:

wiggle(freq, amp, octaves = 1, amp_mult = .5, t = time)

参数:

freq 频率=具体的数字

amp 振幅=具体的数字

octaves 原有振幅上再增加抖动(英语翻译为八度音)=具体数字

amp_mult 频率倍频

amp_mult = .5 .5表示0.5

t 持续时间

说明: 频率和振幅是必须具备的参数其他选填写

例如wiggle(50,100)

对图层进行的S(缩放属性)填写wiggle表达式时,想让X,Y同时进行放大和缩小,

用以下语句,其中两个0值定义为X和Y的数值相等。

s=wiggle(20,50);

[s[0],s[0]]

5. slider表达式的运用

通过expression control中的 slider控制 一个定值变化 假如控制变化的随机位移然

后让其停止

slider=effects("SliderControl")("Slider")

然后对slider做函数运算 例如随机函数

wiggle(8,slider)这样就可以控制表达式。

也可以控制摄像机镜头的调整。

6. index (图层的编号)的应用

Index在AE里表示插件或者图层上的具体位置

透明度参数opacity, 填写index*20 就是使其透明度的值为20%

如果把图层打成三维层,对position参数,填写

value+[0,0,index*2]

这是你在不断复制相同的图层,图层里的图片会不断在z轴的方向以2像素的复制,

最终形成类型于三维物体的效果。

指数表达式虽然比较少用,但是它的作用还是很强大的,可以使图片变成三维的效果。

扩展应用,先画一个形状图层,再复制一层,在复制的图层上,位置信息加入表达式

(index-1).on+[100,0]

意思是这个图层复制的时候,往右移动100个像素。

7、if语句

If(判断条件)

执行1;

else

执行2

例如:

if(time<2)

10;

else

20;

再例如:

if(time<2)

value;

else

wiggle(10,20);

时间在2秒前执行 value(指定的一个数值),2秒之后执行wiggle。

再例如

start=1;

end=4;

if((time>start)&&(time

wiggle(10,20);

}else{

value;

}

表示1秒前以指定的数值运动,1-4秒以指定的wiggle运动,4秒这后再以固定的

数值运动。

Time用于文字 文字――源文本

time*50 1秒50个数

Time用于旋转

time*50 顺时间针旋转 50为旋转的角度数

time*50*-1 逆时针旋转

9.

用于位置和空间 用于位置时一定要将X、Y单独尺寸然后再写下边的表达式。

(time*n)*m——n频率,m振幅,时间单位为秒。n/s、m/s

(time*5)*40

10.

也是应用于旋转(Position),旋转方式和time有所不同。

(time*n)*m——n表示每秒旋转次数,m旋转幅度。

(time*2)*10

11. Valueattime

Valueattime应用于延迟运动物体的开始时间。(前提是父级为运动物体)Valueattime

(time-0.05)

valueAtTime(time-n)——n减缓开始时间的时间,单位为秒

可以用于位置,缩放,透明度等等。

valueAtTime(time-0.2)

例子:

("形状图层 4").tTime(time-0.2)

这个表达式不是单独使用,前面要加上定语。

扩展应用,延迟动画,前提是父级图层已做好关键帧动画。

(index-1).tTime(time-0.2)+[100,0]

意思是这个合成的图层每复制一层 延迟0.2秒,X轴右移100像素

12. sourceRectAtTime

(1)新建一合成

(2)建立文字层

(3)双击形状图层,建立一个与合成大小相同的形状图层

(4)打开形状图层――矩形路径――大小

(5)调整大小比例

(6)复制以下表达式

这个形状图层就随着打字还是延伸,类似word的下划线效果。

x=("aelwovao").sourceRectAtTime().width;

[x,value[1]]

数值

位置 value[0],[1],[2] 代表 x y z

写法[value[0],value[1]]

也可以写为

x=("形状图层 1").on[0]+200;

[x,value[1]]

这样写是为了更改X或者Y的位置,意思是X位置=这个合成的另外一个合成的X值

再右移200像素。

扩展可以写为:

x=(index+1).on[0]+200;

[x,value[1]]

意思是加入index+1后,所有复制的图层将依次往右移动300像素。

&ease

linear(t, tMin, tMax, value1, value2)

线性运动 t为指定图层或者合成 tmin最小值 tmax最大值 value1 当最小值时

返回的作用数值,value2当最大值时返回的作用数值。

t=("圆形").on[1];

linear(t, -299, 299, 90, -90)

意思为这个图层Y轴与另外的图层Y值相同,当最小值是-299时,该图层旋转90度,

当最大值是299时,旋转-90度。

锁定

举例子:

将一图层的X、Y单独尺寸

X 输入表达式 180

Y 输入 clamp(ion,200,-200)

解释:ion=将此图层绑定在Y轴数值,并且数值固定在200—-200。

16. toWorld(anchorPoint)或toComporPoint)

从层坐标转换到世界坐标或合成坐标

当图层1已绑定到父级空对像时,再复制图层1得到图层2,将图层2的位置P写入

表达式,绑定到图层1的位置P时,图层2的P位置就乱了,为解决此问题,就要加入

toWorld(anchorPoint)

18.

t=time*10;

(t);

随机

例子:

将图层的XY单独尺寸显示

在X或者Y加入表达式

random(600,800)

该图层在X轴向产生随机运动

20.距离产生缩放效果

a=("空 10").on[1];

b=on[1];

t=length(a,b);

s=linear(t,0,100,120,100);

[s,s];

意思是

a=空物体的Y值

b=自身的Y值

t=a和b的距离

s=linear(t,0,100,120,100)为AE的内置函数

linear是个映射函数,完整的公式表达是

linear(t, tMin, tMax, value1, value2)

linear(t, tMin, tMax, value1, value2) 返回类型:数值或数组。

参数类型:t、tMin 和 tMax 是数值,value1 和 value2 是数值或数组。

当 t <= tMin 时返回 value1。当 t >= tMax 时返回 value2。当 tMin < t < tMax

时,返回 value1 和 value2 之间的线性插值。

21. value

Value是指自身

例如控制一个图层的XY轴,锁定Y轴,可以移动或者调整X轴则写为

value[0],value[100];

用于缩放时,只对图层的Y轴进行缩放,可以写为

[value[0],wiggle(20,30)[1]]

图层的空间转换

toComp(point,t=time)

可以将图层的位置信息转换为合成的位置信息

例如:

toComp(("空 13").on)

这是将一个插件的位置信息(X,Y)绑定到一个空物体上,且空物体打开3维开关,

那么这个插件的X,Y就变成了具有3维属性的位置信息,

("空 13").toComp([0,0,0])