AE实用表达式整理–果味酱原创

我工作中总结的使用最多的AE表达式技巧,有些比较难的,要多多研究,仔细阅读

1.wiggle 抖动
wiggle(freq频率, amp振幅, octaves = 1细节, amp_mult = .5乘赋值, t = time)
用法wiggle(5,200)

2.random 随机

random(数值x,数值y)是在数值x到数值y之间进行随机值的抽取,随机抽取的最小值是x,最大值是y
用法:random(1,10)

gaussRandom(),有10%会跳出范围

seedrandom(随机的种子数,timeless) 1是ture 0是false
用法:
seedRandom(9, timeless = true);
random(20,100)
获得第9个随机数值并且不随时间变化。
每次复制后都会产生20到100的不同的随机数值。

noise -1到1的值
Example: noise(time3)10
区别noise关键帧之间有关联,更柔缓

3.loopOut 循环
loopOut(type=”循环类型”,numkeyframes=0从最后一个关键帧往前走开始循环,0代表无限,其他数字是重复的次数)
循环类型四种:
pingpong 如乒乓球一样来回运动
cycle 周而复始的来回运动
offset 叠加之前关键帧数值循环
continue延续属性变化的最后速度
用法:loopOut(type = “cycle”, numKeyframes = 0)

4.time 时间
valueAtTime(t)
延迟效果用法: 连接属性后边加上“.valueAtTime(time-(index-1)*0.1)”

5.timeRemap 抽帧
timeRemap数值,这里数值以帧为单位 用法:在素材上鼠标右键时间重映射上输入timeRemap10

6.index 图层序号

常见的就是把index丢到位置上做立体字,如

[transform.position[0]

,transform.position[1],index],复制很多层就是立体字了
丢到缩放上,如

[transform.scale[0]

+index,transform.scale[1]+index],复制很多层文字就慢慢变大了
其他参数可以自己尝试

7
length(vec)矢量的长度
length(point1, point2),两个点的长度
lookAt(fromPoint, atPoint)从一个向量看向另一个向量

应用:
a=thisComp.layer(“cycle”).transform.position[0]

b=thisComp.layer(“cycle 2”).transform.position[0]

length(a,b)
a和b分别使用拉索工具链接到两个圆形位置的属性X值,这样文本层就可以即时获取到两个圆形的间距。

8.线性表达式
linear(t, value1, value2) {t 是一个数, value1 和 value2 是一个数或数组}当t的范围从0到1时,返回一个从value1到value2的线性插值。当 t = 1时返回 value2

linear(t, tMin, tMax, value1, value2) {t, tMin和 tMax are 数, value1和value2 是数或数组} 当 t = tMax时,返回value2 ;当tMin

clamp限定属性的数值变动范围。
clamp(value,value1,value2) 数值在value1,value2之间
v=clamp(t,0,1)

9函数表达式

Math.round会将数值四舍五入取整数 如Math.round(11.5461)=12
若想自定义精确度 可以用 Math.round(xy)/y (x和y都为一个任意数值) Math.floor 就是向下取整 Math.ceil(value)就是向上取整 Math.pow(底数,幂指数)10^6=Math.pow(10,6) Math.sin 解析 n=Math.sin(time1+2)*3+4;
1频率2左右偏移3振幅4上下偏移
Math.exp(value) E为底数多少次方
Math.log
Math.abs取绝对值
Math.sqrt(value)开方
Math.PI 3.1415926
Math.min(value1, value2)

10
nearestKey(5)离最近的关键帧是什么值就返回什么值

11
sampleImage(point, radius = [.5, .5], postEffect = true, t = time)

12倒计时表达式:
在文字上的源文本上打下面的表达式
a=linear(time, 4, 6, 1000, 0);
Math.floor(a)

公式
a=linear(time, 开始变化的时间, 结束变化的时间, 开始变化时的数字, 结束变化的数字);
//将a复制linear变化的结果Math.floor(a) // 向下取整(a)

13.数字递增表达式
StartNumber=1;
EndNumber=1000;
StartTime=1;
EndTime=3;
t=linear(time,StartTime,EndTime,StartNumber,EndNumber);
Math.floor(t)
用法:输入到文字图层的源文本

14AE万能弹性表达式
amp = .1;
freq = 2.0;
decay = 2.0;
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);
value + vampMath.sin(freqt2Math.PI)/Math.exp(decayt);
}
else{value}

解析

15sourceRectAtTime通过获取图层内容块宽高的即时变化,将数值赋予其他属性
案例:如下图,我们想要绿色文字条与文字宽度始终保持一致,且当我们再增加文字的时候,文字条会跟随变宽
x=thisComp.layer(“cinemawk”).sourceRectAtTime().width;

[x,value[1]

]

16IF语句

If(条件){
结果1 ;
}

If(条件){
结果1
}else{
结果2
}

If(条件){
结果1 ;
}else if(条件2){
结果2;
}else{
结果3
}
注意:

一个if后面可以跟着无数个else if,但是只能跟着一个else,且必须在最后面。

{} 花括号后面不需要加分号。

if 和else if后面的括号里是判断的条件,常见的判断有以下:

1、a == 1 (判断a的值是不是等于1,切记是两个等于号)
2、a >= b (判断a的值是不是大于等于b)
3、 !(3 > 1) (!表示取反,因为3>1是true,所以取反之后这个条件是false)
4、flag (判断flag是布尔值true还是false)
5、0 (当判断条件是0,则表示false,若是0以外的其他数字,则表示true)

例子
if(effect(“复选框控制”)(“复选框”)==1)wiggle(5,50) else 0;
整个表达式的含义是:如果复选框==1(被选择),则wiggle表达式起作用,否则0(无效果)

//单行注释
/多行 注释/

\r是回车

名字用双引号

推荐教程 《AE表达式快速入门视频教程》中文字幕翻译教程带工程

Harry Frank的表达式教程中文字幕带工程

AE表达式教程After Effects Expression Essentials

转载请注明果味酱CG小屋

anyShare分享到:

ae自学视频教程全集

本站有1影视后期相关接单&发单服务,2向我请教问题服务,3机翻教程服务,4代搜资源,团购资源服务,5广告位招租服务等服务。 资源报错或者对网站有什么建议欢迎来找我(奖励10元)。当然强烈建议加我的VIP,如果您还有什么其他需求或者想合作请+我QQ747264491.

You may also like...

1 Response

  1. AE果味酱说道:

    非常实用的文章

发表评论