While searching for these, I found so many dead links, and decided to add a “live” link that would always be available. I found this on a post by a user named “Beaver” in a MoGraph Forum. These expressions have already been indispensable for a newbie-hacker such as myself, and now I feel as though I see these expressions everywhere in motion graphics sequences.
And this was at the end of the post: “A shoutout to the brilliant folks at www.aenhancers.com who provided in whole or in part the basis for all of these expressions.”
Also, since finding this original post, I also found an updated version of “INERTIAL BOUNCE” over at Harry Frank’s website. He offers his “5 Expressions That Will Change Your Life” over on GRAYMACHINE.
Speaking of, although I am not affiliated with him or his site in any way, Harry Frank is part of the Red Giant Software team as of this writing, and one of the most useful tutorials I’ve found to date, is his “After Effects Expressions” DVD, which can be found at Creative Cow as well as his own website. Harry makes Expressions in After Effects understandable, and even with a newbie-hacker such as myself, creating “DAY 016 – Scary Wiggle Intro” found here and on Vimeo.
The After Effects Expressions that WILL change your life:
_______________________________
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 / similar 1, but the “jump” happens 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 / makes moves “rubbery.” Layers overextend, then settle into place:
// 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;
}
_______________________________
THROW / for constant motion:
// 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]
_______________________________
SPIN / 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]
_______________________________