[DirectX] Rotation de la camera

Le côté programmation du développement d'un jeu vidéo.

Rotation de la camera

Messagepar bilaloch » 19 Avr 2006, 09:13

Ca y est, j'ai quasiment reussi a faire tourner la camera... mais le probleme est que ca tourne on dirait par nombre de pixels, comme si il attendait qu'il y ai un nombre de pixels pour tourner, alors que j'ai envi qu'il soit en temps reel (par pixel). Auriez vous une idée ?

Code: Tout sélectionner
VOID SetupMatrices()
{
   D3DXMATRIXA16 matRot;

   DIUpdate();

   vEyePt.x = ( float ) ( cos( ( double )( buffered_mouse.lX / 180 ) ) * 18.5 );
   vEyePt.z = ( float ) ( sin( ( double )( buffered_mouse.lX / 180 ) ) * 18.5 );

   if ( buffered_mouse.lX == 0 )
   {
      vEyePt.x = 0.0f;
      vEyePt.y = 0.0f;
      vEyePt.z = -18.5f;
   }

   D3DXMatrixLookAtLH( &matView, &vEyePt, &vLookatPt, &vUpVec );
   g_pd3dDevice->SetTransform( D3DTS_VIEW, &matView );

   xCam = 1.0f;
   yCam = 1.0f;
   zCam = 100.0f;
   D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4, xCam, yCam, zCam );
   g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
}


Merci beaucoup

BILALoch
bilaloch
Hello World, I'm new !
 
Messages: 40
Inscription: 13 Avr 2006, 10:41

Messagepar ShadowTzu » 19 Avr 2006, 09:54

moi je fait comme ça:

Code: Tout sélectionner
sngAngleY = sngAngleY - (SourisX / 100) ' SourisX=déplacement de la souris en x (-1,0 ou 1), 100=sensibilité de la souris

Pos_CamX = Position_ObjetX - Math.Cos(sngAngleY) * distance
Pos_CamY = Position_ObjetY
Pos_CamZ = Position_ObjetZ - Math.Sin(sngAngleY) * distance

lookat_CamX = Position_ObjetX + Math.Cos(sngAngleY)
lookat_CamY = Position_ObjetY
lookat_CamZ = Position_ObjetZ + Math.Sin(sngAngleY)
Avatar de l’utilisateur
ShadowTzu
Hello World, I'm new !
 
Messages: 144
Inscription: 12 Juil 2005, 20:40
Localisation: 70

Messagepar bilaloch » 19 Avr 2006, 09:55

Merci bien... je teste ca et je te tiens au courant :) . Hum... meme avec ta technique, ca tourne... par blocs de pixels, comme au debut. Mais... comment faire pour rendre la rotation plus lente ?

BILALoch
bilaloch
Hello World, I'm new !
 
Messages: 40
Inscription: 13 Avr 2006, 10:41

Messagepar ShadowTzu » 19 Avr 2006, 10:02

sinon pour ta matrice de projection il y a comme un probleme:

D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4, xCam, yCam, zCam );

xcam, ycam, zcam sont pas bon:

met par exemple plutot:
D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4, 4/3, 1.0f, 2000.0f );
Avatar de l’utilisateur
ShadowTzu
Hello World, I'm new !
 
Messages: 144
Inscription: 12 Juil 2005, 20:40
Localisation: 70

Messagepar bilaloch » 19 Avr 2006, 10:18

[quote="ShadowTzu"]sinon pour ta matrice de projection il y a comme un probleme:

D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4, xCam, yCam, zCam )]

Ah bon... eh bien merci. Mais le probleme vient d'ou d'apres toi ? Pour la rotation ?
bilaloch
Hello World, I'm new !
 
Messages: 40
Inscription: 13 Avr 2006, 10:41

Messagepar ShadowTzu » 19 Avr 2006, 11:49

bilaloch a écrit:Merci bien... je teste ca et je te tiens au courant :) . Hum... meme avec ta technique, ca tourne... par blocs de pixels, comme au debut. Mais... comment faire pour rendre la rotation plus lente ?

BILALoch


sngAngleY = sngAngleY - (SourisX / 100)

au lieu de 100 met plus, genre 500
Avatar de l’utilisateur
ShadowTzu
Hello World, I'm new !
 
Messages: 144
Inscription: 12 Juil 2005, 20:40
Localisation: 70

Messagepar bilaloch » 19 Avr 2006, 12:23

Ca y est j'ai trouvé :) . Merci beaucoup. Mais maintenant je veux faire une double rotation... c'est a dire bouger la camera dans deux sens selon X et Y de la souris, et la, je bute...

BILALoch
bilaloch
Hello World, I'm new !
 
Messages: 40
Inscription: 13 Avr 2006, 10:41


Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 10 invités

cron