Précédent   Forum du club des développeurs et IT Pro > Applications > Développement 2D, 3D et Jeux > Moteurs 3D
Moteurs 3D Forum d'entraide sur les moteurs 3D (conception d'un moteur, Ogre, Irrlicht...)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 28/09/2011, 22h02   #1
Siju Wu
Invité de passage
 
Inscription : 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!
Siju Wu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 09h43   #2
pyros
Membre Expert
 
Homme
Inscription : mars 2011
Messages : 531
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2011
Messages : 531
Points : 1 042
Points : 1 042
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
pyros est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 09h51   #3
bafman
Rédacteur/Modérateur
 
Avatar de bafman
 
Michel de Verdelhan
Développeur informatique
Inscription : novembre 2003
Messages : 2 576
Détails du profil
Informations personnelles :
Nom : Michel de Verdelhan
Âge : 29
Localisation : France, Paris (Île de France)

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

Informations forums :
Inscription : novembre 2003
Messages : 2 576
Points : 5 187
Points : 5 187
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
bafman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 09h57   #4
LittleWhite
Responsable 2D/3D/Jeux


 
Avatar de LittleWhite
 
Homme Alexandre Laurent
Ingénieur développement logiciels
Inscription : mai 2008
Messages : 10 450
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 : 10 450
Points : 40 403
Points : 40 403
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.
LittleWhite est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/09/2011, 11h03   #5
Siju Wu
Invité de passage
 
Inscription : septembre 2011
Messages : 2
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 2
Points : 0
Points : 0
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.
Siju Wu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 11h42   #6
bafman
Rédacteur/Modérateur
 
Avatar de bafman
 
Michel de Verdelhan
Développeur informatique
Inscription : novembre 2003
Messages : 2 576
Détails du profil
Informations personnelles :
Nom : Michel de Verdelhan
Âge : 29
Localisation : France, Paris (Île de France)

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

Informations forums :
Inscription : novembre 2003
Messages : 2 576
Points : 5 187
Points : 5 187
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
bafman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2011, 21h34   #7
Elendhil
Membre éclairé
 
Inscription : juin 2006
Messages : 331
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 331
Points : 330
Points : 330
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.
Elendhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2012, 12h05   #8
sachem
Futur Membre du Club
 
Inscription : mars 2005
Messages : 23
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 23
Points : 16
Points : 16
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...
sachem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2012, 06h24   #9
GPPro
Membre éprouvé
 
Homme Gilles
Inscription : août 2011
Messages : 171
Détails du profil
Informations personnelles :
Nom : Homme Gilles
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : août 2011
Messages : 171
Points : 455
Points : 455
Ils viennent de sortir une release.
GPPro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2012, 12h39   #10
lightbulb
Membre régulier
 
Avatar de lightbulb
 
Homme
Inscription : septembre 2008
Messages : 108
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 25
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : septembre 2008
Messages : 108
Points : 73
Points : 73
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.
lightbulb est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/12/2012, 09h34   #11
pyros
Membre Expert
 
Homme
Inscription : mars 2011
Messages : 531
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2011
Messages : 531
Points : 1 042
Points : 1 042
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
pyros est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 04h41.


 
 
 
 
Partenaires

Hébergement Web