Publicité
+ Répondre à la discussion
Page 1 sur 2 12 DernièreDernière
Affichage des résultats 1 à 20 sur 25
  1. #1
    Membre habitué
    Homme Profil pro
    Doctorant en Astrophysique
    Inscrit en
    mars 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : mars 2009
    Messages : 313
    Points : 129
    Points
    129

    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

  2. #2
    Membre Expert
    Avatar de Ange_blond
    Homme Profil pro Vincent Bourdier
    Ingénieur développement en 3D temps réel
    Inscrit en
    mars 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent Bourdier
    Âge : 29
    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 : 875
    Points : 1 126
    Points
    1 126

    Par défaut

    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.

  3. #3
    Membre émérite Avatar de oxyde356
    Homme Profil pro
    Ingénieur Recherche Imagerie
    Inscrit en
    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 : 919
    Points
    919

    Par défaut

    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.

  4. #4
    Membre confirmé
    Homme Profil pro Jérémie
    Ingénieur développement logiciels
    Inscrit en
    juillet 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Nom : Homme Jérémie
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : juillet 2009
    Messages : 116
    Points : 227
    Points
    227

    Par défaut

    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 ?

  5. #5
    Membre émérite Avatar de oxyde356
    Homme Profil pro
    Ingénieur Recherche Imagerie
    Inscrit en
    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 : 919
    Points
    919

    Par défaut

    J'entends par là que les performances sont loin d'être au rendez-vous.

  6. #6
    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 040
    Points
    1 040

    Par défaut

    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)

  7. #7
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro yan verdavaine
    Ingénieur expert
    Inscrit en
    mars 2004
    Messages
    9 965
    Détails du profil
    Informations personnelles :
    Nom : Homme yan verdavaine
    Âge : 32
    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 965
    Points : 12 427
    Points
    12 427

    Par défaut

    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/
    Développeur Windows 8, Windows phone 8 et Nokia Asha, inscrivez vous sur DVLUP

  8. #8
    Membre émérite Avatar de oxyde356
    Homme Profil pro
    Ingénieur Recherche Imagerie
    Inscrit en
    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 : 919
    Points
    919

    Par défaut

    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.

  9. #9
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro yan verdavaine
    Ingénieur expert
    Inscrit en
    mars 2004
    Messages
    9 965
    Détails du profil
    Informations personnelles :
    Nom : Homme yan verdavaine
    Âge : 32
    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 965
    Points : 12 427
    Points
    12 427

    Par défaut

    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/
    Développeur Windows 8, Windows phone 8 et Nokia Asha, inscrivez vous sur DVLUP

  10. #10
    Membre émérite Avatar de oxyde356
    Homme Profil pro
    Ingénieur Recherche Imagerie
    Inscrit en
    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 : 919
    Points
    919

    Par défaut

    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.

  11. #11
    Membre expérimenté Avatar de TNT89
    Inscrit en
    juillet 2007
    Messages
    357
    Détails du profil
    Informations personnelles :
    Âge : 24

    Informations forums :
    Inscription : juillet 2007
    Messages : 357
    Points : 509
    Points
    509

    Par défaut

    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?

  12. #12
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro yan verdavaine
    Ingénieur expert
    Inscrit en
    mars 2004
    Messages
    9 965
    Détails du profil
    Informations personnelles :
    Nom : Homme yan verdavaine
    Âge : 32
    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 965
    Points : 12 427
    Points
    12 427

    Par défaut

    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 ?
    Développeur Windows 8, Windows phone 8 et Nokia Asha, inscrivez vous sur DVLUP

  13. #13
    Membre émérite Avatar de oxyde356
    Homme Profil pro
    Ingénieur Recherche Imagerie
    Inscrit en
    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 : 919
    Points
    919

    Par défaut

    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 ?

  14. #14
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro yan verdavaine
    Ingénieur expert
    Inscrit en
    mars 2004
    Messages
    9 965
    Détails du profil
    Informations personnelles :
    Nom : Homme yan verdavaine
    Âge : 32
    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 965
    Points : 12 427
    Points
    12 427

    Par défaut

    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.


    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 ?
    Développeur Windows 8, Windows phone 8 et Nokia Asha, inscrivez vous sur DVLUP

  15. #15
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro yan verdavaine
    Ingénieur expert
    Inscrit en
    mars 2004
    Messages
    9 965
    Détails du profil
    Informations personnelles :
    Nom : Homme yan verdavaine
    Âge : 32
    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 965
    Points : 12 427
    Points
    12 427

    Par défaut

    Pour revenir à la question de base, tu peux regarder Coin3D (OpenInventor) et
    glc_lib
    Développeur Windows 8, Windows phone 8 et Nokia Asha, inscrivez vous sur DVLUP

  16. #16
    Membre émérite Avatar de oxyde356
    Homme Profil pro
    Ingénieur Recherche Imagerie
    Inscrit en
    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 : 919
    Points
    919

    Par défaut

    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é.

  17. #17
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro yan verdavaine
    Ingénieur expert
    Inscrit en
    mars 2004
    Messages
    9 965
    Détails du profil
    Informations personnelles :
    Nom : Homme yan verdavaine
    Âge : 32
    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 965
    Points : 12 427
    Points
    12 427

    Par défaut

    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?
    Développeur Windows 8, Windows phone 8 et Nokia Asha, inscrivez vous sur DVLUP

  18. #18
    Membre émérite Avatar de oxyde356
    Homme Profil pro
    Ingénieur Recherche Imagerie
    Inscrit en
    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 : 919
    Points
    919

    Par défaut

    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 ?

  19. #19
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro yan verdavaine
    Ingénieur expert
    Inscrit en
    mars 2004
    Messages
    9 965
    Détails du profil
    Informations personnelles :
    Nom : Homme yan verdavaine
    Âge : 32
    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 965
    Points : 12 427
    Points
    12 427

    Par défaut

    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.
    Développeur Windows 8, Windows phone 8 et Nokia Asha, inscrivez vous sur DVLUP

  20. #20
    Membre émérite Avatar de oxyde356
    Homme Profil pro
    Ingénieur Recherche Imagerie
    Inscrit en
    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 : 919
    Points
    919

    Par défaut

    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 ? ^^

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
  •