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

Nouvelle Formation Prise de son : les inscriptions sont ouvertes !
Maîtrisez la qualité de vos prises de son avec notre formation théorique et pratique de 3 jours ! Du 14 au 16 mai 2024 à Paris.

Newbies' expressions !

Discussion dans 'Adobe After Effects' créé par bildebool, 7 Décembre 2005.

Tags:
  1. bildebool

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

    Bon alors comme on en a parlé sur une discussion précédente, on avait proposé une sorte de jeu des expressions pour les nuls.

    Plutot que de créer une nouvelle discussion pour chaque probleme, autant ce recentrer ici !

    Le but n'est pas non plus d'avoir le résultat tout cuit de la part des maitres en expressions (suivez mon regard !) mais plutot qu'on s'entraide à trouver nos propres expressions, même si on y connait pas grand chose (ce qui est mon cas mais je me soigne !)
    Voilà donc je commence ici, mais ceux qui désirent comme moi apprendre la magie des expressions peuvent poster sans craindre le hors sujet !

    Alors commençons par la fin, c'est à dire les fetes de fin d'année.

    Je souhaite réaliser un fond avec des étoiles qui tournent et varient de taille, plus des flocons qui tombent plus ou moins loin.
    Evidemment je prefererais utiliser des expressions plutot que de me taper le boulot à la main...

    Pour ce qui est des étoiles, je suis bien content nab si tu passes par là que tu m'ai appris via le repaire des expressions la fonction seedrandom !

    Donc j'ai écrit ces expressions, ça fonctionne, maintenant y'a peut etre mieux...
    Voilà.

    Pour les flocons, je souhaiterais qu'ils tombent, jusque là ça va, mais j'aimerais qu'il tombent plus ou moins vite proportionellement à leur echelle, pour simuler la 3D, et à chaque fois boucler le mouvement.

    Je ne sais pas trop comment m'y prendre pour faire tout ça... Donc si l'un d'entre vous peux me guider

    Merci !

    Bill
     
  2. nikolo

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    362
    Appréciations:
    +0 / 0 / -0
    Eh, ton idée est interessante.

    Moi aussi cela m'interresse.

    Le seul rajout que je ferais c'est que j'aiemrais que la neige colle sur l'element sur lequel la neige tombe .

    Ainsi je souhaiterais pouvoir faire demarrer la neige à un instant T et recouvreir petit à petit le sol de neige (un peu comme dans la réalité quoi)
     
  3. bildebool

    Points Repaire:
    1 450
    Recos reçues:
    0
    Messages:
    940
    Appréciations:
    +0 / 1 / -0
    Pour ça, particular le fait, mais pas sur le haut du texte, plutot comme dans cet exemple de trapcode.

    Pour ma part, ça ne me convient pas car je cherche à faire ça simplement (niveau animation) pour un export flash (qui je me suis rendu compte, est tres limité et c'est dur de ne pas dépasser le méga ! Ce qui est hyper lourd pour du flash) (via after of course)

    Bill
     
  4. nikolo

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    362
    Appréciations:
    +0 / 0 / -0
    oui c'est vrai Trapocode le fait.

    j'oublie toujours les possibilité de ce plug.
     
  5. nab17connection

    Points Repaire:
    1 900
    Recos reçues:
    1
    Messages:
    1 051
    Appréciations:
    +0 / 0 / -0
    tu pourrais aussi les animer en position apres les avoir passés en 3D (x, y et z aleatoires); de cette facon tu n as pas a jouer sur l echelle pour simuler une 3D puisque tu es dejà en "3D".
    pour que ceux qui sont loin tombent moins vite que ceux qui passent juste devant la camera, tu peux essayer de trouver une relation entre le y et le z ( exprimé le y en fontion du z quelque part dans ton expression --> "plus le z est grand, plus le y final doit etre proche du y initial")

    :)

    ps:c est un exercice sur les expressions, mais si tu veux vraiment faire de la neige realiste je pense qu il faudrait s orienter vers une autre méthode (ca tu dois certainement le savoir mieux que moi ;))
     
  6. bildebool

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

    Alors le truc c'est que j'aimerais faire un export flash, et je ne cherche pas à faire de la neige réaliste au contraire.
    J'avais justement pensé à passer par une utilisation de la 3D, mais ça ne fonctionne pas avec l'expost flash.
    Je n'arrive pas trop a comprendre les anims flash qu'on voit sur le net avec des dégradé et tout et tout qui pesent a peine 200ko. Avec after on est tout de suite à 1mo meme en utilisant que des objets en vectoriel.... (c'est de la daube after ;) )

    Bref c'est pour celà que je cherche a faire une expression en fonction de l'echelle.

    Mais a la limite ton conseil peut s'y préter.

    Je vais tenter une trouvaille et je reviens !

    Bill
     
  7. nikolo

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    362
    Appréciations:
    +0 / 0 / -0
    si tu es sur mac, il y a de logiciel qui permette de compresser les .swf sinon, si tu as flash mx tu peux optimiser le .swf que tu generes en reglant les options de sortie.

    AE n'est pas l'ideal pour ce genre de truc.

    MAis sous flash, tu peux generer de la neige sur tes elements.
     
  8. bildebool

    Points Repaire:
    1 450
    Recos reçues:
    0
    Messages:
    940
    Appréciations:
    +0 / 1 / -0
    Oui j'imagine..... mais moi le flash j'y comprend rien !
    Mais c'est vrai je me suis apreçu en l'utilisant que ae et son export flash n'est pas recommandé....

    Mais bon je vais le faire qd meme et puis je vais la faire cette expression !

    Bill ;)
     
  9. nab17connection

    Points Repaire:
    1 900
    Recos reçues:
    1
    Messages:
    1 051
    Appréciations:
    +0 / 0 / -0
    ah oui j avais zappé le coup du Flash

    mais si c est en 2D et que tu joues sur l echelle, tu pourrais essayer de trouver une relation entre le decalage en Y (la chute du flocon) et l'echelle (plutot qu entre le Y et le Z si tu fais cela en 3D)
    quelquepart dans ton expression tu aurais quelque chose qui indiquerait "plus l'echelle est grande plus le decalage en Y est important"

    c est dans tes cordes ca Bill ;)
     
  10. bildebool

    Points Repaire:
    1 450
    Recos reçues:
    0
    Messages:
    940
    Appréciations:
    +0 / 1 / -0
    Oui y'a moyen ! Je reviens des que je vous aurais concocter une expression qui sent bon !
    La semaine prochaine, parcque le weekend s'annonce chargé alors....

    Bill
     
  11. bildebool

    Points Repaire:
    1 450
    Recos reçues:
    0
    Messages:
    940
    Appréciations:
    +0 / 1 / -0
    Alors ça y est j'ai fait ma ptite expression !
    Jsuis bien content ça marche plutot bien !

    Alors dites moi un peu ce que je peux simplifier/corriger/améliorer....

    Donc je crée un solide de 20*20 avec masque rond, sur une comp de 640*480.

    Propriété position
    prpiété echelle
    Le résultat

    Ensuite je duplique autant de fois que je veux de flocons.

    Questions :
    - puis je me passer de la dupli par un autre moyen et ainsi reduire le nombre de calques ?
    - Pourquoi dois je mettre ma valeur x à 0 avant d'appliquer l'expression, sinon la fonction random ajoute à la valeur de depart ?

    Autres question n'ayant pas un rapport direct avec cette expressions :
    Est ce possible dans une meme expression de se servir du seedRandom et d'appeler à le fois des randoms faisant appel au seed et des randoms fonctionnant sans tenir compte du seed ?
    La fonction seed s'applique t'elle au wiggle et si oui ets ce utile ?

    Marci beaucoup !

    Bill
     
    #11 bildebool, 12 Décembre 2005
    Dernière édition: 5 Avril 2006
  12. nab17connection

    Points Repaire:
    1 900
    Recos reçues:
    1
    Messages:
    1 051
    Appréciations:
    +0 / 0 / -0
    hey ! moi je dis bravo Bill :bravo:

    tu n'as presque plus besoin d'aide, tu es devenu quasiment freetyle avec les expressions :)

    quelques remarques néanmoins ;) :

    _pour avoir moins de calques, tu peux toujours mettre plusieurs masques sur un meme solide, histoire d avoir 3-4 flocons sur un meme calque (attention toutefois car ils auront le meme deplacement , donc ne pas les mettre trop proches les uns des autres )

    _il est préférable de finir une instruction avec un point virgule ";"
    (on le zappe éventuellement qd il s agit de la derniere instruction)

    _ le 'timeless = ' ne sert à rien. Tu mets simplement quelque chose qui vaut 'true' ou 'false'.

    _si tu veux un nombre aleatoire entre 0 et 640 par exemple, tu peux ecrire directement "random(640)", la borne inférieure par défaut est 0

    _dans ton "if...", dans le cas ou "y" ne doit pas etre modifié, tu n as pas besoin de lui dire "fais rien à y !" avec une instruction du type "y = y ". Le 'else... ' ici ne sert donc à rien.
    et avec ton "%520" le flocon qd il arrivait en bas, remontait un petit peu avant de repasser correctement par le haut ("%500" est ok). c'etait ptet voulu je sais pas :)

    _ "Pourquoi dois je mettre ma valeur x à 0 avant d'appliquer l'expression, sinon la fonction random ajoute à la valeur de depart ? "
    En effet dans ta ligne " x = ...", tu ajoutes un random qui peut aller jusqu'a 640 et un wiggle(); or ce wiggle va te donner une valeur par rapport à la valeur initiale de ta position. Donc qd tu ajoutes random(..)+wiggle(...)[0], ca peut faire sortir (nettement) le calque de l'ecran.
    si tu ne veux pas avoir à les recadrer en les selectionnant tous et les deplacant, tu peux par exemple mettre ton wiggle() sur un parametre glissiere. Quand sa valeur va trembler, elle tremblera autour de 'zéro' (si tu ne la modifies pas biensur). Ainsi tu peux recuperer ce tremblement ( placé sur un parametre glissiere donc une valeur en 1D, ca tombe bien c'est exactement ce que tu veux...juste récuperer un tremblement pour x), et l'utiliser dans ton expression principale. Ton flocon pourrra dépasser mais comme le wiggle est calculé autour de la valeur 0, et que son ampitude est petite (tu avais choisi entre 10 et 50 pixels), ca sera ok.

    J'ai réécrit ton expression sur la Position comme cela :
    Code:
    Cp = thisComp; W = Cp.width; H = Cp.height; h = height; // constantes de la comp et du solide
    factor = 1.0; // facteur de vitesse
    vitesse = factor*scale[0]; // vitesse liée à l'échelle
    seedRandom(0,true);
    startX =  random(W); startY = random(-h,H);
    x = startX + effect("wiggleX")("Curseur"); // point de base + tremblement
    y = startY + vitesse*time;  // point de base + chute
    if(y > (H + h)) y = y%(H + h) - h;
    [x,y]
    
    et sur le Paramètre glissière renommé "wiggleX", je calcule juste ce qui sera le tremblement en x:
    Code:
    seedRandom(0,true);
    freq = random(0.5,1); amp = random(10,50); 
    wiggle(freq,amp)
    
    note: tu peux mettre "amp" et freq" en parametres glissieres egalement, pour pouvoir les animer avec clés par exemple.

    ps:reponse aux autres questions dans un nouveau message :)
     
  13. nab17connection

    Points Repaire:
    1 900
    Recos reçues:
    1
    Messages:
    1 051
    Appréciations:
    +0 / 0 / -0
    seedRandom, timeless or not

    me revoila :)
    oui en rappelant la fonction seedRandom(), mais en changeant son deuxiement parametre (le 'true' devient 'false' par exemple).

    Je viens de faire un ptit projet qui va expliquer cela. Comme je trouve l'outil texte génial, mon exemple portera la dessus.

    copie/colle l 'expression qui suit dans la propriete 'texte source' (les explications ensuite ;) :
    Code:
    mots1 = ["François","Antonio ","Carole  "]; 
    mots2 = ["dort","boit","fume"]; 
    mots3 = ["peu     ","beaucoup", "trop    "];
    seedRandom(1,false); 
    i1 = Math.round(random(mots1.length -1));
    choix1= mots1[i1];
    seedRandom(2,false);
    i2 = Math.round(random(mots2.length - 1));
    choix2 = mots2[i2];
    seedRandom(3,false);
    i3 = Math.round(random(mots3.length -1));
    choix3 = mots3[i3];
    
    choix1 + " " + choix2 + " " + choix3
    
    mots1,mots2,mots3 : je définis trois tableaux dans lequel je stocke des mots (qui doivent etre entre guillemets). Pour que les chaînes aient toutes la meme longueur, j ajoute eventuellement des espaces pour combler les plus petits.

    i1,i2,i3 : je calcule un indice d un tableau. je le choisis de maniere aleatoire avec random(). Cet indice doit etre compris entre 0 et longueurTableau -1 (les indices de tableaux commencent toujours a 0, pas à 1). Un indice doit forcement etre un nombre entier, la mthode "Math.round()" sert à cela en arrondissant a l entier le plus proche.

    choix1,choix2,choix3 : les mots choisis seront ceux situés au indices i1,i2,i3 de leur tableau (donc des mots pris au hasard dans les tableaux d origine.)

    note:je change la valeur de la seed (1 puis 2 puis 3) pour ne pas avoir toujours le meme indice aleatoire pour chacun des tableaux (qd on va les passer a 'true').

    Dans cette expression, le second parametre de "seedRandom()" est toujours 'false', donc tes mots vont changer d'une image a l autre aleatoirement (le 'timeless' n'agit pas).

    Maintenant, change l'un de ces parametres à 'true', disons le premier. Le choix1 sera donc aleatoire, mais sera le meme pour chaque image (le meme mot tjs affiché). En revanche, pour le choix2, comme tu as précisé 'false' , il va continuer à te sortir un mot aleatoire à chaque image.

    Les calques texte sont génial pour les expressions, faut explorer :)
    mots_alea_(40k).swf


    Pour ta derniere quetion, oui la fonction "seedRandom()" marche aussi pour le wiggle. (attention la fonction est 'seedRandom' pas 'seed'. 'seed' c'est le nom de variable courant qu'on attribue à ...à.. à la seed justement (le premier parametre, i.e 1, 2, ce que tu veux)
    Est-ce utile ? je dirais que ca peut l'etre oui.
    Pour un exemple, imagine que tu veuilles faire trembler plusieurs calques de la maniere .
    si tu mets un wiggle sur la position, ton calque va trembler d une certaine maniere, ok.
    si tu dupliques ce calque, le nouveau calque tremblera d une maniere differente.
    SI tu souhaites pour x raisons que ce calque dupliqué ait exactement le MEME tremblement que le calque d origine, alors tu vas utiliser "seeeeeeeeedRandom" avant le wiggle. ;)
     
    #13 nab17connection, 13 Décembre 2005
    Dernière édition: 13 Décembre 2005
  14. bildebool

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

    Merci pour toutes ces remarques enrichissante !
    Effectivement le flocon remonte un peu ce n'était pas voulu, mais c'est vrai que j'avais mis un %520 avec un le if >500 donc ça collait pas !

    Je vais étudié de plus près l'expression que tu as ecrit (la prems) qui est (bien sur ;) ) plus élaborée que la mienne !

    Maintenant j'ai bien integré avec ton exemple l'utlisation du seedrandom, surtout grace à ton deuxieme message, et je trouve vraiment genial de pouvoir mettre des valeurs aleatoires à un calque. Dans ce genre d'utilisation on gagne un temps précieux, et il faut le dire, l'utilisation des expressions dans ce cas rend un resultat beaucoup plus naturel que des animations par clés.

    Bon je crois avoir pris note de toutes tes remarques et je ferai en sorte de les appliquer !

    Ensuite dans ton exemple avec les mots je ne comprend pas trop comment l'expression
    renvoie l'un des mots choisits. D'accord pour le math.round, et pour le seedRandom, mais je comprends pas trop pourquoi le tableau est compris entre "0" et "Longtableau-1", et comment marche le mots1[i1]

    Bon voilà en tout cas encore merci pour l'aide qui m'est tres utile !

    Bill

    PS : quelle difference fais tu, dans l'utilisation, entre l'outil texte et l'effet texte de base.
     
  15. nab17connection

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

    les indices d un tableau à n éléments vont de 0 à n-1.
    si i1=0 par exemple, alors mots1[i1] represente le premier élément du tableau mots1 (de la maniere que lorsque tu écrivais "scale[0]", scale est un tableau et tu accedes à son premier élément en precisant l indice 0)
    notre exemple :

    [​IMG]

    Sinon pour les differences entre l outil texte et l effet texte de base, je dirais que c est comme entre un bon golfeur du dimanche et Tiger Woods :D.
    avec l outil texte tu peux ajouter des groupes d animations sur tout plein de proprietes du texte (avec des mots-clés d expression qui n existent que pour cet outil), tu peux animer ton texte caracteres par caracteres, tu as cette propriete 'texte source' qui est vraiment tres souple ... en deux mots c'est la frime :)
    avec l effet texte de base, tu n as pas toute cette liberté (en gros tu as couleur, taille et ancrage), cela dit c'est bien pour simplement ajouter un texte 'fixe' sur un calque existant ...

    ps: le truc que je n aime pas par contre avec l outil texte , c est que je n'arrive pas a faire defiler mes polices de caracteres dans la palette 'Caracteres'. Qd je selectionne la police courante dans le ptit cadre et que j utilise la roulette de la souris, cela ne change pas ma police, elle reste la meme et je suis obligé d ouvrir la "librairie de polices" et naviguer..:col: (alors qu'avec l effet texte de base, la meme manip marche au poil )
     

Dernières occasions

 

Partager cette page