CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Matrices, transfo, DirectX, mal de tete

saleGauss
saleGauss
Niveau 9
12 avril 2007 à 18:34:37

Bonjour,

voila j´ai qq pb concernant la gestion des transformations d´objets 3D dans un espace 3D

J´ai lu plusieurs cours et je ne comprend, à vrai dire, rien, ou presque.

Je n´arrive même pas à comprendre comment est ce qu´on bouge un objet en 3D, sous direct X (bien que je pense que ce soit pareil pour OpenGl)

Bon, bien sur, je connais bien la notion de matrices, et ce n´est pas la partie "maths" qui me pose pb mais bien la partie "fonctionnement de directx".

Je m´explique, qd je deplace un objet, si j´ai bien compreis, on LE DEPLACE PAR RAPPORT A SA BASE LOCALE?

BOn, si c´est ca ya as de pb, je sais travailler avec des bases locales.
Mais ce que je ne comprend vraimment pas c´est que j´ai l´impression que lorsque on fait une rotation sur un objet, on bouge les axes de la base locale de l´objet? C´est ca?
Sinon je ne comprend vraimment pas le sens de ce que j´ai lu par la suite, à savoir, qu´on peut perdre un degré de liberté car un axe peut se trouver sur autre apres une certaine transfo (une rotation de 90 ° je crois).
Mais comment est ce possible?

Je n´arrive pas à comprendre comment tout cela marche.

Et comment dire à directX qd je travaille dans une base locale, dans la base du monde...etc..
Je ne sais pas non plus.

Et qd faut il convertir la matrice objet en une matrice monde?

Bref, tout est tres confus pour moi, et si vous pouviez m´aider je vous en serais grandement reconnaissant ;- )

Merci beaucoup !. ..

nb : et pour la martice caméra et la matrice vue, c´est quoi en fait?

Désolé de poser autant de questions...

---- POUR SYNTHETISER, MA QUESTION PPC : ----

Et surtout ma question ppc est : bouge t´on les axes avec l´objet et qd travailler sur la base locale et quand travailler sur la matrice du monde?
-------------------------

Encore merci d´avance...

saleGauss
saleGauss
Niveau 9
12 avril 2007 à 18:42:43

Je vais avouer que c´est un élément de réponse et je t´en remerci, mais je t´avoue aussi que beaucoup de questions se posent toujours à moi !

Argh ! à l´aide please!

Un ptit cours sur les transfo pour directX...

saleGauss
saleGauss
Niveau 9
12 avril 2007 à 18:46:41

Ha oui et pour l´inversion je ne peut pas dire je ne connait pas opengl mais je crois effectivement qu´il y a inversion d´apres ce que j´ai lu, genre :

Translation sous directX

bla bla bla bla
---- ---- ---- ----
---- ---- ---- ----
dx dy dz ---

et sour direct open gl je crois :

bla --- --- dx
bla --- --- dy
bla --- --- dy
bla --- --- ---

Enfin je crois mais je suis pas sur. De toute facon mois je veux juste comprendre DirectX et sa maniere de considerer les matrices objets monde caméra et vue....

Encore merci

LGV
LGV
Niveau 28
12 avril 2007 à 19:07:52

je te conseille de commencer par un bouquin standard de maths d´algebre lineaire et d´applications sous forme matricielle.
Ce n´est qu´en comprennant bien les fondements des outils conceptuels que tu pourras les utiliser correctement dans ton application.
Au quotidien, je vois des tas de gens qui "font" de la 3D, sans rien piger aux concepts de bases ; inutile de dire qu´ils sont vite bloques des qu´ils tombent sur qqch qui sort des 3 tutoriels basiques qu´ils ont lu sur le net..

(je conseille aussi de lire et bien comprendre la geometrie projective, indispensable a des choses un tant soit peu complexes)

saleGauss
saleGauss
Niveau 9
12 avril 2007 à 19:13:25

J´ai précisé que je connais bien l´algebre linéaire (2eme année de fac de maths...), les matrices ne me sont donc pas inconnus.

Je veux juste comprendre le fonctionnement de direct x et de ses 36 bases...

LGV
LGV
Niveau 28
12 avril 2007 à 19:58:23

dans ce cas, ce qu´il te faut plutot comprendre, c´est le pipeline de transformation des APIs 3D. La doc fournie avec le SDK de DX detaille etape par etape ce qu´il advient de la geometrie qu´on process.
A partir du moment ou tu comprends quoi est utilise ou, et si tu saisis deja bien les maths qui vont derriere (cela dit en 2e annee de fac, la constrution des matrices homogenes en projectif te sera a priori encore un mystere..), ca devrait suffire.

l´utilisation base relative/absolue depend principalement de la strategie de rendu et de batching de la geometrie ; de meme que les transfo locales. Bref, tout est valide, mais il faut appliquer a un contexte pour preferer l´une ou l´autre des approches.

Fvirtman
Fvirtman
Niveau 10
12 avril 2007 à 23:05:57

Il faut bien voir le pipeline graphique.
Dans la carte graphique, il n´y a que 2 matrices : la MODEL_VIEW, et la PROJECTION.

On ne va pas parler de la projection.
La MODEL_VIEW sert a mettre gentillement tous les points qu´on verra a l´écran en face du point ABSOLU O(0,0,0), direction Z(0,0,1)

Pour cela, chaque point gentillement placé (G comme gentil) se calcule par :

G = M*P (M = ModelView, P = point local)

Lorsque tu appliques une rotation, une translation, un scale, ce que tu fais, c´est uniquement modifier M, multipliant le M actuel par une autre (N), ainsi on a M = N*M, mais N n´est pas stocké, il y n´y a que M de stocké. Il y a calcul de M des que tu appelles ta fonction de transformation.

Tu travailles alors dans une base locale, et tu places des points P, qui, des que tu les places, sont calculés, a la volée, par G = M*P, afin que les points soient tout de suite mis en face de (0,0,0), direction (0,0,1)

Il faut que tu regardes le pipeline graphique pour bien comprendre :)

Concretement, il est bon de savoir que la matrice M a toujours cette tete (mathématiquement)

| x1 y1 z1 Tx |
| x2 y2 z2 Ty |
| x3 y3 z3 Tz |
| 0 0 0 1 |

3 Vecteur colonne, et un point O : ça fait une base.
Une matrice de transformation n´est rien d´autres que l´expression d´une base dans une autre (M est l´expression de la base locale dans la base globale)

Lapintade
Lapintade
Niveau 30
12 avril 2007 à 23:14:25

Je vais faire la version tout simple (au cas ou certains auraient pas compris) :

Une matrice c´est le regrouppement de deux transformations : rotation et translation.

Tu peux coller des transformations a tes objets si tu veux, mais c´est pas obligatoire.

Suffit de raisonner en 1d, tu peux comprendre.

Voici un repere monde :

0 --------------------------------------- 100

T´as un axe qui va de 0 a 100.

Admettons que je veuille y mettre deux objets, un en 25 et un en 50.

1/ Premiere solution, je crée deux objets (P1 et P2), avec des coordonnées monde. Donc j´ai pas besoin de leur ajouter des transformations

J´obtient :

0 --------P1-------P2-------------------- 100

2/ Seconde solution. Je cree un seul objet, qui est placé en 0. On appelle ca sont "repere local".

O P --------------------------------------

Pour creer deux objets P1 et P2, je prends P et je lui applique deux transformations.
Mes matrices de transfromation c´est (+25) et (+50)
(Ayant pris un monde simple, ma matrice est aussi simple, juste une valeur)
J´obtient deux transformation qui me permette de transformer mon objet depuis sont repere local, vers le repere monde.
On peut l´appeller "LocalToWorld"

On obtient :
0 --------P1-------P2-------------------- 100

Voila donc ce qu´est un repere local et un repere monde.

L´idée c´est d´avoir un repere monde unique. d´avoir plein d´objet avec des transformations chacun (autant que tu veux, les uns par rapport aux autres).
Ensuite tu as une matrice camera (qui transforme le monde dans un repere camera).
Et enfin t´as une matrice ecran, qui transforme le monde camera en monde ecran.

Une matrice, c´est juste une methode simple d´ecrire des transformations complexes.

Fvirtman
Fvirtman
Niveau 10
12 avril 2007 à 23:22:44

Je veux rajouter que meme si on "bouge la caméra", en réalité, on ne bouge pas la caméra, on modifie la matrice M, finalement, poser une caméra, c´est faire une bete transformation de plus.

Y´a 2 façons de voir les choses : soit je bouge une caméra n´importe ou pour aller voir un objet, soit je ramene l´objet devant mon point (0,0,0), direction (0,0,1), ce qui est bien plus simple a la sortie : on se place dans un cas particulier simple, ce qui, par la suite, permet d´avoir immédiatement le Z-buffer sans trop de calculs, et de projeter facilement :)

77SQUALL77
77SQUALL77
Niveau 2
13 avril 2007 à 02:32:38

Ave un oncle on a fait des déplace. sous multi. angle multi. vision est les points que j´ai retenu c´est que chaque déplace doive être config. il y a tous de même moyen de config. le prog. pour qu´il reconnaisse une avancée logique celon des critères prés définie mais franchement j´aimerais que vous me transmaitiez les adresses que vous avez niveau tutos sur se genre d´interaction (désolé je débute) mais je n´ais pas encore trouvé d´aide je me suis retrouvé sur des thèmes de supersymétrie de question macroscopique, sur des bases de super cordes mais y a un décallage de therme la matrice est relative celon les points qu´on lui donne à son propre encadrement...

77SQUALL77
77SQUALL77
Niveau 2
13 avril 2007 à 02:36:39

PS : je ne reverais pas mon oncle avant deux ou trois ans donc si vous avez des adresses de tutos SVP cela me sera d´une grande utilité Merci d´avance désolé pour le manque d´aide

godrik
godrik
Niveau 30
13 avril 2007 à 12:03:52

je confirme aussi les differences de sens des matrices selon les notations americaines et francaises. l´une est la transposé de l´autre, il faut faire attention quand on spécifie les matrices "a la main". ce ne devrait pas arriver en fait.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware