Bonjour à tous,
Je suis en train d'écrire un plugin pour Xblite pour lire et afficher les modèles .MD3 en OPENGL.
Grâce à la FAQ sur les matrices et quaternions, J'arrive maintenant à composer une matrice à appliquer à chaque partie de mon modèle de manière à ce que le personnage et son arme s'articulent correctement.
Mon problème si situe au niveau des bounding boxes, j'ai besoin d'en recuperer les coordonnées pour pouvoir faire les tests de collision.
Quand je les affiche après avoir multiplié la matrice à la matrice courante (avec glMultMatrixf), j'obtient un résultat correct :
Par contre, en multipliant moi même les vecteurs à la matrice crée, la translation à l'air bonne mais les rotations déforment ma box de manière bizarre:
Je me suis inspiré de la FAQ pour la fonction de multiplication, en tenant compte que les matrices GL ne sont pas dans le sens conventionnel (Matrix[15] est un tableau de float/single représentant une matrice 4x4 OPENGL)
Du coup je me demande comment OPENGL applique les matrices à un vecteur...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 FUNCTION SINGLE MATH_MatrixMultiplyVector (SINGLE Matrix[],CVector3 vect) SINGLE x,y,z x=Matrix[0]*vect.x+Matrix[4]*vect.y+Matrix[8]*vect.z+Matrix[12] y=Matrix[1]*vect.x+Matrix[5]*vect.y+Matrix[9]*vect.z+Matrix[13] z=Matrix[2]*vect.x+Matrix[6]*vect.y+Matrix[10]*vect.z+Matrix[14] vect.x = x vect.y = y vect.z = z END FUNCTION
Une chose est sûre, j'ai raté quelque chose quelque part mais quoi et où ?
Partager