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


发布评论