Everyday Things
Elastic (‘Inertial Bounce’)
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; }
Fade in/out without keyframes
fadeInTime = .5; // fade in time (seconds) fadeOutTime = .5; Math.min(linear(time,inPoint,inPoint + fadeInTime,0,100),linear(time,outPoint - fadeOutTime,outPoint,100,0))
Loop (AE 2019 + later)
loopOut()
Y-only Wiggle
w = wiggle(freq,amp);
[w[0],value[1]];
Jumpy Wiggle
v=wiggle(5,50); if(v < 50)v=0; if(v > 50)v=100;
Low FPS Wiggle
posterizeTime(6); //ex. 6fps wiggle(5,50); //freq,amplitude
LookAt:
delta = position – thisComp.layer(“Look-to-look-at”).transform.position;
radians_to_degrees(Math.atan2(delta[1],delta[0])) + 90
LookAt with a delay
delta = position – thisComp.layer(“Layer-to-look-at”).transform.position.valueAtTime(time-0.3);
radians_to_degrees(Math.atan2(delta[1],delta[0])) + 90
Fade In any property
fadeInTime = .5; // fade in time (seconds)
fadeOutTime = .5;
Math.min(linear(time,inPoint,inPoint + fadeInTime,0,100),linear(time,outPoint – fadeOutTime,outPoint,100,0))
Expression Controls
Clamp Slider values (example is position x+y)
theThing = -thisComp.layer("PQ Control").effect("lyft")("Slider"); [clamp(theThing, min=0, max=-theThing), clamp(theThing, min=0, max=-theThing)]
Checkbox control
if ( comp(“Comp 2”).layer(“Adjustment Layer 2”).effect(“Box”)(“Checkbox”) > 0 ) {100} else {0}
Round up expressions to integers/whole numbers: Math.floor
Math.floor (**your expressions here!**) This will remove any decimals in the value and round to nearest whole number.
Text Layers
Center Anchor Point of text layer dynamically
boxTop = thisLayer.sourceRectAtTime(time).top; boxHeight = thisLayer.sourceRectAtTime(time).height; [value[0], boxTop + boxHeight/2 ];
Shape Layers
Shape Layer match Text layer above it
//layer's position property: xpos = thisComp.layer(index-1).position[0]; ypos = thisComp.layer(index-1).position[1]; [xpos,ypos] //Rectangle's size: siz = thisComp.layer(index-1).sourceRectAtTime(10); [siz.width,siz.height]