您的当前位置:首页正文

(完整word版)AE常用表达式

2024-03-28 来源:易榕旅网
(完整word版)AE常用表达式

表达式书写

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);

(完整word版)AE常用表达式

w = freq*Math。PI*2;

value + amp*(Math.sin(t*w)/Math。exp(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){

(完整word版)AE常用表达式

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;

(完整word版)AE常用表达式

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)

(完整word版)AE常用表达式

loopOut=往向循环

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

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

loopOutDuration(type = \"cycle\

numKeyframes = 0 0表示为关键帖, 全部循环,1表示以最后一帧向前数1一个关键帧开始循环。以此类推。

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

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

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

continue=以第三帧开始,沿着第三帧的方向做一个直线运动,不受到外力影响(用该方式,表达式必须删除 , duration = 0),否则会报错)也就是说保持最后两帧的运动方式不变.

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

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

4.抖动表达式

函数:

(完整word版)AE常用表达式

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表达式的运用

(完整word版)AE常用表达式

通过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像素的复制,最终形成类型于三维物体的效果。

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

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

thisComp.layer(index—1).transform.position+[100,0]

(完整word版)AE常用表达式

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

7、if语句

If(判断条件)

执行1;

else

执行2

例如:

if(time〈2)

10;

else

20;

再例如:

if(time<2)

value;

(完整word版)AE常用表达式

else

wiggle(10,20);

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

再例如

start=1;

end=4;

if((time〉start)&&(time〈end)){

wiggle(10,20);

}else{

value;

}

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

8。time

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

(完整word版)AE常用表达式

time*50 1秒50个数

Time用于旋转

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

time*50*-1 逆时针旋转

9。 Math.sin

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

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

Math.sin(time*5)*40

10. Math.floor

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

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

Math。floor(time*2)*10

11。 Valueattime

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

(完整word版)AE常用表达式

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

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

valueAtTime(time-0.2)

例子:

thisComp。layer(”形状图层 4”)。transform。position.valueAtTime(time—0.2)

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

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

thisComp.layer(index—1).transform。position。valueAtTime(time—0.2)+[100,0]

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

12。 sourceRectAtTime

(1)新建一合成

(2)建立文字层

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

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

(完整word版)AE常用表达式

(5)调整大小比例

(6)复制以下表达式

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

x=thisComp.layer(\"aelwovao\")。sourceRectAtTime().width;

[x,value[1]]

13。value 数值

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

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

也可以写为

x=thisComp。layer(\"形状图层 1”).transform.position[0]+200;

[x,value[1]]

这样写是为了更改X或者Y的位置,意思是X位置=这个合成的另外一个合成的X值再右移200像素。

扩展可以写为:

x=thisComp。layer(index+1).transform.position[0]+200;

(完整word版)AE常用表达式

[x,value[1]]

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

14.linear&ease

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

线性运动 t为指定图层或者合成 tmin最小值 tmax最大值 value1 当最小值时返回的作用数值,value2当最大值时返回的作用数值。

t=thisComp.layer(”圆形\").transform.position[1];

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

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

15.clamp 锁定

举例子:

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

X 输入表达式 180

Y 输入 clamp(transform。yPosition,200,—200)

(完整word版)AE常用表达式

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

16. toWorld(anchorPoint)或toComporPoint)

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

当图层1已绑定到父级空对像时,再复制图层1得到图层2,将图层2的位置P写入表达式,绑定到图层1的位置P时,图层2的P位置就乱了,为解决此问题,就要加入toWorld(anchorPoint)

17.Math.abs

18。 Math.round

t=time*10;

Math。round(t);

19。random 随机

例子:

将图层的XY单独尺寸显示

在X或者Y加入表达式

random(600,800)

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

20。距离产生缩放效果

a=thisComp.layer(”空 10”)。transform。position[1];

b=transform。position[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(t, tMin, tMax,linear是个映射函数,完整的公式表达是

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

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

(完整word版)AE常用表达式

value1, value2)

(完整word版)AE常用表达式

当 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]]

22。AE图层的空间转换

toComp(point,t=time)

(完整word版)AE常用表达式

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

例如:

toComp(thisComp.layer(”空 13\")。transform.position)

这是将一个插件的位置信息(X,Y)绑定到一个空物体上,且空物体打开3维开关,那么这个插件的X,Y就变成了具有3维属性的位置信息,

thisComp.layer(\"空 13\").toComp([0,0,0])

因篇幅问题不能全部显示,请点此查看更多更全内容