Professional Documents
Culture Documents
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;
}
e = .7;
g = 5000;
nMax = 9;
n = 0;
if (numKeys > 0){
n = nearestKey(time).index;
if (key(n).time > time) n--;
}
if (n > 0){
t = time - key(n).time;
v = -velocityAtTime(key(n).time - .001)*e;
vl = length(v);
if (value instanceof Array){
vu = (vl > 0) ? normalize(v) : [0,0,0];
}else{
vu = (v < 0) ? -1 : 1;
}
tCur = 0;
segDur = 2*vl/g;
tNext = segDur;
nb = 1; // number of bounces
while (tNext < t && nb <= nMax){
vl *= e;
segDur *= e;
tCur = tNext;
tNext += segDur;
nb++
}
if(nb <= nMax){
delta = t - tCur;
value + vu*delta*(vl - g*delta/2);
}else{
value
}
}else
value
Inertia Position
n = 0;
if (numKeys > 0)
amp = 3;
freq = 2.0;
decay = 3.0;
value + (v/100)*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);}else{value;}
Inertia Rotation
n = 0;
if (numKeys > 0)
amp = 8;
freq = 1.0;
decay = 1.0;
value + (v/100)*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);}else{value;}
Inertia Scale
n = 0;
if (numKeys > 0)
amp = 8;
freq = 2.0;
decay = 3.0;
value + (v/100)*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);}else{value;}
Bounce Potition:
function outBounce(t, b, c, d, a, p) {
return c*(7.5625*t*t) + b;
} else {
function easeAndWizz() {
var n = 0;
if (numKeys > 0) {
n = nearestKey(time).index;
try {
return null;
try {
key(1)[1];
dim = 2;
key(1)[2];
dim = 3;
} catch(e) {}
t = time - key1.time;
d = key2.time - key1.time;
sX = key1[0];
eX = key2[0] - key1[0];
if (dim >= 2) {
sY = key1[1];
eY = key2[1] - key1[1];
if (dim >= 3) {
sZ = key1[2];
eZ = key2[2] - key1[2];
} else {
switch (dim) {
case 1:
return val1;
break;
case 2:
break;
case 3:
break;
default:
return null;
(easeAndWizz() || value);
Elastic Potition:
// some defaults
function outElastic(t, b, c, d, a, p) {
function easeAndWizz() {
var n = 0;
if (numKeys > 0) {
n = nearestKey(time).index;
try {
} catch(e) {
return null;
}
// determine how many dimensions the keyframes need
try {
key(1)[1];
dim = 2;
key(1)[2];
dim = 3;
} catch(e) {}
t = time - key1.time;
d = key2.time - key1.time;
sX = key1[0];
eX = key2[0] - key1[0];
if (dim >= 2) {
sY = key1[1];
eY = key2[1] - key1[1];
if (dim >= 3) {
sZ = key1[2];
eZ = key2[2] - key1[2];
return value;
} else {
switch (dim) {
case 1:
return val1;
break;
case 2:
break;
case 3:
break;
default:
return null;
(easeAndWizz() || value);
Back Potition:
// some defaults
function outBack(t, b, c, d, a, p) {
if (s == null) s = 1.70158;
return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
function easeAndWizz() {
var n = 0;
if (numKeys > 0) {
n = nearestKey(time).index;
try {
} catch(e) {
return null;
try {
key(1)[1];
dim = 2;
key(1)[2];
dim = 3;
} catch(e) {}
t = time - key1.time;
d = key2.time - key1.time;
sX = key1[0];
eX = key2[0] - key1[0];
if (dim >= 2) {
sY = key1[1];
eY = key2[1] - key1[1];
if (dim >= 3) {
sZ = key1[2];
eZ = key2[2] - key1[2];
return value;
} else {
switch (dim) {
case 1:
return val1;
break;
case 2:
break;
case 3:
break;
default:
return null;
}
}
(easeAndWizz() || value);
freq = 2;
amplitude = 40;
decay = 1.0;
t = time - inPoint;
x = scale[0] + amplitude*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);
y = (1/x)*10000;
[x,y]
Posición:
phaseOffset = ((position[0]%wl)/wl)*2*Math.PI;
y = xAmp*Math.sin(2*Math.PI*xFreq*time + phaseOffset);
value + [0,y]
Rotacion:
phaseOffset = ((position[0]%wl)/wl)*2*Math.PI;
radiansToDegrees(theta)/damping;
fps=5; //frequency
amount=25; //amplitude
Grid:
gap = this_comp.width/columns;
origin = [gap,gap];
xGrid = columns - 1;
yGrid = Math.floor(this_comp.height/gap) - 1;
start = 0;
end = 0;
j = 1;
j += 1;
seedRandom(j,true);
start = end;
end += random(tMin,tMax);
targetX = Math.floor(random(0,xGrid));
targetY = Math.floor(random(0,yGrid));
seedRandom(j-1,true);
oldX = Math.floor(random(0,xGrid));
oldY = Math.floor(random(0,yGrid));
origin + [oldX,oldY]*gap;
origin + [oldX,oldY]*gap;
}else{
}else{
f = 8;
a = 1400;
posterizeTime(f);
wiggle(f, a);
Mascara
Ping pong:
t1 = key(1).time;
t2 = key(numKeys).time;
span = t2 - t1;
t = delta%span;
valueAtTime(t1 + t)
}else
value
Cycle:
d = key(numKeys).time - key(1).time;
valueAtTime(time%d)
Pre Composicion
layer.toComp([0,0,0])
Motion Trail (trazos)
delay = 5; //number of frames to delay
d = delay*thisComp.frameDuration*(index - 1);
thisComp.layer(1).position.valueAtTime(time - d)
autofade
transition = 20; // transition time in frames
if (marker.numKeys<2){
}else{
}
Zoom in out (en texto).
//Snap zoom in and out: apply to scale
If you prefer to use Z space position instead of scale, try this one: