Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 11 sur 11
  1. #1
    Invité de passage
    Inscrit en
    septembre 2011
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : septembre 2011
    Messages : 2
    Points : 0
    Points
    0

    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 Expert
    Homme Profil pro
    Inscrit en
    mars 2011
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : mars 2011
    Messages : 542
    Points : 1 167
    Points
    1 167

    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/Modérateur
    Avatar de bafman
    Profil pro Michel de Verdelhan
    Développeur informatique
    Inscrit en
    novembre 2003
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Nom : Michel de Verdelhan
    Âge : 30
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : novembre 2003
    Messages : 2 576
    Points : 5 224
    Points
    5 224

    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 Alexandre Laurent
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    16 753
    Détails du profil
    Informations personnelles :
    Nom : Homme Alexandre Laurent
    Localisation : France

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

    Informations forums :
    Inscription : mai 2008
    Messages : 16 753
    Points : 86 265
    Points
    86 265

    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
    La rubrique a aussi un blog !

    Ma page sur DVP
    Mon Portfolio

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

  5. #5
    Invité de passage
    Inscrit en
    septembre 2011
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : septembre 2011
    Messages : 2
    Points : 0
    Points
    0

    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/Modérateur
    Avatar de bafman
    Profil pro Michel de Verdelhan
    Développeur informatique
    Inscrit en
    novembre 2003
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Nom : Michel de Verdelhan
    Âge : 30
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : novembre 2003
    Messages : 2 576
    Points : 5 224
    Points
    5 224

    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 éprouvé
    Inscrit en
    juin 2006
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : juin 2006
    Messages : 350
    Points : 404
    Points
    404

    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
    Nouveau Membre du Club
    Inscrit en
    mars 2005
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 28
    Points : 30
    Points
    30

    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 chevronné
    Homme Profil pro Gilles
    Inscrit en
    août 2011
    Messages
    243
    Détails du profil
    Informations personnelles :
    Nom : Homme Gilles
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : août 2011
    Messages : 243
    Points : 637
    Points
    637

    Par défaut

    Ils viennent de sortir une release.

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

    Informations forums :
    Inscription : septembre 2008
    Messages : 108
    Points : 69
    Points
    69

    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 Expert
    Homme Profil pro
    Inscrit en
    mars 2011
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : mars 2011
    Messages : 542
    Points : 1 167
    Points
    1 167

    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

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
  •