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

Jeu sur les expressions

Discussion dans 'Adobe After Effects' créé par oscarus, 8 Mars 2004.

Tags:
  1. nab17connection

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

    j'ai préparé deux nouveaux jeux sur les expressions, disons de niveau "intermédiaire", qui permettront à ceux qui sont moins expérimentés que Sequelles et Oscarus, d'essayer aussi de proposer quelque chose.

    pour appater :D ceux qui sont plus "Ayato" que "Dan Ebberts",
    le premier jeu sera une adaptation tirée du Ayato Lab (en japonais :jap: ).
    trait_3D

    le deuxieme, comme vous le verrez est une sorte de pingpong, la balle jaune est attirée par un curseur rouge et des lors qu'elle le touche, elle devient attirée par l autre curseur ...
    bingbong


    a+, nab

    ps:les "papas" en expressions sont priés de laisser un chouia de temps aux autres avant de repondre :)
     
  2. Julien W.

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    1 499
    Appréciations:
    +0 / 0 / -0
    Y a-t-il une raison pour laquelle vos codes sont si... condensés?
     
  3. nab17connection

    Points Repaire:
    1 900
    Recos reçues:
    1
    Messages:
    1 051
    Appréciations:
    +0 / 0 / -0
    à mon avis, ils sont sans doute condensés pour deux raisons:
    _la premiere pour éviter de faire des posts super longs ( apres au repairenaute de copier coller l'expression et de l 'analyser calmement sur sa machine :) )
    _la seconde, car l'éditeur de texte pour les expressions n'offre que d'espace (même si on peut l 'agrandir ) et qu'il n est donc pas très pratique d'ecrire des codes très aérés

    mais moi perso, je trouve que c'est écrit tellement petit, que j'aère le plus possible mon code (de peur de me tromper :D ), par exemple je reviens toujours à la ligne apres une accolade ...
     
  4. Sequelles

    Sequelles Modérateur
    Modérateur So

    Points Repaire:
    11 780
    Recos reçues:
    20
    Messages:
    4 261
    Appréciations:
    +2 / 13 / -0
    Voila un autre code plus condensé, encore plus concis, pour le damier.
    Code:
    mov=3; //duree du deplacement en nombre d images
    fix=5; //duree de la pose entre chaque deplacement
    gra=.03; //change le tirage aleatoire
    
    G=thisLayer.width; //marge gauche
    D=thisComp.width-G; //marge droite
    H=thisLayer.height; //marge haute
    B=thisComp.height-H; //marge basse
    
    P1=P2=position; i=0; dep=[0,0,0,0];
    
    while (i<=timeToFrames()) {
    	seedRandom(i+gra,1); P1=P2;
    	bor=[(D>=P1[0]),(P1[0]>=G),(B>=P1[1]),(P1[1]>=H)];
    	ale=Math.ceil(random(bor[0]+bor[1]+bor[2]+bor[3]));
    	for (n=0;n<=3;n++) {
    		dep[n]=bor[n]*(ale==1);
    		ale-=bor[n]
    	}
    	P2+=[((dep[0]==1)-(dep[1]==1))*G,((dep[2]==1)-(dep[3]==1))*H];
    	i+=mov+fix
    }
    linear(timeToFrames(),i-mov,i,P1,P2)
     
    #469 Sequelles, 29 Août 2005
    Dernière édition: 30 Août 2005
  5. nab17connection

    Points Repaire:
    1 900
    Recos reçues:
    1
    Messages:
    1 051
    Appréciations:
    +0 / 0 / -0
    génial :bravo: ,

    cette version est de loin la meilleure proposée jusqu'à maintenant.
    car dans celle-ci tu es parvenu à définir automatiquement le voisinage autorisé, et à choisir aléatoirement et de facon équiprobable l'une des directions de ce voisinage. Plus besoin de cas par cas avec une succession de "if".

    pour expliquer comment elle fonctionne, prenons l'exemple de la photo du damier que j avais postée.
    "bor", un vecteur binaire de dimension 4, représentant les possibilités de déplacements [gauche, droite,bas,haut]. Il indique le voisinage, les directions possibles, donc bor=[0,1,1,1] (i.e. je ne peux pas aller vers la gauche, je peux aller vers la doite, vers le bas,vers le haut).
    effectuons un tirage aléatoire parmi le nombre de directions possibles, ici 3 :
    si "ale" vaut 1, alors je me déplace dans la première direction autorisée, donc ici vers la droite.
    si "ale" vaut 2, alors je me déplace dans la deuxième direction autorisée, donc ici vers le bas.
    enfin si "ale" vaut 3, je me déplace dans la troisième direction autorisée, donc ici vers le haut.

    bien ouej ! ;)

    Pour qu'elle soit tout à fait juste, "n" doit varier entre 0 et 3 dans ta boucle "if", "bor" et "dep" étant des vecteurs de dimension 4, pas 5.

    Pour un peu plus de lisibilité pour les autres repairenautes, je me suis permis de la réécrire comme ceci :
    Code:
    M=3;F=5;
    G=width;D=thisComp.width-G;H=height;B=thisComp.height-H;
    P1=P2=position;dep=[0,0,0,0];i=0;
    
    while(i< timeToFrames()){
       seedRandom(i,1);
       P1=P2;
       bor=[(G<=P1[0]),(P1[0]<=D),(H<=P1[1]),(P1[1]<=B)];
       ale=Math.ceil(random(bor[0]+bor[1]+bor[2]+bor[3]));
       for(n=0;n<=3;n++){
               dep[n]=bor[n]*(ale==1);
               ale-=bor[n];
        }
        P2+=[((dep[0]==0)-(dep[1]==0))*G,((dep[2]==0)-(dep[3]==0))*H];
        i+=M+F;
    }  
    linear(timeToFrames(),i-M,i,P1,P2)
    
    Sequelles, 2500 messages et pas une ride ! :lol: :bravo:
     
  6. jonz

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    352
    Appréciations:
    +0 / 0 / -0
    Salut a tous,
    un petit jeu.. surement trop facile pour vous. Il s'agit de faire varier l'amplitude de deplacement d'un calque progressivement.

    Le tremblement de la fusée est regulier et toujours de meme intensité sous forme d'images clés sur toute la longueur de l'animation. Mais son amplitude est controlé par un un parametre glissiere.


    La video est ici
     
  7. nab17connection

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

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    97
    Appréciations:
    +0 / 0 / -0
    bon je poste pas question ici vu que ca parle d'expression :)

    je voudrais faire clignoter une image via l'opacité. ca dois etre hyper simpe ...quand on connait les expressions...mais j'y arrive pas
     
  9. Sequelles

    Sequelles Modérateur
    Modérateur So

    Points Repaire:
    11 780
    Recos reçues:
    20
    Messages:
    4 261
    Appréciations:
    +2 / 13 / -0
    javaScript mon ami

    Les deux raisons qu'a donné nab sont très justes. Mais pour être honnête je crois qu'il y a aussi une méconnaissance du javascript dans les règes de l'art. Les expressions sont plutôt des "bouts" de code que l'on colle ici et là, sans avoir absolument besoin de connaître vraiment bien le javaScript. Et puis sans doute parce que c'est plus drôle de compacter tous ça comme ça c'est plus difficile à déchiffrer:D

    Il faudra c'est vrai être plus intelligible. Je corrige de ce pas ma version précédente, avec l'aide de nab, en ajoutant quelques petites graines.
     
  10. Julien W.

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    1 499
    Appréciations:
    +0 / 0 / -0
    Ok, je comprends mieux :)
    C'est vrai qu'il n'est pas très agréable d'écrire dans l'espace réservé aux expressions.

    Tu sais, le javascript n'est, dans la grande majorité des cas, qu'un assemblage de "bouts" de code collés ici et là :D :lol:
    Ce qui me choque le plus (et c'est sûrement car je n'ai plus fait de javascript depuis un bout de temps), c'est la non nécessité de mettre un point-virgule après la dernière instruction d'un bloc.

    La version modifiée de ton code est nettement claire. En plus, tu utilises le style d'indentation K&R, ce qui est un bon point :)
    Normalement, on commente sur la ligne précédent la/les instruction(s). Effectivement, dans ton cas, ta version est plus lisible; mais en réalité, le problème est qu'en même de ton côté: tes commentaires devraient être inutiles. En fait, un nom de variable adéquat devrait remplacer le commentaire. Par exemple, G=thisLayer.width; //marge gauche deviendrait margeGauche = thisLayer.width;. Ecrire "G" à la place de "margeGauche" n'apporte rien. L'utilisation de noms de variables de ce genre est même vivement déconseillée (mis à part pour les indices, par exemple). Les noms de variables commençant par une majuscule aussi. Normalement, les noms de variables écrites en majuscules sont réservés aux constantes. Tu aurais plutôt intérêt à commenter les différentes étapes de ton algorithme (devant les blocs, par exemple, ou devant les lignes qui contiennent de nombreux calculs). Mettre plusieurs instructions sur la même ligne n'est pas non plus recommandé (à moins qu'il s'agit de déclaration/instanciation de variables très similaires, par exemple plusieurs indices). N'hésite pas à mettre des espaces supplémentaires autour des opérations, par exemple for (n = 0; n <= 3; n++).
     
  11. nab17connection

    Points Repaire:
    1 900
    Recos reçues:
    1
    Messages:
    1 051
    Appréciations:
    +0 / 0 / -0
    ah Sequelles, tu te mets à faire un peu de Good Housekeeping :D

    pour Khaos, oui c'est plutot simple, par exemple avec une expression de boucle :

    [​IMG]

    ou utiliser la fonction random pour un clignotement aléatoire ( random(100) te donnera une opacité comprise entre 0 et 100, à chaque frame de ton anim; random(40,60) une opacité entre 40 et 60 ...)
     
  12. khaos

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    97
    Appréciations:
    +0 / 0 / -0
    ok merci de l'info.
    et y'a moyen de crée une sinus par exemple , sans avoir a creer d'image clé ?
     
  13. nab17connection

    Points Repaire:
    1 900
    Recos reçues:
    1
    Messages:
    1 051
    Appréciations:
    +0 / 0 / -0
    oui, tu peux mettre ce que tu veux, par exemple :
    Code:
    50+50*Math.sin(time)
    ton opacité va varier de 0 à 100 ( sinus retourne toujours une valeur comprise entre -1 et 1 )

    tu peux mettre un facteur (coefficient multiplicateur) devant "time" pour augmenter la frequence
     
  14. nab17connection

    Points Repaire:
    1 900
    Recos reçues:
    1
    Messages:
    1 051
    Appréciations:
    +0 / 0 / -0
    note également que tu peux lier ton paramètre d'opacité à d'autres éléments de la comp...

    comme dans ce nouveau jeu par exemple :D
    radar
     
  15. jonz

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    352
    Appréciations:
    +0 / 0 / -0
    nab, t'as posté un beau decollage ;)
    Le tremblement progressif est geré par une expression?
     
Chargement...

Partager cette page