DirectX - Direct3D - Rotation (RotateXmatrix, RotateZmatrix)

cedricdierckx Messages postés 5 Date d'inscription mardi 17 juin 2003 Statut Membre Dernière intervention 23 juin 2006 - 1 août 2004 à 10:15
ShadowMaster Messages postés 184 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 18 août 2005 - 9 août 2004 à 15:18
Salut
donc j'ai commencé à faire un petit jeu d'avions, mais j'ai un problème en tournant l'avion: il doit savoir tourner sur son axe X et Z. Donc j' ai écris:
DX.RotateXMatrix matSquareX, PlayerRotationX * Rad
DX.RotateZMatrix matSquareZ, PlayerRotationZ * Rad
DX.MatrixMultiply matSquare, matSquareX, matSquareZ
(matsquare est la matrice pour tourner l'avion)

le problème est qu'il tourne d'abord l'avion autour de l'axe X et puis au lieu de tourner l'avion autour de SON axe Z, il le tourne autour de l'axe Z, après l'avoir déjà tourné autour du X...
Je serais HYPER content si quelqu'un pourrait me répondre, bien que j'ai déjà cherché comment faire un peu partout et je n'ai pas trouvé.

Grand merci à celui qui va répondre!

Céd

1 réponse

ShadowMaster Messages postés 184 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 18 août 2005
9 août 2004 à 15:18
pris du sdk Dx8:

Public Function AddRotation(combinetype As CombineTypeEnum, X As Single, Y As Single, z As Single, rot As Single)

Dim mat As D3DMATRIX
D3DXMatrixRotationAxis mat, vec3(X, Y, z), rot

Select Case combinetype
Case COMBINE_BEFORE
D3DXMatrixMultiply m_Matrix, mat, m_Matrix
Case COMBINE_AFTER
D3DXMatrixMultiply m_Matrix, m_Matrix, mat
Case COMBINE_replace
m_Matrix = mat
End Select

End Function

apres pour l'utiliser:
objet.AddRotation COMBINE_BEFORE, 1, 0, 0, RotX
objet.AddRotation COMBINE_BEFORE, 0, 1, 0, RotY
objet.AddRotation COMBINE_BEFORE, 0, 0, 1, RotZ

où RotX,RotY,RotZ sont les rotations
0
Rejoignez-nous