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 :

Choix Java3d ou OpenGL - Cas avec des millions de triangles


Sujet :

Moteurs 3D

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Choix Java3d ou OpenGL - Cas avec des millions de triangles
    Salut,
    Je suis un étudiant d'école centrale de nantes. Ce semestre je vais commencer à faire un projet sur la maquette numérique du musée du château des ducs de bretagne. Le but de ce projet c'est de construire une maquette numérique pour permettre à une personne de faire une navigation dans cette maquette.
    Maintenant on a déjà la maquette numérique mais elle est composé de dizaine de millions de triangles... donc on doit utiliser un algorithme pour diminuer le nombre de triangles de maillage. On a déjà quelques algorithmes mais il est difficile à utiliser pour des personnes sans connaissances informatique. Ces algorithmes ne sont pas parfait. Donc on veut réaliser une interface pour permettre à l'utilisateur d'utiliser l'algorithme pour traiter la maquette plus facilement.
    On doit choisir entre java3d ou OpenGL pour faire l'affichage de la maquette. J'ai cherché des informations sur l'internet, il me semble que Java3d soit plus facile à maitriser, mais je ne sais pas si la vitesse de traitement de java3d est rapide ou non?
    Puisque la quantité de triangles de la maquette est grosse, donc si la vitesse est trop lent ça va être une catastrophe pour nous.
    Est-ce que quelqu'un sait quelle API est plus rapide, java3d ou OpenGL?

    Merci beaucoup!

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 576
    Points : 1 528
    Points
    1 528
    Par défaut
    Salut,

    Tu parles d'OpenGL en C ou de JOGL (OpenGL java) ?

    Dans l'absolue, plus une API est bas niveaux, plus elle est rapide (moins de couches à traversé), à condition de l'utiliser correctement. Mais les perfs restent quand même dans le même ordre de grandeur.
    Cependant la perte de performance est généralement négligeable devant le gain obtenu par la facilité de développement. D'autant plus qu'il s'agit d'un projet scolaire. Mieux vaut un truc fonctionnel qui rame un peu, plutôt qu'un truc rapide, buggé où il manque les 3/4 des features.

    Je pense que ce thread devrait t’intéresser.

    Pour ma part, je prendrai java3D. Si tu ne connait pas openGL, tu vas passer un temps fou à apprendre à l'utiliser, pour au final l'utiliser d'une manière loin d'être optimal.
    La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer. - Antoine de Saint-Exupéry

  3. #3
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    l’avantage de l'openGL est que tu trouvera beaucoup (beaucoup) plus de ressources sur internet. Après, l'affichage de millions de triangles, même sur une carte graphique moderne, ça reste relativement inadapté. regarde du coté du bump (parallax) mapping, tu doit pouvoir trouver des outils qui te permettent de reduire la quantité de triangles tout en te générant les normal/height map nécessaires à l'affichage.
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 577
    Points
    218 577
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    En terme de performances, je pense que les deux sont équivalents. Malheureusement, je ne connais pas Java3D, mais pour peu qu'il soit accélérer par le matériel tout ira bien.

    Après, c'est le nombres de triangles qui m'inquiète. Notamment, une dizaine de millions de triangles. Le choix de la bibliothèque sera négligeable (soit prendre la meilleur) car là, où il faudra travailler, c'est les optimisations sur l'affichage des triangles.
    Plus précisément, sur les 10 millions de triangle, seulement 100 000 triangles seront utiles. Donc, je pense qu'il faut se pencher sur les algos de frustrum culling, les arbres quad tree / octree.

    En conclusion, prenez la bibliothèque que vous préférez (la plus facile donc), et après, dans tout les cas, vous allez devoir travailler sur les algorithmes d'optimisations.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par pyros Voir le message
    Salut,

    Tu parles d'OpenGL en C ou de JOGL (OpenGL java) ?

    Dans l'absolue, plus une API est bas niveaux, plus elle est rapide (moins de couches à traversé), à condition de l'utiliser correctement. Mais les perfs restent quand même dans le même ordre de grandeur.
    Cependant la perte de performance est généralement négligeable devant le gain obtenu par la facilité de développement. D'autant plus qu'il s'agit d'un projet scolaire. Mieux vaut un truc fonctionnel qui rame un peu, plutôt qu'un truc rapide, buggé où il manque les 3/4 des features.

    Je pense que ce thread devrait t’intéresser.

    Pour ma part, je prendrai java3D. Si tu ne connait pas openGL, tu vas passer un temps fou à apprendre à l'utiliser, pour au final l'utiliser d'une manière loin d'être optimal.
    Merci à ta réponse. je parle de JOPL puisque nous devons utiliser java à programmer. oui j'ai déjà vu la discussion que tu me donne hier, mais la différence de vitesse de traitement n'est-ce pas mentionée. mon camarade me dit il faut vérifier si java3d peut afficher 500 000 triangles en même temps. est-ce que ça marche?

    Citation Envoyé par LittleWhite Voir le message
    Bonjour,

    Plus précisément, sur les 10 millions de triangle, seulement 100 000 triangles seront utiles. Donc, je pense qu'il faut se pencher sur les algos de frustrum culling, les arbres quad tree / octree.

    En conclusion, prenez la bibliothèque que vous préférez (la plus facile donc), et après, dans tout les cas, vous allez devoir travailler sur les algorithmes d'optimisations.
    merci à ta réponse. je ne comprends pas bien les algos de frustrum culling, c'est-à-dire quoi? en fait nous avons déjà l'algorithme pour simplifier la maquette, pour réduire le nombre de triangles. mais dans l'interface qu'on va développer, il faut d'abord importer la maquette et puis la simplifier en utilisant l'algorithme existant.

  6. #6
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    en fait, il faut savoir si tu doit voir la maquette en entier ou si tu déplace la camera dedans en aillant qu'une partie de la maquette visible à un instant donné.

    si tu voit toute la maquette, les algo de culling risquent de na pas apporter grand chose. Au contraire, il vont ralentir le rendu et rendre le code plus complexe. par contre, si tu déplace la camera dans la maquette, alors la, il peuvent fortement réduire le nombre de polygone à afficher.

    Concernant le choix de l'API à utiliser, personnellement, de conseil JOGL qui te permettra des acces plus bas niveau, donc un potentiel de performance supérieur à Java3D.
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Points : 432
    Points
    432
    Par défaut
    Le meilleur moteur 3D entièrement en java c'est ici :

    Ardor3d

    C'est un fork de Jmonkey engine réalisé par son principal contributeur. Il est disponible pour desktop mais aussi sur android. Tu trouveras pas mieux actuellement sur le marché , il s'appuie sur LWJGL et je crois que l'on peut aussi utiliser JOGL.

    Java3D est pas prévu pour faire de grande chose en 3D c'est plus pour afficher quelques modèles dans une application.

  8. #8
    Membre du Club
    Développeur Back-End
    Inscrit en
    Mars 2005
    Messages
    31
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Mars 2005
    Messages : 31
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par Elendhil Voir le message
    Le meilleur moteur 3D entièrement en java c'est ici :

    Ardor3d
    Ardor3d n'évolue plus depuis presque un an...

  9. #9
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Août 2011
    Messages : 342
    Points : 1 091
    Points
    1 091
    Par défaut
    Ils viennent de sortir une release.

  10. #10
    Membre régulier Avatar de lightbulb
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 108
    Points : 96
    Points
    96
    Par défaut
    En réalité tout dépend de la structure de ces millions de poly et des traitements qui leurs sont appliqués. C'est 1million de poly par objet ou 1million de poly répartis sur 400 objets d'une même scène?

    Ces objets vont devoir recevoir de la lumière? Modèle d'illumination de Phong, de Gouraud? Des textures sont appliquées dessus?
    Des effets visuels à prévoir, ombrages dynamiques, ambiant occlusion?

    Dans la pratique mêmes les jeux les plus récents ne dépassent pas quelques 100ènes de milliers de poly. De nombreuses techniques sont élaborées pour éviter à ce nombre de croître, gestion du Level Of Detail en fonction de la distance entre l'objet et la caméra, portails, octrees, frustrum culling... Ces techniques sont principalement basées sur le partitionnement spatial.

    Les millions de polys sont réservés au cinéma et aux films d'animations 3D qui disposent de render farm pour effectuer leurs rendus.

  11. #11
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 576
    Points : 1 528
    Points
    1 528
    Par défaut
    Au final, quelques milions de triangles, s'il s'agit d'une seul mesh affiché simplement (éclairage gouraud/phong et 1 texture), les cartes actuelles savent faire.
    Je tourne à 180 fps avec 2 millions de triangles (1 seul VBO, éclairage gouraud) sur quadro K5000. Donc même sur une GForce pas trop vielle ça devrait être utilisable.
    Ne pas oublier qu'il n'y à pas que les jeux. Les appli de visu scientifique et de CAO sont très gourmandes en triangles.
    La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer. - Antoine de Saint-Exupéry

Discussions similaires

  1. Traiter des fichiers avec des millions de lignes
    Par nice-one dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 22/04/2013, 12h03
  2. Réponses: 3
    Dernier message: 19/08/2007, 01h45
  3. Réponses: 1
    Dernier message: 11/05/2007, 19h36
  4. Comment creer un choix multiple avec des cases a cocher ??
    Par pedrosystem dans le forum Access
    Réponses: 5
    Dernier message: 09/03/2006, 10h36
  5. un cas avec des Sous Classes
    Par Daeron dans le forum Langage
    Réponses: 7
    Dernier message: 17/01/2006, 17h39

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