본문 바로가기

애프터이펙트|모션

키프레임값 조절 없이 간단하게 바운스 주는 방법! (익스프레션 활용)

반응형

애펙에서 오브젝트를 중력에 의해 떨어지게하거나

바운스 주는 모션을 줄 때

진동을 주면서 더 사실감 있게 표현할 수 있다.

 

간단한 진동이라도 여러번의 키프레임을 주게되면 상당한 작업 소요시간이 들때가 있는데 

이를 간편하게 작업하는 익스프레션이 있다

만들어주신분 감사합니다^^,

 

[드롭다운 바운스]

드롭다운 바운스

1.드롭다운 바운스 (e=바운스 정도 크기값 / g=중력값 / nMax=잔여 진동수)

 

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

 

 

 

 

드롭다운 바운스 주의할 점

익스프레션을 사용해 드롭다운 바운스를 적용할 경우

주의할 점이 있다.

바로 easy 값을 줄때는 앞 부분만 줘야한다.

뒤에 있는 키프레임까지 이지값을 주게되면 익스프레션이 적용이 안된다.

 

 

 

[바운스]

바운스

2. 바운스 (amp = 바운스 크기 / freq = 바운스 양 / decay = 억제력)

 

amp = .05;
freq = 4.0;
decay = 8.0;
n = 0;
time_max = 4;
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 && t < time_max){
v = velocityAtTime(key(n).time - thisComp.frameDuration/10);
value + v*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);
}else{value}

 

바운스 주의사항

바운스도 드롭다운 바운수와 동일하게

앞 키프레임만 이지값을 준다.

 

 

 

이렇게 익스프레션 표현식을 통해서

간단하게 바운스, 진동값을 조정하면

실무에서의 작업시간을 줄일 수 있다.

 

*출처 https://motionscript.com/articles/bounce-and-overshoot.html

 

Realistic Bounce and Overshoot

Realistic Bounce and Overshoot Goldfish don't bounce. —Bart Simpson Sometimes you may want to embellish your animated motions with a bit of physical realism. For example, you may have a layer quickly scale up from zero to 100 percent and you want to add

motionscript.com

 

반응형