AE弹簧弹球动画表达式

弹簧弹球动画表达式
  Freq 弹动频率

Decay 每次弹动衰减数值

 

低弹性弹簧:

 

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*Math.PI*2;

  value + amp*(Math.sin(t*w)/Math.exp(decay*t)/w);

}else

  value

 

高弹性弹簧:

 

 

freq = 6;

 

decay = 10;

 

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*Math.PI*2;

 

  value + amp*(Math.sin(t*w)/Math.exp(decay*t)/w);

 

}else

 

  value

 

 

弹球动画:

 

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值