Using Robert Penner's Easing
Hello,
I've been having problems trying to use Robert Penner's easing functions in my expressions.
var comp = thisComp;
var duration = comp.layer("Duration").text.sourceText;
var transition = comp.layer("Transition").text.sourceText;
duration = parseFloat(duration); // testing at 1
transition = parseFloat(transition); // testing at 1
var startDuration = inPoint + transition; // 1
var actualDuration = startDuration + duration + transition; // 3
var endDuration = actualDuration - transition; // 2
var startPos = [0, 0];
var endPos = [960, 0];
if (time <= (inPoint + actualDuration) / 2) {
smoothEaseOut(inPoint, startDuration, startPos, endPos); // 0, 1, [0, 0], [960, 0]
} else {
smoothEaseIn(endDuration, actualDuration, endPos, startPos); // 2, 3 [960, 0], [0, 0]
}
function easeOutQuint(t, b, c, d) {
return c*((t=t/d-1)*t*t*t*t + 1) + b;
}
function easeInQuint(t, b, c, d) {
return c*(t/=d)*t*t*t*t + b;
}
function smoothEaseIn(startTime, endTime, startVal, endVal) {
var x = easeInQuint(time - startTime, 0, 1, transition);
return linear(x, startTime, endTime, startVal, endVal);
}
function smoothEaseOut(startTime, endTime, startVal, endVal) {
var x = easeOutQuint(time - startTime, 0, 1, transition);
return linear(x, startTime, endTime, startVal, endVal);
}
For some reason, animation going in works, but animation going out is wonky.
I can't figure out what went wrong. How do I implement the easing? I intend to use these easing instead of After Effect's built in interpolation functions.
