AE循环表达式

 

loopOut(type = "cycle", numKeyframes = 0)                                               

 

 

后面的数值0用来控制从第几帧开始循环

 

将关键帧动画重复进行的循环效果

将关键帧动画重复进行的循环效果

比如你有关键帧1、2、3,这种循环模式就是1、2、3、1、2、3、1、2、3.....一直循环下去

   

loopOut(type = "cycle", numKeyframes = 0)

 

 

后面的数值0用来控制从第几帧开始循环

 

像乒乓球一样来回往复循环

同样,如果你有关键帧1、2、3,那么这种循环模式就是按1、2、3、3、2、1、1、2、3.....这种规律循环下去

 

   

 loopOut(type="continue")

 

 

沿着最后一帧的方向和运动速度继续运动下去

这种模式相比前两种用的较少,可以便于制作动画持续缓慢运动的效果,避免动画静止,

也可以制作一些数字持续增长等效果

   
 

cycle=360;
n=1;
cycle*n
/thisComp.duration*time

 

 

循环旋转表达式

第一行 360 代表循环周期

第二行1 代表转速  值越大,转的越快。

   

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 + v*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);

   }

else{value}

 弹性表达式

这个表达式看起来很复杂,但是没关系,咱们只要会复制粘贴就好。

其中有三个关键的数值用来控制弹性的效果,需要根据自己需要的效果来调整。

amp,即振幅,用来控制弹性的幅度大小。

freq,频率,用来控制弹性抖动的快慢。

decay,阻力,也叫衰减、阻尼等,这个值越大,则弹性效果能够越快停下来。

 

   

 

 

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

  弹簧(回弹)表达式

同样,这儿有三个关键数值用来控制弹性的效果,

弹力,这个值越高,则跳起的越高

重力,这个值越大,则弹的越快,同时停止的也越快

最大弹跳次数,字面意思,用来控制弹跳的次数,值越大,效果越细腻

这里的弹力和重力都是物理名词,这个效果也是模拟真实物理现象的,所以需要结合下物理知识来理解。

   
 

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)

 

 随机循环

让随机抖动的效果能够形成循环

 

第一行 频率

 

第二行 幅度

 

第三行 循环时间,单位为秒

   
posted @ 2022-01-26 14:44  小七永无止境  阅读(2780)  评论(0编辑  收藏  举报