begin process at 2012 02 15 06:58:10
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Multimédia

 > 

DirectX

 > 

Matrice View DirectX


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

Matrice View DirectX

jeudi 1 mars 2007 à 17:13:01 | Matrice View DirectX

BobTSMSI

Salut tout le monde!

Bon c'est pas faute d'avoir cherché mais j'ai un problème de 3D avec DirectX 8... Je débute sous Direct3D alors vous pourrez peut-être m'expliquer...

Mon prob c'est de faire bouger le point de vue de la scène... Je comprend le principe de transformation par des matrices... Je cherche à faire une caméra totalement libre sur les trois axes en rotation et en translation... Je précise que les axes sont les axes du repère de la caméra biensûr pas ceux du repère de la scène...

Ma méthode: J'initialise une matrice identité, je lui applique successivement 3 rotations pour les 3 axes puis une translation... La translation semble fonctionner impec mais les rotations nada....

Voici mon code:

 
       D3DXMatrixIdentity matView
        D3DXMatrixRotationAxis matRoll, MVertex(matView.m13, matView.m23, matView.m33), camRoll * (pi / 180)
        D3DXMatrixMultiply matView, matRoll, matView
        D3DXMatrixRotationAxis matPitch, MVertex(matView.m11, matView.m21, matView.m31), camPitch * (pi / 180)
        D3DXMatrixMultiply matView, matPitch, matView
        D3DXMatrixRotationAxis matYaw, MVertex(matView.m12, matView.m22, matView.m32), camYaw * (pi / 180)
        D3DXMatrixMultiply matView, matYaw, matView
        transX = camRight * matView.m11 + camUp * matView.m12 + camLook * matView.m13
        transY = camRight * matView.m21 + camUp * matView.m22 + camLook * matView.m23
        transZ = camRight * matView.m31 + camUp * matView.m32 + camLook * matView.m33
        D3DXMatrixTranslation matTrans, transX, transY, transZ
        D3DXMatrixMultiply matView, matTrans, matView
        d3dDevice.SetTransform D3DTS_VIEW, matView

Voilà...

Donc camRoll, camPitch et camYaw bah c'est pour les angles de rotation et puis camRight, camUp et camLook c'est pour la translation... Tout ça s'exécute dans la boucle principale. La translation semble fonctionner comme il faut mais curieusement la rotation donne l'impression que les objets tournent autour du point (0,0,0) alors que je voudrais qu'ils tournent par rapport à la position de la caméra.... Je sèche.... Trois jours que je cherche et rien...

Merci d'avance pour votre aide!!
jeudi 1 mars 2007 à 19:37:22 | Re : Matrice View DirectX

AnteManoclis

Salut,

Je pense qu'en ajoutant une translation à ta matrice de vue qui correspondrait à la position de la caméra, ton point (0,0,0) autour duquel tes objets tournent, deviendrait au final l'origine de ta caméra.

Tchô AnteManoclis
jeudi 1 mars 2007 à 19:47:27 | Re : Matrice View DirectX

BobTSMSI

Oui mais j'ai une translation vers la position de ma caméra est dans le code que j'ai posté:

        transX = camRight * matView.m11 + camUp * matView.m12 + camLook * matView.m13
        transY = camRight * matView.m21 + camUp * matView.m22 + camLook * matView.m23
        transZ = camRight * matView.m31 + camUp * matView.m32 + camLook * matView.m33
        D3DXMatrixTranslation matTrans, transX, transY, transZ
        D3DXMatrixMultiply matView, matTrans, matView


Tu parles de cette translation?
vendredi 2 mars 2007 à 20:03:18 | Re : Matrice View DirectX

AnteManoclis

Ben j'en sais rien en fait, je sais pas trop à quoi elle correspond cette translation, camRight, camUp et camLook je ne sais pas bien à quoi correspondent ces trois variables...
Ce que j'ai compris de ton premier message, c'est que la rotation que tu effectues se passe autour de l'origine. De mon point de vue, c'est normal, quand tu appliques une rotation, c'est toujours le repère qui sert de référence, alors mon idée était la suivante : en ajoutant une translation à ta matrice "générale" (et cela même s'il y en a déjà une, c'est pas grave), tu "déplaces" l'ensemble du repère, et par conséquent, l'origine aussi. Alors une rotation autour d'un point (x, y, z) revient à une rotation autour de (0, 0, 0) à laquelle tu vas ajouter une translation de vecteur (x, y, z).

Tchô AnteManoclis


Cette discussion est classée dans : axes, translation, matview, d3dxmatrixmultiply, camright


Répondre à ce message

Sujets en rapport avec ce message

comment incrementer une plage en VBA? [ par stef ] bonjour,c'est l'histoire d'un mec qu'a 1 pb:débutant VBA, je cherche sur excel à creer autant de graph que j'ai de ligne de donnée, mais je ne trouve c'est possible : incrementer un plage en VBA ? [ par stef ] bonjour,c'est l'histoire d'un mec qu'a 1 pb:débutant VBA, je cherche sur excel à creer autant de graph que j'ai de ligne de donnée, mais je ne trouve Commentaire sur les axes d'un mschart [ par Stoomm ] Bonjour, Je cherche à mettre des infos sur les points de mon graphique (MsChart).Je n'y arrive pas. Quelqu'un peut il m'aider ?Merci d'avance. A+.Stoo position 4D du joystick [ par Stephane ] salut a tousquelqu'un pourrait il me dire comment on a les positions de 4 axes sur un joystick. parcke avec les apis getjoypos on a que 3 axes et getj Changement des axes d'un MSChart par le code [ par Cyrus ] Comment changer les valeurs MIN/MAX des axes d'un objet MSChart par le code ?Apparemment, on peut uniquement les changer par la fenêtre de propriétés Tres urgent !!! MsChart pour faire un histogramme 3D avec plusieur axes d'abscisse [ par asmf ] Bonjour tout le mondej'ai un pti pb avec le control mschart, je dois generer des graphe de suivi de production, et l'un de mes graphe doit etre un his VBA et EXCEL [ par ElCochonDInde ] Salut tlm,voila j'ai une macro a programmer et je dois tracer un graphique. Jusque la rien de bien compliqué mais je dois placer des labels dessus, la Creer un Graphique sous excel [ par Tetris42 ] bonjour voila 1 semaine que je cherche a contruire un graph ss excel.Je realise mon graph a partir de 3 colones (deux qui varient et une fixe juste l chartspace avec plusieurs graphiques et des axes différents: c'est possible? [ par math85 ] bonjour,j'utilise dans un projet vb les chartspaces d office xp.j'ai réussi à mettre plusieurs graphiques dans un seul en utilisant la propriété Chart bah probleme graphique :) [ par MrDarkVelvet ] Voila, je tape un code pour creer un graphique a partir d'un tableau excel qui se presente sous la forme d'un tableau à 2 colonnes et plusieurs lignes


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

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 : 1,139 sec (4)

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