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

Ateliers et Formations

Jeu sur les expressions

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

Tags:
  1. oscarus

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    477
    Appréciations:
    +0 / 0 / -0
    C'est bien, mais avec ton expression ton animation a une durée déterminée à l'avance et ne continue pas indéfiniment dans le temps !
     
  2. Sequelles

    Sequelles Modérateur
    Modérateur So

    Points Repaire:
    11 780
    Recos reçues:
    20
    Messages:
    4 261
    Appréciations:
    +2 / 13 / -0
    c'est en effet c'est ce qui m'embêtait le plus.
    Mais comme précédemment tu avais fait le même type d'expression avec des lignes de "if" les unes à la suite des autres, je m'étais dit que ça devait être ça.

    Mais Voilà la solution:
    en utilisant while ça marche pour n'importe quel durée:

    seedRandom(thisComp.layer(1).effect("seed")(1), true)
    t=thisComp.layer(1).effect("relance")(1)
    e=thisComp.layer(1).effect("ecart")(1)
    d=thisComp.layer(1).effect("durée")(1)+thisLayer.name*e
    x=0;b=[20,20]
    while(time>x){
    a=Math.round(random(d,d+e))
    b=linear(time, x, x+a/thisComp.layer(1).effect("vitesse")(1), b, b+[0,a*40])
    x=x+t
    }
    b
     
  3. oscarus

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    477
    Appréciations:
    +0 / 0 / -0
    Jackpot pour Sequelles !

    Là c'est mieux, sinon on ne voyait pas trop l'intérêt de l'expression !! :bravo:

    Voici ma solution :

    t=0;
    L=thisComp.layer("Rouge uni 1").position.valueAtTime(t);
    M=thisComp.layer("Rouge uni 1").position.valueAtTime(thisComp.frameDuration+t);
    N=thisComp.layer("Rouge uni 1").position.valueAtTime(thisComp.frameDuration*2+t);
    O=thisComp.layer("Rouge uni 1").position.valueAtTime(thisComp.frameDuration*3+t);
    P=thisComp.layer("Rouge uni 1").position.valueAtTime(thisComp.frameDuration*4+t);
    O1=Math.floor(O[0]/100)*100;
    N1=Math.floor(N[0]/100)*100;
    M1=Math.floor(M[0]/100)*100;
    L1=Math.floor(L[0]/100)*100;
    P1=Math.floor(P[0]/100)*100;
    A=0;
    B=L1+M1+N1+O1+P1
    while(time>=t+4.5)
    {
    A=B;
    t=t+4.5;
    L=thisComp.layer("Rouge uni 1").position.valueAtTime(t);
    M=thisComp.layer("Rouge uni 1").position.valueAtTime(thisComp.frameDuration+t);
    N=thisComp.layer("Rouge uni 1").position.valueAtTime(thisComp.frameDuration*2+t);
    O=thisComp.layer("Rouge uni 1").position.valueAtTime(thisComp.frameDuration*3+t);
    P=thisComp.layer("Rouge uni 1").position.valueAtTime(thisComp.frameDuration*4+t);
    O1=Math.floor(O[0]/100)*100;
    N1=Math.floor(N[0]/100)*100;
    M1=Math.floor(M[0]/100)*100;
    L1=Math.floor(L[0]/100)*100;
    P1=Math.floor(P[0]/100)*100;
    B=A+L1+M1+N1+O1+P1;
    }
    linear(time, 0+4.5*Math.floor(time/4.5),4.5*Math.floor(time/4.5)+(L1+M1+N1+O1+P1)/600,
    [25,400+A], [25,400+B])

    Cette expression est à coller dans la propriété "Décaler vers" du filtre "Décalage" du calque représentant la cinquième ligne de la machine.
    Pour les autres calques ( les autres lignes) l'expression est la même mais on remplace L1+M1+N1+O1+P1 par L1+M1+N1+O1
    Pour la ligne 4, par L1+M1+N1 pour la ligne 3, par L1+M1 pour la ligne 2, par L1 pour la ligne 1.
     
  4. oscarus

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    477
    Appréciations:
    +0 / 0 / -0
    Layer Space Transforms

    Le calque 1 imprime son tracé sur le calque 2.

    Spacetrans.mov

    J'ai mis l'expression suivante dans la propriété "Position" du filtre "Tracé dynamique" :

    toWorldVec(thisComp.layer("tracé rouge").effect("Tracé dynamique")("Position"))
    +thisComp.layer("calque 1").position-thisComp.layer("calque 2").position

    Et l'expression pour la propriété "Position" des calques 1 et 2 :

    toComp(position)
     
  5. Sequelles

    Sequelles Modérateur
    Modérateur So

    Points Repaire:
    11 780
    Recos reçues:
    20
    Messages:
    4 261
    Appréciations:
    +2 / 13 / -0
    c'est bien mais tes calques ne font pas de rotation dans les 3 axes indépendamment l'un de l'autre.
     
  6. Sequelles

    Sequelles Modérateur
    Modérateur So

    Points Repaire:
    11 780
    Recos reçues:
    20
    Messages:
    4 261
    Appréciations:
    +2 / 13 / -0
    Ce qu'il y a de cool avec cette expression d'à peine 80 caractères c'est qu'elle fonctionne toujours quel que soit le type de caméra et tous ses paramètres géométriques et quel que soit la taille des calques et leurs transformation géométrique de point d'ancrage, position, échelle, orientation ou rotation
    spacetrans2.mov
     
    #111 Sequelles, 2 Avril 2004
    Dernière édition: 3 Avril 2004
  7. oscarus

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    477
    Appréciations:
    +0 / 0 / -0
    Gagné!
    spacetrans2.mov

    expression:
    fromCompToSurface(toComp(fromWorld(thisComp.layer("jaune").position)))
     
  8. Sequelles

    Sequelles Modérateur
    Modérateur So

    Points Repaire:
    11 780
    Recos reçues:
    20
    Messages:
    4 261
    Appréciations:
    +2 / 13 / -0
    BRAVO
    respect et sincère admiration
    l'expression utilisée été
    "fromCompToSurface(thisComp.layer("1").toComp(thisComp.layer("1").effect("Cercle")(1)))"
     
  9. oscarus

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    477
    Appréciations:
    +0 / 0 / -0
  10. oscarus

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    477
    Appréciations:
    +0 / 0 / -0
    Petit jeu : Cercles.mov

    L'animation ne nécessite que deux images clés sur la propriété rotation du cercle rouge.
    Le cercle rouge roule sur le cercle jaune et entraîne la rotation des cercles bleu et vert
     
  11. jonz

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    352
    Appréciations:
    +0 / 0 / -0
    elle a l'air chouette l'epression : spacestrans2.mov
    est ce que vous pouvez mettre a dispo la source?

    et encore bravo :)
     
  12. oscarus

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    477
    Appréciations:
    +0 / 0 / -0
    Sequelles est l'auteur du jeu spacetrans2.mov, il lui revient de t'envoyer son projet.
    Pour réaliser cette animation il suffit de coller l'expression dans la propriété "Position" du filtre "Tracé dynamique" du calque blanc.
    A toi ensuite de jouer avec les propriétés: rotation, position, point d'ancrage, échelle... comme bon te semble pour le calque blanc et le jaune (celui qui écrit sur le calque blanc). Tu peux aussi déplacer la caméra ...
     
  13. Sequelles

    Sequelles Modérateur
    Modérateur So

    Points Repaire:
    11 780
    Recos reçues:
    20
    Messages:
    4 261
    Appréciations:
    +2 / 13 / -0
  14. oscarus

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    477
    Appréciations:
    +0 / 0 / -0
    Désolé, mais je n' avais pas remarqué que tu avais utilisé un effet dans le calque qui imprime sur le calque blanc. Mon objectif était de réaliser la même animation que dans spacetrans2.mov à partir d'expression.
    Pour Le jeu "Cercles" tu n'as pas utilisé les expressions ? :)

    J'ai aussi utilisé la fonction "Parent" pour certain calques.
     
    #119 oscarus, 8 Avril 2004
    Dernière édition: 8 Avril 2004
  15. Sequelles

    Sequelles Modérateur
    Modérateur So

    Points Repaire:
    11 780
    Recos reçues:
    20
    Messages:
    4 261
    Appréciations:
    +2 / 13 / -0
    J'ai utilisé les parents.
    La rotation est faite principalement dans le filtre vegas.
    Les expressions me servent à copier la rotation d'un calque sur l'autre pour animer l'ensemble de façon cohérente et rapide.
     
Chargement...

Partager cette page