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

C++ Discussion :

Visualisation 3D d'un code C++


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Par défaut Visualisation 3D d'un code C++
    Bonjour,

    J'aurais besoin de visualiser en 3D les résultats d'un code que je suis en train d'écrire. Ce programme est particulier, je vais vous le décrire. Il permet de calculer la position de points lumineux sur un cylindre donné, par réflexion de la lumière du soleil sur des petits triangles réfléchissants formant un four solaire. Dans mon programme, je modélise le four solaire Prométhée que vous pouvez voir sur le site d'iD Solaire www.idsolaire.com pour mieux voir comment il se présente. Je sais que son foyer est un cylindre.(En fait, ces fours se presentent sous la forme d'un tiers de sphère, qui est en fait constituee de petits triangles qui tapissent le tiers de sphère. C 'est le même principe que la géode à la cité des Sciences a Paris: des facettes pour approcher une sphère.) Je cherche à voir ce cylindre, foyer de chaleur créé par le soleil, qui est donc virtuel. Je lance des rayons lumineux, les fais refleter sur le four, et ensuite calcule leur intersection avec un cylindre de taille connue, qui correspond en fait a la taille de la marmite. Et c'est l'intersection des rayons reflechis avec le cylindre qui va donner des points lumineux. Ainsi, on verra comment le cylindre est eclaire, et donc chauffé. Comme on veut pouvoir donner l'efficacite du four, c'est uniquement grace a la presence de ces points lumineux que l'on peut l'evaluer. Donc mon probleme consiste a trouver un moyen d'utiliser mes resultats de code C++ qui vont etre des points en 3D et de les visualiser ensuite.
    Ces fours sont donc actuellement très utiles, car ils utilisent uniquement l'énergie renouvelable du soleil, ce qui est particulièrement intéressant en cette période de fort ensoleillement, et partout où il fait beau.
    En fait, merci de me répondre au plus vite car je dois presenter mon rapport très bientôt, ce qui signifie qu'il faudra d'ici là que j'aie fait tout mon programme et trouve le moyen de visualiser tout cela...
    Donc, je vous serai tres reconnaissante si vous pouviez m'indiquer dans quelle voie je peux m'engouffrer avec les meilleures chances de succes. Surtout si j'ai qqchose a apprendre, que je ne connais pas encore, il faut vraiment que je ne tarde pas...
    Merci.

  2. #2
    Membre expérimenté Avatar de Bob.Killer
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    336
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 336
    Par défaut
    tu peux utiliser une api graphique tel qu'OpenGL ou Direct3D peu être ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Par défaut Merci: précisions
    Merci beaucoup a vous!
    En fait, quelqu'un m'a en effet parle d'Open GL, mais j'ai l'impression qu'avec Open GL on crée des objets en 3D mais je n'avais pas l'impression que l'on pouvait utiliser des résultats de code C++ directement dedans pour qu'a partir de cela, il puisse créer un objet. En effet, mon cylindre, il ne sera pas entier, ce sera juste des points qui appartiennent au cylindre, et qui sont assez denses, mais ils ne formeront en aucun cas un cylindre complet. Donc pensez-vous que l'on peut esperer obtenir ceci?
    Merci de votre rapidité. C'est vraiment bien!

  4. #4
    Membre expérimenté Avatar de Bob.Killer
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    336
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 336
    Par défaut
    opengl sert en fait a afficher des triangles dans un espace 3D. Tant que tu calcul les points, puis les faces à afficher ça marchera

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Par défaut Reponse
    En fait, mes triangles ne sont que le moyen d'obtenir une reflexion de la lumiere. Je ne cherche pas a les visualiser. Ce que je cherche a visualiser effectivement, ce sont les points lumineux résultant de la réflexion d'un rayon lumineux arrivant sur ce triangle. Et ils vont former une partie de cylindre: des points isoles sur ce cylindre. Donc le probleme qui se pose a moi, c'est que ce n'est pas vraiment un objet 3D...

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Par défaut Reponse
    Suite:
    En fait, mes triangles ne sont que le moyen d'obtenir une reflexion de la lumiere. Je ne cherche pas a les visualiser. Ce que je cherche a visualiser effectivement, ce sont les points lumineux résultant de la réflexion d'un rayon lumineux arrivant sur ce triangle. Et ils vont former une partie de cylindre: des points isoles sur ce cylindre. Donc le probleme qui se pose a moi, c'est que ce n'est pas vraiment un objet 3D...
    Et vous etes sûr que Open GL peut utiliser des données d'un code C++ comme entree et les traiter?
    Merci.

  7. #7
    Membre habitué
    Inscrit en
    Avril 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 13
    Par défaut
    T'a le logiciel Maya qui peut répondre a ton problème, mais la prise en main, est loin d'être intuitive, et nécessite une étude des concepts et de la structure du fonctionnement. Avec un bon livre a 50 euros tout en anglais, en 3 jours (à fond) t'aura les bases. Ensuite il te faudra apprendre le MEL (Maya Embedded Language), qui est un langage (très proche du C, au niveau de la syntaxe) te permettant de programmer et modéliser ce que tu veux en 3D. Il existe une API C++ qui te permet de faire la même chose, et la création de plugin C++ est facilité avec Visual Studio (installation d'un wizard).

    Voila, c'est une solution qui n'a pas l'air attrayante, mais elle a le mérite d'exister. Bon courage !

  8. #8
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Tu peux tout aussi bien n'afficher que des points avec OpenGL. Pour débuter, commence par suivre quelques tutos, le site NeHe te donnera de bonnes bases en partant de 0.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 183
    Par défaut
    Et vous etes sûr que Open GL peut utiliser des données d'un code C++ comme entree et les traiter?
    OpenGL n'est pas une application autonome, c'est le c++ qui à chaque boucle du programme réaffiche le résultat graphique en appelant les fonctions OpenGL adéquates.

    Ton objectif à toi est de calculer tous tes points lumineux, puis, tu les affiches avec la partie du four qui t'interesse selon l'angle de caméra de ton choix.

  10. #10
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Question : As-tu besoin d'avoir une image interactive (changement de point de vue à la souris) ? Si oui, alors ok pour des choses genre OpenGL ou DirectX. Si non, peut-être peux tu regarder des choses comme pov-ray (tu génère un script dans un crtain langage depuis ton programme, il génère l'image), ou un truc genre QwtPlot3D (un truc de tracé de graphe, je ne sais pas trop quel genre d'image tu veux obtenir).
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  11. #11
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 527
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 527
    Par défaut
    Je partage l'avis de Loic ; cela tient plus de la conception logiciel de "raycasting" plutot que de l'affichage temps réel 3D.
    OpenGL ne sera quasiment d'aucune utilité parce qu'à chaque fois il faut faire des calculs....

  12. #12
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Mat.M
    Je partage l'avis de Loic ; cela tient plus de la conception logiciel de "raycasting" plutot que de l'affichage temps réel 3D.
    OpenGL ne sera quasiment d'aucune utilité parce qu'à chaque fois il faut faire des calculs....
    Non, pas forcément... si rien ne change (angle de vision, rayons lumineux, ...) pourquoi recalculer ?

    De toute maniere, que ce soit OpenGL/D3D ou GDI, c'est juste une API pour dessiner des informations provenant du CPU. Certes les APIs "3Ds" dessinent des triangles (qui peuvent se résumer à un point éventuellement)... et les dessins sont certes plus évolués avec possibilité de texturage, élimination des faces cachées, Z-buffer, etc... Mais c'est a peu pret pareil...

    Et dans le cas présent, tous les calculs peuvent certainement être fait en temps réel par le GPU (donc sans même passer par le CPU).
    1 reflexion + 1 intersection avec un cylindre... une carte graphique doit pouvoir en faire dans les 100.000 sans chauffer d'un degré

    Sinon... le code pour passer de 3D à 2D, est vraiment simple, sans avoir à faire du ray-tracing....

  13. #13
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 387
    Par défaut
    Citation Envoyé par nicroman
    Non, pas forcément... si rien ne change (angle de vision, rayons lumineux, ...) pourquoi recalculer ?

    De toute maniere, que ce soit OpenGL/D3D ou GDI, c'est juste une API pour dessiner des informations provenant du CPU. Certes les APIs "3Ds" dessinent des triangles (qui peuvent se résumer à un point éventuellement)... et les dessins sont certes plus évolués avec possibilité de texturage, élimination des faces cachées, Z-buffer, etc... Mais c'est a peu pret pareil...

    Et dans le cas présent, tous les calculs peuvent certainement être fait en temps réel par le GPU (donc sans même passer par le CPU).
    1 reflexion + 1 intersection avec un cylindre... une carte graphique doit pouvoir en faire dans les 100.000 sans chauffer d'un degré

    Sinon... le code pour passer de 3D à 2D, est vraiment simple, sans avoir à faire du ray-tracing....
    http://g.gesquiere.free.fr/Enseignement/IN/index.htm
    http://pluton.up.univ-mrs.fr/thon/LP/index.php (voir cours Licence)

    sites pour apprendre l'OpenGL.

  14. #14
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Pour apprendre OpenGL pas la peine d'aller aussi loin :
    http://jeux.developpez.com

  15. #15
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 387
    Par défaut
    Citation Envoyé par Laurent Gomila
    Pour apprendre OpenGL pas la peine d'aller aussi loin :
    http://jeux.developpez.com

    Faut bien faire de la pub pour l'IUT D'ARLES .
    Petite IUT, mais très bons profs !

Discussions similaires

  1. [AC-2007] Visualiser Pochette, WindowsMediaPlayer Controle, Code VBA, Access
    Par betcol dans le forum VBA Access
    Réponses: 0
    Dernier message: 11/12/2011, 14h27
  2. Empecher la visualisation du code d'un script PERL
    Par TigreRouge dans le forum Langage
    Réponses: 33
    Dernier message: 20/03/2006, 18h04
  3. empecher de visualiser le code HTML
    Par legouvernueur dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 28/02/2006, 23h37
  4. Réponses: 1
    Dernier message: 22/02/2006, 19h01
  5. empecher la visualisation du code source
    Par Teo dans le forum ASP
    Réponses: 7
    Dernier message: 24/10/2003, 14h11

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