|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : novembre 2012 Messages : 16 ![]() |
Bonjours à tous,
Depuis quelque temps déjà j'ai en tête en petit projet qui consiste au développement d'une petite bibliothèque 3D, dans le but de réaliser en petit moteur 3D. Cela fait un paquet de temps que je cherche des réponse à mes question et une reste en suspends : A l'image de l'openGL qui utilise des matrices pour faire ses calculs de projections, j'aimerais réutiliser cette méthode pour faire mes propre calculs. Mais après avoir suivis quelques tutos sur son fonctionnement, je me suis retrouvé avec un paquet de matrices sans savoir les utiliser à bon escient. Voilà donc mon problème : comment utiliser toutes ces matrices dans le bon ordre ? Voilà tout, et en vous remerciant d'avance PS : Je suis nouveau sur le site : n'hésitez pas à me faire des remarques concernant mon post, des choses que je fait mal... PS 2 : Mon sujet est-il bien placé ? Il y a t-il un endroit plus adapté à ce type de sujet ? |
|
|
00
|
|
|
#2 |
![]() ![]() Chercheur d'emploi Inscription : septembre 2007 Messages : 4 614 ![]() |
Bonjour et bienvenue,
Ton message a sa place dans ce forum précis si tu comptes développer en C et si tes matrices sont définis dans ce langage. Si tu as besoin d'aide sur le fond, c'est-à-dire sur le plan strictement mathématique, le meilleur endroit est le forum « algorithmes » et ses sous-forums (Mathématiques, Traitement d'image, IA…). Au besoin, je peux déplacer ton message. |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : novembre 2012 Messages : 16 ![]() |
Bonjours,
En effet, mes matrices sont définies en C, car c'est d'ailleurs le langage que je maitrise. Sur le plan mathématique, je maitrise l'opération principale qui permet d'utiliser les matrices entre elles : la multiplication. C'est donc bien sur le fond qui je sèche et je pense que ce genre de sujet trouverai bien sa place sur une page concernant le développement 3D "bas niveau". Seulement je n'ai rien vu de tel sur le forum. Mais si tu pense savoir où le mettre, alors n'hésite pas à le bouger. Merci beaucoup pour ta réponse |
|
|
00
|
|
|
#4 |
![]() ![]() Chercheur d'emploi Inscription : septembre 2007 Messages : 4 614 ![]() |
C'est vrai qu'il y a beaucoup de forums sur Developpez et qu'il peut être difficile de choisir le bon dès le départ.
Toutefois, il existe un forum assez vaste nommé « Développement 2D, 3D, Jeux », qui lui-même contient notamment un sous-forum « Moteurs 3D ». Je déplace ta discussion dans ce dernier. Tu peux également visiter le forum « Algorithmes » et ses sous-forums, ainsi que le forum « Matlab » et ses sous-forums également, où l'on parle de matrices par définition, mais qui traite spécifiquement du logiciel Matlab et de ses clones. À noter que certains sous-forums sont parfois des renvois vers d'autres forums du site (par exemple : MATLAB→Algorithmes redirige vers le forum Algorithmes). Bon courage pour la suite. |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : novembre 2012 Messages : 16 ![]() |
Merci beaucoup pour le déplacement du message, qui par ailleurs m'as fait découvrir une autre partie du site.
Sur ce, en attendant que des âmes charitables postent quelques réponses pour résoudre mon problèmes, je les remercie d'avance. |
|
|
00
|
|
|
#6 |
|
Membre éclairé
![]() Game developer Inscription : novembre 2010 Messages : 166 ![]() |
As-tu consulté ce FAQ de Developpez.com, qui est plutôt pas mal : http://jeux.developpez.com/faq/math/?page=matrices
|
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : novembre 2012 Messages : 16 ![]() |
Oui, je l'ai consultée avant même de poster, mais elle ne réponds pas à mes questions.
Pour être plus précis considérons 3 matrices concernant : -la caméra : regroupe les informations relatives au placement de la caméra et son orientation dans le monde -la projection : sert à passer du monde 3D à l'écran 2D -la coordonnée d'un point 3D Je cherche 2 choses : -Tout d'abord, connaitre si d'autre matrices sont utilisées -Ensuite, comment utiliser concrètement ces matrices pour obtenir les coordonnées du point projeté. J'ai essayé de faire point_2D = camera*projection*point_3D mais les résultats sont décevant. Voilà pour l'instant, et demandez-moi pour plus de précisions. |
|
|
00
|
|
|
#8 |
|
Membre habitué
![]() Martin BousquetDéveloppeur de jeux vidéo Inscription : octobre 2008 Messages : 93 ![]() |
Bonjour,
pour bien comprendre le problème, il faut se dire qu'une matrice représente toujours un changement de repère dans l'espace. Pour obtenir les coordonnées à l'écran d'un point 3D, on effectue un certain nombre de changements de repères (donc de multiplication matricielles). Prenons un cas simple : j'ai un personnage dans ma scène, qui contient un mesh, et je veux connaitre la position à l'écran d'un des sommet de ce mesh (par exemple le bout du petit doigt gauche). Comme tous les sommets du mesh, ses coordonnées sont exprimées dans le repère local du joueur, la première opération consiste donc à changer ses coordonnées dans le repère global de la scène. On fait donc : Code :
PositionGlobale = World * PositionLocale Ensuite, il faut prendre en compte la position de la caméra, on va donc faire un nouveau changement de repère des coordonnées globales vers les coordonnées du repère de la caméra : Code :
PositionCamera = View * PositionGloable Enfin, il faut prendre en compte la projection de la caméra. Nouveau changement de repère : où Proj est la matrice de projection de la caméra. On obtient un point 3D dont les composantes X et Y représentent la position à l'écran et la composante Z représente la "profondeur" du point. Pour résumer : Code :
PositionEcran = Proj * View * World * PositionLocale Voilà, j'espère avoir répondu à ta question dans ce post un peu long |
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : novembre 2012 Messages : 16 ![]() |
Merci pour ta réponse (pas trop longue je te rassure
C'est exactement ce qui me fallait, et je vais du coup pouvoir continuer mon projet. Merci encore !! |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com