AfterEffects
Sunday, February 26th, 2006sto facendo un piccolo videoclip aziendale (diciamo così). uno di quei video che devono eccitare una platea di venditori di cosmetici durante una riunione nazionale. vabbeh, al di là della miseria e della nobiltà dell’intento, mi sono ritrovato come al solito ad avere a che fare con AfterEffects.
è un bel programma, o, per meglio dire, è lo standard de facto per la video grafica digitale (non sto parlando di montaggio video, ma di tutto quello che si può fare partendo da materiale grafico in senso lato). è ne più ne meno che un fotosciòp in cui si può animare tutto.
insomma, non è un programma che adoro, tranne per il fatto che ha un suo piccolo linguaggio di programmazione interno per automatizzare e computare un po’ di cose.
cercando in giro ho trovato un paio di siti di tutorial fatti bene: JJ Gifford Expressions in After Effects e www.motionscript.com.
usare gli script invece dei tool della timeline ha l’enorme vantaggio di poter automatizzare effetti di montaggio altrimenti infattibili (a meno di voler passare delle settimane a settare miriadi di keyframes con una calcolatrice per decidere tempi e valori, uno alla volta).
per esempio queste poche righe di codice messe nell’expression di uno scale fanno una cosa tanto semplice quanto carina: zoomano dentro e fuori un’immagine a tempo. ottimo per videoclip musicali. se ci aggiungete un po’ di motionblur l’effetto è da epilessia.
Scale expression code:
segDur = .125;
minScale = 10;
maxScale = 100;
seed = Math.floor(time/segDur);
seedRandom(seed,true);
myNumber = random(minScale,maxScale);
[myNumber,myNumber]
così invece si fa andare a spasso un oggetto per lo schermo, a salti quantizzati, con ease out:
Position expression code:
segDur = .5;
minValX = 0;
maxValX = 720;
minValY = 0;
maxValY = 576;
seed = Math.floor(time/segDur);
seedRandom(seed,true);
minTime = segDur * seed + inPoint;
maxTime = segDur * (seed + 1) + inPoint;
myStartX = random(minValX,maxValX);
myStartY = random(minValY,maxValY);
myEndX = random(minValX,maxValX);
myEndY = random(minValY,maxValY);
myX = ease_out(time, minTime, maxTime, myStartX, myEndX);
myY = ease_out(time, minTime, maxTime, myStartY, myEndY);
[ myX, myY]
oppure quest’altro script che ho trovato in www.motionscript.com, data un’immagine di grandi dimensioni, zoomma e panpotta di qui e di là a tempo quantizzato, insomma, fa tutto lui.
Point Control code:
scaleTime = 1;
holdTime = 0.5;
maxScale = 200;
widthRatio = thisComp.width/width;
heightRatio = thisComp.height/height;
minScale = Math.max(widthRatio,heightRatio)*100;
totalTime = scaleTime + holdTime;
seed = Math.floor(time/totalTime) + 2;
seedRandom(seed,true);
newScale = random(minScale,maxScale);
seedRandom(seed - 1,true);
oldScale = random(minScale,maxScale);
[oldScale,newScale];
Position expression code:
scaleTime = 1;
holdTime = 0.5;
pixFactor = source.pixelAspect/thisComp.pixelAspect;
totalTime = scaleTime + holdTime;
segTime = time%totalTime;
oldScale = effect("Point Control").param("Point")[0];
newScale = effect("Point Control").param("Point")[1];
seed = Math.floor(time/totalTime)+13;
seedRandom(seed,true);
maxX = (width/2)*(newScale/100)*pixFactor;
minX = thisComp.width-(width/2)*(newScale/100)*pixFactor;
maxY = (height/2)*(newScale/100);
minY = thisComp.height-(height/2)*(newScale/100);
newPos = random([minX,minY],[maxX,maxY]);
seedRandom(seed-1,true);
maxX = (width/2)*(oldScale/100)*pixFactor;
minX = thisComp.width-(width/2)*(oldScale/100)*pixFactor;
maxY = (height/2)*(oldScale/100);
minY = thisComp.height-(height/2)*(oldScale/100);
oldPos = random([minX,minY],[maxX,maxY]);
if(segTime > scaleTime){
newPos
}else{
ease(segTime,0,scaleTime,oldPos,newPos)
}
Scale expression code:
scaleTime = 1;
holdTime = 0.5;
totalTime = scaleTime + holdTime;
segTime = time%totalTime;
oldScale = effect("Point Control").param("Point")[0];
newScale = effect("Point Control").param("Point")[1];
if(segTime > scaleTime){
[newScale,newScale]
}else{
ease(segTime,0,scaleTime,[oldScale,oldScale],[newScale,newScale])
}
infine una considerazione: ci hanno propinato lo standard DVD come se fosse il grande passo in avanti in termini qualitativi rispetto al VHS. è una cazzata. la qualità dei DVD fa semplicemente cagare. un minuto di filmato non compresso (ovvero compresso in modo non distruttivo) in 720×576 pixel (risoluzione DVD, diciamo il massimo che un televisore possa sperare di visualizzare) occupa circa 1,5 GB. un minuto compresso mpeg2 in qualità DVD occupa circa 35 MB. vuol dire che se io creo un minuto di videografica e lo metto su DVD il rapporto di compressione (distruttivissima) sarà di circa 40 a 1. vuol dire che il 97,5% di tutta l’informazione visiva che io ho creato va persa. è semplicemente inaccettabile. voglio poter registrare su un DVD non più di cinque minuti di video. voglio una banda video di 200 Mbit/sec. e allora davvero si vedranno cose mai viste.

