Nous suivre

Bar de menu effet Génie Mac

Discussion dans 'Adobe After Effects' créé par gdemestier, 10 Décembre 2006.

  1. gdemestier

    Points Repaire:
    100
    Recos reçues:
    0
    Messages:
    1
    Appréciations:
    +0 / 0 / -0
    Bonjour je souhaiterai reproduire l'effet "bar de menu(effet génie)" de mac quand l'icone grossi dès que la souris passe dessus mais les autres restent avec le meme espacement et la meme taille, sauf que je souhaiterai le faire avec des mots.

    J'imagine que c'est une histoire de parentage. Est-ce qu'il existe des scripts qui permettent de configurer ça facilement?

    ex :

    Rome
    Paris
    Lisbonne
    Madrid
    New york
    Londres
    Marseille

    ou

    Rome Paris Lisbonne Madrid New york Londres Marseille


    L'animation n'est pas très compliqué à faire et je pourrai créer cet effet manuellement, mais si je pouvais gagner du temps avec un script ca serait cool. Le but étant de faire défiler une liste de mots s'arreter sur un qui sera le titre de la séquence.

    Merci de vos réponses.

    ./Gdm
     
  2. apoal1

    Points Repaire:
    1 200
    Recos reçues:
    3
    Messages:
    740
    Appréciations:
    +0 / 0 / -0
    slt,

    c'est faisable avec une expression de formules mathématiques. mais il faudra utiliser l'effet texte dans des calques cadrés sur la longueur des mots, car je crois que ce n'est pas possible de renvoyer la longueur d'un texte.

    franchement si c'est pour 1 ou 2 passage de souris, ça sera moins long à l'image clée sauf si tu écrie tes expressions facilement.

    +
     
  3. apoal1

    Points Repaire:
    1 200
    Recos reçues:
    3
    Messages:
    740
    Appréciations:
    +0 / 0 / -0
    re,

    ouais c'est clair.

    pour faire une bonne expression il faut vraiment toucher, une expression dans le contexte c'est + faisable.

    y'a une autre difficulté, c'est que dans mon dock mac (X.3.9), les éléments ne bougent pas d'un poil tant qu'ils ne sont pas grossi.

    +
     
  4. nab17connection

    Points Repaire:
    1 900
    Recos reçues:
    1
    Messages:
    1 051
    Appréciations:
    +0 / 0 / -0
    Je n'ai pas de mac pour bien voir à quoi ca ressemble, mais voila ma ptite contrib' test
    nabscripts.com - test (sur ie j ai du mal à visionner ce movie mais sur firefox ca passe bien)
     
  5. logicalnot

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    491
    Appréciations:
    +0 / 0 / -0
    hé hé, 3h53 !
    T'aime bien les mots croisés !

    L'ergonomie est bien là. Le dock agit bien comme ça.
    Il manque juste un état : le dock au repos, toutes les icones sont petites et le dock est bien moins large. Ceci dit, on peut très facilement le refaire à main.

    Bon je me dois de féliciter le seul, l'unique, le magnifique

    :bravo: Nab 17 :bravo:
    :bravo: Nab 17 :bravo:
    :bravo: Nab 17 :bravo:
    :bravo: Nab 17 :bravo:
    :bravo: Nab 17 :bravo:
    :bravo: Nab 17 :bravo:
    :bravo: Nab 17 :bravo:

    :jap: :jap: :jap:
     
  6. nab17connection

    Points Repaire:
    1 900
    Recos reçues:
    1
    Messages:
    1 051
    Appréciations:
    +0 / 0 / -0
    On avait pourtant demandé à ta femme de te limiter l'accès au mini-bar :lol:

    Bon à part ca, avez-vous essayé des trucs de votre côté ?
    proposez vos expressions et on les ajustera ensemble si vous voulez...

    ps: et pour la enieme fois, je suis sur Montréal (-6h il me semble)
     
  7. apoal1

    Points Repaire:
    1 200
    Recos reçues:
    3
    Messages:
    740
    Appréciations:
    +0 / 0 / -0
    Slt,

    j'ai un dock.aep qui doit pesez... 1 Ko. aucunes lignes à poster.

    un gros problème que j'aurai eut c'est une formule pour récupérer une valeur autant de fois qu'il y a de calque.

    par exemple pour créer une variable "largeur du dock" (le problème est peut etre plus pertinent pour la position x d'1 calque): comment ecrire: la largeur du calque d'index 1 puis aditionner la largeur du calque d'index +1 en répétant l'opération d'adition autant de fois que numLayers -1 (-2 puisque dans ma formulation c'est répéter)? edit: avec en plus les équidistance bien sur

    je n'ai testé aucunes pistes: avec index et numLayers je ne vois pas, j'ai pas vu d'élément puissance (et puis ça existe les puissance d'aditions?), avec des If je préfère encore une expression par calque.

    alors c'est une demande pas très "ensemble", je profite de ta proposition nab pour un petit hors sujet, tu peux me dire comment ajuster ça. d'abord je pense que le résultat espéré est explicite: le solide avance de manière aléatoire, mais au rendu le comportement du calque n'est pas celui espéré (il gigote:))

    sur la position de mon calque Blanc uni 2:
    pX = (thisComp.layer("Blanc uni 1").position[0])+(effect("random x")("Curseur"));
    pY = (thisComp.layer("Blanc uni 1").position[1])+(effect("random y")("Curseur"));
    [pX, pY]

    sur la position de Blanc uni 1:
    t = time-(1/25);
    thisComp.layer("Blanc uni 2").position.valueAtTime(t);

    les deux curseurs ont:
    random(10)

    alors j'ai lu un truc surement de toi d'ailleurs qui expliquai le tableau en scripting et j'ai pas vraiment saisi mais c'était un peu le principe. me servir de Blanc uni 1 comme base arrière mais after lui il m'a pas compri... :( si tu pouvais ajuster ça dans un language after ce serai cool, vraiment (un peu comme tout le reste :)).

    +
     
    #7 apoal1, 13 Décembre 2006
    Dernière édition: 13 Décembre 2006
  8. nab17connection

    Points Repaire:
    1 900
    Recos reçues:
    1
    Messages:
    1 051
    Appréciations:
    +0 / 0 / -0
    il y aurait pas mal de choses à dire ... :D

    pour un début, concernant ta deuxieme question sur le mouvement aléatoire, le plus simple serait sans doute d'utiliser "wiggle()" ou "noise()", cela ne gigotera plus.
    on peut utiliser "random()" mais ce serait un brin plus technique et plus gourmand en calcul (recalculer toute la trajectoire à chaque image pour s'en souvenir...).

    documente toi un peu, fais ta cuisine et si ca marche pas, tu refrappes à la porte ;)
     
  9. magna_

    Points Repaire:
    1 200
    Recos reçues:
    2
    Messages:
    207
    Appréciations:
    +0 / 0 / -0
    salut a tous,

    bon, j'ai essayé moi de m'y mettre....
    ouch, c'est pas simple le code sur After je trouve ;)

    enfin j'y vais etape par etape, j'en sui rendu la... (je suis deja content :D ) :
    >> etape03

    alors j'ai des petites questions :

    - tout d'abord, dans l'exemple de Nab, les elements bougent par rapport a la souris.
    je voulais savoir si c'etait vraiment un curseur de souris qui faisait bouger les icones, ou si c'est juste une 'forme de souris' (je veux dire par que ca aurait pu etre un solide).
    parce que j'ai trouvé aucun parametres sur la position de la souris...

    - tous mes icones qui bougent possèdent le meme code. donc je copie/colle le code sur chaque calque pour que ca marche sur tous. ce qui est bien chiant !!
    y'a t-il un moyen de dire a after de mettre le code qui est sur le parametre size du claque 1, sur le paramatre size de tous les autres calques ???

    - enfin, l'editeur de code d'After n'est vraiment pas tres pratique.
    est ce vous codez dans un editeur java et que coller ensuite votre code dans After.
    ou encore mieux, est il possible (comme dans Flash), de coder dans un editeur exterieur, et de pointer ce fichier à partir d'After pour qu'il lise le code de ce fichier externe.

    voila pour commencer :D
    merci a vous !
     
  10. nab17connection

    Points Repaire:
    1 900
    Recos reçues:
    1
    Messages:
    1 051
    Appréciations:
    +0 / 0 / -0
    oui c'est pas mal, tu as déjà fait 50% du chemin.

    la "souris" est effectivement un petit solide 20x20 avec un masque en forme de fleche.

    il faut que tu rajoutes maintenant une expression sur la position des icones. Une expression qui marche sur le meme principe que celle que tu as du utilisée pour l echelle.

    oui à base de 'copier' / 'coller' ou de 'copier l expression seulement' / 'coller'.

    d'accord avc toi...(je rappelle qd meme au passage qu'on peut agrandir l espace reservé pour ecrire nos expressions, en faisant glisser le rebord du bas)

    pour ma part directement dans After, sauf cas exceptionnel ou l expression a ete écrite et 'sculptée' dans un éditeur de texte à part. La coloration de la syntaxe aidant considerablement pour s'y retrouver rapidement, d ailleurs cela pourrait etre un truc cool pour les prochaines versions d'AE: reconnaissance auto des mots du langage des expressions et changement de couleurs...qu'on pourrait bien sur définir dans les prefs :D ).

    non pas pour les expressions, si tu t'interesses à ce genre de choses c'est vers le scripting qu'il faut s'orienter.
     
  11. apoal1

    Points Repaire:
    1 200
    Recos reçues:
    3
    Messages:
    740
    Appréciations:
    +0 / 0 / -0
    Slt,

    j'ai testé wiggle et ça me donne la meme chose, pour noise j'ai pas réussi à l'utiliser.

    pourrais-tu me corriger ça (sur position avec random(10) sur les curseurs):

    var tab = new Array;
    im = timeToFrames();
    t = time-(1/25);
    if tab[im] est undefined{
    tab[im] = "thisComp.layer("Blanc uni 2").position";
    }
    pX = (tab[im-1][0])+(effect("random x")("Curseur"));
    pY = (tab[im-1][1])+(effect("random y")("Curseur"));
    [pX, pY];

    j'ai deux incertitudes:
    - si je rentre tableau[0] = "random(10)", il me renverra random(10) ou un nombre entre 0 et 10? sinon comment peux-t-on faire?
    - le script comprendra bien que je parle de la premiere valeur de l'ensemble meme si elle vient d'un tableau dans tableau[0]? sinon je fais deux tableaux, allez c'est pour moi :)

    merci d'avance

    +

    edit: j'ai vu le post avec le script de mask_motion_track.jsx, je vais mettre tab[im] = thisComp.layer("Blanc uni 2").position pour entrer la valeur et non "l'acces"

    edit2:
    j'ai zapé le if en espérant que le script accepte d'entrer une valeur à la place d'une autre sans buger, ce qui donne ça (je balance la dernière mouture):

    var tabx = new Array;
    var taby = new Array;
    im = timeToFrames();
    t = time-(1/25);
    tabx[var im] = thisComp.layer("Blanc uni 2").position[0];
    taby[var im] = thisComp.layer("Blanc uni 2").position[1];
    mi = im-1;
    pX = (tabx[var mi])+(effect("random x")("Curseur"));
    pY = (taby[var mi])+(effect("random y")("Curseur"));
    [pX, pY];

    avec ça tu dois comprendre mon problème: comment faire pour retourner le résultat de la variable et non son nom entre deux [ ]..?

    edit3: on oubli l'edit2 car le script le comprend très bien. à cette heure, l'heure d'aller se coucher, je bloque la dessus (sur rotation):

    var xx = new Array;
    xx[timeToFrames()] = timeToFrames()*10;
    [xx[timeToFrames()-1]]

    pourquoi un message d'erreur? une opération de chiffre marche, une opération "d'acces" marche, mais pas la combinaison des deux...

    +
     
    #11 apoal1, 17 Décembre 2006
    Dernière édition: 18 Décembre 2006
  12. nab17connection

    Points Repaire:
    1 900
    Recos reçues:
    1
    Messages:
    1 051
    Appréciations:
    +0 / 0 / -0
    oula, bon c est un peu confus avec tous ces Edit...
    (tu peux m envoyer ton projet si tu veux)

    quelques remarques:
    - le terme "var" sert uniquement lorsque l'on utilise des "function", donc inutile dans 99% des expressions.
    - regarde sur le web comment marche la structure de tableau...index, élément, taille...
    - qd je voulais dire recalculer la trajectoire, je pensais à l'utilisation d'une boucle "while" -> à lire et à comprendre impérativement si tu souhaites aller plus loin ( Random Motion et les pages suivantes).
    - comment utilises tu ton "wiggle" ? cela ne devrait pas gigoter, 'trembler' seulement, essaie ca par exemple :
    Code:
    leaderPos = thisComp.layer("Leader").position.valueAtTime(time-0.3);
    wiggle(1,30) - position + leaderPos;
     
  13. magna_

    Points Repaire:
    1 200
    Recos reçues:
    2
    Messages:
    207
    Appréciations:
    +0 / 0 / -0
    yep les gars,

    vu les tartines de code de apoal, j'en doute :D

    j'ai essayé et mes icones se deplacent en position. bon apres elles se chevauchent...

    j'avoue que je ne peux pas vraiment aller plus loin avec mes petites connaissances du code After.

    malgré ca, ya moyen de m'expliquer en quelques lignes, les grdes etapes de votre programme ?? question de comprendre la methode.
    pour la syntaxe, je verra ca plus tard...

    merci

    ah sinon une petite question :
    quand vous voulez avoir une variable globale, c'est la que vous utilisez les parametres glissère ??
     
  14. nab17connection

    Points Repaire:
    1 900
    Recos reçues:
    1
    Messages:
    1 051
    Appréciations:
    +0 / 0 / -0
    non mais apoal1 lui il bosse sur quelque chose d'autre apparemment, quelque chose qui n'a rien à voir avec l'effet 'mac icons'.

    ici, le principe de base est de calculer la distance entre la souris et la position de l'icone, puis de s'en servir pour calculer l'echelle et la position.
    la ptite différence entre les deux propriétés, c est que l'une (la position) se basera sur la distance qu'elle soit positive ou negative (afin que l icone monte ou descende pour menu vert., ou aille vers la gauche ou vers la droite pour menu horiz.), alors que l 'autre (l'echelle) ne s'interessera qu'à la valeur absolue de cette distance.

    j'avais du bien ranger le précédent projet car je ne l'ai pas retrouvé là aujourd'hui, je viens donc d'en refaire un rapido, avec un menu vertical cette fois, jette un oeil si tu veux :macIconsEffect.zip

    on pourrait bien sur affiner ca en utilisant par exemple des fonctions trigo ou de l exponentielle -au lieu du lineaire- (exemple une distribution gaussienne ou normale pour ceux à qui ca dit quelque chose), ou passer un peu plus de temps que moi là dessus :lol:
    je le laisse à titre d'exercice car je me casse en vacances dans deux heures et y'a le balluchon à préparer !

    bonnes fêtes à tous :D
     
  15. apoal1

    Points Repaire:
    1 200
    Recos reçues:
    3
    Messages:
    740
    Appréciations:
    +0 / 0 / -0
    Slt,

    désolé pour le retard, j'ai eu le message vite mais j'ai pas testé tout de suite. c'est exactement ça. MERCI !

    [​IMG]

    +
     
    #15 apoal1, 22 Décembre 2006
    Dernière édition: 13 Septembre 2007
Chargement...

Partager cette page

Autres contenus

Vous souhaitez annoncer sur le Repaire ? Contactez-nous