Orienter un objet [OpenGL] - C - Programmation
Marsh Posté le 16-06-2004 à 19:31:25
Ne passe PAS par les angles, utilise des matrices de rotation ou des quaternions, sinon tu vas te les trainer dans tout ton code, ces irrégularités dont tu parles.
Marsh Posté le 16-06-2004 à 20:48:23
Ben j'utilise les primitives OpenGL, enfin surtout glRotate*, et pour ce glRotate, je suis bien obligé de calculer les angles ...
comment faire autrement ???
Marsh Posté le 16-06-2004 à 22:16:59
En utilisant des matrices de rotations. C'est rare d'utiliser les angles pour orienter un objet dans les applications 3d, pour te répondre, on utilise les matrices de rotation (ou les quaternions) a la place. glRotate ne fait que calculer a ta place cette matrice de rotation, en fonction de l'angle que tu lui donnes.
Marsh Posté le 17-06-2004 à 09:28:04
Ok, c'est bien tout ça, mais je veux pas faire le gros boulet, mais y me faudrait un exemple pour calculer tout ça et ensuite quand même faire mon glRotate parce que tout le reste de mon programme utilise la matrice d'Opengl ...
un exemple de code serait très bienvenu ... merci beaucoup !!!
Marsh Posté le 17-06-2004 à 09:56:27
en fait, ce qu'il me faudrait, c'est étant donné un vecteur, calculer la matrice qui donne la même orientation que ce vecteur, et ensuite appliquer cette matrice à la matrice de base OpenGl !!!
Quelqu'un sait-il faire ça ???
Marsh Posté le 17-06-2004 à 11:58:08
c'est bon, en me creusant bien la tête, mais alors vraiment bien, j'ai réussi à cacluler la matrice et grâce à la fonction glMultMatrixf je peux l'appliquer directement à ma matrice OpenGL
Marsh Posté le 16-06-2004 à 18:46:01
Hello !!!
J'ai un problème en OpenGL. Voilà, c'est simple, j'essaie d'orienter un objet avec la même orientation que la surface (qui est un mesh) sur lequel il repose.
J'ai calculé toutes les normales aux faces de mon mesh et j'y accède juste ça pas de problème (donc pas besoin de me me dire : controle tes normales, elles sont certifiées) ... ce que j'ai du mal à faire, enfin où je pense qu'il y a l'erreur c'est pour calculer les angles des deux rotations qui correspondent au 4ème et 5ème degrés de liberté d'un solide indéformable. Donc à partir de la normale je calcule les deux angles en question avec le thérorème du cosinus ...
Alors voilà, des fois ça marche, et des fois pas, et tout ça ça pue les irrégularitées des fonctions du genre acos !!! J'ai rajouté à la louche des +- M_PI/2, ça marche un peu mieux, mais pas encore top ...
Alors voilà, je pense que si des gens ont déjà fait de l'OpenGL avant, ils vont me sortir ça facilement et moi j'arrive plus à trouver des erreurs dans ce code que voici (l'endroit où je calcule les angles fatidiques) :
j'ai déjà posté dans Graphisme, mais j'ai cru comprende que les gens là-bas n'aimaient pas trop le C !!!