Bonjour,
mes notions des transformations étant relativement bancales, je me résous à poster mon problème :
Mon développement concerne un "moteur" de réalité augmentée qui superpose des modèles réels à leur avatar numérique.
Toutes mes coordonnées (même celles des objets réels) sont exprimées dans le repère défini par mon écran (0,0,0 en bas à gauche et X,Y suivant les bords, et enfin Z sortant de l'écran).
soient
- un objet réel, dont je connais les coordonnées de 4 points.
- une représentation numérique de cet objet, dont je connais aussi les coordonnées de 4 points dans le même écran.
Précisons que les 2 repères définis par ces 2 x 4-uplets ne sont ni "ortho" ni "normés".
Précisons aussi qu'utilisant OpenGL, je m'affranchis de la translation. Pour simplifier, il ne me reste donc que la matrice [3][3] de rotation/échelle à identifier.
Je voudrais donc calculer la matrice de transformation "Virtuel -> Réel" (V2R) à appliquer à mon objet virtuel afin qu'il se confonde à mon objet réel
J'étais parti du principe que je pouvais exprimer la matrice de transformation V2R ainsi :
V2R = V2Screen * Screen2R
Avec V2Screen construites avec les vecteurs définis par les 4 points correspondants du modèle virtuel, et Screen2R avec ceux de l'objet réel (et ensuite inversé).
Mais c'est là que le bât blesse... la matrice ainsi calculée est une aberration avec un facteur d'échelle (la diagonale de la matrice V2R si j'ai bien compris) démesuré par rapport à une estimation même très grossière de la réalité.
Donc j'en viens à supposer que pour faire un changement de repère, il ne suffit pas d'avoir 4 points au départ et à l'arrivée... comme je ne peux pas "orthonormer" mes points, quel est alors le moyen pour exprimer cette transformation?
Je crois avoir fait le tour.. mais j'ai peut-être (voire très certainement) fait des erreurs de raisonnement; donc n'hésitez pas à me corriger, ou/et à répondre à la dernière question .
Merci d'avance.
Partager