Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : DirectX 9: Probleme pour effectuer deux transformations en même temps (rotation et ranslation) [ Archives / DirectX ] (Overwrite)

mercredi 17 septembre 2003 à 21:04:38 | DirectX 9: Probleme pour effectuer deux transformations en même temps (rotation et ranslation)

Overwrite

Je veux effectuer une translation et une rotation en même temps sur un triangle tt bete mais ca fonctionne pas. DirectX n'execute que la rotation :

// Juste la fonction qui marche pas

float posx=0.0f;
float rot=0.0f;
VOID SetupMatrices()
{
D3DXMATRIXA16 matrice;

//---------------- Translation ----------------------------

D3DXMatrixTranslation(&matrice,0,0,posx);
g_pd3dDevice->SetTransform( D3DTS_WORLD, &matrice);
posx+=0.1f;
//------------------------------------------------------------

//------------------- Rotation (y'a que ca qui marche) -----

D3DXMatrixRotationY(&matrice,D3DXToRadian(rot));
rot+=0.5f;
g_pd3dDevice->SetTransform( D3DTS_WORLD, &matrice);
//------------------------------------------------------------

// Le reste c'est pour la camera.
D3DXVECTOR3 vEyePt(0.0f, 0.0f, -5.0f );
D3DXVECTOR3 vLookatPt( 0.0f, 0.0f, 0.0f );
D3DXVECTOR3 vUpVec( 0.0f, 1.0f, 0.0f );
D3DXMATRIXA16 matView;
D3DXMatrixLookAtLH( &matView, &vEyePt, &vLookatPt, &vUpVec );
g_pd3dDevice->SetTransform( D3DTS_VIEW, &matView );

D3DXMATRIXA16 matProj;
D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4, 1.0f, 1.0f, 100.0f );
g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
}

Voili voilou, merci d'avance. Si je suis pas clair dites le moi surtout...

vendredi 19 septembre 2003 à 16:57:26 | Re : DirectX 9: Probleme pour effectuer deux transformations en même temps (rotation et ranslation)

Chouchou182




Bijourr!

Le problème c'est que seule la dernière transformation (la rotation) est prise en compte.
C'est comme si par exemple tu fais :
variable = 3 ;
variable = 4 ;

Pour que la matrice de transformation du monde fasse les deux tranformations il faut réunir en une seule les deux matrices.
Voilà un exemple :

D3DXMATRIX matWorld ;
D3DXMatrixIdentity ( & matWorld ) ;

D3DXMATRIX matRotation ;
D3DXMatrixRotationY(&matRotation, D3DXToRadian(rot)) ;

D3DXMatrixMultiply( & matWorld, & matWorld, & matRotation) ;

matWorld._41 = new_posx ;
matWorld._42 = new_posy ;
matWorld._43 = new_posz ;

Après tout ça tu peux faire le SetTransform ;
Il est très important de respecter l'ordre rotation puis transformation et de transformer tout à la fois.

A++

Chouchou182

-------------------------------
Réponse au message :
-------------------------------

> Je veux effectuer une translation et une rotation en même temps sur un triangle tt bete mais ca fonctionne pas. DirectX n'execute que la rotation :
>
> // Juste la fonction qui marche pas
>
> float posx=0.0f;
> float rot=0.0f;
> VOID SetupMatrices()
> {
> D3DXMATRIXA16 matrice;
>
> //---------------- Translation ----------------------------
>
> D3DXMatrixTranslation(&matrice,0,0,posx);
> g_pd3dDevice->SetTransform( D3DTS_WORLD, &matrice);
> posx+=0.1f;
> //------------------------------------------------------------
>
> //------------------- Rotation (y'a que ca qui marche) -----
>
> D3DXMatrixRotationY(&matrice,D3DXToRadian(rot));
> rot+=0.5f;
> g_pd3dDevice->SetTransform( D3DTS_WORLD, &matrice);
> //------------------------------------------------------------
>
> // Le reste c'est pour la camera.
> D3DXVECTOR3 vEyePt(0.0f, 0.0f, -5.0f );
> D3DXVECTOR3 vLookatPt( 0.0f, 0.0f, 0.0f );
> D3DXVECTOR3 vUpVec( 0.0f, 1.0f, 0.0f );
> D3DXMATRIXA16 matView;
> D3DXMatrixLookAtLH( &matView, &vEyePt, &vLookatPt, &vUpVec );
> g_pd3dDevice->SetTransform( D3DTS_VIEW, &matView );
>
> D3DXMATRIXA16 matProj;
> D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4, 1.0f, 1.0f, 100.0f );
> g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
> }
>
> Voili voilou, merci d'avance. Si je suis pas clair dites le moi surtout...



Cette discussion est classé dans : rotation, matrice, 0f, pd3ddevice, settransform


Répondre à ce message

Sujets en rapport avec ce message

pb avec les rotations [ par ET29 ] Bonjour,je bute sur un petit pb de rotations :je voudrais faire pivoter une pyramide avec la souris autour des axes X et Y de l'ecran (soit horizontal GESTION CLAVIER SDL ET OPENGL [ par Batman60 ] salut voici une partie de mon code pour me déplacer dans un espace 3Dje cherche le moyen d'avancer(SDLK_UP) dans le sens de la rotation choisi(SDLK_x  Rotation image (matrice) ? [ par albert0 ] Bonjour, voilà, je suis sur un petit projet. Il consite a charger une image en .RAW (binaire) et de l'afficher sous diéfrente forme. Donc, je ch directx texture [ par niketou ] Salut a tous.Voila j'ai mon triangle texturé mais je voudrai que la texture ce repete plusieur fois au lieu d'un simple plaquage.Si quelqu'un sait com Calculer matrice rotation, axe quelconque [ par poiuytrez3 ] Bonjour,je suis en train de faire un petit moteur 3D de A à Z.J'aimerai bien calculer un matrice rotation à partir de n'importe quel axe. Je sais déjà Probleme d'affichage de plusieurs meshes !!! [ par DarklordBioopo ] bonjour,J'ai un probleme que je n'arrive pas a resoudre. pourriez vous m'aider svp.J'arrive a afficher une meshe, maisla seconde ne s'affiche pas.Mon D3DXMatrixTranslation [ par niketou ] Salut a tous.Voila je fais un moteur 3d en dx9.Voici un bout de code,en fait je devrai voir un objet 3d mais je ne vois rien.L'objet et sa texture se chercher un tableau dans une matrice [ par amapro ] bonsoir! je voudrais savoir comment trouver si un tableau d'entiers à une dimension  existe ou non dans une matrice. probleme de texture pour creer une explosion [ par elfiosi ] Bonjour a tous,Jai un probleme de texture lorsque jessaie de creer une explosion pour un jeu video. jutilise une image qui represente une etincelle av calcul des elements d'une matrice [ par foujeu ] salut tlm !je veux un pgm en C qui permet de calculer les elements qui entourent un element d'une matrice et les affiche dans une autre matriceexp :1-


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Appels d'offres

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,452 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.