Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 9 sur 9
  1. #1
    Candidat au titre de Membre du Club
    Inscrit en
    novembre 2012
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : novembre 2012
    Messages : 33
    Points : 10
    Points
    10

    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
    Chercheur d'emploi
    Inscrit en
    septembre 2007
    Messages
    5 315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : septembre 2007
    Messages : 5 315
    Points : 12 311
    Points
    12 311

    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
    Candidat au titre de Membre du Club
    Inscrit en
    novembre 2012
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : novembre 2012
    Messages : 33
    Points : 10
    Points
    10

    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
    Chercheur d'emploi
    Inscrit en
    septembre 2007
    Messages
    5 315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : septembre 2007
    Messages : 5 315
    Points : 12 311
    Points
    12 311

    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
    Candidat au titre de Membre du Club
    Inscrit en
    novembre 2012
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : novembre 2012
    Messages : 33
    Points : 10
    Points
    10

    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 éclairé Avatar de _MAID
    Homme Profil pro
    Game developer
    Inscrit en
    novembre 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Game developer

    Informations forums :
    Inscription : novembre 2010
    Messages : 217
    Points : 391
    Points
    391

    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
    Candidat au titre de Membre du Club
    Inscrit en
    novembre 2012
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : novembre 2012
    Messages : 33
    Points : 10
    Points
    10

    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 habitué
    Homme Profil pro Martin Bousquet
    Développeur de jeux vidéo
    Inscrit en
    octobre 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Nom : Homme Martin Bousquet
    Âge : 27
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : octobre 2008
    Messages : 100
    Points : 101
    Points
    101

    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 :
    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

  9. #9
    Candidat au titre de Membre du Club
    Inscrit en
    novembre 2012
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : novembre 2012
    Messages : 33
    Points : 10
    Points
    10

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •