En gros, si je comprend bien, après chaque prise de vue, tu cliques un par un par un sur tout tes sommets ?
J'aimerais connaitre exactement ton protocole actuel afin de ne pas t'induire en erreur.
En gros, si je comprend bien, après chaque prise de vue, tu cliques un par un par un sur tout tes sommets ?
J'aimerais connaitre exactement ton protocole actuel afin de ne pas t'induire en erreur.
Oui c'est tout à fait ça
J'ai mon objet qui tourne de 45 degrés précisément à chaque rotation.
Sur chaque vue de l'objet, je clique sur tous les sommets afin d'indiquer leurs différentes coordonnées dans toutes les vues et je souhaite modéliser l'objet à partir de ces points.
Désolé de répondre si tardivement mais j'ai pas vraiment eu le temps dernièrement.
Je reprends mes calculs en essayant d'être un peu plus clair. Je maintiens au passage que je peux me tromper.
Dans mes calculs, MVP (Model-View-Projection) correspond à la multiplication de l'ensemble des matrices qui permettent de passer de l'espace 3D du point vers la position 2D à l'écran. Elle décrit ta caméra en somme. Dans ton cas on part du principe que la caméra bouge mais pas l'objet (mais l'inverse reviendrait au même)
Ton objectif est de trouver le point 2D en position (2) correspondant au point 2D en position (1) après rotation (si il est toujours visible bien sur)
Le cube ne bouge pas donc la position 3D de ce point en (1) et (2) est la même.
Dans ton cas, tu n'as pas besoin de savoir si c'est plutôt M, V, ou P qui a changé, du moment que tu connais l'ensemble pour (1) et (2).
On calcule Pos2D(1) et Pos2D(2) comme ceci (ce que fait OpenGL avec ses glFrustrum et gluPerspective... pour calculer la position à l'écran).
Pos2D(1) = MVP1 x Pos3D
Pos2D(2) = MVP2 x Pos3D
Ce qui équivaut à :
Pos3D = inv(MVP1) * Pos2D(1)
Pos3D = inv(MVP2) * Pos2D(2)
Donc :
inv(MVP1) x Pos2D(1) = inv(MVP2) x Pos2D(2)
Tu cherches Pos2D(2) en partant de Pos2D(1) :
Pos2D(2) = MVP2 * inv(MVP1) x Pos2D(1)
Tu peux parcourir tout tes points 2D pour essayer de déterminer quel point se rapproche le plus de Pos2D(2) = MVP2 * inv(MVP1) x Pos2D(1).
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager