begin process at 2012 05 28 04:50:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

DirectX

 > 

3d iso


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

3d iso

dimanche 8 janvier 2006 à 17:59:50 | 3d iso

niketou

Salut a tous.
J'ai besoin d"un fortiche en math.
Je veux faire une vue isometrique,voici mes variable de la camera:

    D3DXVECTOR3 vEyePt( PX,PY,PZ );
    D3DXVECTOR3 vLookatPt( LX, LY,LZ);
    D3DXVECTOR3 vUpVec( 0.0f, 1.0f, 0.0f );
D3DXMATRIXA16 matView;
    D3DXMatrixIdentity( &matView );
    D3DXMatrixLookAtLH( &matView, &vEyePt, &vLookatPt, &vUpVec );
    g_pd3dDevice->SetTransform( D3DTS_VIEW, &matView );

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

Quels calculs dois je utiliser pour avancer,deplacer a droite et tourner sur 360° la camera dans un monde 3d ?.
Merci a tous.

dimanche 8 janvier 2006 à 21:57:14 | Re : 3d iso

Galmiza

Pour les mouvements dans le monde, il te faut un vecteur directionCamera normé.
A chaque boucle, vLookatPt = vEyePt + directionCamera;
L'appui sur une touche de déplacement modifie la position de la camera.
Bouger la souris modifie le vecteur de direction (de la camera).

Dans le code qui suit, rotation->y est l'angle autour de l'axe vertical (y), rotation->x est l'angle autour de l'axe x. Ils valent 0 lorsque la direction de la camera est (0,0,1).

    D3DXVECTOR3 *rotation = g_pDirect3D->GetRotation();
    D3DXVECTOR3 *camera = g_pDirect3D->GetCamera();

    float player_vitesse = 100.0f;

     //si on a appuyé sur la touche de gauche
     if (KEYDOWN(pkeyBuffer, DIK_LEFT))
     {
        camera->x -= player_vitesse*delta_time*cosf(rotation->y);
        camera->z += player_vitesse*delta_time*sinf(rotation->y);
     }

     //si on a appuyé sur la touche de droite
     if (KEYDOWN(pkeyBuffer, DIK_RIGHT))
     {
        camera->x += player_vitesse*delta_time*cosf(rotation->y);
        camera->z -= player_vitesse*delta_time*sinf(rotation->y);
     }

     //si on a appuyé sur la touche haut
     if (KEYDOWN(pkeyBuffer, DIK_UP))
     {
        camera->x += player_vitesse*delta_time*sinf(rotation->y)*cosf(rotation->x);
        camera->z += player_vitesse*delta_time*cosf(rotation->y)*cosf(rotation->x);
        camera->y += player_vitesse*delta_time*sinf(rotation->x);
     }

     //si on a appuyé sur la touche bas
     if (KEYDOWN(pkeyBuffer, DIK_DOWN))
     {
        camera->x -= player_vitesse*delta_time*sinf(rotation->y)*cosf(rotation->x);
        camera->z -= player_vitesse*delta_time*cosf(rotation->y)*cosf(rotation->x);
        camera->y -= player_vitesse*delta_time*sinf(rotation->x);
     }

dimanche 8 janvier 2006 à 22:03:58 | Re : 3d iso

Galmiza

Réponse acceptée !
Pour la 3D isométrique, il n'y a pas de perspective, donc il te faut une matrice de projection orthogonale.

D3DXMatrixPerspectiveFovLH, non.
D3DXMatrixOrthoLH, oui.
[ Lien ]

Le reste peut-être laissé tel quel.



Cette discussion est classée dans : 3d, 0f, matview, matproj, d3dxvector3


Répondre à ce message

Sujets en rapport avec ce message

un ptit jeu [ par BLaFarD ] euh, je viens de me pondre un petit moteur 3d de merde en opengldonc, si qlqun veut me filer des model 3d k'il a fait (sous 3dsmax si possible), bah, Mon Moteur 3D [ par ndj55 ] Salut à tous!Je travaille en ce moment sur un projet de moteur 3D...Rejouissez vous,il est sous licence GNU/GPL et il est donc fournit avec ses source Objects 3D Opengl [ par mastave ] Comment inclure dans un fenêtre OpenGl un fichier 3D DXF ou3DS??? moteur 3d [ par FleXus ] Bonjour Je suis à la recherche d'un moteur 3d capable de génererdu "3d landscape rendering" ( comme truevision3d www.truvision3dsdk.com ) mais étant c Mod [ par dragon ] Je suis coder pour un mod qui s'appelle StarCraft Total Conversion (et oui, vraiment starcraft en 3d) pour le moteru 3d Serious Samon est présentement Objets 3D [ par mastave ] Comment on fait la théière avec GLUT?? maison 3d [ par oxido ] Je voudrais réaliser une maison en perspective pour mon programme en turbo c/c++. si une personne en a dejà fait une merci de me l'a transmettre. PB remplissage 3D [ par MangaII ] Hello tout le monde !J'ai un petit soucis ! j'ai un cube (3D), avec des points a l'intérieur (BCP, environ 10000). Et ces points sont répartie dans un Moteurs 3D [ par Heero ] J' ai entendu dire que les moteurs de jeux utilisaient les classes pour faire marcher leurs progs . Mais comment sont elles organisées ?Merci de me me Source pour Camembert 3D [ par ScO ] Bonjour à tous ! Je cherche un code source en Visual C++ qui permettrait de créer un camembert 3d ( 3d Pie Chart ) en format image (Bmp, Jpg ...) avec


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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 : 0,390 sec (4)

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