表达式书写
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])
因篇幅问题不能全部显示,请点此查看更多更全内容