Nous sommes en ce moment 36 sur le Repaire - 178363 discussions - 924697 messages - 96292 Repairenautes inscrits |

07/12/2005, 09h49
|
 |
Repairenaute
|
|
Date d'inscription: octobre 2004
Messages: 932
Bénéficie de 0 recommandations à propos de 0 messages
|
|
Newbies' expressions !
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...
pour l'echelle :
seedRandom(1, timeless = true)
x=random(20,50)+100-wiggle(random(0,3),random(0,5))[0];
[x,x]
Pour la rotation :
seedRandom(1, timeless = true)
time*random(20,36)
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
|

07/12/2005, 14h28
|
 |
Repairenaute
|
|
Date d'inscription: juin 2004
Messages: 362
Bénéficie de 0 recommandations à propos de 0 messages
|
|
|
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)
|

07/12/2005, 15h00
|
 |
Repairenaute
|
|
Date d'inscription: octobre 2004
Messages: 932
Bénéficie de 0 recommandations à propos de 0 messages
|
|
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
|

07/12/2005, 15h28
|
 |
Repairenaute
|
|
Date d'inscription: juin 2004
Messages: 362
Bénéficie de 0 recommandations à propos de 0 messages
|
|
|
oui c'est vrai Trapocode le fait.
j'oublie toujours les possibilité de ce plug.
|

08/12/2005, 05h23
|
 |
Repairenaute
|
|
Date d'inscription: mai 2004
Messages: 1 046
Bénéficie de 4 recommandations à propos de 4 messages
|
|
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  )
|

08/12/2005, 09h55
|
 |
Repairenaute
|
|
Date d'inscription: octobre 2004
Messages: 932
Bénéficie de 0 recommandations à propos de 0 messages
|
|
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
|

08/12/2005, 10h43
|
 |
Repairenaute
|
|
Date d'inscription: juin 2004
Messages: 362
Bénéficie de 0 recommandations à propos de 0 messages
|
|
|
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.
|

08/12/2005, 14h28
|
 |
Repairenaute
|
|
Date d'inscription: octobre 2004
Messages: 932
Bénéficie de 0 recommandations à propos de 0 messages
|
|
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 
|

09/12/2005, 00h35
|
 |
Repairenaute
|
|
Date d'inscription: mai 2004
Messages: 1 046
Bénéficie de 4 recommandations à propos de 4 messages
|
|
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 
|

09/12/2005, 10h16
|
 |
Repairenaute
|
|
Date d'inscription: octobre 2004
Messages: 932
Bénéficie de 0 recommandations à propos de 0 messages
|
|
|
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
|

12/12/2005, 14h35
|
 |
Repairenaute
|
|
Date d'inscription: octobre 2004
Messages: 932
Bénéficie de 0 recommandations à propos de 0 messages
|
|
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
s=scale[0]
seedRandom(0, timeless = true)
x=random(0,640)+wiggle(random(0.5,1), random(10,50))[0]
ystart=random(-20,480);
y=ystart+time*s;
if(y>500){y=y%520-20}else{y}
[x,y]
prpiété echelle
seedRandom(1, timeless = true)
x=random(10,100);
[x,x]
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
Dernière modification par bildebool 05/04/2006 à 11h34.
|

13/12/2005, 04h05
|
 |
Repairenaute
|
|
Date d'inscription: mai 2004
Messages: 1 046
Bénéficie de 4 recommandations à propos de 4 messages
|
|
hey ! moi je dis bravo Bill
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/12/2005, 05h41
|
 |
Repairenaute
|
|
Date d'inscription: mai 2004
Messages: 1 046
Bénéficie de 4 recommandations à propos de 4 messages
|
|
seedRandom, timeless or not
me revoila 
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 ?
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. 
Dernière modification par nab17connection 13/12/2005 à 06h19.
|

13/12/2005, 09h36
|
 |
Repairenaute
|
|
Date d'inscription: octobre 2004
Messages: 932
Bénéficie de 0 recommandations à propos de 0 messages
|
|
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
seedRandom(1,false);
i1 = Math.round(random(mots1.length -1));
choix1= mots1[i1];
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.
|

14/12/2005, 05h33
|
 |
Repairenaute
|
|
Date d'inscription: mai 2004
Messages: 1 046
Bénéficie de 4 recommandations à propos de 4 messages
|
|
|
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 :
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  .
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..  (alors qu'avec l effet texte de base, la meme manip marche au poil )
|

14/12/2005, 09h19
|
 |
Repairenaute
|
|
Date d'inscription: octobre 2004
Messages: 932
Bénéficie de 0 recommandations à propos de 0 messages
|
|
Ok pour l'effet texte, je suis d'accord c'est ce que je pensais un peu, mais je ne l'utilise pas des masses alors j'en étais pas sur...
Donc j'ai bien compris pour l'histoire du tableau ! En fait j'avais pas pigé que le "mots.lengh" comprenait que "mots1 = ["François","Antonio ","Carole "]; " avait une largeur de "3"
Bon je sais pas si je suis clair mais tu l'as été et j'ai tout pigé !
 Bill
PS : pour moi pas de probleme de defilement des polices... heureusement parcque je ne vois pas ce qu'est la librairie des polices....
|

14/12/2005, 09h34
|
 |
Repairenaute
|
|
Date d'inscription: juin 2004
Messages: 362
Bénéficie de 0 recommandations à propos de 0 messages
|
|
|
librairie des polices = bibliotheque de polices (ton dossier de police en gros quoi)
|

14/12/2005, 09h40
|
 |
Repairenaute
|
|
Date d'inscription: octobre 2004
Messages: 932
Bénéficie de 0 recommandations à propos de 0 messages
|
|
|
Oui mais il est où dans after ?
|

14/12/2005, 10h37
|
 |
Repairenaute
|
|
Date d'inscription: novembre 2005
Messages: 720
Bénéficie d'1 recommandation à propos d'1 message
|
|
bjr,
ça devient vaiment très interressant comme discussion.

|

14/12/2005, 13h18
|
 |
Repairenaute
|
|
Date d'inscription: mai 2004
Messages: 1 046
Bénéficie de 4 recommandations à propos de 4 messages
|
|
salut
oui, "length" est un attribut d'un tableau. Il designe la taille de ce tableau, c est a dire le nombre d'éléments qu'il contient.
qd tu ecris "BillTab.length", cela représente la taille du tableau BillTab.
pour mon souci avec le choix de la police et la roulette...je faisais allusion a cela
est ce que chez vous, ca marche ??

|

14/12/2005, 13h27
|
 |
Repairenaute
|
|
Date d'inscription: octobre 2004
Messages: 932
Bénéficie de 0 recommandations à propos de 0 messages
|
|
Yo c'est encore moi !
Je cherche à faire une expressions (ben oui c'est le but qd meme !) qui anime une image en fonction du son....
Je sais on en a deja parler mainte et mainte fois et il y a la faq5 qui en parle, mais laissez moi exposer mon probleme :
Voila donc je convertit mes données audio ok....
le calque a animer à été mis en remappage temporel.
Alors voilà le truc :
- les données audio varient entre nb=0 et nh=11
- le remappage entre t1=0 image et t2=49 image
le probleme est le suivant :
je veux pour nb->t2 et nh->t1
1erement : existe t il une façon de recuperer la valeur la plus haute des données audio plutot que de se taper toutes les images clés ?
2emement :
j'ai écrit une expression qui apparemment est tres nulle car ne marche pas du tout
y=thisComp.layer("Amplitude audio").effect("Les deux couches")("Curseur");
y2=Math.pow(y, 2);
f=49/11; //facteur
Math.sqrt(y2*f)/29.97
Autre probleme : le resultat du curseur est par exemple à "6.06" et le resultat dans l'expression avec "thisComp.layer("Amplitude audio").effect("Les deux couches")("Curseur");
" seul dans l'expression retourne "181" pour une base temporelle de "29.97"
Bon voilà si vous savez comment m'aider....
Bill
PS : avis aux experimentateurs qui apprennent les expressions, nab est balaise, mais ça me gene un peu qu'il soit le seul ici à me filer un coup de main
PS2 : nab tu peux m'aider qd meme car sinon je vais me sentir seul

|

14/12/2005, 13h38
|
 |
Repairenaute
|
|
Date d'inscription: mai 2004
Messages: 1 046
Bénéficie de 4 recommandations à propos de 4 messages
|
|
d abord ca
est ce que chez vous, ca marche ??
|
|