Aide pour After Effect, techniques, expressions.

mercredi 22 octobre 2014

DES NEWS

Je reviens très bientôt avec un nouveau script dédié au compositing, et un peu plus tard avec CIRCLE MAKER puissance 10.

vendredi 4 juillet 2014

CONNECT

Bonjour à tous,

après circle maker, voici Connect !
Petit outil très simple qui sert à faire un trait plus ou moins épais entre deux calques.
Le trait peut également être élastique.
-La distance Max indique la distance jusqu'à laquelle le trait va se déformer.
-La distance d'équilibre indique la taille à laquelle le trait n'est pas déformé. En dessous, il sera bombé, au dessus, il s'étire. Donc si vous voulez que le trait ne soit que bombé, la distance d'équilibre doit être égale à la distance max, et si vous voulez au contraire que le trait ne puisse que s'étirer, la distance d'équilibre doit être égale à 0.
La valeur d'élasticité peut être augmentée pour marquer l'effet.

Connect v1




mercredi 4 juin 2014

CIRCLE MAKER V1.11

Petite mise à jour de Circle Maker, il y avait un bug dans la position du cercle quand le controleur était en 3d. Le lien dans le post précédent est mis à jour.

mardi 27 mai 2014

CIRCLE MAKER v1

Bonjour à tous.

Aujourd'hui, petite nouveauté, je ne vais pas décrire comment faire ceci ou cela, mais plutôt vous faire un petit cadeau.
Voici CIRCLE MAKER V1, un petit script concocté par votre serviteur qui vous permettra de créer un cercle avec des calques et d'animer ces derniers avec tout plein de petits paramètres.


Libre à vous d'utiliser ce script comme bon vous semble, il y a beaucoup de possibilités.
Le script fonctionne avec lec versions française et anglaise d'After Effects, testé sous CS6 et CC.
Voici une video qui décrit l'ensemble des paramètres. Les carrés ne sont biensur qu'un exemple, remplaçable par n'importe lesquels de vos calques ou de vos composiitons.


N'hésitez pas à envoyer vos commentaires, questions, ou si vous repérez des bugs ! (en principe il n'y en a pas...)

mardi 25 mars 2014

Laissez-moi là

Bonjour à tous.

Cela fait très longtemps que rien n'a été écrit sur ce blog, non pas par manque d'envie, mais par manque de contenu. En effet, en général un article sort de terre quand un travail demande de trouver une nouvelle astuce. Et cela faisant donc longtemps que je n'avais pas du remettre un peu les mains dans le cambouis.

Je reviens donc avec une petite astuce pour, en quelque sorte, animer un lien de position.
En d'autre terme, c'est comme si on coupait un lien de parent-enfant entre 2 objets, mais uniquement pour la position.


L'idée est la suivante :
-suis la même position qu'un autre calque, plus un décalage spatial si nécessaire.
-Si on te dit de ne plus avoir ce lien, garde la dernière position que tu avais avant qu'on t'ait dit d'arrêter.

Voilà en gros comment faire :

On a 2 carrés, le rouge est le parent, le vert est l'enfant. Attention !! Il ne faut pas créer de lien de parenté !

Tout se passe donc sur le carré vert.
On rajoute à ce dernier un modificateur "Paramètre case", qui permet d'avoir une value intégrale (entière) de 0 (non) ou de 1 (oui). Appelons le "oui non".
Quand la valeur est égale à 0, le carré ne suivra pas, quand la valeur est égale à 1, il le suit.

On ouvre la position du carré vert, et c'est parti :

target=thisComp.layer("Parent");
I=effect("oui non")("Case");

"Case", c'est ainsi que j'ai nommé mon effet "Paramètre case".

Maintenant, on va chercher la clef "case" la plus proche de nous.

N=I.nearestKey(time);
Ni=N.index;

C'est assez simple, on a créé une autre variable Ni qui contient l'index de la clef la plus proche.

if ( N.time>time) { Ni=Ni-1};
Ngood=I.key(Ni);

Grace à ces 2 lignes, on fait en sorte que la clef la plus proche soit forcément celle qui soit derrière nous, c'est à dire dans le passé. Cela nous servira uniquement dans le cas où on souhaite recréer le lien de parent après l'avoir cassé.

Nt=Ngood.time;

Nt vaut donc la position de la clef "non" qui est juste derrière nous.

if ( I==1) { target.position + value }
else {
target.position.valueAtTime(Nt) +value }

Si I=oui, ajoute à ta positon la position du carré rouge.
Si I=non, ajoute à ta position la position du carré au moment où I t'as dit non.

REMARQUE : il faut mettre une clef "oui" ou "non" à l'image 0 de la composition, sinon ça bug.

Et voilà. C'est assez basique et écrit rapidement, je verrai comment cela peut être affiné.

vendredi 24 février 2012

proxy et import final

Rien de bien méchant, juste une petite astuce permettant d'optimiser la production d'animation.
Vous connaissez déjà tous les outils, mais voici l'idée.
Vous avez une compo avec plein d'images importées. Pour le moment, vous bossez avec les images basse résolution, pour éviter que ça rame. Mais à la fin, vous allez utiliser les images en haute définition, qui seront bien plus grandes que les basses définition.

Du coup, en remplaçant vos imports, cela va changer l'échelle de vos images.
On récupère donc la technique utilisée dans "toujours à la hauteur".

On crée un paramètre glissière sur notre calque, que l'on va appeler "taille".
Puis, dans l'échelle :

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

Du coup, c'est la valeur de "taille" qui définira la taille du calque, et rien d'autre. Remplacer votre 400x500 par un 2000x2500, le calque ne change pas de taille dans la compo.
Bien pratique ma foi.

jeudi 17 novembre 2011

répète pour voir ?

On m'a demandé comment faire pour qu'un son se déclenche automatique à un évènement, et puisse se répéter à chaque fois que cet évènement se produit, sans devoir recopier 200 fois le calque son en question.
C'est une question intéressante, dont la réponse dépend de votre situation.
Je vais donc essayer d'être le plus clair possible. Pour mon exemple, l'évènement en question sera le passage de la ligne de temps sur un marker de composition.
Comme vous le savez, quand vous appuyer sur la touche * et qu'aucun calque n'est sélectionné, cela vous crée un marker de composition. Si un calque était sélectionné, cela crée un marker SUR le calque.

Pour votre fichier son, il faut bien évidemment activer le remappage temporel, et écrire ceci pour l'expression :

T=thisComp.marker.nearestKey(time).time;

time-T

Et si vous placez vos marqueurs sur le calque, ça donne :

T=marker.nearestKey(time).time;

time-T

Oui, c'est tout...
Alors, expliquons un peu le pourquoi du comment.
On demande à T de trouver le marker le plus proche, et d'en enregistrer sa position temporel, ou en d'autres termes, à quel moment il se situe. Par exemple 1s20f, 0s12f, etc.

Tant que le temps est avant le marker, time-T vaut donc moins de 0, la soustraction reste donc bloquée à 0. Et des que time dépasse le marker, il part de 0, donc c'est comme si le calque était lu depuis le début.
Il faut donc que les markers aient au moins un espacement égal à la longueur du son, sinon le son joué en cours sera coupé pour reprendre depuis le début.

J'affinerai ce post plus tard pour illustrer des gestions un peu plus fines.