키프레임 있을때 포지션 A - B
===================================
// 키프레임이 2개 이상 있을 때만 작동
if (numKeys > 0){
n = nearestKey(time).index;
if (key(n).time > time) n--;
if (n > 0){
t = time - key(n).time;
// 탄성 그래프 설정 값
freq = 3.0; // 출렁이는 속도 (높을수록 빠르게 진동)
amplitude = 0.1; // 튕기는 크기 (0.1 = 마지막 이동 속도의 10% 만큼 더 튕김)
decay = 6.0; // 멈추는 속도 (높을수록 빨리 멈춤)
// 마지막 키프레임 도달 직전의 이동 속도 계산
v = velocityAtTime(key(n).time - thisComp.frameDuration/10);
// 탄성 공식 적용
value + v * amplitude * Math.sin(freq * t * 2 * Math.PI) / Math.exp(decay * t);
} else {
value;
}
} else {
value;
}
========================================================
키프레임 없을때, 포지션에 바로 익스프레션 걸기
// 시작값과 최종 목적지 설정 (X축은 현재 값 유지, Y축만 조절)
startPos = [value[0], 1300];
endPos = [value[0], 0];
// 이동에 걸리는 시간 (초 단위)
duration = 0.4;
t = time - inPoint;
if (t < duration){
// 지정된 시간 동안 startPos에서 endPos로 일직선 이동
ease(t, 0, duration, startPos, endPos);
} else {
// 목적지에 도달한 후 탄성 시작
t2 = t - duration;
freq = 3.0; // 출렁이는 속도
amplitude = 120; // 0보다 최대 몇 픽셀이나 더 위로 올라갈지 결정 (- 방향으로 작동)
decay = 6.0; // 멈추는 속도
// Y축에만 위아래 진동(Math.cos)을 줍니다.
yOffset = amplitude * Math.cos(freq * t2 * 2 * Math.PI) / Math.exp(decay * t2);
// 튕기는 모션이 위(-Y 방향)로 먼저 뻗도록 보정
endPos - [0, yOffset];
}
'■꿀팁 > 에펙 익스프레션' 카테고리의 다른 글
| 에펙 자동 자막바 익스프레션 (0) | 2023.04.13 |
|---|---|
| 에펙반복 익스프레션 (0) | 2019.03.13 |


