学习AE的小伙伴们肯定对表达式并不陌生,表达式的使用可以让我们节省时间,那么你真谛常用到的表达式有哪些呢?
常用的表达式
1. time
表达式:time*n,也就是时间(秒数)*n,如果使用于旋转,n表示角度。
如果在旋转属性上设置表达式为time*60,AE图层在1秒的时间旋转60度,2秒时旋转到120度,以此类推(数值为正数时顺时针旋转,为负数时逆时针旋转)。
2. 抖动/摆动
表达式:wiggle(freq, amp, octaves = 1, amp_mult = 0.5, t = time)
freq=频率(每秒抖动的频率);amp=振幅(每次抖动的幅度);octaves=振幅幅度(每次振幅都会有一些震幅幅度);amp_mult=频率倍频(数值越接近0,细节越少;越接近1,细节越多);t=持续时间(抖动时间为合成时间)。
如果在一维属性中,为位置属性添加wiggle(10,20),则表示图层每秒抖动10次,抖动幅度为20;如果在二维属性中,为缩放添加n=wiggle(1,10);[n[0],n[0]],则表示图层的缩放XY在每秒抖动10次,抖动幅度为20;如果在二维属性中,想单独进行抖动,需要将属性设置为单独尺寸后添加wiggle(10,20),表示图层的缩放X轴在每秒抖动10次,抖动幅度为20。
3. index(索引)
表达式:index*,为每间隔多少数值来产生多少变化。
如果对图层1的旋转属性添加表达式index*5 ,则第一个图层会旋转5度,之后按Ctrl+D去复制多个图层时,第2个图层将旋转10度,以此类推;如果想要图层1不产生旋转保持正常形态,复制后的图形以5度递增,表达式可写为(index-1)*5。
4. value
表达式:value+ 在当前时间输出属性值。
如果对位置属性添加表达式为value+100,则位置会在关键帧数值的基础上对X轴向右偏移100(正数向右侧,负数像左侧);如果想控制Y轴的位置,则可对位置属性进行单独尺寸的分割,从而可单独控制Y轴(正数向下,负数向上)。
5. random(随机)
表达式:random(x,y) 在数值x到y之间随机进行抽取,最小值为x,最大值为y。
如果对数字图层添加表达式random(20),则数据会随机改变,最大值不会超过20。
如果对数字图层添加表达式random(10,100),则数据会在10到100之间随机改变。
如果对数字图层添加表达式seedRandom(5, timeless = false),random(50),则数据会在50以内随机改变,若希望数字随机变化为整数则应添加表达式为Math.round(random(2,50)),表示在2和50之间随机改变无小数。
6. loopOut(循环)
表达式:loopOut()
loopOut(type=”类型”,numkeyframes=0)是对一组动作进行循环loopOut(type=”pingpong”,numkeyframes=0)是类似像乒乓球一样的来回循环;loopOut(type=”cycle”,numkeyframes=0)是周而复始的循环。
loopOut(type=”continue”)延续属性变化的最后速度,loopOut(type=”offset”,numkeyframes=0)是重复指定的时间段进行循环;numkeyframes=0是循环的次数,0为无限循环,1是最后两个关键帧无限循环,2是最后三个关键帧无限循环,以此类推。
7. timeRemap(抽帧)
表达式:timeRemap*n,n以帧为单位。将图层设置为timeRemap*10,则每隔10帧就抽掉1帧画面。
8. linear
linear(t, tMin, tMax, value1, value2)表示linear(time, 开始变化的时间, 结束变化的时间, 开始变化时的数值, 结束变化的数值);linear(t, value1, value2)表示当time在0到1之间时,从value1变化到value2。
ease(t, tMin, tMax, value1, value2)的含义与linear一样,区别是tMin和tMax之间缓入缓出。
easeIn(t, tMin, tMax, value1, value2)与linear的含义一样,区别是在tMin处缓入。
easeOut(t, tMin, tMax, value1, value2)与linear的含义一样,区别是在tMax点处缓出。
下图均以(time,0,3,131,1000)为例,若为数字的源文本属性添加此表达式可以制作出倒计时的效果n=linear(time, 0, 3, 3, 0)表示从0-3秒数字从3到0,希望数字为整体需添加Math.floor()。
9. Other Math(角度弧度)
degreesToRadians(degrees) 角度转为弧度(degrees度的变量或表达式),radiansToDegrees(radians)弧度转为角度(radians弧度的变量或表达式)。
可以使用一些数学中会出现那个用到的一些计算方式:sin,cos,tan,sec,csc,cot等。
10. layer
表达式:layer(index),index是数值,按照编号检索图层;layer(name),name 是一个字符串,按照名称检索图层;layer(otherLayer, relIndex),otherLayer表示图层对象,relIndex表示数值,检索属于图层对象的数值图层。
11. marker
marker.key(index),index是数值;marker.key(name),name是一个字符串。
thisComp.marker.key(1).time表示返回第一个合成标记的时间;thisComp.marker.key(“我叫注释名称”).time表示返回具有名称”我叫注释名称”的合成标记的时间。
12. comp(合成属性和方法)
width表示返回合成宽度;height表示返回合成高度,[thisComp.width/2, thisComp.height/2]表示宽度和高度为合成的一半也就是居中的位置。
13. param
param(name)中name表示字符串;param(index)表示数值。effect(“高斯模糊”).param(“模糊度”)效果控制点始终位于图层空间中。
14. 弹性
可以直接复制粘贴表达式,amp表示振幅,freq表示频率,decay表示衰减。
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 – thisComp.frameDuration/10);
amp = .03;
freq = 2.5;
decay = 4.0;
value + v*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);
}else{value;}
上述内容复制粘贴使用即可。
15. 反弹
k表示反弹最终结果,a表示反弹阻力,b表示反弹变化时间。如果k=500; a=8; b=30; x=k*(1-Math.exp(-a*time)*Math.cos(b*time));[x,x](根据不同情况调节kab的数值即可)。
16. 数字递增
StartNumber表示开始时的数值,EndNumber表示结束时的数值,StartTime表示开始的时间,EndTime表示结束的时间,和前面的linear表达式相对应。
示例:StartNumber=1;
EndNumber=20;
StartTime=0;
EndTime=3;
t=linear(time,StartTime,EndTime,StartNumber,EndNumber);Math.floor(t)
17. 挤压与伸展
spd:挤压拉伸速度,maxDev:挤压拉伸大小,decay表示衰减。
示例:spd =20;maxDev =10;
decay = 1;
t = time – inPoint;
offset = maxDev*Math.sin(t*spd)/Math.exp(t*decay);
scaleX = scale[0] + offset;scaleY = scale[1] – offset;
[scaleX,scaleY]
AE常用的表达式还有很多,大家可以使用这些表达式在AE中练习一下吧!