module inscription newsletter haut de page forum mobile

Rejeter la 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
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
Rejeter la 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

lier une valeur à la présence de plusieurs calques grâce à une expression

Discussion dans 'Adobe After Effects' créé par apoal1, 13 Avril 2006.

Tags:
  1. apoal1

    Points Repaire:
    1 200
    Recos reçues:
    3
    Messages:
    740
    Appréciations:
    +0 / 0 / -0
    Bonjour,

    je ne sais pas si mon titre est explicite, je vais donc vous présenter mon souhait.

    j'ai dans ma comp principale: un calque que je veux animer et une précomp constitué d'un enchainement de solides qui ne se superposent jamais et qui n'ont jamais été modifiés.

    je voudrais que l'opacité de mon calque varie (0 ou 100) selon qu'il y est un solide à l'instant dans la précomp.

    je voudrais surtout que son opacité soit de 0% lors de la présence d'un calque dont l'index est pair, et reste à 100% lors de la présence d'un calque impair ou d'aucun calque.

    à cause d'un coupure internet j'ai eu le temps de faire le tour de l'aide d'after en la matière (et un tour sur nabscripts.com ensuite pour vérifier que je n'avais rien oublier), et je n'ai rien vu d'évident, j'ai eu quelques idées (InPoint et OutPoint; linear) mais si une expression ne peut pas intégrer les valeurs de plusieurs calques... si je post c'est que j'ai espoir: l'expression thiscomp.layer(1).opacity;thiscomp.layer(2).opacity; ne fait pas d'erreur mais renvoi la valeur du calque 2 uniquement...

    d'avance merci

    A Plus
     
  2. nab17connection

    Points Repaire:
    1 900
    Recos reçues:
    1
    Messages:
    1 051
    Appréciations:
    +0 / 0 / -0
    bonne question !

    et en plus tu n'as pas de chance car dans l'aide ils se sont trompés à ce sujet :rolleyes:.
    il faut que tu te serves de l'attribut "active". Cet attribut (de calque) t indique si le calque est "actif" au temps courant (i.e. si le temps courant est entre le 'in' et le 'out' du calque). Dans l aide ils se sont emmelés les pinceaux et ont donne une definition qui correspond a celle de "enabled" (qd tu coches ou decoches l'icone de l'oeil).

    j'aurais ecrit un truc comme ca:
    -op = 0;
    -on regarde tous les calques de la precomp et si l'un d entre eux est "active" et d index pair, alors ---> op = 100;

    ce qui donnerait l'expression d'opacité suivante:
    Code:
    PrC = comp("précomp");
    op = 0;
    for (i = 1; i <= PrC.numLayers; i++) {
          if (PrC.layer(i).active == true && i%2 == 0)
              op = 100;
    }
    op;
    
    ps: tu te mets aux expressions, cool :bravo:
     
    #2 nab17connection, 14 Avril 2006
    Dernière édition: 17 Avril 2006
  3. apoal1

    Points Repaire:
    1 200
    Recos reçues:
    3
    Messages:
    740
    Appréciations:
    +0 / 0 / -0
    :bravo: & :jap:
    Re

    quelle bonne surprise tu me donne à cette heure (l'heure du premier métro à panam's time)! merci vraiment nab, tu as sauvé une idée que j'affectionnait (en 3d c'est le coup de montrer l'animation filière du squelette), malgré des raccourcis claviers révisés et un échauffement des doigts digne d'un pianiste, j'allais lacher l'affaire.

    ton expression marche parfaitement. je l'ai dupliqué dans une autre comp principale pour faire la même chose avec les calques impaires, pour cela j'ai remplacé le 0 par un 1 dans l'instruction suivante:
    Code:
    i%2 == 0
    
    PS:il y a, je crois, une autre erreur dans l'aide sur les expressions. je ne compte pas l'utilisé mais bon. il marque: Ensemble mul(vec1, amount) {vec1 est un ensemble*; amount est un nombre} Divise chaque élément du vecteur par la valeur amount. le problème c'est qu'il marque la même expression pour cette opération en multiplier. connait-tu la vrai formule? (ps du ps: je voit bien ce qu'est un nombre, mais qu'est-ce qu'il appelle un ensemble et comment le formuler si l'idée me prenait de le définir (ex: {1-1000})?

    PS:
    moi aussi je trouve ça cool quand je me met aux expressions : )

    +
     
  4. nab17connection

    Points Repaire:
    1 900
    Recos reçues:
    1
    Messages:
    1 051
    Appréciations:
    +0 / 0 / -0
    mul(vec,nombre) pour multiplier un vecteur par un nombre (ex: mul([10,10,],3) = 3 * [10,10] = [30,30])
    div(vec,nombre) pour diviser un vecteur par un nombre ...

    un exemple concret simple que tu peux tester a propos du "div":
    _crée un petit solide vert (style un rond) et tu le dupliques pour avoir au total 4 ronds que tu renommes A,B,C,D (peut importe "qui est qui"...)
    _crée un solide blanc, allez un ptit rond aussi, et mets lui cette expression de position:
    Code:
    Apos=thisComp.layer("A").position; Bpos=thisComp.layer("B").position;
    Cpos=thisComp.layer("C").position; Dpos=thisComp.layer("D").position;
    div(Apos+Bpos+Cpos+Dpos,4);
    
    le rond blanc se vient positionner automatiquement au centre des 4 ronds verts...bouge avec la souris un des ronds verts...anime-les...
    tu peux t'amuser à passer les calques en 3D, cela marchera aussi.

    un ensemble* designe ici un vecteur donc ca fonctionne pour type de vecteur (2D 3D...)
     
  5. apoal1

    Points Repaire:
    1 200
    Recos reçues:
    3
    Messages:
    740
    Appréciations:
    +0 / 0 / -0
    Re

    ha les vecteurs, il va falloir que je resorte mes cours du lycée.
    merci

    +
     
  6. apoal1

    Points Repaire:
    1 200
    Recos reçues:
    3
    Messages:
    740
    Appréciations:
    +0 / 0 / -0
    ça marche plus

    Slt,

    j'ai voulu retouché à la partie qui utilise l'expression de Nab17. malheureusement ça ne marche plus qu'à moitié et je ne comprend vraiment pas pourquoi...

    déjà le projet: http://www.k-sur.fr/repaire/ndex.aep

    dans la comp "2-fond droite", ou est mis "i%2==1", le calque disparait bien (4:49:10) et apparait bien (4:49:15)

    dans la comp "2-fond gauche", ou est mis "i%2==0", le calque ne disparait pas à ces deux temps. comme si le "if" n'était jamais "true" (j'ai changé l'expression pour que si "if"=true => op=0).

    mais si on regarde les temps 2:00:00 et 2:00:10; ça marche. en fait les calques qui se trouve vers 5:00:00 on étés copiés-collés d'une autre comp. en essayant de lier l'autre comp direct les 4:49:** ne marche pas non plus.

    la comp normal c'est "synchro", l'autre c'est "prologue". elles ont étées faites à des périodes différentes et je ne peut pas me rappeller qu'est-ce que j'ai fait de différent.

    j'espère que quelqu'un va deviner pourquoi c'est calques sont si différents pour que quand ils sont pairs, il ne soit pas "détectés"

    +
     
    #6 apoal1, 4 Juillet 2006
    Dernière édition: 13 Septembre 2007
  7. nab17connection

    Points Repaire:
    1 900
    Recos reçues:
    1
    Messages:
    1 051
    Appréciations:
    +0 / 0 / -0
    car la boucle for parcourt tous les calques de la comp "synchro" et comme tu as des calques additionnels en bas de ta comp...
    solution:
    - soit restreindre la boucle (exemple: ...numLayers - 3)
    - soit l interrompre des qu'un calque a été detecté ( avec l instruction break )

    peut etre qu'il serait judicieux de faire tes essais sur des comps de plus petite taille (moins de calques et plus courte..) et une fois que le mécanisme est au point, tu balances sur sur du plus gros ...

    ps: quelques lignes de script peuvent te positionner (et animer) tous tes calques en une fraction de seconde...si c est du sous titrage (ssa) as-tu regardé le travail de Paul Tuersley ici : SSA (aenhancers.com), cela pourrait t etre utile (ou pour une autre fois ...)
     
  8. apoal1

    Points Repaire:
    1 200
    Recos reçues:
    3
    Messages:
    740
    Appréciations:
    +0 / 0 / -0
    Slt,

    les calques additionnels... je n'étais même pas allé jusqu'en bas de ma comp.
    normal qu'avec un calque pair et un impair sur toute la longueur de la comp, que after bug,
    je comprend même pas comment il à fait pour comprendre ce que je voulais jusque là.

    bien sur je tient à remercier Nab pour son soutien :)

    j'aurais un portable PC pour le mois d'août, je viens de télécharger Substation Alpha (freeware) en l'attendant. il faut vraiment que je test ça (j'avais déjà croiser ce script qui est dispo sur un site d'un repairnaute: http://naru.easynetonline.net/yaoithrower/index.php )

    +;)
     
Chargement...

Partager cette page