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

Bibliothèques C++ Discussion :

Besoins de conseils sur la réalisation d'un moteur 3D


Sujet :

Bibliothèques C++

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 141
    Points : 195
    Points
    195
    Par défaut Besoins de conseils sur la réalisation d'un moteur 3D
    Bonjour,
    Je travaille sur un jeu avec une équipe et je suis chargé d'écrire un moteur 3D (simple).

    Pour ce faire, j'aurais plusieurs questions :

    -Pour dessiner la 3D, je compte utiliser OpenGL et je ne pense pas faire une adaptation pour DirectX3D, est-ce une erreur ou opengl ne causera pas de problème?

    -Afin d'avoir les informations sur la façon de dessiner un modèle, choisir un format de modèle devient une priorité.
    Le problème est de trouver un format de préférence simple (texte si possible), avec des informations sur la structure et les textures. Pas besoin d'avoir d'animations.

    -Mais ensuite, j'aurais besoin de faire une "trace", c'est à dire :
    Je donne un point de départ, un point d'arrivée, et ça renvoie le premier obstacle trouvé sur la ligne formée par ces deux points.

    Je cherche une solution pour faire ça simplement, voir un algorithme parce que il est inutile d'utiliser Newton Physic pour uniquement tracer


    Donc voila, si vous avez la réponse à l'une de ces questions, n'hésitez pas à répondre.

    Merci d'avance

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Salut,

    Pourquoi tu n'utilises pas quelque chose de tout fait et open-source, par exemple Ogre3D ?

    MAT.

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 141
    Points : 195
    Points
    195
    Par défaut
    Ogre3D n'est pas fait pour gérer l'environnement du jeu, j'ai déjà jeté un coup d'oeil. De plus il est trop complexe et trop lourd pour un environnement si simple.

    Dans le but d'acquérir de l'expérience dans la matière, et d'avoir exactement ce qu'il faut pour gérer un environnement comme celui du jeu.

    Le jeu évolue dans un environnement spatial, c'est un MMOSTR, une seule galaxie pour des centaines de joueurs. Un moteur 3D adapté me semble la solution la plus simple.

  4. #4
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    Y'a un très bon tuto de laurent gomila sur la réalisation de moteur 3D ici même . Ca peut toujours t'aider pour certaines parties.

    Mais je pense comme mat007, aucun besoin de réinventer la roue ici.
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 141
    Points : 195
    Points
    195
    Par défaut
    Je m'aide de ce tutoriel, mais il m'a posé problème pour le gestionnaire de mémoire notamment.
    Ce gestionnaire de mémoire fonctionne à une exception près, la surcharge du delete ne fonctionne pas, d'après le débugger l'instruction delete tourne en boucle infinie dans ma fonction de libération.

    Sinon, le jeu est très différent des autres par de nombreux points, un moteur adapté sera vraiment la seule chose à utiliser.

  6. #6
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    -Pour dessiner la 3D, je compte utiliser OpenGL et je ne pense pas faire une adaptation pour DirectX3D, est-ce une erreur ou opengl ne causera pas de problème?
    Le moteur 3D n'exposera rien de spécifique à OpenGL, donc créer une différente implémentation pour DirectX ne pose aucun problème a priori.

    -Afin d'avoir les informations sur la façon de dessiner un modèle, choisir un format de modèle devient une priorité.
    Le problème est de trouver un format de préférence simple (texte si possible), avec des informations sur la structure et les textures. Pas besoin d'avoir d'animations.
    Il y a OBJ (géométrie) + MTL (matériau), par exemple. Je pense pas qu'on fasse plus simple.

    -Mais ensuite, j'aurais besoin de faire une "trace", c'est à dire :
    Je donne un point de départ, un point d'arrivée, et ça renvoie le premier obstacle trouvé sur la ligne formée par ces deux points.
    Ça s'appelle du raycasting, c'est sans aucun doute une des primitives les plus utiles (object picking, tests de visibilité, etc.)
    Ça se fait en temps logarithmique avec un index spatial.

    Commence déjà par faire une implémentation naïve : cherche l'objet qui intersecte le rayon à une distance minimum en testant tous les objets (temps linéaire).
    Boost ftw

  7. #7
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par Lynix Voir le message
    -Pour dessiner la 3D, je compte utiliser OpenGL et je ne pense pas faire une adaptation pour DirectX3D, est-ce une erreur ou opengl ne causera pas de problème?
    Open GL sur mon portable ne marche pas toujours bien....
    Il faut faire une solution hybride , Irrlicht3d permet cela.
    Irrlicht permet un rendu en Open GL et Direct X , Ogre sans doute.

    Sinon il y a un forum dev jeux pour ce genre de questions

    -Afin d'avoir les informations sur la façon de dessiner un modèle, choisir un format de modèle devient une priorité.
    Le problème est de trouver un format de préférence simple (texte si possible), avec des informations sur la structure et les textures. Pas besoin d'avoir d'animations.
    Tu risques de te casser la tête inutilement à moins qu'il y ait plusieurs programmeurs sur ton projet.
    Il suffit de prendre des fichiers .3ds ou .x pour Direct X.
    Sinon Blender permet d'exporter des fichiers .blend. vers OGRE


    -Mais ensuite, j'aurais besoin de faire une "trace", c'est à dire :
    Je donne un point de départ, un point d'arrivée, et ça renvoie le premier obstacle trouvé sur la ligne formée par ces deux points.
    ? Je pense qu'un algorithme de pathfinding suffit pour cela.
    Il suffit de définir une matrice au sol qui mémorise les coordonnées des objets.
    Regarde dans les tutos de jeux.
    Là ou cela se complique c'est si la détection de collision se fait en hauteur.
    Mais au début je te conseille de faire simple

    Citation Envoyé par Lynix Voir le message
    Le jeu évolue dans un environnement spatial, c'est un MMOSTR, une seule galaxie pour des centaines de joueurs. Un moteur 3D adapté me semble la solution la plus simple.
    Ogre ou Irrlicht3d suffisent amplement..tu vas te casser la tête en voulant avoir une autre solution.
    Je te conseille de faire une maquette avec ces moteurs 3d quittent à faire quelque chose de plus personnel après

  8. #8
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Open GL sur mon portable ne marche pas toujours bien....
    Il faut faire une solution hybride , Irrlicht3d permet cela.
    Irrlicht permet un rendu en Open GL et Direct X , Ogre sans doute.
    Si DirectX marche bien mais pas OpenGL, c'est que tu as clairement un problème de drivers...
    Boost ftw

  9. #9
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    C'est surtout qu'OpenGL est un peut plus compliqué dès qu'on sort des sentiers battus... extensions propriétaires ATI ou NVidia ....
    Et largement moins orienté objet (on est dans un forum C++ donc j'imagine qu'on va faire du C++ ).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  10. #10
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par nicroman Voir le message
    Et largement moins orienté objet (on est dans un forum C++ donc j'imagine qu'on va faire du C++ ).
    juste une petite précision , Direct X non plus !
    Direct X n'est pas orientée objet Direct X c'est un ensemble d'interfaces C.O.M. ni plus ni moins c'est du "pseudo-objet" en quelque sorte.
    Après c'est au programmeur d'encapsuler cela dans des classes.
    Si tu veux tu peux dire que DirectX est orienté objet mais c'est un peu discutable..

  11. #11
    Membre habitué
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 141
    Points : 195
    Points
    195
    Par défaut
    Désolé de ma réponse tardive, bon alors j'aimerais que plus personne ne me conseille de prendre un autre moteur, parce que j'ai mes raisons de programmer mon propre moteur.

    Ensuite, j'ai décidé de prendre le format .md2 qui, apparemment, fait tout ce que je veux et même plus (Animation).

    Je n'ai pas encore décidé de l'application d'une alternative DirectX.

    Pour ce qui est du ray casting, il me semble que OpenGL peut s'en charger, je cherche encore un tutoriel.

  12. #12
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Pour ce qui est du ray casting, il me semble que OpenGL peut s'en charger, je cherche encore un tutoriel.
    Bien sûr que non il peut pas... Il peut te trouver la coordonnée 3D sous la souris, avec le depth buffer, mais pas l'objet en question.
    Boost ftw

  13. #13
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Citation Envoyé par loufoque Voir le message
    Bien sûr que non il peut pas... Il peut te trouver la coordonnée 3D sous la souris, avec le depth buffer, mais pas l'objet en question.
    En fait, il y a un mode de rendu GL_SELECT où tu peux jouer avec des étiquettes pour avoir un picking un peu plus évolué qu'une simple coordonnée. (cf ici).

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/02/2009, 23h15
  2. Besoin de conseil sur les classes
    Par SuperWeight dans le forum MFC
    Réponses: 1
    Dernier message: 04/06/2007, 21h44
  3. besoin de conseil sur le démarrage d'un projet
    Par kollyv dans le forum Général Java
    Réponses: 5
    Dernier message: 06/04/2007, 18h32
  4. besoin de conseil pour la réalisation d'un projet
    Par argon dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 12/07/2006, 10h34
  5. Besoin de conseils sur une application
    Par Jim_Nastiq dans le forum Langage
    Réponses: 12
    Dernier message: 12/04/2006, 12h43

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