Précédent   Forum du club des développeurs et IT Pro > Applications > Développement 2D, 3D et Jeux > Moteurs 3D
Moteurs 3D Forum d'entraide sur les moteurs 3D (conception d'un moteur, Ogre, Irrlicht...)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 01/12/2012, 14h32   #1
lapotose
Invité de passage
 
Inscription : novembre 2012
Messages : 16
Détails du profil
Informations forums :
Inscription : novembre 2012
Messages : 16
Points : 1
Points : 1
Par défaut Bibliothèque 3D / Matrices

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 ?
lapotose est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2012, 18h39   #2
Obsidian
Modérateur
 
Avatar de Obsidian
 
Homme
Chercheur d'emploi
Inscription : septembre 2007
Messages : 4 614
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 36
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Chercheur d'emploi
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2007
Messages : 4 614
Points : 11 089
Points : 11 089
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.
Obsidian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2012, 18h32   #3
lapotose
Invité de passage
 
Inscription : novembre 2012
Messages : 16
Détails du profil
Informations forums :
Inscription : novembre 2012
Messages : 16
Points : 1
Points : 1
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
lapotose est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2012, 19h14   #4
Obsidian
Modérateur
 
Avatar de Obsidian
 
Homme
Chercheur d'emploi
Inscription : septembre 2007
Messages : 4 614
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 36
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Chercheur d'emploi
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2007
Messages : 4 614
Points : 11 089
Points : 11 089
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.
Obsidian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2012, 20h04   #5
lapotose
Invité de passage
 
Inscription : novembre 2012
Messages : 16
Détails du profil
Informations forums :
Inscription : novembre 2012
Messages : 16
Points : 1
Points : 1
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.
lapotose est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2012, 20h25   #6
_MAID
Membre éclairé
 
Avatar de _MAID
 
Homme
Game developer
Inscription : novembre 2010
Messages : 166
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Game developer

Informations forums :
Inscription : novembre 2010
Messages : 166
Points : 330
Points : 330
As-tu consulté ce FAQ de Developpez.com, qui est plutôt pas mal : http://jeux.developpez.com/faq/math/?page=matrices
_MAID est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2012, 20h55   #7
lapotose
Invité de passage
 
Inscription : novembre 2012
Messages : 16
Détails du profil
Informations forums :
Inscription : novembre 2012
Messages : 16
Points : 1
Points : 1
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.
lapotose est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2012, 15h43   #8
dancingmad
Membre habitué
 
Homme Martin Bousquet
Développeur de jeux vidéo
Inscription : octobre 2008
Messages : 93
Détails du profil
Informations personnelles :
Nom : Homme Martin Bousquet
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur de jeux vidéo

Informations forums :
Inscription : octobre 2008
Messages : 93
Points : 108
Points : 108
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
où World est la matrice qui représente le repère du joueur dans la scène.

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
où View est la matrice qui représente le repère du monde par rapport à la caméra.

Enfin, il faut prendre en compte la projection de la caméra. Nouveau changement de repère :

Code :
PositionEcran = Proj * PositionCamera
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
On n'utilise principalement que ces 3 types de matrices dans un moteur 3D, cependant on utilisera une multitude de matrices World (en général un par objet ou sous-objet de la scène).

Voilà, j'espère avoir répondu à ta question dans ce post un peu long
dancingmad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2012, 14h37   #9
lapotose
Invité de passage
 
Inscription : novembre 2012
Messages : 16
Détails du profil
Informations forums :
Inscription : novembre 2012
Messages : 16
Points : 1
Points : 1
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 !!
lapotose est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 11h40.


 
 
 
 
Partenaires

Hébergement Web