cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 20104 20 nov. 2007 à 17:12
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)
THEwarrior333
Messages postés192Date d'inscriptionvendredi 19 mars 2004StatutMembreDernière intervention30 janvier 2008 20 nov. 2007 à 17:29
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.
cs_sam20
Messages postés184Date d'inscriptionlundi 31 juillet 2006StatutMembreDernière intervention26 mai 20163 20 nov. 2007 à 17:37
(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 .
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_sam20
Messages postés184Date d'inscriptionlundi 31 juillet 2006StatutMembreDernière intervention26 mai 20163 20 nov. 2007 à 18:15
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 .
cs_sam20
Messages postés184Date d'inscriptionlundi 31 juillet 2006StatutMembreDernière intervention26 mai 20163 20 nov. 2007 à 18:33
J'ai plus de cheuveux lol.
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.
THEwarrior333
Messages postés192Date d'inscriptionvendredi 19 mars 2004StatutMembreDernière intervention30 janvier 2008 20 nov. 2007 à 18:39
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)