Aide pour After Effect, techniques, expressions.

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.

9 commentaires:

  1. Ca fait plaisir de te revoir dans le coin!

    RépondreSupprimer
  2. FORMIDABLE !
    Un équivalent au gotoAndPlay de flash, j'aime !

    RépondreSupprimer
  3. Merci pour cette réponse,c'est ce que je cherchais..
    Je me demandais si on pouvait coupler le changement de tonalité avec la répétition, c'est à dire appliquer cette expression au tutoriel "pouet" par exemple...

    RépondreSupprimer
  4. Avec cet expression, il s'agit simplement de repartir à 0 à chaque fois. Mais je garde ça dans un coin de la tête si je trouve quelque chose. Pour le moment, je regarde comment faire pour pouvoir avoir 2 fois le même son qui se chevauche si les marqueurs sont rapprochés.

    RépondreSupprimer
  5. super! merci sa peut servir a d'autre application !!!! :)

    RépondreSupprimer
  6. Voilà une solution si les marqueurs sont rapprochés.

    n = 0;
    if (marker.numKeys > 0){
    n = marker.nearestKey(time).index;
    if (marker.key(n).time > time){
    n--;
    }
    }
    if (n == 0){
    0;
    } else {
    T=marker.key(n).time;
    time-T
    }

    RépondreSupprimer
  7. Bonjour,
    j'ai 2 calques (des .mov), que j'appellerais A et B, dans une composition.
    A et B s'enchaînent. Or si B ne changera jamais, il n'en ai pas de même pour A, dont la durée ne sera jamais la même.
    Question: Il y a t'il une expression qui permette de dire à B de commencer seulement lorsque A est terminé, qu'elle que soit leurs positions respectives dans la timeline ?
    J'ai fait des essais avec les markers, mais si je remplace le média ( Alt+clic ) et que la durée n'est pas la même, les markers ne se réactualisent pas en fonction de la nouvelle durée.
    Merci

    RépondreSupprimer
  8. Bonjour,
    la solution la plus simple qui me vient à l'esprit n'est pas de travailler avec des marqueurs, mais plutot avec le remappage temporel d'after effect.
    Active le sur le calque B, et écris dans l'expression à la place des clefs :

    A=thisComp.layer("calque A");
    time-A.outPoint

    Ainsi, le calque B ne lancera sa première image qu'à la fin du calque A.

    RépondreSupprimer
    Réponses
    1. Ca marche!

      Un très grand merci.Super.

      Ce site était et est tjrs ma référence.

      Supprimer