ChristianS_ | [Direct3D 9, Visual C++ win32, XP]
Hello a tous,
une question qui à l'air de rien mais qui me prend la tête un moment...bon ok, je débute avec direct3d :
J'ai un cube que je peux faire tourner avec la souris avec le code du style :
Code :
- D3DXMATRIX matWorld;
- D3DXMatrixRotationX(&matRotX, rotateX);
- D3DXMatrixRotationY(&matRotY, rotateY);
- D3DXMatrixRotationZ(&matRotZ, rotateZ);
- matWorld=matRotX*matRotY*matRotZ;
- g_pd3dDevice->SetTransform(D3DTS_WORLD, &matWorld);
|
où rotateX,Y,Z varient en fonction de la souris.
et
Code :
- // Positionement de la caméra
- D3DXVECTOR3 vEyePt = D3DXVECTOR3(0.0f, 0.0f, -0.1f);
- D3DXVECTOR3 vLookatPt = D3DXVECTOR3(0.0f, 0.0f, 0.0f);
- D3DXVECTOR3 vUpVec = D3DXVECTOR3(0.0f, 1.0f, 0.0f);
- D3DXMATRIX matView;
- D3DXMatrixLookAtLH(&matView, &vEyePt, &vLookatPt, &vUpVec);
- g_pd3dDevice->SetTransform(D3DTS_VIEW, &matView);
|
definit la vue de la caméra ( qui ne bouge pas ).
Bon, ceci fait bien tourner le cube, mais le problème est que ça fait aussi tourner les axes...
donc au début : si je tourne le cube avec un mouvement de souris de haut en bas, il tourne bien de haut en bas, mais ensuite, si je le fais tourner horizontalement, le mouvement de souris du haut vers le bas ne le fait plus tourner de haut en bas mais de droite à gauche !
comment faire pour que je puisse regarder au dessus du cube (par exemple) en faisant bouger la souris de haut en bas, quelque soit la position du cube ?
il faut jouer avec la vue ?
y'a t'il des exemples de code quelque part ?
Merci. |