-
free wiggle, rubber, bounce, throw, inertia expressions i find useful
These expressions save so much time, you might get home earlier tonight just by reading this post. If you’ve ever animated these sorts of things manually, you’ll know what I mean. Most will need to be tweaked to your specific needs, but it’s just a matter of playing with the numbers a little, and understanding how they’ll change your animation. Here’s the goods:
Jumpy Wiggle 1 makes wiggle skip and hold rather than move fluidly.
// Jumpy Wiggle 1 (moves at a random FPS)
v=wiggle(5,50);
if(v < 50)v=0; if(v > 50)v=100;
vJumpy Wiggle 2 is similar to 1, but works at a defined FPS so your “jump” will happen at a regular pace.
// Jumpy Wiggle 2 (moves at a defined FPS)
fps=5; //frequency
amount=50; //amplitude
wiggle(fps,amount,octaves = 1, amp_mult = 0.5,(Math.round(time*fps))/fps);Inertial Bounce is like making your moves “rubbery.” Layers will overextend, then settle into place on position and rotation keyframes.
// Inertial Bounce (moves settle into place after bouncing around a little)
n = 0;
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){
v = velocityAtTime(key(n).time – thisComp.frameDuration/10);
amp = .05;
freq = 4.0;
decay = 2.0;
value + v*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);
}else{
value;
}Sometimes you just want something to move constantly without keyframing it. Use throw.
// Throw (move at a constant speed without keyframes)
veloc = -10; //horizontal velocity (pixels per second)
x = position[0] + (time – inPoint) *veloc;
y = position[1];
[x,y]Same as throw, but for rotation.
// Spin (rotate at a constant speed without keyframes)
veloc = 360; //rotational velocity (degrees per second)
r = rotation + (time – inPoint) *veloc;
[r]A shoutout to the brilliant folks at aenhancers.com who provided in whole or in part the basis for all of these expressions.
