begin process at 2010 02 09 05:11:59
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

DirectX

 > 

DirectX 9: Probleme pour effectuer deux transformations en même temps (rotation et ranslation)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

DirectX 9: Probleme pour effectuer deux transformations en même temps (rotation et ranslation)

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ée 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


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,852 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales