| |||||
| Dernière réponse | |
|---|---|
| Sujet : [DirectX] Format des matrices | |
| Titoine42 | tu pourrais un peu développer sur DirectGraphics? |
| Aperçu |
|---|
| Vue Rapide de la discussion |
|---|
| Titoine42 | tu pourrais un peu développer sur DirectGraphics? |
| LeGreg |
|
| Titoine42 | sinon, une autre question qui n'a aucun rapport :
est-ce vrai que DirectDraw n'éxiste plus dans DX8.x? il faut tout faire en 3D maintenant? |
| Titoine42 | J'aimerais comprendre comment on applique la matrice 4*4 aux coordonnées d'un point.
Oui, je sais, je fais chier mais comme j'y connais rien aux matrices, c'est pas évident. |
| LeGreg | tu sais tu ne dois pas forcement
"comprendre" pourquoi on utilise une matrice 4x4 mais accepter cela comme un fait et eventuellement savoir comment est construit cette matrice.
|
| Titoine42 | existe-t-il des cours sur cette représentation? (sur internet ou des bouquins) |
| Da True Clouseau | Dans sa présentation l'orientation est définie par une matrice de rotation 3x3 qui est un morceau de la matrice 4x4.
Si ton amie en license de math n'a jamais vu ce modèle de représentation, c'est parce qu'il est propre à l'infographie (ou à la géométrie projective appliquée en info). Ce n'est pas une representation "courante" dans les maths telles qu'elles sont enseignées à la fac. Néanmoins si elle lit quelques articles dessus, elle devrait facilement s'y retrouver et pouvoir t'aider. |
| Titoine42 |
|
| bjone | po compliqué, tu as:
1) tu as des points dans l'espace 3d : x,y,z 2) des primites (lignes,triangles,...) qui relient ces points 3) tout ça c'est regroupé en objet indépendants (roue, fusil à pompe, tête de terroriste, ce que tu veux :D) 4) tes objets indépendants ont une position dans l'espace (x,y,z) et une orientation (qui peux être exprimée sous 3 angles) c'est là qu'interviennent les matrices, tu peux avoir la position en x,y,z + l'orientation (en matrice 3*3), ou les 2 regroupés par une matrice 4*4. 5) la caméra (le point de vue), qui observe tes objets, a elle-même une position et une orientation. on va dire l'horizontal de l'écran ça correspond au x du repère de la caméra, la verticale le y, et la profondeur du tube, le z (sens positif) la caméra possède aussi un champ de vision (en largeur, et en hauteur), une limite de profondeur maximale, et une limite minimale (qui pourrait être assimillée à la limite de la focale d'un appareil photo ou ça devient flou) tu dois donc considérer: 1) un repère par objet 2) un repère pour ta caméra 3) des informations sur la "vision" de la caméra la perspective, le passage de la 3d à la 2d de l'écran est simple: tes coordonnés des points, x et y sont à diviser par z la profondeur du point. ceci, sous entendu dans le "repère" de la caméra. c'est po compliqué à s'imaginer, pour un point donné, plus le point va s'éloigner de la caméra, plus le z va grandir, et plus le point (2d) va se rapprocher du centre de l'écran donnant ensuite l'effet de perspective. il faut donc "ramener" tes points dans le repère de la camèra, ensuite tu peux diviser le x et le y (3d) par le z (3d), ceci te donnera le x et le y (2d) de l'écran. cette "division" est contrôllée par ton champ de vision etc etc... une fois que tu as transformé tout tes points 3d vers la 2d de l'écran, tu peux commencer à traçer tes triangles qui relient les points... [jfdsdjhfuetppo]--Message édité par bjone--[/jfdsdjhfuetppo] |
| bjone | nan tu peux comprendre la 3d sans passer par les matrices. |
| Titoine42 | J'ai rien compris mais je crois que je suis un peu nul. :( C'est un peu de ma faute, j'ai laché les maths au moment des espaces vectoriels re :( J'ai une amie en license de maths qui a essayé de m'expliquer mais elle n'a pas compris non plus l'histoire de la matrice 4*4 (mais bon, c'est pas son truc la 3D). Je pense que le mieux pour moi serait de potasser les matrices puis de comprendre leur utilisation pour la 3D. Alors si vous avez des liens assez didactiques, je prends. PS: pensez-vous que je puisse être prêt pour début mai pour faire un stage dans une boite de gamedev car j'ai une proposition intéressante mais je n'aime pas raconter des salades aux gens et leur faire faux-bond au dernier moment |
| bjone | voila, j'arrivais pas à faire simple :D |
| LeGreg | h c'est le coefficient homogene
habituellement h est egal a 1 sauf en cas de projection (x,y,z,1)*mat = point transforme (x',y',z',h') Lorsque h <> 1, alors pour obtenir les coordoonées reelles tu les divises toutes par h c'est comme ca que tu obtiens les coordonnees du point sur ton ecran apres avoir applique la matrice de projection. A+ LEGREG |
| bjone | passke avec une matrice 3*3 tu peux faire que des rotations (changement d'echelle en trichant), alors qu'avec une matrice 4*4 tu fais rotation+déplacements...
et pour sauter de repère en repère, tu as juste à multiplier tes matrices 4*4 entre elles (on parle alors de pile de matrices, avec par exemple le repère d'une voiture, un repère par roue qui est relatif au repère voiture, un repère boulon relatif au repère roue etc... etc...) aussi avec une matrice 4*4, tu peux exprimer dedans la mise en perspective... je sais pas si ça peut t'aider: http://msdn.microsoft.com/library/ [...] d=28000410 ça c'est po mal pour comprendre: http://www.iro.umontreal.ca/~dift3 [...] ion_x6.pdf http://www.doc.ic.ac.uk/~dfg/graph [...] ture04.pdf pour les éclairages celui là est po mal: http://www.doc.ic.ac.uk/~dfg/graph [...] ture09.pdf [jfdsdjhfuetppo]--Message édité par bjone--[/jfdsdjhfuetppo] |
| Titoine42 | Je viens de trouver un tutoriel sympa sur Direct3D et les concepts de la 3D sur : http://prografix.free.fr/
Cependant, je ne comprends pas pourquoi il utilise des matrices 4x4 pour un monde en 3 dimensions? ex: typedef struct _D3DMATRIX{ D3DVALUE _11, _12, _13, _14; D3DVALUE _21, _22, _23, _24; D3DVALUE _31, _32, _33, _34; D3DVALUE _41, _42, _43, _44; } D3DMATRIX, *LPD3DMATRIX; avec x, y, z et h c'est quoi h? [jfdsdjhfuetppo]--Message édité par titoine42--[/jfdsdjhfuetppo] |




