IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Moteurs 3D Discussion :

Bibliothèque 3D / Matrices


Sujet :

Moteurs 3D

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 36
    Points : 22
    Points
    22
    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 ?

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 371
    Points : 23 626
    Points
    23 626
    Par défaut
    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.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 36
    Points : 22
    Points
    22
    Par défaut
    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

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 371
    Points : 23 626
    Points
    23 626
    Par défaut
    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.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 36
    Points : 22
    Points
    22
    Par défaut
    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.

  6. #6
    Membre confirmé Avatar de _MAID
    Homme Profil pro
    Game developer
    Inscrit en
    Novembre 2010
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Game developer

    Informations forums :
    Inscription : Novembre 2010
    Messages : 216
    Points : 462
    Points
    462
    Par défaut
    As-tu consulté ce FAQ de Developpez.com, qui est plutôt pas mal : http://jeux.developpez.com/faq/math/?page=matrices

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 36
    Points : 22
    Points
    22
    Par défaut
    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.

  8. #8
    Membre averti
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2008
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 187
    Points : 448
    Points
    448
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 36
    Points : 22
    Points
    22
    Par défaut
    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 !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/08/2014, 22h05
  2. Classe/bibliothèque pour les matrices
    Par ggarcia dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 20/10/2012, 18h40
  3. Réponses: 0
    Dernier message: 28/11/2011, 15h29
  4. Comment définir le type matrice ?
    Par charly dans le forum Langage
    Réponses: 7
    Dernier message: 15/06/2002, 21h01
  5. Bibliothèques et documentation
    Par Anonymous dans le forum OpenGL
    Réponses: 4
    Dernier message: 01/04/2002, 12h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo