-
Matrices et OpenGL
J'ai plusieurs questions sur les matrices et OpenGL.
1)Quelle est la différence entre GL_PROJECTION et GL_MODELVIEW?Si j'ai bien compris,il applique la matrice GL_PROJECTION apres la matrice GL_MODELVIEW non?Mais pourquoi ne pas utiliser des matrices directement sans préciser s'il s'agit de GL_PROJECTION ou GL_MODELVIEW,sa ne change rien pour la carte graphique non?
2)J'ai une matrice que je voudrais appliquer a un objet.Et la grande question,comment je fait^^?
3)Dans les matrices 4x4,qu'est ce qui est appliqué en premier,la rotation ou la translation?
Merci.
-
1)
GL_PROJECTION est une pile de matrices utilisée pour stocker les transformations de projection.
GL_MODELVIEW est une pile de matrices utilisée pour stocker les transformations géometriques.
Quand tu définis tes points, ils sont dans l'espace scène, et toi tu aimerais qu'ils soient dans l espace de l'écran pour pouvoir les visualiser, ce qui revient à emmener tes points dans le repère caméra et faire une projection sur le plan 2D de l'écran.
Tu utilises donc une transformation géometrique pour passer les points dans les repère camera puis une projection pour avoir les coordonées sur l'écran.
Tu peux effectivement faire tes calculs matriciels à la main, mais ça sera le CPU qui se les taperas, alors qu'opengl sait très bien faire ces calculs en utilisant le GPU, pourquoi s'en priver ?
2)
Tu as une matrice de transformation M et un point P.
Soit P' le point transformé, alors
P' = M x P
Donc appliquer une transformation à un objet revient à appliquer cette transformation à tout ses points.
Je te conseilles de jeter un oeil sur le pipeline Opengl pour bien comprendre comment il traite les informations et fait tout tout seul pour toi :p
3)
Aucun des deux, les deux sont fait en même temps !
C'est une multiplication matricielle quoi ...
De rien.
-
Merci!
1)Mais on pourais aussi utiliser une unique pile de matrices non?Et sinon GL_MODELVIEW définie toute les transformation relatives a l'objet et a la camera c'est sa?
2)Imaginons que j'ai une matrices 4x4 et que je veu que opengl l'applique a un objet. Quelle commande je doi utiliser pour que OpenGL applique un matrice sur un objet(sans passer évidement par rotatef,tranlatef et companie)?
2)Je suis pas sur de bien comprendre....Un matrice 4x4 définie bien une rotation ET une translation?(corrigez moi si je raconte n'importequoi je suis pas un pro des matrices^^).Quand on applique cette matrice a des points,on a donc la rotation ET la translation qui sont appliqués.Quelle est dans la pratique ce qui se passe?Imaginons que j'ai un point (0,0,0).Je lui applique un matrice 4x4 qui définie une rotation sur l'axe Y de 90° ET une translation de (1,1,1).Quelle seras le résultat finale?Un point en (1,1,1) ou un point autre part?
-
Bonsoir ;)
glMultMatrixf( matrice );
Oui « ça » appliquera la translation, la taille, la rotation sur l'objet avec un seul appel.
Voici un bon lien:
http://jeux.developpez.com/faq/matquat/
-
Merci!
Sinon, j'avais dejas lu la faq(plusieur fois d'ailleur),mais c'est toujours bien de rappeler ce lien.