Précédent   Forum du club des développeurs et IT Pro > Applications > Développement 2D, 3D et Jeux > API graphiques
API graphiques Forum d'entraide sur les API et bibliothèques graphiques 2D et 3D
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 22/06/2011, 18h50   #1
Kaluza
Membre du Club
 
Homme
Doctorant en Astrophysique
Inscription : mars 2009
Messages : 284
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Doctorant en Astrophysique
Secteur : Enseignement

Informations forums :
Inscription : mars 2009
Messages : 284
Points : 68
Points : 68
Par défaut Moteur 3D gratuit Qt/OpenGL (astrophysique)

Bonjour à tous.

Je cherche actuellement à développer une appli scientifique/grand public de visualisation 3D. Je cherche à mettre la main sur un moteur 3D qui réponde aux critères suivants :
- gratuit
- basé sur OpenGL
- maintenu/updaté
- très important : facile à installer/compiler sur Windows et Linux
- le but visé est l'intégration dans un QGLWidget (Qt)
- permettant des zooms à des échelles très grandes (typiquement facteur 10^6 entre l'échelle la plus grande et la plus petite)

Je n'ai pas besoin d'avoir un très bon rendu de "modèles", par contre je cherche quelque chose qui permette de faire des choses sympa avec l'éclairage/brouillard/gaz.

Le moteur idéal serait un espèce d'hybride entre celui de Google Earth et celui de Eve Online...

Quel moteur serait selon vous le plus adapté ?

Merci beaucoup
Kaluza est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 09h16   #2
Ange_blond
Membre Expert
 
Avatar de Ange_blond
 
Homme Vincent Bourdier
Ingénieur développement en 3D temps réel
Inscription : mars 2007
Messages : 844
Détails du profil
Informations personnelles :
Nom : Homme Vincent Bourdier
Âge : 27
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement en 3D temps réel
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2007
Messages : 844
Points : 1 241
Points : 1 241
Bonjour,

Citation:
Envoyé par Kaluza Voir le message
Je cherche à mettre la main sur un moteur 3D qui réponde aux critères suivants :
- gratuit
- basé sur OpenGL
- maintenu/updaté
- très important : facile à installer/compiler sur Windows et Linux
- le but visé est l'intégration dans un QGLWidget (Qt)
- permettant des zooms à des échelles très grandes (typiquement facteur 10^6 entre l'échelle la plus grande et la plus petite)
Alors moi je ne vais pas etre objectif hein, mais je peux te parler d'Open Scene Graph qui regroupe tous ces avantages.
L'integration Qt est dejà fournie dans les examples.

Citation:
Envoyé par Kaluza Voir le message
Je n'ai pas besoin d'avoir un très bon rendu de "modèles", par contre je cherche quelque chose qui permette de faire des choses sympa avec l'éclairage/brouillard/gaz.
Par contre a part le fog et la gestion des 8 lumieres de base, je ne sais pas trop quelles sont les possibilités d'OSG sur ce point...
__________________
"le langage C permet de tout faire, y compris se tirer dans le pied. Le langage C++ permet de tout faire, y compris se tirer dans le pied - et réutiliser la balle"

Ange3d.developpez.com - tutos OpenSceneGraph

Ni ma boite de MP ni ma page de profil ne sont des extensions du forum OpenSceneGraph ! Merci.
Ange_blond est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 10h30   #3
oxyde356
Membre Expert
 
Avatar de oxyde356
 
Homme
Ingénieur Recherche Imagerie
Inscription : février 2006
Messages : 798
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur Recherche Imagerie

Informations forums :
Inscription : février 2006
Messages : 798
Points : 1 013
Points : 1 013
Envoyer un message via MSN à oxyde356
Citation:
Envoyé par Kaluza Voir le message
Le moteur idéal serait un espèce d'hybride entre celui de Google Earth et celui de Eve Online...
Peux tu être plus précis, parce que dans un cas l'application tourne en temps interactif et dans l'autre cas en temps réel, et Qt et le temps réel ne font pas bon ménage.
oxyde356 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 17h22   #4
JérémieL
Membre habitué
 
Homme
Ingénieur développement logiciels
Inscription : juillet 2009
Messages : 54
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

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

Informations forums :
Inscription : juillet 2009
Messages : 54
Points : 101
Points : 101
Bonjour,

OGRE répond à tous les critères donnés. Gratuit, open source, DirectX ou OpenGL au choix, facile à intégrer dans Qt (dans un QGLWidget ou plus récemment dans QML - voir qmlogre). De même, je propose OGRE parce que je le connais bien.

Citation:
Envoyé par oxyde356 Voir le message
Qt et le temps réel ne font pas bon ménage.
Qu'entends-tu par là exactement ?
JérémieL est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 18h58   #5
oxyde356
Membre Expert
 
Avatar de oxyde356
 
Homme
Ingénieur Recherche Imagerie
Inscription : février 2006
Messages : 798
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur Recherche Imagerie

Informations forums :
Inscription : février 2006
Messages : 798
Points : 1 013
Points : 1 013
Envoyer un message via MSN à oxyde356
J'entends par là que les performances sont loin d'être au rendez-vous.
oxyde356 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 27/06/2011, 16h26   #6
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 041
Points : 1 041
J'avais pensé à OGRE aussi, mais je ne sais pas s'il gère bien les gros facteurs de zoom... Par contre, il sais très bien gérer les très grosses scène (type simulateur de vol)
pyros est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/06/2011, 16h35   #7
yan
Rédacteur/Modérateur
 
Avatar de yan
 
Homme yan verdavaine
Ingénieur expert
Inscription : mars 2004
Messages : 9 885
Détails du profil
Informations personnelles :
Nom : Homme yan verdavaine
Âge : 31
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur expert
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2004
Messages : 9 885
Points : 13 811
Points : 13 811
Citation:
Envoyé par oxyde356 Voir le message
J'entends par là que les performances sont loin d'être au rendez-vous.
???
Par rapport à quelles critère?
http://labs.qt.nokia.com/2009/07/30/three-new-babies/
http://qt.nokia.com/about/news/autod...t-even-better/
yan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2011, 16h46   #8
oxyde356
Membre Expert
 
Avatar de oxyde356
 
Homme
Ingénieur Recherche Imagerie
Inscription : février 2006
Messages : 798
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur Recherche Imagerie

Informations forums :
Inscription : février 2006
Messages : 798
Points : 1 013
Points : 1 013
Envoyer un message via MSN à oxyde356
Et bien en faisant une application minimaliste qui ne fait qu'ouvrir une fenêtre opengl et la gérer en temps réel où dedans il y a une scène pas forcément complexe et bien les performances (temps de rendu d'une scène en comptant bien entendu la gestion de la fenêtre, des messages par qt etc...) sont vraiment mauvaises par rapport à de l'api windows/mfc, sdl, glut, sfml ... (vsync désactivée bien entendu), suffit de faire un petit benchmark ça se vérifie vite et c'est bien dommage, Qt est de loin le framework le mieux conçu que je connaisse (avec GLM mais ça c'est juste une lib ).
D'ailleurs il me semble que dans les nombreux samples livrés avec Qt il n'y en a pas un seul en temps réel, il n'y a que de l'intéractif (réaction à un évènement) bref ce pourquoi Qt a été conçu.
oxyde356 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 27/06/2011, 17h18   #9
yan
Rédacteur/Modérateur
 
Avatar de yan
 
Homme yan verdavaine
Ingénieur expert
Inscription : mars 2004
Messages : 9 885
Détails du profil
Informations personnelles :
Nom : Homme yan verdavaine
Âge : 31
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur expert
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2004
Messages : 9 885
Points : 13 811
Points : 13 811
En te basant sur QGlWidget? sur les dernières version de Qt?
L'eventloop principale peut prendre un certain temps mais de là à tous plomber ça m'étonne. Je voie mal Maya être passé à Qt si c'était autant le cas.

Sinon, pour Qt 4.8 ils ont prévue du multi thread :
http://labs.qt.nokia.com/2011/06/03/...opengl-in-4-8/
yan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2011, 18h21   #10
oxyde356
Membre Expert
 
Avatar de oxyde356
 
Homme
Ingénieur Recherche Imagerie
Inscription : février 2006
Messages : 798
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur Recherche Imagerie

Informations forums :
Inscription : février 2006
Messages : 798
Points : 1 013
Points : 1 013
Envoyer un message via MSN à oxyde356
Oui QGLWidget et j'avais dl la dernière version il y a même pas deux mois. Je ne m'étais pas basé sur la technique du timer pour appeler l'update de ma scène, je l'appelé explicitement dès qu'il y avait de l'idle (comme dans les autres API quoi).
Je n'ai moi même pas compris comment ça se fait que ça plombé autant les perfs (genre dans les 20% si je me souviens bien), surement les signaux/slots qui bouffent beaucoup (rien qu'à voir ceux de boost ça fait mal :/). Maya j'imagine que ce n'est pas du temps réel mais du temps interactif, et vu le confort qu'apporte Qt j'imagine que dans leur cas ça vaut le coup.
oxyde356 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2011, 19h15   #11
TNT89
Membre éclairé
 
Avatar de TNT89
 
Inscription : juillet 2007
Messages : 321
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : juillet 2007
Messages : 321
Points : 386
Points : 386
Je travaille sur une application critique OpenGL/QT en ce moment et je ne rencontre pas ce problème...
J'ai testé il y a un an une application Glut contre une application QT et je n'avais pas remarqué de différence non plus...

Tu gères ta scène comment? Avec un moteur ou à la "main"? Sans le rendu direct?
TNT89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2011, 19h35   #12
yan
Rédacteur/Modérateur
 
Avatar de yan
 
Homme yan verdavaine
Ingénieur expert
Inscription : mars 2004
Messages : 9 885
Détails du profil
Informations personnelles :
Nom : Homme yan verdavaine
Âge : 31
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur expert
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2004
Messages : 9 885
Points : 13 811
Points : 13 811
Citation:
Envoyé par oxyde356 Voir le message
je l'appelé explicitement dès qu'il y avait de l'idle (comme dans les autres API quoi).
C'est à dire ?
yan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2011, 22h10   #13
oxyde356
Membre Expert
 
Avatar de oxyde356
 
Homme
Ingénieur Recherche Imagerie
Inscription : février 2006
Messages : 798
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur Recherche Imagerie

Informations forums :
Inscription : février 2006
Messages : 798
Points : 1 013
Points : 1 013
Envoyer un message via MSN à oxyde356
Citation:
Envoyé par TNT89 Voir le message
Je travaille sur une application critique OpenGL/QT en ce moment et je ne rencontre pas ce problème...
J'ai testé il y a un an une application Glut contre une application QT et je n'avais pas remarqué de différence non plus...
Et bien j'aimerais bien savoir comment ! Après avoir fais plusieurs bench j'avais choisis SDL qui affiché les meilleurs performances et parce que ces autres caractéristiques me convenaient bien mais si je me suis trompé et que Qt n'a pas à rougir niveau perf je fonce dedans. Mais à ce jour je n'ai pas trouvé de bon exemple en temps réel pour pc qui visait les perfs et qui montré que Qt savait gérer ce genre de choses.

Citation:
Envoyé par TNT89 Voir le message
Tu gères ta scène comment? Avec un moteur ou à la "main"? Sans le rendu direct?
Pour le bench c'était vraiment à la main (un petit scene graph et du gl pipeline fixe) mais le but après c'est d'y intégrer mon moteur. Qu'est ce que tu entend par rendu direct ? ça peut vouloir dire tellement de choses

Citation:
Envoyé par yan Voir le message
C'est à dire ?
Je dois t'avouer que je me souviens plus exactement mais en gros si je me souviens bien il y a deux techniques, une basé sur un timer qui appelle la fonction d'update (je ne l'ai pas implémenté), et une autre qui consistait à appelé la fonction d'update je ne sais plus où dans une fonction qui était appelé à chaque fois que la boucle des messages était finit en gros, comme dans les autres API quoi.

Dans tous les cas si vous avez des samples ou tutos sur Qt et le temps réel je suis preneur, n'hésitez pas !!!

@TNT89 : quand tu parle d'application temps réel critique tu veux dire que ton application doit répondre le plus vite possible à un instant 't' précis ou plutôt elle doit pouvoir faire le plus de cycle possible comme dans le cadre d'un jeu ?
oxyde356 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2011, 22h52   #14
yan
Rédacteur/Modérateur
 
Avatar de yan
 
Homme yan verdavaine
Ingénieur expert
Inscription : mars 2004
Messages : 9 885
Détails du profil
Informations personnelles :
Nom : Homme yan verdavaine
Âge : 31
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur expert
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2004
Messages : 9 885
Points : 13 811
Points : 13 811
Citation:
Envoyé par oxyde356 Voir le message
Je dois t'avouer que je me souviens plus exactement mais en gros si je me souviens bien il y a deux techniques, une basé sur un timer qui appelle la fonction d'update (je ne l'ai pas implémenté), et une autre qui consistait à appelé la fonction d'update je ne sais plus où dans une fonction qui était appelé à chaque fois que la boucle des messages était finit en gros, comme dans les autres API quoi.
Tu as peut être fait un truc comme
Code :
1
2
3
4
5
while(true)
{
...
QApplication::processevent();
}
qui est tout simplement une boucle infinie qui va prendre tout le cpu pour rien.


Citation:
Dans tous les cas si vous avez des samples ou tutos sur Qt et le temps réel je suis preneur, n'hésitez pas !!!
les démo de Qt OpenGl ?
yan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2011, 22h57   #15
yan
Rédacteur/Modérateur
 
Avatar de yan
 
Homme yan verdavaine
Ingénieur expert
Inscription : mars 2004
Messages : 9 885
Détails du profil
Informations personnelles :
Nom : Homme yan verdavaine
Âge : 31
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur expert
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2004
Messages : 9 885
Points : 13 811
Points : 13 811
Pour revenir à la question de base, tu peux regarder Coin3D (OpenInventor) et
glc_lib
yan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2011, 23h18   #16
oxyde356
Membre Expert
 
Avatar de oxyde356
 
Homme
Ingénieur Recherche Imagerie
Inscription : février 2006
Messages : 798
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur Recherche Imagerie

Informations forums :
Inscription : février 2006
Messages : 798
Points : 1 013
Points : 1 013
Envoyer un message via MSN à oxyde356
Citation:
Envoyé par yan Voir le message
Tu as peut être fait un truc comme
Code :
1
2
3
4
5
while(true)
{
...
QApplication::processevent();
}
qui est tout simplement une boucle infinie qui va prendre tout le cpu pour rien.
Non quand même >< j'esseyerai de retrouver dès que j'aurais un peu de temps (autant que tu mette ta solution non je pourrais te dire si c'est ce que j'ai fais)

Citation:
Envoyé par yan Voir le message
les démo de Qt OpenGl ?
Il ne me semble pas que les démos qt opengl soient en temps réel, l'affichage ne se fait que quand un évenement est détecté.
oxyde356 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2011, 00h46   #17
yan
Rédacteur/Modérateur
 
Avatar de yan
 
Homme yan verdavaine
Ingénieur expert
Inscription : mars 2004
Messages : 9 885
Détails du profil
Informations personnelles :
Nom : Homme yan verdavaine
Âge : 31
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur expert
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2004
Messages : 9 885
Points : 13 811
Points : 13 811
Citation:
Envoyé par oxyde356 Voir le message
Il ne me semble pas que les démos qt opengl soient en temps réel, l'affichage ne se fait que quand un évenement est détecté.
C'est quoi pour toi du temps réel?
yan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2011, 10h19   #18
oxyde356
Membre Expert
 
Avatar de oxyde356
 
Homme
Ingénieur Recherche Imagerie
Inscription : février 2006
Messages : 798
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur Recherche Imagerie

Informations forums :
Inscription : février 2006
Messages : 798
Points : 1 013
Points : 1 013
Envoyer un message via MSN à oxyde356
Eh bien quand les animations, les actions, réagissent visiblement à la même vitesse que dans le monde réel Hors pour simuler des interactions complexes, mécanique des fluides, etc. il peut-être difficile de rester temps réel, ou sinon les approximations d'intégrales vont en pâtir, du coup si on peut éviter de perdre de précieuses ms à cause d'un framework peut-être pas conçu pour ce genre de situation c'est toujours mieux.
Ma définition te convient-elle ?
oxyde356 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2011, 11h22   #19
yan
Rédacteur/Modérateur
 
Avatar de yan
 
Homme yan verdavaine
Ingénieur expert
Inscription : mars 2004
Messages : 9 885
Détails du profil
Informations personnelles :
Nom : Homme yan verdavaine
Âge : 31
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur expert
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2004
Messages : 9 885
Points : 13 811
Points : 13 811
Citation:
Envoyé par oxyde356 Voir le message
Eh bien quand les animations, les actions, réagissent visiblement à la même vitesse que dans le monde réel
Donc un niveau de FPS assez élevé pour que les animation reste fluide pour l'oeil.


Citation:
Envoyé par oxyde356 Voir le message
Hors pour simuler des interactions complexes, mécanique des fluides, etc. il peut-être difficile de rester temps réel, ou sinon les approximations d'intégrales vont en pâtir, du coup si on peut éviter de perdre de précieuses ms à cause d'un framework peut-être pas conçu pour ce genre de situation c'est toujours mieux.
C'est surtout un problème d'optimisation et de parallélisme.
Qt à la base ne fait qu’exécuter une eventloop. Ce que tu fait avec SDL, MFC ou autre avec une boucle. Regarde bien les exemples fournient par Qt, il y en as plusieurs qui correspondent à ta définition de "temps réelle".


Si tu retrouve ton bench, on trouvera peut être une explication.
yan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2011, 12h04   #20
oxyde356
Membre Expert
 
Avatar de oxyde356
 
Homme
Ingénieur Recherche Imagerie
Inscription : février 2006
Messages : 798
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur Recherche Imagerie

Informations forums :
Inscription : février 2006
Messages : 798
Points : 1 013
Points : 1 013
Envoyer un message via MSN à oxyde356
Les exemples "temps réel" livrés avec Qt utilisent un QTimerEvent pour déclencher l'update. Dans l'exemple il fixe l'intervalle à 20ms. Dans la doc ils disent que si l'on met cet intervalle à 0ms l'action est lancé dès que la pile d'évènement est vide mais dans un même temps ils disent que la précision sur la plupart des plateformes est de 20ms. Cette précision intervient quand l'intervalle est > 0 ou bien même quand elle est égal à 0 ?
Dans tous les cas ça me redonne envie de bencher histoire d'être sûr ^^

J'ai retrouvé mon Bench, donc je n'utilisais pas de QTimerEvent je faisais ça :
Code :
1
2
3
4
5
6
7
void GLWidget::paintGL()
{
	onUpdate(); // fonction membre perso
	onRender(); // fonction membre perso
 
	update(); // QWidget::update()
}
En gros je mets à jour ma scène puis j'appelle la méthode update qui ajoute un event à la pile des events pour dire que le qwidget doit être remis à jour (une boucle de jeu quoi, traitement des events puis mis à jour de la scène et on recommence). So, what's wrong ? ^^
oxyde356 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 04h14.


 
 
 
 
Partenaires

Hébergement Web