AE常用的实用动画表达式
AE表达式一直是我们学习AE过程中的一道坎,一道深坎,因为涉及代码,很多人都望而却步。更无法体会AE表达式的魅力,于是这一次,我花了大量时间整理出一套非常实用的AE表达式合集,希望在日常工作中能为大家提供一丝便利。
1.AE反弹效果表达式
使用此表达式,您可以从地板创建对象的反弹效果。 允许您为几乎所有参数设置动画。
e = .3; // 弹跳力
g = 1; // 引力
nMax = 10; // 最大反弹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*1000);
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*1000)*delta/2);
}else{
value
}
}else
value2.AE随机编码的形状表达式
该表达式允许您循环播放具有随机时间偏移的素材或合成。 用于时间重映射参数
loopLength = 10; // 序列的持续时间seedRandom(index,true);
preRun = random(loopLength);
(time + preRun)%loopLength3.AE抖动弹性表达式
freq = 1; // 频率
amp = 110; // 振幅
loopTime = 3; // 循环时间以秒为单位
t = time % loopTime;
wiggle1 = wiggle(freq, amp, 1, 0.5, t);
wiggle2 = wiggle(freq, amp, 1, 0.5, t – loopTime);
linear(t, 0, loopTime, wiggle1, wiggle2)4.AE随机重复表达式
表达式随机显示素材框架。 适用于时间重映射
fr = 5; // 帧速率,如果设置为0(零),则将显示一个冻结帧;
numFrames = 15; // К要使用的序列的帧数
seedRandom(index,true);
seg = Math.floor(time*fr);
f = Math.floor(random(numFrames));
for (i = 0; i < seg; i++)
f = (f + Math.floor(random(1,numFrames)))%numFrames;
framesToTime(f);5.AE动力学排版表达式
要使用表达式,您需要在文本图层中创建一个带有任何变换(Animate:>)的动画师,并为其添加(Add:>)表达式选择器。 必须将表达式插入到选择器的Amount参数中。
delay = 0.03; // 延迟
freq = 3; // 频率
amp = 60; // 振幅
decay = 10; // 值越小,波动越大
Speed = 0.8; // 值越小,动画越慢
myDelay = delay*textIndex;
t = (time – inPoint)*Speed – myDelay;
if (t >= 0){
freq;
amp;
decay;
s = amp*Math.cos(freq*t*2*Math.PI)/Math.exp(decay*t);
[s,s] }else{
value
}6.AE计时&倒计时表达式
在ae里创建一个文字图层,然后在源文本(source text)里键入即可。 然后他就会以合成的长度开始计时,如果想增加计时的区间只需改变合成长度即可。 如果你想要制作倒计时效果,需要先把该文字图层预合成下,然后选中图层 右键—>时间—>时间反转 即可。 当然你可以先把文字的样式制作的好看一些,这不影响内容表达式的实现。如果你只需要显示到分钟,可以在最后一行代码 output 把hour删掉即可。
//Define time values
var hour = Math.floor((time/60)/60);
var min = Math.floor(time/60);
var sec = Math.floor(time);
var mili = Math.floor(time*60);
// Cleaning up the values
if (mili > 59){ mili = mili – sec*60; }
if (mili < 10){ mili = “0” + mili; } if (sec > 59){ sec = sec – min*60; }
if (sec < 10){ sec = “0” + sec; } if (min >= 59){ min = min – hour*60; }
if (min < 10){ min = “0” + min; }
// no hour cleanup
if (hour < 10){ hour = “0” + hour; }
//Output
hour + ‘ : ‘ + min + ‘ : ‘ + sec + ‘ : ‘ + mili;7.AE分向抖动表达式
Wiggle表达式更高级的运用,在不同的方向使用不同的抖动强度,也可以制作只在一个方向进行抖动的效果。
表达式语句:
a=wiggle(3,50)[0]; //控制x方向的抖动
b=wiggle(0,0)[1]; //控制y方向的抖动
[a,b];8.AE时间表达式
Time表达式,常用于制作持续旋转的效果。
表达式语句:
value+time*100; //后面的数值用来控制速度的快慢
对表达式有一定基础的同学可能会直接写成:
time*100;
这里多写了一个value,而value代表属性的原始数值,这里加上value是为了能够调整旋转的初始角度,增强可控性。9.AE循环表达式
loopOut表达式,使关键帧动画循环,常用的有三种模式:
第一种:cycle模式
表达式语句:
loopOut(type = “cycle”, numKeyframes = 0);//后面的数值0用来控制从第几帧开始循环将关键帧动画重复进行的循环效果
比如你有关键帧1、2、3,这种循环模式就是1、2、3、1、2、3、1、2、3…..一直循环下去第二种:pingPong模式
表达式语句:
loopOut(type = “pingPong”, numKeyframes = 0);//后面的数值0用来控制从第几帧开始循环
像乒乓球一样来回往复循环
同样,如果你有关键帧1、2、3,那么这种循环模式就是按1、2、3、3、2、1、1、2、3…..这种规律循环下去第三种:continue模式
表达式语句:
loopOut(type=”continue”)
沿着最后一帧的方向和运动速度继续运动下去
这种模式相比前两种用的较少,可以便于制作动画持续缓慢运动的效果,避免动画静止,也可以制作一些数字持续增长等效果10.AE循环旋转表达式
表达式语句:
cycle=360; //循环周期
n=1; //转速(需为整数)
cycle*n/thisComp.duration*time
简单解释下两个可以调的数值:
循环周期,默认是360度,但是不同的图形循环周期可能有所区别,比如一个正方形旋转90度就能形成循环,而一个正五角形的循环周期是旋转360÷5 =72度第二个值很好理解,代表转速,值越大,转的越快。
11.AE路径循环表达式
有时候我们需要做mask变形动画的循环,但是你会发现直接给mask path属性加循环表达式是不起作用的。
而利用下面这个表达式就能够解决这个问题
表达式语句:
valueAtTime(time%key(numKeys).time)对于mask路径和形状层路径均有效哦。
该表达式的原理是利用valueAtTime表达式读取关键帧数据,并通过数学计算使关键帧数据在时间线上重复。(所以有趣的是,其实你把它加给任何其他属性都能够产生cycle模式的循环。)12.AE随机循环表达式
让随机抖动的效果能够形成循环,对于做一些元素随机晃动之类的GIF循环动画非常好用!
表达式语句:
freq = 3; // 频率
amp = 100; // 幅度
loopTime =3; // 循环时间,单位为秒
t = time % loopTime;
wiggle1 = wiggle(freq, amp, 1, 0.5, t);
wiggle2 = wiggle(freq, amp, 1, 0.5, t – loopTime);
linear(t, 0, loopTime, wiggle1, wiggle2)13.AE回弹表达式
它能够制作物体撞击墙壁或地面产生的回弹反弹效果
表达式语句:
e =0.7;//弹力
g =1000;//重力
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
这里有三个关键数值用来控制弹性的效果,
弹力,这个值越大,则弹起的越高
重力,这个值越大,则弹的越快,同时停止的也越快
最大弹跳次数,字面意思,用来控制弹跳的次数,值越大,效果越细腻14.AE目标朝向表达式
lookAt表达式,使图层的方向始终朝向一个目标图层,对于二维层和三维层均有效。
表达式语句:
(对于二维层,加给rotation[旋转]属性)
function lookAtMe(fromPt, toPt){
lkAt = lookAt(fromPt, toPt);
if (toPt[1] > fromPt[1]){
return 180-lkAt[1];
} else {
return lkAt[1];
}
}
p0= transform.position;
p1=thisComp.layer(“目标层”).transform.position; //设置目标层名
lookAtMe(p0, p1)+value //改变旋转值可调整角度
(对于三维层,加给orientation [角度] 属性)
p0=transform.position;
p1=thisComp.layer(“目标层”).transform.position; //设置目标层名
lookAt(p0,p1)
免责声明
0、网站资源均通过网络等合法渠道获取,该资料仅作为学习交流,其版权归出版社或者原作者所有,本网站不对所涉及的版权问题负责。网站售卖的价格绝对不是商品价格,而是整理资料的成本,如原作者认为侵权,请联系我们,我们立即删除文章,谢谢!
本站保证原原本本的完整性下载原始文件,并不保证资料的准确性,可靠性,对此产生的问题不做任何解释
1、博主在此发文(包括但不限于汉字、拼音、拉丁字母)均为随意敲击键盘所出,用于检验本人电脑键盘录入、屏幕显示的机械、光电性能,并不代表本人局部或全部同意、支持或者反对观点。如需要详查请直接与键盘生产厂商法人代表联系。挖井挑水无水表,不会网购无快递。
2、网站资源均通过网络等合法渠道获取,该资料仅作为学习交流,其版权归出版社或者原作者所有,下载后请于24小时内删除,如有真实需要请支持正版!因下载本站任何资源造成的损失,全部责任由使用者本人承担!本网站不对所涉及的版权问题负责。网站售卖的价格绝对不是商品价格,而是整理资料的成本。
3、如果你是版权方,认为本文内容对您的权益有所侵犯,请联系博主,并参照 侵删联系 的说明提交相应的证明材料,待博主进行严格地审查和背景调查后,情况属实的将在三天内将本文删除或修正。
4、博主的文章没有高度、深度和广度,只是凑字数。由于博主的水平不高(其实是个菜B),不足和错误之处在所难免,希望大家能够批评指出。
5、博主是利用读书、参考、引用、抄袭、复制和粘贴等多种方式打造成自己的纯镀 24k 文章,请原谅博主成为一个无耻的文档搬运工!
6、博主只是一名普通的互联网从业者,不懂修电脑,不会卖电脑,不会帮你盗号,不会破解开机密码,找不回你丢失的手机等,如有这样的想法请绕道!
7、另外还有部分家里有矿的用户就希望我帮他服务,对于这种有钱人变态的需求,我一般都不会拒绝的。
8、本站虚拟货币充值或数字资源购买后,均不可以任何理由退换!购买前(请慎重考虑)
9、附注:根据二○○二年一月一日《计算机软件保护条例》规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。
10、数字千年版权法案(DMCA)
琼鲸网网站接受受版权保护的内容DMCA侵权通知。
琼鲸网络 » AE常用的实用动画表达式
常见问题FAQ
- 免费下载或者SVIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 SVIP介绍。
- 充值&SVIP会员需知
- 提示下载完但解压或打开不了?
- 网站所有素材99%都是采用百度网盘、天翼云盘、蓝奏云网盘存储