Feb 1, 2021

Meine Adobe After Effects Expressions Favorites

Martin Sautter Videoproduktion Expressions Adobe After Effects

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)