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: animer un masque par expression est rendu possible

Discussion in 'Adobe After Effects' started by nab17connection, Feb 11, 2006.

Tags:
  1. nab17connection

    Trophy Points:
    1,900
    Likes Received:
    1
    Messages:
    1,051
    Appréciations:
    +0 / 0 / -0
    Bill, à propos de la direction.... d'après ce que je constate, la direction des masques que tu dessines toi-même semble être toujours la même : le sens trigonométrique ("antihoraire").
    En revanche si tes masques ont été créés par un outil, par exemple en cliquant droit puis 'Créer des silhouettes' sur un texte, cela n'est pas toujours vrai. Ce sera le sens trigonométrique pour les masques "exterieurs" (comme pour la lettre "t" par ex), mais lorsqu'il y aura un autre masque nécessaire pour former la lettre (comme pour la lettre "e" par ex), le masque "interieur" est dirigé dans l'autre sens, le sens horaire donc.
    Autre constatation, quand c'est AE qui crée le masque pour toi, il crée un masque avec le premier point EGAL au dernier (ex si tu as 10 points sur ta lettre, le point 1 et le point 10 sont les mêmes).

    Je ne trouve pas d'informations ("sûres") a ce sujet ni dans l'Aide ni dans le Scripting Guide...c'est donc simplement des observations que j'ai faites (sans autres garanties :rire: ).

    Au sujet des masques non-fermés, je ne m'en étais pas préoccupé jusqu'à maintenant ...et le script te créait automatiquement un masque fermé. Je viens donc de rajouter deux-trois petites lignes de code pour ajuster cela. Le script peut animer maintenant un masque ouvert comme il le faisait avec un masque fermé.

    Re-téléchargez le script : MaskPoints_and_Expressions.jsx
     
  2. Sequelles

    Sequelles Modérateur
    Modérateur So

    Trophy Points:
    11,780
    Likes Received:
    20
    Messages:
    4,261
    Appréciations:
    +2 / 13 / -0
    RotoBézier

    A propos des RotoBézier

    D'après ce que j'ai compris avec les script on ne peut pas gérer un masque RotoBézier comme dans l'interface, c'est à dire en gérant uniquement les tensions.
    Dans ton script le masque résultant est automatiquement en Bézier.
    On peut convertir facilement un masque en Bézier en RotoBézier par un clic droit, mais quand on passe de Bézier à RotoBézier, tout les sommets qui ne sont pas des angles sont convertie en sommet RotoBézier avec une tension de 33%
     
  3. bildebool

    Trophy Points:
    1,450
    Likes Received:
    0
    Messages:
    940
    Appréciations:
    +0 / 1 / -0
    Ok donc en gros pour chq nouveau masque, le mieux est de verifier le sens grace a ton script si on n'est pas sur de celui ci, vu que la regle "sens trigo" n'est pas générale.

    That's good ! En fait je ne m'etais pas posé la question, j'avoue ne pas avoir eu le temps de tester ce script, mais ce sera fait d'ici peu et je pense que son utilisation me sera d'une grande aide d'ici peu !

    Bill
     
  4. nab17connection

    Trophy Points:
    1,900
    Likes Received:
    1
    Messages:
    1,051
    Appréciations:
    +0 / 0 / -0
    Je viens de rajouter quelques lignes qui permettent de regler ce probleme, il me semble.
    Si tu n'écris pas d expression sur les propriétés de tangentes, le script ne va pas créer un nouveau masque "from scratch" (comme il le faisait jusqu'a maintenant) mais va tout simplement dupliquer le calque d'origine.
    Donc si ton masque est Rotobézier (avec les tensions que tu lui a defini aux sommets), le masque animé sera également Rotobézier (avec ces memes tensions).
    Dans le cas ou tu animerais les tangentes le masque serait Bezier (avec les tangentes aux sommets que tu lui donnes par l expression).

    C'est cool chacun apporte sa brique...ca commence à être script collectif :bravo:

    le lien (tjs le meme): MaskPoints_and_Expressions.jsx
     
  5. bildebool

    Trophy Points:
    1,450
    Likes Received:
    0
    Messages:
    940
    Appréciations:
    +0 / 1 / -0
    j'aime bien ton sens du mot "collectif" ! :o C'est cool ça me donne l'impression d'ecrire des scripts moi aussi ! :lol:

    Bill
     
  6. Sequelles

    Sequelles Modérateur
    Modérateur So

    Trophy Points:
    11,780
    Likes Received:
    20
    Messages:
    4,261
    Appréciations:
    +2 / 13 / -0
    Un technique pour connaître le sens de rotation d'un masque: c'est de l'ouvrir et de voir où se place le premier sommet.

    c'est collectif mais c'est nab qui bosse:D

    Si tu veux encore apporter quelque chose à ce script, je me demandai comment avoir accès au numéro du sommet dans l'expression qu'on ajoute.

    Est-ce qu'on récupère le numéro du sommet, avec
    Mais j'imagine que tu peux stocker le numéro du sommet dans une variable accessible par l'expression:perplexe:
     
  7. bildebool

    Trophy Points:
    1,450
    Likes Received:
    0
    Messages:
    940
    Appréciations:
    +0 / 1 / -0
    2 choses par rapport à ça :
    - je n'arrive pas à ouvrir un masque, meme si je le trace ouvert et que je le ferme par la fonction "fermé". Ensuite l'option reste grisée... Pourtant je l'ai deja fait, mais je n'y arrive plus.
    - En fait je n'avais jamais remarqué sous AE6.5, car les points n'etaient pas tres gros, mais sur AE7 c'est nettement plus visible, le premier sommet d'un masque est un point plus gros que les autres. Ce qui ne donne pas le sens mais en tout cas celui ci se repere bcp mieux sur AE7.

    Bill
     
  8. nab17connection

    Trophy Points:
    1,900
    Likes Received:
    1
    Messages:
    1,051
    Appréciations:
    +0 / 0 / -0
    salut,
    ben en fait je crois que c'est pas bon pour les masques ouverts...je ne sais pas trop pourquoi mais le masque semble se fermer automatiquement ...

    Sequelles, oui tu peux utiliser propertyGroup() et propertyIndex, mais attention tout de meme si tu as d autres effets sur le calque....(car le propertyGroup est la catégorie "Effect", donc si tu en as déja avant de construire les effets Points, il y aura une decalage entre l index de la propriete et le numero du sommet)

    bon je vais laisser ce script un peu de coté pour le moment car ca commence à me ... :D

    EDIT : bon finalement j ai trouvé pour les masques ouverts .. mais encore un ptit pb au niveau de l animation, car soit je recupere les tensions d'un rotobezier d un masque fermé(sequelles), soit je peux travailler avec des masques ouverts (bill). maintenant faudrait pouvoir faire les deux :)
    je laisse mon test sur un masque rotobezier ouvert (une ligne droite) sur lequel j utilise un cosinus (je cherchais a refaire ce qu on faisait avec du texte Sequelles, tu te souviens..mais c'est pas encore ca)
    test.swf

    (MaskPoints_and_Expressions.jsx)
     
    #38 nab17connection, Feb 19, 2006
    Last edited: Feb 20, 2006
  9. Sequelles

    Sequelles Modérateur
    Modérateur So

    Trophy Points:
    11,780
    Likes Received:
    20
    Messages:
    4,261
    Appréciations:
    +2 / 13 / -0
    bildebool, pour ouvrir un masque fermé, avant de faire le clic droit il faut selectionner deux points.

    nab, j'espere que tu auras le temps de faire une page récapitulative sur: nabscripts.com de tous les scripts que tu as développé:bravo:
     
  10. bildebool

    Trophy Points:
    1,450
    Likes Received:
    0
    Messages:
    940
    Appréciations:
    +0 / 1 / -0
    ah ok c'est vrai je m'en souvient maintenant ! merci pour l'info !

    Bill
     
    #40 bildebool, Feb 20, 2006
    Last edited: Feb 20, 2006
  11. nab17connection

    Trophy Points:
    1,900
    Likes Received:
    1
    Messages:
    1,051
    Appréciations:
    +0 / 0 / -0
    oui c est en préparation...en fait j ai presque terminé.
    ce sera une page web sur nabscripts, où l'on pourra telecharger tout plein de scripts (y compris la palette qui en regroupe pas mal), avec des descriptifs, etc...

    comme tu m'as fait bosser Sequelles avec ces masques :lol: , j ai pris un peu de retard mais ca sera pret pour le WE prochain je pense :)
     
  12. nab17connection

    Trophy Points:
    1,900
    Likes Received:
    1
    Messages:
    1,051
    Appréciations:
    +0 / 0 / -0
    Je reviens par ici car j'ai quelquechose sur le lien entre la Forme du masque et les expressions. Un script qui crée un masque dont chaque point est le centre d'un calque de la comp. En d autres termes le masque relie les calques.
    On commence par animer les calques a l aide d'une expresion de position (un wiggle() dans mon exemple), on les selectionne et on execute ce bout de code (à sauver en "xxx.jsx"):

    Code:
    {
    var myComp = app.project.activeItem;	
    if(myComp == null || !(myComp instanceof CompItem))
    	alert("Sélectionner d'abord les calques.")
    else {
    	app.beginUndoGroup("LinkingMask.jsx");
    	var N = myComp.selectedLayers.length;
    	var W = myComp.width; var H = myComp.height; 
    	var pixAsp = myComp.pixelAspect;
    	var myMaskLayer = myComp.layers.addSolid([1,1,1],"liaisons",W,H,pixAsp);
    	var myMask = myMaskLayer.Masks.addProperty("Mask"); 
    	myMaskLayer.moveToEnd();	
    	for (var t = 0; t <= myComp.duration; t+= myComp.frameDuration) { 
    		var myVertices = new Array(); 
    		for (var i = 1; i <= N; i++) {
    			var thePos = myComp.layer(i).position.valueAtTime(t,false);
    			myVertices[myVertices.length] = [thePos[0],thePos[1]];
    		}
    		var myShape = new Shape();
    		myShape.vertices = myVertices;
    		myMask.maskShape.setValueAtTime(t,myShape);
    	}
    	myMask.maskShape.value.closed = true;
    	myMask.maskMode = MaskMode.NONE;
    	app.endUndoGroup();
    }
    }
    
    Lorsque le masque est crée on peut le rendre visible avec l'effet trait par exemple.

    Ca va peut etre donner des idées a certains pour approndir le truc :) ..là c'est une sorte d'ébauche :cool: ..

    [​IMG]
     
  13. logicalnot

    Trophy Points:
    1,000
    Likes Received:
    0
    Messages:
    491
    Appréciations:
    +0 / 0 / -0
    Effectivement, ce merveilleux bout de code semble être surpuissant. :bravo:
    Malheureusement, je ne comprends pas comment on l'applique… :rolleyes:

    J'ai :
    - bien sauver le script en jsx.
    - créer 2 solides avec chacun un masque (sphère)
    - charger et appliquer le script (aucun résultat visible)
    J'ai raté quelque chose en chemin.

    Pourrais-tu mettre à disposition le projet AE de ton test?
    Merci d'avance.
    :jap:
     
  14. nab17connection

    Trophy Points:
    1,900
    Likes Received:
    1
    Messages:
    1,051
    Appréciations:
    +0 / 0 / -0
    Jacques a dit :
     
  15. nab17connection

    Trophy Points:
    1,900
    Likes Received:
    1
    Messages:
    1,051
    Appréciations:
    +0 / 0 / -0
    un calque blanc nommé "liaisons" doit être créé en bas de ta comp...
    sur ce calque tu appliques l'effet Trait et tu spécifies "Transparent" pour le Style de peinture.
    Les liaisons se font dans l ordre de tes calques dans la pile, le calque #1 est relié au calque #2, lui même relié au #3, etc ...

    linkingMask.wmv
     
Loading...

Share This Page

Vous souhaitez annoncer sur le Repaire ? Contactez-nous