BobTSMSI
Messages postés60Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention 2 mars 2007
-
1 mars 2007 à 17:13
AnteManoclis
Messages postés154Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention 6 septembre 2007
-
2 mars 2007 à 20:03
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....
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...
AnteManoclis
Messages postés154Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention 6 septembre 2007 1 mars 2007 à 19:37
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.
AnteManoclis
Messages postés154Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention 6 septembre 2007 2 mars 2007 à 20:03
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).