Aide pour After Effect, techniques, expressions.

mercredi 28 janvier 2009

diaporama

Alors voilà, vous devez faire un diaporama, avec par exemple, plein de photos. On vous a filé les photos, comme d'hab, les qualités sont très variables, mais surtout, les tailles sont toutes différentes. Y'a des trucs en 400x300, d'autres en 1200x600, etc. (pour le moment, je ne parle pas de rapport hauteur/largeur, mais bien de nombre de pixels).

Et pour votre diaporama, qu'importe son type, il faut normaliser un peu tout ça. Alors oui, on pourrait modifier toutes les photos dans photoshop, en réduire certaines, en agrandir d''autres..C'est pas l'idéal, et pas très malléable.

Voilà donc comment faire en sorte que ça soit after qui gère tout :
On veut que toutes les photos soient affichées à la même taille dans la composition d'after effect. Donc en gros, plus le fichier est grand, plus l'échelle sera petite.
La manip est la suivante : On réduit le calque à la taille d'un solide de 1x1 pixels, puis on va l'agrandir à la taille que l'on veut.
Comment réduire à 1x1 des calques qui sont tous différents avec une même expression ?
Imaginons dans notre cas que nous voulons que les largeurs des photos soient toutes les mêmes, ici d'une valeur de 250 pixels :
(100 / largeur ) * 250
En divisant 100 (l'échelle 1:1 d'after) par la valeur de la largeur du calque, on le réduit à son unité en quelque sorte. Et en le multipliant par 250, on lui donne la valeur que l'on veut.

Un exemple intuitif : Imaginons un calque qui fasse 100 pixels de large :
(100 / 100)*250
On voit bien que 100/100 nous donne 1, donc 250*1=250.
Si notre calque de base faisait 500 (donc 2 fois la taille finale):
(100/500)=0.2 , 0.2*250=50
le calque sera donc à 50%, 50% de 500, ça fait bien 250.

Bon, après avoir rejoint Einstein sur ce coup là, voyons l'expression.
Créez un Null que vous appelez "controle", et ajouter un paramètre glissière que vous appelez "taille"

Et écrivez ceci pour l'échelle de chaque calque:

t=thisComp.layer("controle").effect("taille")("Curseur");
s=(100 / width)*t ;
[s,s]

Je me souviens plus si j'en ai dejà parlé, mais "width", c'est évidemment la valeur de la largeur du calque.
Ainsi, avec le parametre glissiere "taille", vous pouvez définir la largeur cible de tous les calques.
Si vous préférez gérer la hauteur, remplacez "width" par "height".

Et là, vous allez me dire : ouais c'est cool ton truc, mais les images les plus rectangulaires font franchement petites à coté des images plus carré. Et si on a des images verticales ET horizonales, on peut pas vraiment choisir si on normalise la largeur et la hauteur !!

Et vous aurez raison. C'est pour cela que le prochain post, on verra comment faire pour que n'importe quel calque, qu'importe son rapport hauteur/largeur, soit harmonieux avec tous les autres calques.
Mais c'est un poil plus compliqué quand meme... faut pas déconner.
Ca sera pour demain ! C'est ça qui est chouette.

Bonne soirée

2 commentaires:

  1. salut,
    il y a un problème : après avoir entré l'expression, after effect dit "After Effect warning: Class 'effect' has no property or method named 'curseur'

    RépondreSupprimer
  2. C'est parce que tu utilises la version anglaise d'after effect.
    Ils ont oublié de laisser en anglais quelques termes, comme curseur (slider) et une petite liste.
    Mais si tu crées tes variables avec la cordelette (c'est expliqué au début du blog), tu n'auras pas d'erreur, car After te créera les expressions avec les termes anglais.

    RépondreSupprimer