AE markers tweens
Use tweens of properties's layer with markers in After Effect.
Multiples interpolations to a property.
List of tween's transitions
- easeNone
- easeInQuad
- easeInOutQuad
- easeInCubic
- easeOutCubic
- easeInOutCubic
- easeOutInCubic
- easeInQuart
- easeOutQuart
- easeInOutQuart
- easeOutInQuart
- easeOutQuart
- easeInQuint
- easeOutQuint
- easeInOutQuint
- easeOutInQuint
- easeInSine
- easeOutSine
- easeInOutSine
- easeOutInSine
- easeInExpo
- easeOutExpo
- easeInOutExpo
- easeOutInExpo
- easeInCirc
- easeOutCirc
- easeInOutCirc
- easeOutInCirc
- easeInElastic
- easeOutElastic
- easeInOutElastic
- easeOutInElastic
- easeInBack
- easeOutBack
- easeInOutBack
- easeOutInBack
- easeInBounce
- easeOutBounce
- easeInOutBounce
- easeOutInBounce
Documentation
Add marker (alt + * ) add properties of marker:
- tfs1Value 50,50
- tfs1Time 2
- tfs1Tween easeInOutExpo
tfs1Value as same dimensions thant the property of the layer:
- opacity: 1 dimension tfs1Value 100
- scale: 2 dimensions tfs1Value 100,100
- position 3d: 3 dimensions tfs1Value 600,10,-25
Script
m = thisLayer.marker;
var tweens = initTweens();
/*
Add marker (alt + * )
add properties of marker:
- tfs1Value 50,50
- tfs1Time 2
- tfs1Tween easeInOutExpo
tfs1Value as same dimensions thant the property of the layer :
- opacity: 1 dimension
tfs1Value 100
- scale: 2 dimensions
tfs1Value 100,100
- position 3d: 3 dimensions
tfs1Value 600,10,-25
*/
// CALCULATIONS
var depth = ( thisProperty.value == Number(thisProperty.value) ) ? 1 : thisProperty.value.length;
if ( time < m.key(1).time ) thisProperty.value;
else
{
for( var i=0; i < m.numKeys; i++ )
{
var lastValue = getTotalArrayValueByItem( i );
tTemp = time - (m.key(i+1).time);
if ( time < ( m.key(i+1).time +
Number(m.key(i+1).parameters["tfs1Time"]) ) )
{
var finalValue = [];
var nextValue = getTotalArrayValueByItem( i+1 );
for ( j = 0; j < depth; j++ ) finalValue[j] = tweens[m.key(i+1).parameters["tfs1Tween"]]( tTemp, Number(lastValue[j]), Number(nextValue[j]) - Number(lastValue[j]), Number(m.key(i+1).parameters["tfs1Time"]) );
if (depth < 2) finalValue[0];
else finalValue;
break;
}
nextTime = (i + 1< m.numKeys) ? m.key(i+2).time : outPoint;
if ( time < nextTime )
{
var finalValue = getTotalArrayValueByItem( i+1 );
if (depth < 2) finalValue[0];
else finalValue;
break;
}
}
}
function getTotalArrayValueByItem( idItem )
{
m = thisLayer.marker;
var depth = ( thisProperty.value == Number(thisProperty.value) ) ? 1 :
thisProperty.value.length;
var val0 = (depth<2) ? [ thisProperty.value ] : thisProperty.value;
val1 = new Array();
for ( var i = 0; i < depth; i++ ) val1[i] = val0[i];
for ( i = 1; i <= idItem; i++ )
{
markVal = (depth<2) ? [ m.key(i).parameters["tfs1Value"] ] : m.key(i).parameters["tfs1Value"].split(",");
while ( markVal.length < depth ) markVal.push( 0 );
for ( var j = 0; j < depth; j++ ) val1[j] = markVal[j];
}
return val1;
}
// TWEENS
function initTweens()
{
var tweens = [];
tweens["easeNone"] = easeNone;
tweens["easeInQuad"] = easeInQuad;
tweens["easeInOutQuad"] = easeInOutQuad;
tweens["easeInCubic"] = easeInCubic;
tweens["easeOutCubic"] = easeOutCubic;
tweens["easeInOutCubic"] = easeInOutCubic;
tweens["easeOutInCubic"] = easeOutInCubic;
tweens["easeInQuart"] = easeInQuart;
tweens["easeOutQuart"] = easeOutQuart;
tweens["easeInOutQuart"] = easeInOutQuart;
tweens["easeOutInQuart"] = easeOutInQuart;
tweens["easeOutQuart"] = easeOutQuart;
tweens["easeInQuint"] = easeInQuint;
tweens["easeOutQuint"] = easeOutQuint;
tweens["easeInOutQuint"] = easeInOutQuint;
tweens["easeOutInQuint"] = easeOutInQuint;
tweens["easeInSine"] = easeInSine;
tweens["easeOutSine"] = easeOutSine;
tweens["easeInOutSine"] = easeInOutSine;
tweens["easeOutInSine"] = easeOutInSine;
tweens["easeInExpo"] = easeInExpo;
tweens["easeOutExpo"] = easeOutExpo;
tweens["easeInOutExpo"] = easeInOutExpo;
tweens["easeOutInExpo"] = easeOutInExpo;
tweens["easeInCirc"] = easeInCirc;
tweens["easeOutCirc"] = easeOutCirc;
tweens["easeInOutCirc"] = easeInOutCirc;
tweens["easeOutInCirc"] = easeOutInCirc;
tweens["easeInElastic"] = easeInElastic;
tweens["easeOutElastic"] = easeOutElastic;
tweens["easeInOutElastic"] = easeInOutElastic;
tweens["easeOutInElastic"] = easeOutInElastic;
tweens["easeInBack"] = easeInBack;
tweens["easeOutBack"] = easeOutBack;
tweens["easeInOutBack"] = easeInOutBack;
tweens["easeOutInBack"] = easeOutInBack;
tweens["easeInBounce"] = easeInBounce;
tweens["easeOutBounce"] = easeOutBounce;
tweens["easeInOutBounce"] = easeInOutBounce;
tweens["easeOutInBounce"] = easeOutInBounce;
return tweens;
}
function easeNone(t, b, c, d)
{
return c*t/d + b;
}
function easeInQuad(t, b, c, d)
{
return c*(t/=d)*t + b;
}
function easeOutQuad(t, b, c, d)
{
return -c *(t/=d)*(t-2) + b;
}
function easeInOutQuad(t, b, c, d)
{
if((t/=d/2) < 1) return c/2*t*t + b;
return -c/2 *((--t)*(t-2) - 1) + b;
}
function easeInCubic(t, b, c, d)
{
return c*(t/=d)*t*t + b;
}
function easeOutCubic(t, b, c, d)
{
return c*((t=t/d-1)*t*t + 1) + b;
}
function easeInOutCubic(t, b, c, d)
{
if((t/=d/2) < 1) return c/2*t*t*t + b;
return c/2*((t-=2)*t*t + 2) + b;
}
function easeOutInCubic(t, b, c, d)
{
if(t < d/2) return easeOutCubic(t*2, b, c/2, d);
return easeInCubic((t*2)-d, b+c/2, c/2, d);
}
function easeInQuart(t, b, c, d)
{
return c*(t/=d)*t*t*t + b;
}
function easeOutQuart(t, b, c, d)
{
return -c *((t=t/d-1)*t*t*t - 1) + b;
}
function easeInOutQuart(t, b, c, d)
{
if((t/=d/2) < 1) return c/2*t*t*t*t + b;
return -c/2 *((t-=2)*t*t*t - 2) + b;
}
function easeOutInQuart(t, b, c, d)
{
if(t < d/2) return easeOutQuart(t*2, b, c/2, d);
return easeInQuart((t*2)-d, b+c/2, c/2, d);
}
function easeInQuint(t, b, c, d)
{
return c*(t/=d)*t*t*t*t + b;
}
function easeOutQuint(t, b, c, d)
{
return c*((t=t/d-1)*t*t*t*t + 1) + b;
}
function easeInOutQuint(t, b, c, d)
{
if((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
return c/2*((t-=2)*t*t*t*t + 2) + b;
}
function easeOutInQuint(t, b, c, d)
{
if(t < d/2) return easeOutQuint(t*2, b, c/2, d);
return easeInQuint((t*2)-d, b+c/2, c/2, d);
}
function easeInSine(t, b, c, d)
{
return -c * Math.cos(t/d *(Math.PI/2)) + c + b;
}
function easeOutSine(t, b, c, d)
{
return c * Math.sin(t/d *(Math.PI/2)) + b;
}
function easeInOutSine(t, b, c, d)
{
return -c/2 *(Math.cos(Math.PI*t/d) - 1) + b;
}
function easeOutInSine(t, b, c, d)
{
if(t < d/2) return easeOutSine(t*2, b, c/2, d);
return easeInSine((t*2)-d, b+c/2, c/2, d);
}
function easeInExpo(t, b, c, d)
{
return(t==0) ? b : c * Math.pow(2, 10 *(t/d - 1)) + b - c * 0.001;
}
function easeOutExpo(t, b, c, d)
{
return(t==d) ? b+c : c * 1.001 *(-Math.pow(2, -10 * t/d) + 1) + b;
}
function easeInOutExpo(t, b, c, d)
{
if(t==0) return b;
if(t==d) return b+c;
if((t/=d/2) < 1) return c/2 * Math.pow(2, 10 *(t - 1)) + b - c * 0.0005;
return c/2 * 1.0005 *(-Math.pow(2, -10 * --t) + 2) + b;
}
function easeOutInExpo(t, b, c, d)
{
if(t < d/2) return easeOutExpo(t*2, b, c/2, d);
return easeInExpo((t*2)-d, b+c/2, c/2, d);
}
function easeInCirc(t, b, c, d)
{
return -c *(Math.sqrt(1 -(t/=d)*t) - 1) + b;
}
function easeOutCirc(t, b, c, d)
{
return c * Math.sqrt(1 -(t=t/d-1)*t) + b;
}
function easeInOutCirc(t, b, c, d)
{
if((t/=d/2) < 1) return -c/2 *(Math.sqrt(1 - t*t) - 1) + b;
return c/2 *(Math.sqrt(1 -(t-=2)*t) + 1) + b;
}
function easeOutInCirc(t, b, c, d)
{
if(t < d/2) return easeOutCirc(t*2, b, c/2, d);
return easeInCirc((t*2)-d, b+c/2, c/2, d);
}
function easeInElastic(t, b, c, d, a, p)
{
var s;
if(t==0) return b; if((t/=d)==1) return b+c; if(!p) p=d*.3;
if(!a || a < Math.abs(c)) { a=c; s=p/4; } else s = p/(2*Math.PI) *
Math.asin(c/a);
return -(a*Math.pow(2,10*(t-=1)) * Math.sin((t*d-s)*(2*Math.PI)/p )) + b;
}
function easeOutElastic(t, b, c, d, a, p)
{
var s;
if(t==0) return b; if((t/=d)==1) return b+c; if(!p) p=d*.3;
if(!a || a < Math.abs(c)) { a=c; s=p/4; } else s = p/(2*Math.PI) *
Math.asin(c/a);
return(a*Math.pow(2,-10*t) * Math.sin((t*d-s)*(2*Math.PI)/p ) + c + b);
}
function easeInOutElastic(t, b, c, d, a, p)
{
var s;
if(t==0) return b; if((t/=d/2)==2) return b+c; if(!p) p=d*(.3*1.5);
if(!a || a < Math.abs(c)) { a=c; s=p/4; } else s = p/(2*Math.PI) *
Math.asin(c/a);
if(t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) *
Math.sin((t*d-s)*(2*Math.PI)/p )) + b;
return a*Math.pow(2,-10*(t-=1)) * Math.sin((t*d-s)*(2*Math.PI)/p )*.5 +
c + b;
}
function easeOutInElastic(t, b, c, d, a, p)
{
if(t < d/2) return easeOutElastic(t*2, b, c/2, d, a, p);
return easeInElastic((t*2)-d, b+c/2, c/2, d, a, p);
}
function easeInBack(t, b, c, d, s)
{
if(s == undefined) s = 1.70158;
return c*(t/=d)*t*((s+1)*t - s) + b;
}
function easeOutBack(t, b, c, d, s)
{
if(s == undefined) s = 1.70158;
return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
}
function easeInOutBack(t, b, c, d, s)
{
if(s == undefined) s = 1.70158;
if((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
}
function easeOutInBack(t, b, c, d, s)
{
if(t < d/2) return easeOutBack(t*2, b, c/2, d, s);
return easeInBack((t*2)-d, b+c/2, c/2, d, s);
}
function easeInBounce(t, b, c, d)
{
return c - easeOutBounce(d-t, 0, c, d) + b;
}
function easeOutBounce(t, b, c, d)
{
if((t/=d) <(1/2.75)) {
return c*(7.5625*t*t) + b;
} else if(t <(2/2.75)) {
return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
} else if(t <(2.5/2.75)) {
return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
} else {
return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
}
}
function easeInOutBounce(t, b, c, d)
{
if(t < d/2) return easeInBounce(t*2, 0, c, d) * .5 + b;
else return easeOutBounce(t*2-d, 0, c, d) * .5 + c*.5 + b;
}
function easeOutInBounce(t, b, c, d)
{
if(t < d/2) return easeOutBounce(t*2, b, c/2, d);
return easeInBounce((t*2)-d, b+c/2, c/2, d);
}