Ben c'est simple tu crées une matrice de rotation que tu passes comme WorldMatrix au Device avant le rendu du mesh (y a des fonctions maths pour faire ca dans d3dx du genre dxmatrixrotationyawpitchroll etc)
Déjà (dirx, diry, dirz) est superflu à partir du moment ou tu manipules des angles de rotation (a, b, c).
C'est plus simple que ce que tu ne crois. Tu calcules les matrices de rotation MatRot (avec a,b,c) et de translation MatTrans (x,y,z) grâce à DirectX. Puis tu les multiplies à la matrice World:
NewMat = MatTransl * MatRot * MatWorld;
Tu remplaces MatWorld par MatNew (SetTransform) le temps d'afficher ton mesh et voilou.
(a=0 a 360)
D3DXMatrixRotationX( &matRotX,DEGTORAD(a) );
Me permet de le tourner, a ce niveau la pas de pb.
Mais il faut calculer en fonction de la position et du regard .
Je crois que je me fais mal comprendre.
Je sais tourner l'objet.
Imaginon que l'objet et en position 0.0.0 (x,y,z) il regarde en (x1,y1,z1).
Donc je dois le tourner pour qu'il fasse face a la cible, pour cela il me faut un calcul en fonction de la position de l'object et du regard .
D3DXMatrixLookAtLH c'est pour la camera.
La je parle d'objet.
Je vai essayer de faire simple .
J'ai deux object un qui bouge et l'autre qui le regarde.
donc le 1er dois tourner pour faire toujour face au 2eme.
j'utilise:
D3DXMatrixRotationX( &matRotX,DEGTORAD(a) );
D3DXMatrixRotationY( &matRotX,DEGTORAD(b) );
D3DXMatrixRotationZ( &matRotX,DEGTORAD(c) );
Pour tourner l'objet.
ce que je cherche c'est un calcul pour le tourner en fonction du deplacement du 2eme.
eh ben? la fonction donnée par rt15 donne ce que tu cherches (elle n'est pas spécifique à la caméra) puisqu'elle retourne la matrice de transformation (rotation) à appliquer à ton objet pour qu'il s'oriente selon ton vecteur directeur:
pOut = la matrice souhaitée
vEye = position de l'objet à tourner
pAt = vecteur directeur
pUp = [0, 1, 0] (vecteur Y car je suppose que le haut de ton monde est dirigé selon l'axe Y)