Bénéficie de 0 recommandations à propos de 0 messages
Yep Bill, c'est à nouveau moi... Oui le pont est parallèle à l'axe horizontal.Ce que j'ai peut être pas précisé de manière très claire, c'est que le pont se fait donc progressivement de gauche à droite mais également en épaisseur : Il doit être composé de plusieurs lignes dans son épaisseur (avec l'opacité des a qui augmente en montant) Explication par l'exemple : en considérant ce stade là :
aaa
aa
aa
aa
aa
Le prochain "a" va se coller sous le 3ème de la première ligne (avec une opacité finale correspondant à l'opacité ligne 2....) Puis le prochain va se coller sous ce dernier (avec une opacité finale correspondant à l'opacité ligne 3....) etc etc mais toujours avec l'opacité augmentant progressivement en passant de la ligne la plus basse à celle juste au dessus)
Pour ce qui est de l'élasticité du pont : pas spécialement. En fait elle doit être très légère et juste refléter le fait que le pont est constitué d'éléments en suspension, donc pas stables à 100%. Comme le pont se fait progressivement de gauche à droite, j'imagine qu'il doit y avoir une intéraction entre la dernière lettre "a" qui constitue le pont à l'instant t et celles qui viennent de le constituer. C'est pour cela en fait que je me dis que c'est peut être pas si facile à rendre réaliste, mais c'est vrai qu'au jour d'aujourd'hui j'ai pas le recul pour m'en rendre compte... Il me semble que les expressions peuvent faciliter grandement ce genre de travail en contraignant une propriété par les paramètres d'une autre mais c'est un peu le flou artistique pour moi qui ne les maitrise pas. Qd je vois le niveaux des jeux d'Oscarus, Nab et Séquelle, je me dis qu'ils feraient peut être ça en 2 tps 3 mvts en bcp plus classe que ce que j'aurais imaginé... Mais c'est clair qu'ils ont du un passer un paquet de temps à bosser sur ces drôles de ptites formules. Y a du pain sur la planche ! En tout cas merci et tiens moi au jus si t'as une piste j'aurais peut être un peu de temps pour me pencher dessus ce we.A plus !
Matéo
Liens commerciaux
Pour profiter des forums du Repaire sans les inserts pub il suffit de s'inscrire gratuitement.
Bénéficie de 0 recommandations à propos de 0 messages
ça te dirait pas de faire une ptite image sous toshop vite fait je suis pas sur de comprendre ce que tu veux dire en fait...... J'ai saisi le coup du pont, mais pas tout comme il faut je crois
Bon sinon je te cache pas que pour l'instant j'ai pas eu le temps de chercher....
Alors mon probleme est que ça marche tres bien, sauf qu'à t=startatt (donc pour la fonction "end", mon calque passe de sa position à x=-127....
Alors j'ai rajouter à x la valeur à t=startatt mais ça ne change rien....
J'ai cherché un peu partout mais je n'y arrive pas....
De plus, je veux accelerer la freq apres startatt, mais le resultat de mon expression genere un truc tout bizarre apres startatt sur les y.
Voyez vous mon (mes?) erreur ?
Bill
PS : Est il possible d'associer des formes de masque à des expressions ?
Bénéficie de 6 recommandations à propos de 6 messages
salut Bill,
Est il possible d'associer des formes de masque à des expressions ?
on l'a dit trente fois : NON !
qd tu essaies Alt+click (ou Options+click) sur le chronometre "Forme du masque", tu vois que cela ne marche pas...
et d'après toi pourquoi on écrirait un script (RotoTool par exemple ) qui convertirait des points de track en points de masques, s'il suffisait de les relier directement au masque par expression ...
LES SOMMETS D'UN MASQUE NE SONT ACCESSIBLES QUE PAR LE SCRIPTING
Pour le "rebond" que cherches tu a faire ? seulement faire augmenter la fréquence à partir d un certain instant ?
Matteo, tu veux faire un pont de "A" avec une expression de position dans chaque calque texte, c'est ca ??..si oui, cela me semble à premiere vue bien périlleux
Bénéficie de 0 recommandations à propos de 0 messages
Envoyé par nab17connection
on l'a dit trente fois : NON !
Oups....
Sinon voilà ce que je cherche a faire : de t=0 à t=start att, rebond normal.
apres startatt, je veux :
1/ le rebond de moins en moins haut
2/ le deplacement s'arrete
3/ la frequence s'accelere
pour se rapprocher d'un vrai ballon.
Donc j'ai réécrit l'expression pour deja enlever le probleme de la frequence qui s'accelere, car je n'y arrive pas. Ensuite le deplacement sur x qui s'arrete ça c'est bon j'y arrive mais y'a un souci : à strat att, il se decalle et ne reprend pas depuis sa place d'avant, et apparemment le valueattime n'agit pas....
donc en gros voilà ce que j'aimerais obtenir, mais sans decalage, et avec la frequence qui s'accelere a partir de startatt : Anim
J'ai ajouté 150 sur les x car sinon le ballon sort de l'ecran avec cette expression.
Bon voilà le resultat est pas sensas, d'autant plus que au debut le ballon ne touche pas terre je ne sais pas trop pourquoi...
Bénéficie de 0 recommandations à propos de 0 messages
Hello !!
Bon alors en fait c'est le x*att qui marchait pas... c'est sûr si j'essaie d'attenuer un mouvement lineaire ça risque pas de marcher !!!
Bon sinon j'ai recrit le tout çe rend plutot pas mal. Le resultat et l'expression
Code:
startatt=2;//debut d'arret
decr=0.8;//décroissance
amp=300;//amplitude rebond
fD=1;//freq debut
fF=1.5;//freq fin
xA=460;//x arrivée
x=thisComp.width/thisComp.duration*time;
y=thisComp.height-thisLayer.height/2;
if(time<startatt) t=0 else t=time-startatt;
freq=easeIn(t,0,5,fD,fF);
variaBS=amp*Math.abs(Math.cos(freq*time*2*Math.PI));//Before startatt
varia=Math.cos(freq*t*2*Math.PI);//variation du rebond
att=Math.exp(-decr*t);//attenuation
pos=amp*Math.abs(varia);//valeur positive de l'attenuation
yAtt=pos*att;
xAtt=easeOut(t,0,7,x,(position.valueAtTime(startatt)[0]+xA));
deb=[x,y-variaBS];
end=[xAtt,y]-[0,yAtt];
if(time<=startatt) deb else end
Voilà donc y'a deux trois petites choses qui me chiffonne :
- deja le position.valueAtTime(startatt)[0] ne marche pas dans mon expression.... savez vous pourquoi ?
- au debut, le ballon ne touche pas terre, je pense que ça vient du math.abs, mais comment contourner le probleme ?
- a la fin le ballon recule legerement... ça vient de quoi ? du easeout ?
Enfin pour faire un peu plus compliqué, j'aimerais que le ballon "s'écrase" un peu sur les rebons du debut, en jouant sur l'echelle, et j'aimerais le faire tourner par la meme occasion....
Je ne vois pas trop par quel bout commencer sauriez vous me guider ?
Bénéficie de 6 recommandations à propos de 6 messages
salut Bill ,
d'abord je vois que tu as bossé
pour faire un peu plus compliqué, j'aimerais
là je dis stop !, ton expression est deja bien trop compliquée !! avant de penser a faire autre chose, il faut au contraire chercher à simplifier ce chantier .
Commencons par les questions:
une expression n'a pas de memoire, elle ne sait pas ce qu elle a calculé dans le passé, donc tu ne peux faire appel a valueAtTime() pour lui dire de prendre la valeur qu elle a calculé xx images auparavant (pour faire cela c est une boucle while par exemple sur la duree de la comp, pas tjs facile et tres gourmand en calcul). Par contre, attention ! qd tu utilses valueAtTime() mais en faisant reference à un autre calque (pas celui sur lequel tu ecris l'expression), alors là c'est possible ! Cela va utiliser la valeur de la position de l'autre calque à l'instant précisé.
Si tu vois que ta balle ne "touche pas terre", c est sans doute parce que ton rebond est rapide et que ta composition a une cadence trop faible...et donc des images intermediaires manquent (j avais mis 99i/s pour voir large)
Bon allons y, on peut faire cela de plusieurs facons ... prenons en une un peu originale.
d apres ce que tu demandes, tu aimerais controler l amplitude et la frequence en fonction du temps...et que cela agisse uniquement à partir d'un certain temps (ce qui n'est pas tres naturel on est d'accord, car une balle qd elle rebondit perd tout le temps de l'énergie normalement...elle ne rebondit pas à 1m de haut pendant 3s et s arrete net).
1. je place deux markers (repères) sur mon calque Balle, le premier definit l'instant où l'"atténuation" va prendre effet ("start") et le deuxieme l'instant de fin, c est à dire qd la balle ne rebondira plus ("end"). Je dis "attenutation" pour reprendre ton terme, mais c'est pour designer l'intervalle pendant lequel l'amplitude va diminuer et la frequence augmenter.
2. j'écris cette expression de position et j ajoute deux clés (une pour le départ à gauche et une autre pour l'arrivee à droite)
ca te fait au passage voir un autre truc..comme utiliser les repères dans nos expressions...c'est sympa de connaitre car cela permet d'avoir du controle simplement en faisant glisser le repère avec la souris...
3. pour la rotation je me suis contenté de deux clés
Bénéficie de 0 recommandations à propos de 0 messages
Aie aie aie ça me tue comme un truc que je fais compliqué tu le fais simple....
Bon j'ai survolé, car je n'ai pas le temps, mais je vais regarder ça de plus pres et avec beaucou d'interet !
Sinon ok pour le valueAtTime, c'est ce qu'il me semblait mais moi y'en etre pas tellement sûr !!
Pour le fait que la balle ne touche pas terre, c'est ce qu'il me semblait aussi, par rapport a la vitesse et au fait qu'on prenne la valeur absolue du mouvement
ce qui n'est pas tres naturel on est d'accord, car une balle qd elle rebondit perd tout le temps de l'énergie normalement
Exactement, mais je trouve ça sympa de pouvoir la faire rebondir un temps et l'arreter au bout d'un moment, comme si on mettait un bonhomme qui dribble puis qui s'arrete...
utiliser les repères dans nos expressions
Oui c'est vrai j'avais vu que c'etait possible, mais pour l'instant j'y pensais jamais, je le ferai dorenavant !
j ajoute deux clés (une pour le départ à gauche et une autre pour l'arrivee à droite)
En fait je voulais essayer de tout controler par la meme expression, c'est pour ça j'ai évité les clés, mais c'est vrai que il vaut mieux y aller petit a petit Je pense que ça doit etre faisable j'essaierai...
Bon voilà pour l'expression des que j'ai after sous la main je m'y mets !
Zanks a lot !
Bill
Dernière modification par bildebool ; 28/01/2006 à 13h21.
Bénéficie de 0 recommandations à propos de 0 messages
Bon ton expression marche d'enfer (forcement...) bon maintenant faut que je comprenne pourquoi je suis passé par si compliqué.... En fait je crois que j'ai bloqué sur le Math.exp, alors que tu as utilisé le linear.
Une question qui n'a rien à voir : sur mac (je sais pas sur PC, j'ai pas remqrqué si ça m'est deja arrivé ou non...) Parfois j'ai des expressions ou il m'indique "errreur de syntaxe, erreur dans la ligne 1" et il me la desactive. Alors je verifie et reverifie mais non, pas d'erreur... Alors je retape mon expression dans un nouveau calque (la meme), mais pas copier coller, sinon ça marche pas, et qd j'ai tout retapé, ça marche... Je compare, c'est la meme.... Alors on dirait qu'il y a des caracteres cachés jesaispasoù..... J'ai l'impression que ce probleme arrive qd je passe par la petit fleche ou il y a certains parametres deja ecrits. Si je l'ecrit moi meme je pense que ça marche et en passant pas le menu non... cela vous rappelle qqchose ou bien suis je le seul à qui ça arrive ?
Pour finir, est il possible d'affecter en une seule ligne deux nombres pour un random ?
ex : xy=[10, 20]; random(xy);
qui remplacerait random(10, 20);
Bénéficie de 0 recommandations à propos de 0 messages
oui, en fait je comprend bien les deux premieres lignes, result je vois pas trop mais j'imagine que ça dit que le resultat de l'expression est result, mais le if div je vois pas trop comment ça marche.... (je comprendrais mieux un if (div>chaipaqoi).......
Bénéficie de 6 recommandations à propos de 6 messages
le 'if (div)" pourrait etre remplacé par if (div != 0) ou ce cas-ci if (div > 0)...puisque div est dans cette expresion tjs positif ou nul (il représente la valeur absolue d un nombre)
Une division par 0 n'est pas possible c'est pourquoi l'expression définit deux résultats possible:
0 , qd div vaudra 0
300/div - 3 , qd div > 0
on aurait pu par exemple pour éviter le cas d une division par zéro, écrire quelque chose comme :
div = 0.001 + 100 * Math.abs(...);
300/div -3;