module inscription newsletter haut de page forum mobile

Dismiss Notice

formations etalonnage sur davinci resolve

Nos Formations Etalonnage avec Forest reviennent en octobre !
Adoptez une réelle méthodologie d'étalonnage professionnelle et atteignez vos objectifs créatifs avec nos formations intensives sur 3 jours
Toutes les infos
Dismiss 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
Dismiss Notice

Formation Lumière - Pratique Intensive du 14 au 16 octobre à Paris
Formez-vous avec cet atelier de pratique intensive dans des conditions exceptionnelles ! Formation finançable.
Toutes les infos

Ateliers et Formations

script : faire passer une variable d'un layer a l'autre

Discussion in 'Adobe After Effects' started by kharon, Dec 16, 2008.

  1. kharon

    Trophy Points:
    100
    Likes Received:
    0
    Messages:
    12
    Appréciations:
    +0 / 0 / -0
    Yop, donc j'attaque les expressions...
    Je souhaite faire passer une valeur d'un layer à l'autre. Plus précisément je souhaite déclarer une variable qui représente une durée et faire apparaitre mes calques les un à la suite des autres en fonction de cette durée, pour ça il faut que je puisse déclarer une variable globale et l'appeler depuis chaque calque... Il me semble avoir lu que ce n'est pas possible, mais ça m'étonnerai.

    Merci, K
     
  2. magna_

    Trophy Points:
    1,200
    Likes Received:
    2
    Messages:
    207
    Appréciations:
    +0 / 0 / -0
    c'est pareil, je me galère à trouver la syntaxe, ms c'est surement faisable.
    si quelqu'un a une réponse, je suis preneur !!!
     
  3. matttrebor

    Trophy Points:
    1,200
    Likes Received:
    2
    Messages:
    235
    Appréciations:
    +0 / 0 / -0
    Si j'ai bien compris, tu veux faire apparaitre plusieurs calques les uns à la suite, et qu 'ils apparaissent tous de la meme maniere, c'est à dire la vitesse d'apparition.
    Si c'est bien cela, va sur le freelance saucisse
    J'explique cela dans mon dernier post.
    Si tu débutes dans les expressions, je te conseille de lire quelques articles du début du blog, car je vais un peu vite sur ce coup là.
     
  4. magna_

    Trophy Points:
    1,200
    Likes Received:
    2
    Messages:
    207
    Appréciations:
    +0 / 0 / -0
    en fait, je n'essaye pas vraiment de faire ce qui est ecrit ds le 1er post de karon.
    ce que je voulais dire, c'est que par ex sur une propriété d'un calque("calque1"), dans ma partie expression, j'ai une variable qui s'appelle "toto" .
    je voudrais que sur une propriété d'un autre calque("calque2") je récupère ma variable "toto" du claque 1

    du style (je ne sais que ça ne marche pas, c'est pour l'exemple :) ) :
    variableToto = thisComp.layer("calque1").toto

    j'ai lu un autre message de Sequelles (de 2007) expliquant que ce n'est pas possible. et qu'il faudrait mettre les variables qu'on a besoin de recuperer sur des parametres glissieres. ce que je trouve tres galere.
     
  5. felfer

    Trophy Points:
    1,650
    Likes Received:
    4
    Messages:
    618
    Appréciations:
    +0 / 1 / -0
    C'est toi le freelance saucisse?
    Ton blog sur les expressions est génial pour ceux qui s'y intéresse.
    J'ai refait tout tes exercices il y a quelque mois, ça m'a beaucoup aidé.

    Merci encore...:jap:
     
  6. matttrebor

    Trophy Points:
    1,200
    Likes Received:
    2
    Messages:
    235
    Appréciations:
    +0 / 0 / -0
    En fait, je ne comprends pas tres bien ce que tu appelles "variable"

    Une variable est créée dans une propriété, pas directement sur un calque.
    Par ex, dans position, ou rotation, ou bien un paramètre d'effet.

    Peux tu préciser ce que tu veux faire plutôt ?
    Peut être que ce que tu cherches à faire a une autre solution que celle que tu imagines.

    (merci Felfer. Comme je pars du début du début du début, pour le moment ça reste simple, j'espère avoir le temps de rentrer dans les entrailles de la bête sans jamais laisser personne en route, pas simple...)
     
  7. magna_

    Trophy Points:
    1,200
    Likes Received:
    2
    Messages:
    207
    Appréciations:
    +0 / 0 / -0
    bah le problème, c'est que je ne fais rien de spécial, je bidouille, je test pour voir ce qui est possible de faire ou non, etc...
    je te mets un exemple :
    sur la propriété du point d'ancrage du "claque1", j'ai :

    var amplitudeWiggle = random(5,40);
    [ value[0] , wiggle(25,amplitudeWiggle)[1] ]

    ici ce que j'apelle variable est "amplitudeWiggle"

    imagines que pour une raison ou une autre, j'ai besoin de récupérer la valeur de "amplitudeWiggle" sur la propriété du point d'ancrage du "claque2"...

    comment que j'fais ? ;-)
     
  8. kharon

    Trophy Points:
    100
    Likes Received:
    0
    Messages:
    12
    Appréciations:
    +0 / 0 / -0
    Je veux un decaller chaque layer de ma compo, de 50px vers la droite par rapport à la position initiale. Si j'ai 20 layers, j'aimerai pouvoir definir une variable du genre :

    var decallage = 50px

    Ensuite je déclare la position de chaque layer en fonction de cette variable decallage (qui est commun a TOUS les layers).

    Tout l'interet est que si je veux modifier la valeur de ce decallage (par exemple decallage = 200px), je ne le fais qu'UNE SEULE fois et tous les autres calques se mettent a jour (je n'ai pas a modifier à la main, le decallage dans chaque layer)

    z'en pensez quoi ?

    K
     
  9. matttrebor

    Trophy Points:
    1,200
    Likes Received:
    2
    Messages:
    235
    Appréciations:
    +0 / 0 / -0
    magna :
    Si j'ai bien compris : Apparemment, Séquelles t'a parlé de paramètre glissère, et il a entièrement raison.
    La raison est double :
    -On ne peut pas récuperer une partie d'une expression. La seule chose que l'on peut prendre d'une expression, c'est sa valeur finale. Ca c'est la raison technique.
    -maintenant, la raison logique : Tu veux créer une variable qui va servir à plusieurs calques (2,50 ou 1000). Il n y a donc aucune raison qu'un calque lambda ait tout le code pour lui, et que les autres calques doivent se démerder.
    Quand une variable sert à plusieurs calque, on la sépare :
    Voilà comment je procède, c'est d'ailleurs très général comme façon de faire. Je crée un calque Null que j'appelle par exemple "controle wiggle"
    Je lui applique un paramètre glissière, que j'appelle "wiggle" par exemple.
    Ensuite, dans chaque calque, je vais écrire ceci:
    W=thisComp.layer('controle wiggle").effet("wiggle");
    ensuite tu utilises W

    Et pareil avec chaque calque.
    Ca n'est pas compliqué, c meme plus simple, plus compréhensible
     
  10. felfer

    Trophy Points:
    1,650
    Likes Received:
    4
    Messages:
    618
    Appréciations:
    +0 / 1 / -0
    Ben justement, je ne saurait que trop conseiller d'aborder les expressions a travers les pages du freelance saucisse...
    C'est rapide, clair, efficace et c'est même drôle (je pensais pas sourire un jour en lisant du code...)
     
  11. matttrebor

    Trophy Points:
    1,200
    Likes Received:
    2
    Messages:
    235
    Appréciations:
    +0 / 0 / -0
    Kharon:
    Ce que j'ai dit à magna reste valable, c'est le meme principe;
    Deja, lire ça : le freelance saucisse: EXPRESSIONS : index

    Ca c'est pour l'utilisation de INDEX.
    Pour affiner le principe. On crée un Null de controle avec un paramètre glissière, qu'on appelle par exemple "décalage".
    Pour chaque position de calque, on va écrire ceci:
    D=thisComp.layer("Null01").effect("décalage")("curseur");
    On accroche D= à la valeur du curseur donc.
    Ensuite on écrit
    [D*index,200]
    Voilà, si le calque est en position 2 dans la timeline, il sera en [80,200] si décalage vaut 40.
    Donc en changeant la valeur de décalage, tous les calques se mettent à jour.
    On peut aussi mettre le meme Null en tant que parent pour tous les calques, pour pouvoir les placer "à la main" en plus de leur décalage.

    Le souci étant le suivant; ça fonctionne si le 1er calque est en position 1 dans le calque, et les autres derrière.
    Mais si le 1er calque de la suite est en position 15 dans la timeline, son index faudra doncc 15, donc le décalage va etre multiplié par 15 des le début, c pas terrible.
    Voilà comment faire.
    Je place le NULL de controle juste au dessus du premier calque.
    Pour la position de chaque calque, voilà l'expression corrigé :

    D=thisComp.layer("Null01").effect("décalage")("curseur");
    i=thisComp.layer("Null01").index;
    [D* ( index-i) , 200]

    Comme le Null est au dessus du premier calque, (index-i) vaudra toujours 1 pour le 1er calque, 2 pour le deuxieme, etc.

    voilà voilà
     
  12. magna_

    Trophy Points:
    1,200
    Likes Received:
    2
    Messages:
    207
    Appréciations:
    +0 / 0 / -0
    merci pour l'explication matttrebor.
    je suis en train de suivre ton site. il est en effet bien foutu.
    je suis rendu a l'exercice des mouches. j'ai suivi et compris, pas de probleme.
    la où ca se complique, j'ai essayé de faire les ajouts sur l'anim dt tu parlais, c'est a dire, faire trembler la cible plus les "mouches" s'approchent...

    et ca m'énerve, je n'y arrive pas !
    j'ai bien récuperer la distance entre la mouche et la cible avec lenght.
    ms comment traiter cette info pour m'en servir sur l'amplitude du wiggle, placé sur le point d'ancrage de la cible.
    car il faut que plus ma distance augmente, plus mon amplitude est faible et inversement. la je sèche.

    je pourrais utiliser des conditions, du style :
    si distance plus grand que 50, tu bouges pas
    si distance plus petit que 50, tu bouges

    mais dans ce cas l'effet de tremblement n'est plus exponentiel a la distance des mouches, et c'est moins fun :)

    une petite piste pour m'aider....
    merci d'avance !


    EDIT : je crois avoir trouver, avec la fonction "linear"....
     
Loading...

Dernières occasions

 

Share This Page

Dernières Occasions

 
Vous souhaitez annoncer sur le Repaire ? Contactez-nous