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

OpenGL Discussion :

Dessiner des objets plus complexes avec OpenGL


Sujet :

OpenGL

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Points : 174
    Points
    174
    Par défaut Dessiner des objets plus complexes avec OpenGL
    Bonjour,

    je voudrai savoir comment faire pour créer des objets plus complexes que les objets fournis par OpenGL.
    Je voudrai par exemple savoir comment faire pour créer une chaine, un pendule, un verre, un bonhomme, par exemple
    Je ne sais pas vraiment quoi chercher sur le net pour savoir cela.
    Est-ce que quelqu'un pourrait m'indiquer cela ?

    Merci

  2. #2
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par Premium
    Bonjour,

    je voudrai savoir comment faire pour créer des objets plus complexes que les objets fournis par OpenGL.
    Je voudrai par exemple savoir comment faire pour créer une chaine, un pendule, un verre, un bonhomme, par exemple
    Je ne sais pas vraiment quoi chercher sur le net pour savoir cela.
    Est-ce que quelqu'un pourrait m'indiquer cela ?

    Merci
    Il faut passer par un modeleur pour le faire (Blender+Gimp par exemple pour le côté gratuit) ou trouver ce que tu cherches. Regardes la page http://jeux.developpez.com/medias/ pour des liens intéressants.

    Jc

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Points : 174
    Points
    174
    Par défaut
    Citation Envoyé par fearyourself
    Il faut passer par un modeleur pour le faire (Blender+Gimp par exemple pour le côté gratuit) ou trouver ce que tu cherches. Regardes la page http://jeux.developpez.com/medias/ pour des liens intéressants.

    Jc
    Salut,

    en faite ce que je souhaite c'est consstruire des objets "à la main", c'est à dire en faisant les calculs
    Une ellipse par exemple ...
    J'ai cherche sur le net mais je n'ai rien trouvé.
    Si quelqu'un connait un site, qui parle de ça, je suis preneur

    Merci

  4. #4
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    je ne suis pas sûr qu'il y ait des site qui te dise comment créer n'importe quel objet avec opengGL.

    Pour tout ce qui est formes géométriques, regarde dans les site de math leurs formules et leurs méthodes de constructions.

    Pour les autres, à tes triangles... si tu ne veux pas de modeleur.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Quake
    Vous etes sur comment ils font dans Quake ?
    je sais il s agit dun moteur mais il n utilise pas de modeleur
    Il doit y avoir des fonctions des API Opengl ?
    pour faire des choses plus compliquer non ?

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 199
    Points : 116
    Points
    116
    Par défaut
    Regarde du côté de la librairie utilitaire glu, tu peux créer des surfaces NURBS, c'est à dire des surfaces complexes (courbes, tores, surfaces de bézier, ...)

  7. #7
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Oulla... Précisons : Un modeleur est un logiciel (3d studio, blender, wings 3d, etc.) permettant de modeler un objet 3d et de le sauvegarder dans un format donné (l'organisation du/des fichiers peut varier mais généralement cela veut dire la liste des triangles qui composent l'objet, les normales, les textures pour rester simple).

    Un moteur 3d va lire ce genre de fichiers et les afficher en réalisant les appels direct 3d ou openGL qui en découlent (là aussi je schématise). Si on n'utilise pas de moteur tout fait il faut le coder soi même, ce qui a été fait pour Quake.

    OpenGL sert basiquement à demander à la carte 3d d'afficher des triangles 3d sur l'écran 2d. Il permet de régler beaucoup de chose mais n'a pas vocation à traiter des objets 3d de haut niveau lui même. Donc soit on trouve les triangles dans un fichier, soit le code les détermine lui-même, ce qui se fait pour certains effets 3d et/ou si l'on veut s'amuser avec un objet décrit par une formule mathématique (http://fr.wikipedia.org/wiki/Marching_cubes par exemple).

    Edit : si on parle d'openGL c'est Quake 2 car le premier avait un moteur 3d software.

  8. #8
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Citation Envoyé par sekoica
    je sais il s agit dun moteur mais il n utilise pas de modeleur
    il ne me semble pas que le moteur graphiques ait quelque chose à voir directement avec la forme.

    Citation Envoyé par sekoica
    Il doit y avoir des fonctions des API Opengl ? pour faire des choses plus compliquer non ?
    Pas à ma connaissance et surtout pas libres.
    A partir d'un modeleur c'est faisable...
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  9. #9
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 85
    Points : 46
    Points
    46
    Par défaut
    Pour créer des ellipses tu peux utiliser un changement d'échelle (moi j'ai fait comme ça et c'est niquel) exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    GLUquadric* params = gluNewQuadric(); //création du quadrique
    	glColor4f(0,0,0,1);
    	glScalef (1.0f, 3.0f, 1.0f);
    	gluSphere(params,0.5f,100,100);
    T'as plus qu'a jouer sur les divers paramètres du scalef pour obtenir ce que tu veux .

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 105
    Points : 61
    Points
    61
    Par défaut
    Je me pose moi aussi la question:

    j'aimerais savoir sil existe une façon "simple" de créer des objets complexes a partir de primitives de base en utilisant des opérations booléenes (union, intersection,différence...).

    En gros je crée une scene où je veux rajouter des objets complexes, le tout en c++/opengl/glut.
    les objets créés de la maniere precedente, car j'imagine que je peux pas créer d'objet sous un modeleur et l'importer de façon brute dans une liste d'affichage (ou que sais-je encore).
    edit: j'aimerais essayer de ne pas utiliser de model_loader

    J'ai cru voir que les operation booléennes sont possibles (utilisation des winding rules, glu_tess... page 311 de l'open gl programming guide trouvé à cette adresse ), mais ç reste un peu flou vu mon niveau actuel (aussi bien opengl que anglais :p)

    si quelqu'un peut meclairer la dessus je suis un peu perdu :p

  11. #11
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    en utilisant la technique CSG : Constructive Solid Geometry
    tu peux faire des choses intéressantes
    un site en exemple : http://www.nigels.com/research/

    avec des fonctions mathématiques également
    tapes "theprodukkt" (sans espace) sur un moteur de recherche et regardes / télécharges le projet krieger
    lien : http://212.202.219.162/kkrieger
    c'est un quake3 like en 96ko

    sur leur site tu pourras trouver les outils qu'ils utilisent pour leurs démos
    tout est généré à partir d'opérations mathématiques et géométriques

    quoi qu'il en soit, si tu veux quelque chose de plus professionnel, tu devras passer par un modeleur
    je pense que c'est possible sans mais il faudrait des outils extrêmement balèzes
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  12. #12
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Citation Envoyé par johan_b
    J'ai cru voir que les operation booléennes sont possibles (utilisation des winding rules, glu_tess... page 311 de l'open gl programming guide trouvé à cette adresse ), mais ç reste un peu flou vu mon niveau actuel (aussi bien opengl que anglais :p)
    La tessellation c'est faire de la subdivision. Dans le lien cité notamment ils subdivisent les polygones complexes (non convexes) en ensemble de polygones convexes pour l'affichage. Bref c'est pas ça

    Usuellement faire une différence entre des objets 3d tels qu'on les manipule, avec des triangles, c'est délicat car on ne dispose en fait que de surfaces alors que la soustraction fait référence à des volumes. Comme le suggère shenron666, avec des formules de math façon démomaker il y a moyen de faire des choses (encore faut-il avoir des formules pour ses objets). Si on a deux objets définis par des champs de potentiels on peut ajouter ou soustraire les champs avant de faire un marching cube par exemple.

    Par contre de la vrai logique comme dans POV avec unions et intersections, c'est très compliqué si l'on ne fait pas du raytracing (et même avec ). Possible, mais va falloir manger de l'algo. Peut-être y a-t-il des lib pour le faire...

    A mon humble avis, le plus simple serait d'utiliser un modeleur qui dispose de ces fonctions.
    Citation Envoyé par johan_b
    car j'imagine que je peux pas créer d'objet sous un modeleur et l'importer de façon brute dans une liste d'affichage (ou que sais-je encore).
    "brute" peut-être pas, mais exporter la listre des triangles sous une forme assez basique, les lire et les afficher reste assez... basique.

    Peudo edit: je suis allé voir http://www.nigels.com/research/wscg2000.pdf dans la série des liens a shenron. C'est chouette ce qu'on peut faire au z-buffer, mais faut se retrousser les manches. Je crois que la solution à privilégier, à moins d'avoir une contrainte vraiment particulière ou une thèse à faire, est le coup du modeleur.

  13. #13
    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 : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Tu peux jeter un oeil à ça si tu ne veux pas t'embêter avec les modèles 3D :
    http://jeux.developpez.com/faq/openg...HNIQUES_modele

  14. #14
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    Citation Envoyé par Sivrît
    Par contre de la vrai logique comme dans POV avec unions et intersections, c'est très compliqué si l'on ne fait pas du raytracing (et même avec ). Possible, mais va falloir manger de l'algo. Peut-être y a-t-il des lib pour le faire...
    dans POV on fait de la CSG pour créer ses objets
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  15. #15
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Citation Envoyé par shenron666
    dans POV on fait de la CSG pour créer ses objets
    Je n'ai pas eu le temps de lire tous les liens et je ne suis pas expert sur le sujet alors j'y vais un peu à l'intuition.

    Pour ce que j'en ai compris, le (la?) CSG est une façon de décrire ses objets. Jusque là ce n'est pas trop difficile. C'est la réalisation qui me semble casse tête. Si on veut l'intersection (ou autre) de primitives (en supposant que l'on manipule des primitives et pas des modèles arbitraires mais on va laisser ça de côté), on peut reduire l'objet résultat à un ensemble de triangles pour la carte 3d. Ou alors afficher l'objet à partir de ses primitives via un habile jeu sur le z-buffer comme le suggère le lien.

    Je pensais (enfin c'est toujours le cas) ces définitions ensemblistes plus naturelles sur POV (ou autre raytracer). En fait la manip du z-buffer doit plus ou moins servir à simuler le lancer de rayon.


    Sinon par wikipédia je suis tombé sur http://gts.sourceforge.net/ et http://www.cgal.org/ qui pourraient bien aider johan_b à faire ce qu'il veut (le premier surtout pour ce que j'en ai vu).

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 105
    Points : 61
    Points
    61
    Par défaut
    merci pour toues ces réponses,
    je vais lire tout ça (histoire de m'instruire un peu ^^)

    et je vous tiens au courant dans la semaine.
    Au pire des cas, je laisse tomber le coté algo et calculs et j'utilise un model loader :p
    Concernant ma question à la base, c'est que je dois programmer une petite scene basique, genre piece avec table ... (en utilisant des objets simple du genre cube, spheres, tores...), mais je voulait faire un peu de zele en créant des objets plus complexes. J'ai déjà programmé le tracé de tubes creux par exemple et je vais matteler à un tube suivant une courbe (tube souple), et je voulais plus ou moins savoir les limites que je rencontrerai avec cette méthode.
    Je demanderais à mon prof si l'utilisation de model loader ou d'algo déjà existants est possible... sinon, ben ça sera pour ma culture personnelle (je viens juste de débuter mais ça me plait assez bien )

  17. #17
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Citation Envoyé par johan_b
    Concernant ma question à la base, c'est que je dois programmer une petite scene basique, genre piece avec table ... (en utilisant des objets simple du genre cube, spheres, tores...), mais je voulait faire un peu de zele en créant des objets plus complexes. J'ai déjà programmé le tracé de tubes creux par exemple et je vais matteler à un tube suivant une courbe (tube souple), et je voulais plus ou moins savoir les limites que je rencontrerai avec cette méthode.
    Dans ce cas les intersections et soustractions c'est un peu surfait (disons compliqué pour ce que ça apporte). Pour l'affichage d'une scène la norme serait d'utiliser un modeleur pour créer des objets complexes puis de les charger. Comme ça on manipule une "chaise" sans se compliquer la vie.

    Par contre tu pourrais tenter de créer une structure de données pour représenter des unions. En y stoquant les primitives qui composent une chaise tu pourrais manipuler un objet complexe dont l'affichage n'est que l'affichage successif des primitives qui le composent. Ou alors la considérer comme une liste de triangles à laquelle on ajoute ceux de chaque primitive au fur et à mesure que l'on construit l'objet "chaise". Bref ce serait un execice que d'ajouter ce petit niveau d'abstraction, à supposer que ce ne soit pas dèjà fait, auquel cas te sentir insulté par cette remarque et ajouter un loader serait la suite logique.

  18. #18
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    Citation Envoyé par Sivrît
    Par contre tu pourrais tenter de créer une structure de données pour représenter des unions. En y stoquant les primitives qui composent une chaise tu pourrais manipuler un objet complexe dont l'affichage n'est que l'affichage successif des primitives qui le composent.
    une simple "display list" fait tout le travail
    d'autant plus qu'on y stocke non pas des formes géométriques mais des commandes opengl
    je veux dire par là que si on a un cube générique (taille 1) par exemple, on peut "dessiner" une chaise avec une display list en y mettant toutes les translations / rotations et mises à l'échelle dont on a besoin
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 105
    Points : 61
    Points
    61
    Par défaut
    s'il s'agit de display list je vois déjà ce que c'est oui

Discussions similaires

  1. faire des objets en 3D avec openGL
    Par membreComplexe12 dans le forum OpenGL
    Réponses: 4
    Dernier message: 08/04/2012, 13h07
  2. Dessiner des objets OpenGL dans une fenêtre
    Par dourouc05 dans le forum Téléchargez
    Réponses: 0
    Dernier message: 09/11/2010, 20h52
  3. Réponses: 3
    Dernier message: 19/05/2009, 15h32
  4. Réponses: 8
    Dernier message: 12/07/2008, 12h29
  5. des url plus lisibles avec ZF ?
    Par bibile dans le forum Zend Framework
    Réponses: 4
    Dernier message: 26/11/2007, 08h26

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