After Effects Expressions
Meine persönlichen Favoriten
Hier möchte ich ein paar meiner am häufigsten verwendeten Expressions für Adobe After Effects vorstellen. Diese kurzen Code Snippets erleichtern mir oft den Arbeitsalltag. Seit dem ich meine Diplomarbeit über den Einsatz von Expressions geschrieben habe bin ich ein grosser Fan. Mir macht es immer wieder Freude zu sehen wie Code und Grafik verbunden sind.
Die meisten Expressions sind nicht von mir sondern irgendwo im Internet gefunden, zusammenkopiert und angepasst. Ich werde versuchen die Quellen so gut wie möglich zu hinterlegen.
Fade-In Fade-Out Expression
Diese Expression lässt sich fast jedem Parameter zuweisen. Selbstverständlich ist der grösste Einsatzbereich bei der Transparent.
fadeInTime = .5; // fade in time (seconds)
fadeOutTime = .5;
Math.min(linear(time,inPoint,inPoint + fadeInTime,0,100),linear(time,outPoint - fadeOutTime,outPoint,100,0))
Automatische generierte Hintergrund-Box für Untertitel
Diese Expression eignet sich beispielsweise zur automatischen Generierung einer Hintergrund-Box für Untertitel oder wenn man eine automatische Matte generieren will. Die Expression wir dem Scale Parameter hinzugefügt. Damit es funktioniert sollte der Solid oder Shape Layer die gleiche Position haben wie der Text-Layer. Das kann man bspw. mit dem expressions pickwhip verbinden.
s = thisComp.layer(index-1); //Mit index-1 wird der Layer darunter als Referenz für die Grösse ausgewählt, mit index+1 der Layer darüber.
x = s.sourceRectAtTime(time).width;
y = s.sourceRectAtTime(time).height;
[x,y]
Offset/Reposition Mask
Mit dieser Expression lässt sich eine schon gekeyframte Maske über einen Expression Point Controller verschieben.
//input variables – pickwhip tPath to your path and offsetPos to your null or expression controller
var tPath = mask(“Mask 1”).maskPath;
var offsetPos=effect(“Mask Position Offset”)(“Point”);
var tPoints=[];
var InTan=[];
var OutTan=[];
var mPos=offsetPos-[thisComp.width/2,thisComp.height/2];
var tClosed=tPath.isClosed();
for(i=0;i<(tPath.points().length);i++)
{
tPoints.push([tPath.points()[i][0]+mPos[0],[tPath.points()[i][1]+mPos[1]]],);
InTan.push([tPath.inTangents()[i][0],[tPath.inTangents()[i][1]]],);
OutTan.push([tPath.outTangents()[i][0],[tPath.outTangents()[i][1]]],);
}
createPath(tPoints, InTan, OutTan,tClosed)
https://lesterbanks.com/2017/10/reposition-animated-masks-ae-expression/
MARKER BASED EXPRESSION IN AFTER EFFECTS
var wiggleSpeed=10;
var wiggleAmplitude=100;
var easeDur=20;
try{
if(time>=thisLayer.marker.nearestKey(time).time){
T=thisLayer.marker.nearestKey(time).index;
}
else{
T=thisLayer.marker.nearestKey(time).index-1;
}
key1=thisLayer.marker.key(T)
if (key1.time s=linear(time,key1.time,key1.time+(easeDur*thisComp.frameDuration),0,1);
ss=linear(time,(key1.time+key1.duration)-(easeDur*thisComp.frameDuration),(key1.time+key1.duration),1,0);
wiggle(wiggleSpeed,wiggleAmplitude*s*ss);
}
else{value;}
}catch(error) {
value;
}
Interpolation between random numbers by Dan Ebberts
segMin = .3; //minimum segment duration
segMax = .7; //maximum segment duration
minVal = [0.1*thisComp.width, 0.1*thisComp.height];
maxVal = [0.9*thisComp.width, 0.9*thisComp.height];
end = 0;
j = 0;
while ( time >= end){ j += 1; seedRandom(j,true);
start = end;
end += random(segMin,segMax); }
endVal = random(minVal,maxVal);
seedRandom(j-1,true); dummy=random(); //this is a throw-away value
startVal = random(minVal,maxVal);
ease(time,start,end,startVal,endVal)