Graphiquement mathématiques en 3D dans les yeux

Bon j’ai la méga honte… JE me souviens de ma jeunesse, j’etais un roi en maths…

Et puis là, à force de plus en faire, ben bingo pour moi, j’ai presque tout oublié…

Bon voilà mon problème, je cherche un peu à jouer avec le ManagedDirectX et j’essaie de faire un petit truc en 3D.
Bon, dans ce petit truc, je cherche à faire tourner la caméra autour d’un point, et je m’emmele grave les pinceaux…

Donc je voudrais savoir si l’un de vous connait pas un tutorial sur la géométrie 3D… Je cherche pas des sources, mais plutot des tutoriaux qui me rapelleraient mes études perdues au fond de mon cul (passke mon cerveau est deja remplies d’images de filles à poil)

Ou un truc qui pourrait m’avancer…

Merci d’aider ma pauvre âme charitable…

Le truc super chiant c’est que parfois aux US, ils font de la geometrie “left handed” et pas “right handed” comme nous… ca veut dire que le sens est inverse, et si tu a la malheur de melanger les deux tu te retrouves avec des erreurs de signe partout et c’est un vrai cauchemard pour s’en demerder Donc a voir si c’est pas ton probleme… je sais que je me suis fait avoir plusieurs fois.

Oui c’est comme sur les plans industrielles, vue de bas en bas, de gauche a gauche etc …
par opposition a nous, européens où la vue de haut est en bas, de droite a gauche .etc  …
C’est un peu hors sujet, je sors. désolé, j’ai pas d’autre bookmark pour toi que google.

Ouais je sais pour l’histoire main gauche, main droite, mais c’est pas ça mon problème, j’ai encore la chance d’etre logique et d’arriver à suivre le mouvement si on me dit des le debut si c’est à gauche ou droite…

Mais non, mon problème est que je calcule mal mon angle de déplacement de caméra…
Je pense plutot que je me trompe dans les calculs de replacement de la caméra…

Ce qui est chiant c’est que la distance avec le point “final” change pas, seul change la position spatiale de la caméra, et donc je m’embrouille dans mes formules…

  • Je bouge ma souris vers la gauche, que deviennent les coordonnées de la caméra ?

Mais bon, j’avoue que je suis un peu con dans l’histoire, je devrais peut-être dessiner ça sur papier et appliquer mes règles de trigonométrie au lieu d’essayer de voir ça abstraitement…

Pour une caméra en fait le plus simple c’est de voir la matrice caméra “du point de vue de la caméra”. Et aussi de se représenter la matrice comme étant 3 vecteurs (les 3 vecteurs unitaires du repere de la caméra en fait), plus une position. Et à ce moment la, on a donc un vecteur right, un vecteur up et un vecteur at.
[1 0 0 0] right
[0 1 0 0] up
[0 0 1 0] at
[0 0 0 1] position

Y (up)
|
| Z (at)
|  /
| /
|/______ X (right)

(l’orientation dépends si t’es en left handed ou right handed mais ça tu l’a dis toi même tu sais gérer ).

Donc pour déplacer la caméra sur la droite par exemple, il suffit de déplacer la caméra selon une direction correspondant au vecteur “right”. Et magie, ça marche Idem pour les autres axes (avant/arriere sur “at”, haut/bas sur “up”).

Donc, par exemple :

MaMatrice.position += MaMatrice.right * AmplitudeMouvement;

avec “MaMatrice.position” et “MaMatrix.right” des vecteurs 3D, “AmplitudeMouvement” un bête float. Et les opérateurs += et * définis pour ces types bien sur mais ça vous l’aurez compris

Pour les rotations, c’est tout pareil ! Bref, en fait les matrices, c’est super simples, faut pas laisser les mathématiciens t’expliquer, ils complexifient tout à dessein
Ce message a été édité par tuo le 08/04/2004

Regarde ca. C’est en opengl, mais la logique est la meme quelle que soit le langage ou l’API et c’est assez bien explique. Arf, la synchro from hell avec tuo Tiens tuo y a un poste de hacker kernel qui s’est ouvert pour un bout interessant de l’API Xbox2 … je dis ca … .je dis rien…
Ce message a été édité par GloP le 08/04/2004

Gné rien compris a ton exemple Glop Trop compliqué, vaut mieux savoir le faire en dehors de tout contexte de OGL/D3D/PouetStation2/BoiteX et autre cubes de jeux. Comme ça t’es paré tout le temps et tu peux même faire du soft !

J’y connais rien a l’opengl et j’ai compris ce qu’il faisait tsss, on peut extraire le cote generique de l’exemple quand meme… . Effectivement, on s’en fout de l’API, l’important c’est le truc avec le changement d’angle.
Ce message a été édité par GloP le 08/04/2004

Oh ? Un poste de hacker kernel ? Oh ben ça alors… mon CDD se fini le 23 juillet, je sens que d’ici la y’a des CV qui seront partis Surtout que la XBox2… c’est pas comme si c’était une inconnue

'fin bref, tout ça pour revenir au topic : les transformations de matrice, il faut juste penser logiquement, et tout se finit toujours bien. Ne pas paniquer et partir dans des délires mathématiques de folies (ça faut le réserver pour la partie “optimisation” de la chose ). Suffit de se faire une classe de matrice qui gére les trucs de base (concaténation de matrices, inversion, calcul de rotation suivant un axe de rotation, ou suivant un axe du repere, etc etc), le reste ça vient tout seul.