Directx mesh face a la direction

cs_sam20 Messages postés 184 Date d'inscription lundi 31 juillet 2006 Statut Membre Dernière intervention 26 mai 2016 - 20 nov. 2007 à 13:30
THEwarrior333 Messages postés 192 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 30 janvier 2008 - 27 nov. 2007 à 18:47
Salut a tous.
Voila mon pb.
J'affiche la mesh et je lui donne une position ainsi qu'une direction.
Je voudrai orienter ma mesh vers la direction.

x,y,z =position
dirx,diry,dirz=direction
a,b,c=rotation(en degré)

Je crois que c'est pour les poids lourds des maths.
Merci a vous.

43 réponses

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
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)
0
THEwarrior333 Messages postés 192 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 30 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.

<endl>Un clavier Azerty en vaut deux

</endl>
0
cs_sam20 Messages postés 184 Date d'inscription lundi 31 juillet 2006 Statut Membre Dernière intervention 26 mai 2016 3
20 nov. 2007 à 17:32
Salut.
Je sais tourner l'objet.
La question est :
exemple:
si l'objet est a 0.0.0  et il regarde a 5.0.5 je le tourne de combiens?
0
cs_sam20 Messages postés 184 Date d'inscription lundi 31 juillet 2006 Statut Membre Dernière intervention 26 mai 2016 3
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 .
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
THEwarrior333 Messages postés 192 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 30 janvier 2008
20 nov. 2007 à 17:47
La réponse est là: http://jeux.developpez.com/faq/matquat/?page=transformations#Q36

<endl>Un clavier Azerty en vaut deux

</endl>
0
cs_sam20 Messages postés 184 Date d'inscription lundi 31 juillet 2006 Statut Membre Dernière intervention 26 mai 2016 3
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 .
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
20 nov. 2007 à 18:27
Salut,


Tu connais D3DXMatrixLookAtLH ?


(Moi non plus j'ai pas compris !)
<hr size="2" width="100%" />3ème année en ecole d'ingé d'info cherche stage de 4 mois à partir du 01/04/08
0
THEwarrior333 Messages postés 192 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 30 janvier 2008
20 nov. 2007 à 18:29
Bien joué rt15, je ne me souvenais plus de cette fonction, pourtant tres utilisée pour manipuler la caméra. Dans la FAQ, j'aurais du t'orienter plutot sur ca: http://jeux.developpez.com/faq/matquat/?page=transformations#Q39

<endl>Un clavier Azerty en vaut deux

</endl>
0
cs_sam20 Messages postés 184 Date d'inscription lundi 31 juillet 2006 Statut Membre Dernière intervention 26 mai 2016 3
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.
0
THEwarrior333 Messages postés 192 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 30 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)

<endl>Un clavier Azerty en vaut deux

</endl>
0
cs_sam20 Messages postés 184 Date d'inscription lundi 31 juillet 2006 Statut Membre Dernière intervention 26 mai 2016 3
20 nov. 2007 à 18:46
Ah bon?je croyais que ce n'
etait que pour la camera.
Up je connais c'est pour "retourner le monde 3d"
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
20 nov. 2007 à 19:46
Toutes ces fonctions s'appliquent sur des matrices, après ce que tu fais des matrices ne regarde que toi...
0
cs_sam20 Messages postés 184 Date d'inscription lundi 31 juillet 2006 Statut Membre Dernière intervention 26 mai 2016 3
25 nov. 2007 à 11:18
D3DXMatrixLookAtLH ca marche pas ,l'objet tourne dans l'espace mais pas sur lui meme.
0
cs_sam20 Messages postés 184 Date d'inscription lundi 31 juillet 2006 Statut Membre Dernière intervention 26 mai 2016 3
25 nov. 2007 à 11:27
J'arrive pas je comprend rien.
0
THEwarrior333 Messages postés 192 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 30 janvier 2008
25 nov. 2007 à 12:21
La il va falloir que tu nous montres un peu de code. Tu as peut etre mal utilisé tes matrices.

<endl>Un clavier Azerty en vaut deux

</endl>
0
cs_sam20 Messages postés 184 Date d'inscription lundi 31 juillet 2006 Statut Membre Dernière intervention 26 mai 2016 3
25 nov. 2007 à 12:52
Tu n'aurais pas une idee de code stp?
0
cs_sam20 Messages postés 184 Date d'inscription lundi 31 juillet 2006 Statut Membre Dernière intervention 26 mai 2016 3
25 nov. 2007 à 12:54
D3DXVECTOR3 eye(0,0,0); D3DXVECTOR3 at(0,0,0.01); D3DXVECTOR3 up(0,1,0);


D3DXMatrixLookAtLH(&matworld, &eye, &at,&up);
g_pd3dDevice->SetTransform( D3DTS_WORLD, &matworld);

Ensuite je j'affiche le mesh.
0
THEwarrior333 Messages postés 192 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 30 janvier 2008
25 nov. 2007 à 13:03
Moi je ferais:

D3DXMatrixLookAtLH(&matRot, &eye, &at,&up);
NewMat = matRot * matworld;
g_pd3dDevice->SetTransform( D3DTS_WORLD, &NewMat);

// Afficher le mesh

g_pd3dDevice->SetTransform( D3DTS_WORLD, &matworld);

// Afficher les autres mesh.

Si c'est pas ca, donne plus de détail.



<endl>

Un clavier Azerty en vaut deux




</endl>
0
cs_sam20 Messages postés 184 Date d'inscription lundi 31 juillet 2006 Statut Membre Dernière intervention 26 mai 2016 3
25 nov. 2007 à 13:12
Ca marche pas .
0
cs_sam20 Messages postés 184 Date d'inscription lundi 31 juillet 2006 Statut Membre Dernière intervention 26 mai 2016 3
25 nov. 2007 à 16:08
Quel detail veux tu?Tout es la,je voudrai tourner un mesh face un point dans l'espace (x,y,z).
0
Rejoignez-nous