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 :

Réaliser un cylindre


Sujet :

OpenGL

  1. #1
    Invité
    Invité(e)
    Par défaut Réaliser un cylindre
    Bonsoir,

    J'aimerais avoir quelques guildes/astuces/pistes afin de savoir par ou je dois commencer.

    Je dois réaliser un cylindre qui aura un rayon r et une hauter h, qui sera créé en s’appuyant sur deux cercles, avec un axe vertical.

    Il faudrait représenter les points des cercles du cylindre dont le nombre pourra être modifiable, aussi représenter les facettes verticales qui permettront de relier ces points et également créer les bouchons afin de fermer ce cylindre.

    J'ai trouvé une image sur le net représentant la création d'un cylindre mais je ne sais pas si cela correspond


    Pensez vous que cela est facilement faisable ?

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 066
    Billets dans le blog
    143
    Par défaut
    Bonjour,

    L'idée me semble bonne mais il faut savoir que seuls les points de 0 à 9 et 30 à 38 sont à générer. Ensuite, il faut les utiliser pour dessiner tous les triangles nécessaires pour faire un cylindre.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Re bonsoir !

    Finalement, j'ai opté pour des GL_LINES mais j'ai quelques soucis d'affichage..

    Comment régler ce soucis ? Ou du moins, d'ou peut-il venir ? Quels fonctions pourrais-je rajouter ?

    Merci
    Dernière modification par Invité ; 20/10/2013 à 12h07.

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 066
    Billets dans le blog
    143
    Par défaut
    Si les quads sont dessinés dans le mauvais sens, alors lorsque vous regardez dans le cylindre, vous allez voir le fond. Cela est du à une optimisation : le backface culling.

    Pour corriger, vous pouvez soit inverser le sens de création des sommets de vos cubes, pour les cercles, ou utiliser : glCullFace(GL_FRONT_AND_BACK) (avec la grosse contrepartie de perdre l'optimisation).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Mouarf tout essayé les solutions proposées, aucune ne marche ..

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 066
    Billets dans le blog
    143
    Par défaut
    Montrez nous des captures du problème, s'il vous plait.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Le voici :

    Edit : Img -> problème de backface culling

    Le rond noir étant le polygone à l'arrière
    Dernière modification par Invité ; 20/10/2013 à 11h14.

  8. #8
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 066
    Billets dans le blog
    143
    Par défaut
    Donc, cela semble être bien le problème que j'ai décrit avec le backface culling
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Edit : Je vais essayer autre chose..
    Dernière modification par Invité ; 20/10/2013 à 20h31.

  10. #10
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 066
    Billets dans le blog
    143
    Par défaut
    Oui, vous pouvez toujours, mais bon, vous êtes sur d'avoir bien testé le gl_CullFace() ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Oui..

    Je tente autre chose
    Dernière modification par Invité ; 20/10/2013 à 12h08.

  12. #12
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 066
    Billets dans le blog
    143
    Par défaut
    J'ai fait une erreur .
    Enlevez le glCullFace() et remplacez votre glEnable(GL_CULL_FACE), par glDisable(GL_CULL_FACE).

    Est-ce que cela fonctionne mieux ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  13. #13
    Invité
    Invité(e)
    Par défaut
    Toujours la même chose !
    Aie aie vraiment pas facile à manier cet opengl
    Dernière modification par Invité ; 20/10/2013 à 20h31.

  14. #14
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Donne le code source qu'on puisse voir ce qui cloche.
    Je vois pas comment on peut nous résoudre un probleme sans qu'on connaisse la cause .
    LittleWhite n'a fait que supposé ou se trouvait ton probleme , alors que je suppose que c'est un probleme de depth buffer non activé ,enfin avec un code source on sera vite fixé

    Edit : Ton code source est secret etat ? , je doute qu'il soit très interessant a copier (déjà tu utilise du glbegin ce que plus personne n'utilise).

  15. #15
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     void Fenetre::paintGL(void)
      {
         glMatrixMode(GL_MODELVIEW);
         glLoadIdentity();
     
     
        glClear (GL_COLOR_BUFFER_BIT);
        glColor3f(1.0, 0.0, 0.0);
     
    }
    J'ai enlevé quelques trucs inutiles

    PS : Vous pouvez me confirmer si je peux enlever mon code à la fin ? Pas secret d'état mais bon..
    Dernière modification par Invité ; 20/10/2013 à 20h30.

  16. #16
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Oui tu ne met pas de depth_buffer donc normal que tu vois a travers.

    remplace ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        glClear (GL_COLOR_BUFFER_BIT);
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

  17. #17
    Invité
    Invité(e)
    Par défaut
    Ne marche toujours pas ..

    J'ai pourtant activé le gl_Deph_test

  18. #18
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Citation Envoyé par tchoumo Voir le message
    Ne marche toujours pas ..

    J'ai pourtant activé le gl_Deph_test
    gl_Deph_test comme son nom indique ne fera que les test de profondeur , il ne les appliquera nullement.

    Tu as appliqué ça sur tout tes glClear(GL_COLOR_BUFFER_BIT); ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    Parce que avec le depth buffer normalement on voit la différence

    Après ces 4 code opengl tu peux les enlever :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    glShadeModel(GL_SMOOTH);
        glDisable(GL_CULL_FACE);
        glEnable(GL_LIGHTING);
        glEnable(GL_LIGHT0);

  19. #19
    Invité
    Invité(e)
    Par défaut
    Oui, et j'ai seulement deux glClear, un dans l'initialize, l'autre dans le pain.

    glDepthMask n'a pas d'intégré dans mon cas ?
    http://opengl.developpez.com/docs/man/man/glDepthMask
    Dernière modification par LittleWhite ; 21/10/2013 à 10h08. Motif: Lien DVP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. msi ou comment réaliser un installeur?
    Par herzleid dans le forum Delphi
    Réponses: 11
    Dernier message: 09/04/2007, 19h27
  2. Réaliser un Chat avec support IP
    Par Sub0 dans le forum Développement
    Réponses: 12
    Dernier message: 14/07/2006, 10h59
  3. Comment réaliser des modèles de documentations avec XML ?
    Par Dams76 dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 29/08/2003, 02h15
  4. [Radio fréquence] réalisation d'une application
    Par WriteLN dans le forum Développement
    Réponses: 14
    Dernier message: 05/06/2003, 14h36
  5. [imprecis]Réaliser a^n avec seulement l'opérateur d'addition
    Par Amon dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 08/11/2002, 22h22

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