module inscription newsletter haut de page forum mobile

Rejeter la notice

ateliers live resolve avec forest

Ateliers Live Resolve - Formez-vous en ligne tous les mois avec Forest !
Faites rapidement évoluer la qualité de vos étalonnage avec nos ateliers mensuels de 3h.
Toutes les infos

Ateliers et Formations

Markers & expressions

Discussion dans 'Adobe After Effects' créé par thx1138, 23 Novembre 2005.

Tags:
  1. thx1138

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    71
    Appréciations:
    +0 / 0 / -0
    Salut a tous,
    Petite question sur les expressions et les " Markers ",
    J'utilise les " Comp Marker " comme repaires temporels pour mes expressions, puis-je faire de meme avec les Markers des Layers (calques) et si tel est le cas, comment faut-il les nommer ?
    J'ai essayé: ..=this_layer.marker(1) par exemple pour un marker que j'aurais nommé "1", mais ma formulation ne marche pas.
    Dans le cas de figure ou cela puisse fonctionner puis-je utiliser les markers d'un layer dans une expression que j'appliquerais a un autre layer ?
    Dans ce cas, comment doit-on ecrire la formule ?
    ..=layer(7)_ layer.marker(1)
    Par exemple pour utiliser le marker 1 du layer 7 ?

    Merci d'avance
     
  2. nab17connection

    Points Repaire:
    1 900
    Recos reçues:
    1
    Messages:
    1 051
    Appréciations:
    +0 / 0 / -0
    salut :)

    tu as deux facons de recuperer un marker ( repère en francais), soit par son nom (commnentaire), soit par son numero (1 pour le premier marker, 2 pour le deuxieme,etc)

    tu peux acceder à un marker qu'il soit situé sur le calque contenant l expression ou sur n importe quel autre calque.
    s il se trouve sur un autre calque, il fait preciser "thisComp.MonCalque" devant.

    tu pourras ecrire pour acceder a l instant du marker 1 situé sur le calque contenant l expression:
    marker.key(1).time; // par son numero
    marker.key("monPremierMarker").time; // par son nom

    dans cet exemple, le Gris a la position du Blanc quand le temps courant est entre les deux markers.
    Je l' écris de deux facons differentes pour que tu vois comment on peut les utiliser (dans les deux on utilise thisComp et le nom du calque qui possede les markers):

    numero:
    [​IMG]

    nom:
    [​IMG]

    ps: si tu utilises bcp de markers pour tes habillages, tjs selon une meme procedure, le scripting peut te faciliter parfois le boulot... n hesites pas a faire une petite "script request" si tu es confronte a ce genre de situation un jour :)
     
    #2 nab17connection, 23 Novembre 2005
    Dernière édition: 28 Novembre 2005
  3. thx1138

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    71
    Appréciations:
    +0 / 0 / -0
    Merci beaucoup "nab17connection", je vais mettre cela en pratique au plus vite.
    Par contre, je ne suis pas familier des "script request", mais je vais procéder step by step.
     
  4. bildebool

    Points Repaire:
    1 450
    Recos reçues:
    0
    Messages:
    940
    Appréciations:
    +0 / 1 / -0
    Bonjour !!

    Puis je squatter pour poser une question ?

    Sinon que penseriez vous d'un sujet genre "l'aide aux expressions" plutot que de créer un nouveau post a chaque nouvelle expresion qu'on cherche.. genre jeu des expression pour débutant quoi :D

    Bon j'aimerai faire un effet de tremblement, avec de 0 à 1,36 sec un tremblement puis ensuite toute les environ 2 sec un tremblement d'une durée de 1/2 sec.

    Donc j'ai ecris l'expression suivant qui marche pas mal, surtout au début, mais plus ça va, plus le wiggle s'execute souvent et a plus forte amplitude..

    DOnc il dois y avoir une erreur qqpart...

    Voilà désolé de squatter mais j'ai l'impression que vous avez terminé...

    Bill

    PS : dites ce que vous pensez d'un post recentrant les questions sur les expressions... (à moins que ça existe :perplexe: )

    -------
    edit :

    de plus, est il possible de copier une expression vers pls autres calques sans faire copier coller a chaque fois ?

    Et comment parenter par expression un calque juste sur la postion par exemple, car si je mets "hisComp.layer("Nul 1").position" par exemple, la position ne tiens pas compte de l'emplacement original....
    j'ai fais ça qu'en pensez vous ?
     
  5. nab17connection

    Points Repaire:
    1 900
    Recos reçues:
    1
    Messages:
    1 051
    Appréciations:
    +0 / 0 / -0
    Salut !! ;)

    si tu veux que le tremblement soit de 0 a 1.36s et ensuite avoir tremblement de 0.5s toutes les 2s (c est compliqué a dire:) ),

    tu pourras ecrire cette expression (j ai repris en gros la tienne et j ai viré le random() et mis un peu d ordre pour avoir un truc simple et precis...)
    Code:
    wg=0.5; //durée tremblement
    fix=2; // durée fixe
    freq=10; // frequence
    amp=5; // amplitude
     
    if(time<1.36) wiggle(freq,amp);
    else{
           reste=time%(wg+fix);
           if(reste<wg) wiggle(freq,amp);
           else position;
    }
    
    Pour ton autre question, tu peux copier coller une expression, soit en copiant collant toute la propriete sur la quelle est ecrite l expression, soit en ne copiant que l expression (pas la valeur initiale de la propriete, juste l expression) en faisant "copier expression seulement", dans le menu Edition. Tu selectionnes ensuite tos les calques que tu souhaites et tu leur colles l expression (en une seule manip donc).


    Pour ta derniere question sur le parentage, que veux tu faire ? soit ton calque a la meme position que le calque "référant", soit il ne l a pas !
    tu ne peux pas à la fois vouloir le déplacer manuellement et à la fois lui dire qu il a la meme position qu un autre calque.
    Un calque n a pas le don d ubiquité ;) (ne peut pas se trouver a plusieurs endroits en meme temps)
    je n ai peut etre pas bien compris ce que tu cherches, c est possible aussi :)
     
    #5 nab17connection, 23 Novembre 2005
    Dernière édition: 25 Novembre 2005
  6. bildebool

    Points Repaire:
    1 450
    Recos reçues:
    0
    Messages:
    940
    Appréciations:
    +0 / 1 / -0
    Alors pour l'expression 1, merci d'avoir mis un peu d'ordre, c'est vrai que c'est plus clair ! SInon je suis content le reste est plutot pareil en plus bordelique. Par contre j'aimerais integrer un random ou autre pour ne pas avoir un tremblement toute les 2sec mais environ toute les 2 sec, que ça fasse moins robot.. c'est possible ?

    Merci pour l'astuce pour le copier/coller je connaissais pas.

    Enfin, ce que je souhaite, c'est avoir exactement la meme chose que si j'utilisais la fonction parentage d'after effect, mais avec une expression pour isoler une propriété.

    Par exemple si j'ai un objet avec des variations de taille opactité etc et de position,et je veux qu'un autre objet ne varie seulement que sur la postion, un parentage ne convient pas. D'ou l'idée de parenter par une expression seulement sur une propriété.

    j'ai utilisé ça :
    en connaissant les valeur par defaut de mon objet, je recupere seulement les variations.

    Bill
     
  7. nab17connection

    Points Repaire:
    1 900
    Recos reçues:
    1
    Messages:
    1 051
    Appréciations:
    +0 / 0 / -0
    bill-->
    tu peux aussi mettre ca:
    Code:
    thisComp.layer("Nul 1").position-position;
    et du coup j en ai profite pour jeter un oeil rapide sur les methodes de conversion de l espace calque...tu me fais bosser :D
    en 2D celles ci marcheraient pour ton exemple:
    Code:
    toComp(thisComp.layer("Nul 1").position);
    ou bien
    fromComp(thisComp.layer("Nul 1").position);
    et en 2D-3D l une de celles-ci marcherait aussi (elles marchent toutes :D elles sont magiques ces nlles methodes):
    Code:
    toWorld(thisComp.layer("Nul 1").position);
    ou bien
    fromWorld(thisComp.layer("Nul 1").position);
    quand je les aurais comprises j essaierai de te donner un peu plus de precisions sur leur fonctionnement et leur utilisation, là c est pas encore ca :D

    thx-->
    quand je parlais de "script request" je voulais juste dire que si un jour tu aimerais automatiser certaines procedures dans tes animations, n hesites a pas poser ton pb sur le forum (qu on en discute ou que je t ecrive un ptit script ;))
     
    #7 nab17connection, 24 Novembre 2005
    Dernière édition: 24 Novembre 2005
  8. bildebool

    Points Repaire:
    1 450
    Recos reçues:
    0
    Messages:
    940
    Appréciations:
    +0 / 1 / -0
    oula ! oui je vais tenter de comprendre comment ça marche :D

    Et pour la premiere est ce possible de travailler avec une durée variable plutot qu'une durée fixe avec par exemple la durée variable (dv) = 1.5s<dv<2.5s
    (random n'est pas bien ?)

    ça continue de marcher avec les histoires de cycle ?

    Bill
     
  9. nab17connection

    Points Repaire:
    1 900
    Recos reçues:
    1
    Messages:
    1 051
    Appréciations:
    +0 / 0 / -0
    oui si tu veux du random, ca ira :)
    si tu as "dv=1.5" par exemple, tu mets "dv+random()" pour avoir une duree aleatoire entre 1.5 et 2.5, tu mettras "dv+random(2)" pour avoir une avoir une duree entre 1.5 et 3.5.
    tu peux aussi directement definir ton "dv" comme une valeur aleatoire, par exemple "dv=random(1.5,2.5)" et cela te donnera une valeur aleatoire entre 1.5 et 2.5 pour "dv"

    Autre type de parentage:

    pour les methodes de conversion de l espace calque (c est comme ca que ca s appelle), je trouve que l exemple de Dan Ebberts lensflare+light est vraiment pas mal pour saisir la methode "toComp".
    je detaille un peu son exemple:
    il a une scene 3D, dans laquelle il anime une lumiere (une trajectoire en gros en ligne droite qui s enfonce dans la profondeur de la comp. Une lumiere bien sur ne se voit pas "physiquement", il souhaite donc la materialiser par un halo.
    Le probleme est que l effet halo est un effet en 2D, il ne peut donc pas le deplacer dans la profondeur.
    La methode toComp vient a la rescousse. Elle permet de convertir un point ou un ensemble de l espace calque (notre calque lumiere) en un point ou un ensemble de l espace composition (notre écran de comp).
    Il va ainsi convertir la position de la lumiere dans son espace calque (c est a dire [0,0,0], la lumiere est l origine de son espace) dans un espace 2d (celui de notre comp); le résultat de cette conversion pourra donc etre utilisé comme position pour le halo.
    On a donc l illusion que le halo eclaire rellement la scene 3D
    Chapeau Danny the Dog :bravo: !

    je me suis amusé a refaire une animation comme la sienne :)
    toComp_lumiere.mov

    ps:elle est super "bold" la police :D
     
  10. bildebool

    Points Repaire:
    1 450
    Recos reçues:
    0
    Messages:
    940
    Appréciations:
    +0 / 1 / -0
    Ok merci pour tout !

    Je vais regarder l'exemple que tu donnes de plus pres, j'ai l'impression que ça peut etre bien utile !

    Bill
     
  11. thx1138

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    71
    Appréciations:
    +0 / 0 / -0
    Excelente idée à mon avis.
     
  12. bildebool

    Points Repaire:
    1 450
    Recos reçues:
    0
    Messages:
    940
    Appréciations:
    +0 / 1 / -0
    yo !

    Bon alors toujours cette histoire de random :

    si je met cette expression (que j'ai encore réarangée pour ma compréhension perso)
    ok tout va bien, toute les deux sec j'ai un tremblement de 0.5 sec.
    Mais si je met cette expression :
    au début (apres la premiere partie de tremblement), j'ai bien 0.5sec de tremblmement toute les 2sec, mais plus j'avance dans le temps, moins j'ai de temps entre les tremnlements....

    Avec random(2.5,3.5) c'est idem... est ce que ça vient du fait d'utilser du modulo sur une valeur variable ?

    Bill

    PS : nab c'est quoi cette histoire de police bold ???
     
  13. nab17connection

    Points Repaire:
    1 900
    Recos reçues:
    1
    Messages:
    1 051
    Appréciations:
    +0 / 0 / -0
    seedRandom a la rescousse

    salut :)

    pour la "police bold" c etait juste a cause de mon titre en gras "Autre type de ..."

    sinon, oui ce qui t arrive est normal, car utilisée telle quelle, la méthode "random()" te génère un nombre aleatoire à chaque image.
    donc dans ton cas, à chaque image, qd l'expression est evaluée, elle te donne une durée différente (pour un 'cyle'), alors ca vite devenir le bordel car il n'y aura plus de 'structure'.

    pour résoudre ce probleme et "canaliser" le resulat de la methode "random()", on doit utiliser une autre fonction avant: "seedRandom()".
    je te le dis tout de suite, c est plus compliqué ... mais un jour ou l'autre tu reviendras sur ce concept ;)

    Elle va nous permettre dans ton cas, de calculer un intervalle de temps aléatoire (correspondant à la duree entre deux débuts de cycles ("fixe+tremblement") consecutifs ). Une boucle "while" permet de recalculer tous les intervalles de temps calculés dans le passé et ainsi de garder la 'structure' que tu avais perdue lorsque tu utilisais seulement "random()".

    Dans l'expression qui suit, toutes les "entre 3 et 6s", un nouveau cycle commence, ce cycle représente la durée fixe+duree tremblement(1s ici). Le calque restera fixe pendant "duree du cycle - duree tremblement".
    Code:
    // cycle = duree fixe puis duree tremblement 
    minStartCycle= 3.0; // duree mininim entre deux debuts de cycle 
    maxStartCycle = 6.0; //duree maximum  "     "      "   "   "
    wg = 1.0; // duree tremblement
    freq = 10; // frequence tremblement
    amp = 5; // amplitude tremblement
    
    end = 0;
    seed = 0;
    while ( end <= time){
      seed ++;
      seedRandom(seed,true);
      end += random(minStartCycle,maxStartCycle);
    }
    if (time > end-wg) wiggle(freq,amp);  
    else  position;
    
    
    Pour avoir de l'information et une foule d exemples sur cette technique je te recommande de lire cette page de Dan Ebberts :
    seedRandom_random

    Tu vas sans doute mettre du temps à piger comment cela marche, mais rassure toi, ceci fait partie des choses les plus délicates à maitriser dans les expressions. Ce n'est pas vraiment au programme des débutants, mais tu y reviendras sans doute dans quelque temps ;)

    ah oui au fait pour le "wiggle()", le premier argument est la frequence , le deuxieme est l amplitude: wiggle(freq,amp)...pas l'inverse comme l'étourderie que j ai ecrite dans le post plus haut (que je corrige de ce pas d ailleurs ;).

    ps:pour l Aide aux expressions, si tu veux tu peux creer toi-meme un Topic avec pour titre "Aide sur les Expressions", tu présentes rapido l'objectif du Post et au fil du temps les repairenautes viendront y poser toute question relative aux expressions :)
     
    #13 nab17connection, 25 Novembre 2005
    Dernière édition: 26 Novembre 2005
  14. bildebool

    Points Repaire:
    1 450
    Recos reçues:
    0
    Messages:
    940
    Appréciations:
    +0 / 1 / -0
    Il me semblait que l'utilisation d'un random pour le cycle allait foirer...

    En tout cas ton expression fonctionne farpaitement zanks a lot !

    Bon j'ai trouvé ce lien sur creative cow (du meme auteur que ton lien d'ailleurs) où il explique un peu plus en detail l'utilisation de cette fonction. Mais p****** c'est chaud à pigé !

    Je crois avoir compris maintenant comment marchait le seed random. En fait pour une valeur de seed, pour chaque appel d'un random, il nous sort une valeur toujours identique pour un calque donné etc..., si on change le seed, ou le calque, si on appelle de nouveau le random, on a une nouvelle valeur (bon ça c'est pour schematiser...). Là où ça se complique c'est dans l'utilisation qu'on en fait. En fait la question serait comment construit on l'expression autour du seedrandom...

    Bon je vais tenter de piger, mais comme tu dis je crois que pour une newbie c'est chaud...

    Bon dans ton expression c'est pareil il faut piger comment tu t'en serts...

    Juste une precision : peux tu me dire à quoi servent les "+" de "seed ++" et "end += etc." ? Tu incrémentes la valeur ?

    Bill

    PS : bon là je trouve qu'on est bien au chaud pour finir sur cette discussion, pour ma prochaine question je crée le post les expression pour newbie !
     
    #14 bildebool, 25 Novembre 2005
    Dernière édition: 28 Novembre 2005
  15. nab17connection

    Points Repaire:
    1 900
    Recos reçues:
    1
    Messages:
    1 051
    Appréciations:
    +0 / 0 / -0
    exactement ! c est le bon terme :)
    Code:
    seed++;
       est equivalent a 
    seed+=1;
       ou encore
    seed=seed+1;
    tu choisis celle que tu preferes...ellles font toutes augmenter la valeur de "seed" d'une unité.
     
Chargement...
Discussions similaires - Markers expressions
  1. ottix
    Réponses:
    9
    Nb. vues:
    670

Dernières occasions

 

Partager cette page