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

expression orientation 3D

Discussion dans 'Adobe After Effects' créé par rolaall, 29 Avril 2008.

  1. rolaall

    Points Repaire:
    550
    Recos reçues:
    0
    Messages:
    23
    Appréciations:
    +0 / 0 / -0
    bonjour a tous
    je cherche à faire une motion capture en 3D dans after. j'ai tracké mes mouvements et je les ai assignés à differents cubes representant epaule coude.....
    la je cherche à relier l'epaule et le coude par un solid (arm_G) de 10 pour 100px.

    en 2D j'obtiens ça sur la rotation de mon solid (arm_G):
    fixe = transform.position;
    target =thisComp.layer("coude_G").transform.position;
    delta=sub(fixe,target);
    angle=Math.atan2(delta[1],delta[0]);
    radiansToDegrees(angle)+90;

    en position j'obtiens:
    thisComp.layer("epaule_G").transform.position;

    le probleme c que je ne sais pas calculer le passage en 3D. Pour l'orientation, x y z sont mes axes et je n'arrive à faire comprendre à after que x et y. Est ce que je peux rajouter un axe (delta[2]) dans mon Math.atan2() ?
    si vous avez une idée je suis preneur. merci d'avance
     
  2. Sequelles

    Sequelles Modérateur
    Modérateur So

    Points Repaire:
    11 780
    Recos reçues:
    20
    Messages:
    4 261
    Appréciations:
    +2 / 13 / -0
    En 3D sur le paramètre Orientation il faut utiliser l'expression lookAt(fromPoint, atPoint) qui crée une orientation automatique du calque selon la direction définie par les deux points.
     
  3. rolaall

    Points Repaire:
    550
    Recos reçues:
    0
    Messages:
    23
    Appréciations:
    +0 / 0 / -0
    merci sequelles mais le parametre LookAt fonctionne mal sur l'orientation
    ça saute a chaque deplacement des solides

    c pour ça que j'ai cherché à calculer l'angle Math.tan du triangle rectangle que forme mon segment "arm_G",seulement je n'arrive pas à effectuer mon passage en 3D. Comment faire comprendre que l'orientation s'effectue sur x y et z???? En 2D Math.atan2 marche mais pas en 3D .

    j'ai lu ta discussion avec nab17 pour connaître l'angle entre 2 vecteurs dans l'espace 3D

    function angleBetween(v1,v2)
    {
    d = dot(v1, v2);
    n1 = length(v1);
    n2 = length(v2);
    d /= n1*n2;
    theta = Math.acos(clamp(d,-1,1));
    return radiansToDegrees(theta);
    }
    je ne sais pas a quoi correspond dot? si tu pouvais me l'expliquer peut etre que cela resoudrais mon probleme. je suis nouveau en expressions j'ai appris grace à nabscript et dan ebberts mais dot n'y apparait pas????

    merci d'avance!!!!!!
     
  4. oscarus

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    477
    Appréciations:
    +0 / 0 / -0
    dot (vec1,vec2) est une fonction permettant de calculer le produit scalaire de deux vecteurs.
    En mathématiques il est souvent utilisé pour savoir si les vecteurs sont orthogonaux (produit scalaire égale à zéro).
    Pour comprendre cette expression tu dois savoir que :
    dot (Vec1,vec2) = length(vec1)*length(vec2)*Math.cos(angle entre vect1 et vec2).
    Donc dans l'expression du grand nab17, d est la valeur du cosinus de l'angle fait part vec1 et vec2. Par contre le clamp (d,-1;1) dans l'expression ne sert à rien car la valeur d est déjà comprise entre -1 et 1 par définition du cosinus. Mais bon ont est jamais trop prudent contre les bugs qui nous cassent les c****** :D
    Voila pour les explications que tu demandais.
    Il est vrai que la fonction LookAt fonctionne mal sur l'orientation dans certain cas...:idea:
     
  5. Sequelles

    Sequelles Modérateur
    Modérateur So

    Points Repaire:
    11 780
    Recos reçues:
    20
    Messages:
    4 261
    Appréciations:
    +2 / 13 / -0
    ça fonctionne normalement, comme toutes les autres orientations automatique en 3D: les caméras et lumières vers leurs points ciblés, l'auto-orientation sur le chemin ou vers la caméra... tout ça répond toujours au même principe: les calques ne peuvent pas se retrouver la tête en bas. Donc ça saute de 180 le long de l'axe pour corriger.
    Ce qui pourrait te convenir c'est de changer l'orientation globale de ta scène: comme si tu construisais ta scène à plat sur une table et que tu la cadrais vu de haut en plongé (avec une caméra libre sans point ciblé, sinon le problème de retournement va se trouver sur ta caméra).
    Ou tu crées un changement de repère en mettant en parent de tes calques un nul avec son axe y vers la caméra.
     
  6. oscarus

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    477
    Appréciations:
    +0 / 0 / -0
    Merci pour ces précisions Sequelles, j'ai toujours cru que cela était provoqué par ce qu'on touchait à la limite d'AE.
     
  7. nab17connection

    Points Repaire:
    1 900
    Recos reçues:
    1
    Messages:
    1 051
    Appréciations:
    +0 / 0 / -0
    Pour référence future, en plus concise et plus sure ;-) :

    Code:
    function angleBetween(v1, v2)
    {
       var n = length(v1) * length(v2);
       return n == 0 ? 0 : radiansToDegrees(Math.acos(dot(v1, v2) / n));
    }
    
     
  8. Sequelles

    Sequelles Modérateur
    Modérateur So

    Points Repaire:
    11 780
    Recos reçues:
    20
    Messages:
    4 261
    Appréciations:
    +2 / 13 / -0
    très joli!

    Je ne connais pas cette syntaxe.
    Code:
    return n == 0 ? 0 : radiansToDegrees(Math.acos(dot(v1, v2) / n))
    c'est comme si on faisait:
    Code:
     if(n == 0) {tmp=0} else {tmp= radiansToDegrees(Math.acos(dot(v1, v2) / n))};
       return tmp
    Pour les opérations sur les vecteurs cette page est bien:
    wiki: Calcul vectoriel en géométrie euclidienne

    en sachant que dans les expressions
    dot = Produit scalaire de deux vecteurs (le résultat est un nombre)
    cross = Produit vectoriel de deux vecteurs dans l'espace (le résultat est un vecteur)
     
  9. rolaall

    Points Repaire:
    550
    Recos reçues:
    0
    Messages:
    23
    Appréciations:
    +0 / 0 / -0
    merci a tous
    ça fait chaud au coeur d'avoir les conseils de pros des expressions comme vous

    je vais travailler encore un peu sur ma motion capture grace à vos explications qui me demandent encore beaucoup de reflexion
    merci messieurs
    petit message a oscarus, j'ai vu sur ton site que tu avais trouver le moyen de realiser une marionnette en 3D qui reprend les principes de la cinématic inverse. au final c ce que j'aurais aimé reussir à faire.

    A tout hazard; est ce que tu aurais mit la réponse à cet exploit sur le site ou est ce que tu veux bien partager ton secret? je comprendrais que tu ne veuilles pas mais je pause la question car ce serais un moyen d'aller encore plus loin dans le calcul des angles.

    merci a tous pour la 3eme et derniere fois
     
  10. nab17connection

    Points Repaire:
    1 900
    Recos reçues:
    1
    Messages:
    1 051
    Appréciations:
    +0 / 0 / -0
    Oui Sequelles c'est ça. C'est l'équivalent d'un if/else en une seule instruction (voir "Opérateur ternaire" sur le web). C'est d'ailleurs toi qui m'avait appris cette syntaxe :bigsmile: ! (ici - post 33)... "J'ai la mémoire qui flanche, j'me souviens plus très bien", comme disait Jeanne :D
     
  11. oscarus

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    477
    Appréciations:
    +0 / 0 / -0
    J'ai effectivement écris une expression qui permet d'éviter ce saut de 180 °,l'orientation est ainsi toujours automatique mais sans sursaut. Contacte-moi par mail privé.
     
  12. 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 Alzheimer qui me guette ! :help:

    ...
    pour rollall ne pas oublier d'aller faire un tour chez Dan:
    Dan Ebberts's Expressioneering Design Guide
     
  13. rolaall

    Points Repaire:
    550
    Recos reçues:
    0
    Messages:
    23
    Appréciations:
    +0 / 0 / -0
    merci a tous
     
Chargement...

Dernières occasions

 

Partager cette page

Vous souhaitez annoncer sur le Repaire ? Contactez-nous