Monday, October 1, 2012

AE Expression - Bouncy



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;

v


Jumpy 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.