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 :

Solide problème avec visualisation d'un objet 3D


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Par défaut Solide problème avec visualisation d'un objet 3D
    Bonjour, j'ai un problème de visualisation comme vous pouvez le voir sur le démo vidéo suivant: http://magwa.ca/vincent/tetra.avi

    Je dessine en fait des tétraèdres (polygone à 4 faces triangulaires) et je veux dessiner également leur bordure.

    Donc je fais:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
                 /* Dessiner les tétraèdres pleins */
                    glColor3d(m_RGBRender[0],m_RGBRender[1],m_RGBRender[2]);          
                    glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
                    glBegin(GL_TRIANGLES);
                    for (pos = tetras.begin() ; pos + 4 < tetras.end() ; pos+=4) {
                         // Dessine les 4 faces du tétraèdre
                         glVertex3d((*pos)->get_x(),(*pos)->get_y(),(*pos)->get_z());
                         glVertex3d((*(pos+3))->get_x(),(*(pos+3))->get_y(),(*(pos+3))->get_z());
                         glVertex3d((*(pos+2))->get_x(),(*(pos+2))->get_y(),(*(pos+2))->get_z());
     
                         glVertex3d((*pos)->get_x(),(*pos)->get_y(),(*pos)->get_z());
                         glVertex3d((*(pos+1))->get_x(),(*(pos+1))->get_y(),(*(pos+1))->get_z());
                         glVertex3d((*(pos+2))->get_x(),(*(pos+2))->get_y(),(*(pos+2))->get_z());
     
                         glVertex3d((*pos)->get_x(),(*pos)->get_y(),(*pos)->get_z());
                         glVertex3d((*(pos+1))->get_x(),(*(pos+1))->get_y(),(*(pos+1))->get_z());
                         glVertex3d((*(pos+3))->get_x(),(*(pos+3))->get_y(),(*(pos+3))->get_z());
     
                         glVertex3d((*(pos+1))->get_x(),(*(pos+1))->get_y(),(*(pos+1))->get_z());
                         glVertex3d((*(pos+2))->get_x(),(*(pos+2))->get_y(),(*(pos+2))->get_z());
                         glVertex3d((*(pos+3))->get_x(),(*(pos+3))->get_y(),(*(pos+3))->get_z());
     
                    }     
                    glEnd();
     
     
                     /* Dessine les bordures des tétraèdres */
                    glColor3d(m_RGBBordersW[0],m_RGBBordersW[1],m_RGBBordersW[2]);          
                    glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
                    glBegin(GL_TRIANGLES);
                    for (pos = tetras.begin() ; pos + 4 < tetras.end() ; pos+=4) {
                         glVertex3d((*pos)->get_x(),(*pos)->get_y(),(*pos)->get_z());
                         glVertex3d((*(pos+3))->get_x(),(*(pos+3))->get_y(),(*(pos+3))->get_z());
                         glVertex3d((*(pos+2))->get_x(),(*(pos+2))->get_y(),(*(pos+2))->get_z());
     
                         glVertex3d((*pos)->get_x(),(*pos)->get_y(),(*pos)->get_z());
                         glVertex3d((*(pos+1))->get_x(),(*(pos+1))->get_y(),(*(pos+1))->get_z());
                         glVertex3d((*(pos+2))->get_x(),(*(pos+2))->get_y(),(*(pos+2))->get_z());
     
                         glVertex3d((*pos)->get_x(),(*pos)->get_y(),(*pos)->get_z());
                         glVertex3d((*(pos+1))->get_x(),(*(pos+1))->get_y(),(*(pos+1))->get_z());
                         glVertex3d((*(pos+3))->get_x(),(*(pos+3))->get_y(),(*(pos+3))->get_z());
     
                         glVertex3d((*(pos+1))->get_x(),(*(pos+1))->get_y(),(*(pos+1))->get_z());
                         glVertex3d((*(pos+2))->get_x(),(*(pos+2))->get_y(),(*(pos+2))->get_z());
                         glVertex3d((*(pos+3))->get_x(),(*(pos+3))->get_y(),(*(pos+3))->get_z());
     
                    }     
                    glEnd();


    Mon initialisation:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void GL_MAILLAGE::InitGL() 
    {  
        ReinitGL();    
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
     
        m_init = true;  
    }
    Et mon Reinit (lors que je resize l'écran)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void GL_MAILLAGE::ReinitGL(double dx, double dy) 
    {
        glViewport(0, 0, m_glCanvasSize.GetWidth(), m_glCanvasSize.GetHeight()); 
        glEnable (GL_DEPTH_TEST);
     
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();

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

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 578
    Par défaut
    j'imagine que le problème est :
    les bordures ne sont pas parfaitement visibles

    ce serai bien de le préciser texto, tout le monde ne peux pas télécharger une video de 4Mo

    pour ce qui est résoudre to problème, en cherchant sur le forum tu aurais trouvé ce post en première page :
    http://www.developpez.net/forums/sho...d.php?t=138245
    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.

  3. #3
    Membre éclairé Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Par défaut
    J'ai finalement réussi à avoir quelque chose de potable. En effet avec le polygon offset. Je jouais déjà avec ce dernier mais je ne le faisais pas à la bonne place faut croire




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

Discussions similaires

  1. Problème avec des tableaux d'objets
    Par flash link dans le forum SDL
    Réponses: 3
    Dernier message: 18/03/2009, 17h54
  2. problème avec la persistance des objets
    Par gentil dans le forum Hibernate
    Réponses: 15
    Dernier message: 04/04/2007, 11h44
  3. Problème avec un tableau d'objet
    Par tyrant dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 18/11/2006, 19h45
  4. un problème avec un tableau d'objet, erreur bete ?
    Par Heero_2040 dans le forum C++
    Réponses: 12
    Dernier message: 13/07/2006, 13h20
  5. [TTreeView] Problème avec les pointeurs d'objet
    Par BlackWood dans le forum Composants VCL
    Réponses: 2
    Dernier message: 02/07/2004, 14h31

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