Smooth Bounce
Elastic overshoot on any keyframed property
Adds a natural elastic bounce to any keyframed property. Instead of a dead stop, your animations will overshoot and settle organically — just like real objects. Works on position, scale, rotation, or any numeric property.
// Smooth Bounce — paste on any keyframed property
freq = 3; // oscillation speed
decay = 5; // how fast the bounce dies out
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 - 0.001);
w = freq * Math.PI * 2;
value + amp * (Math.sin(t * w) / Math.exp(decay * t) / w);
} else {
value;
}Lower the decay value (try 3) for a bouncier, more playful feel. Raise it (try 8) for a subtle, refined settle. This is the single most-used expression in professional motion design.