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 :

Fichier Objet 3D et Vertex Arrays


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Autodidacte
    Inscrit en
    Janvier 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Autodidacte

    Informations forums :
    Inscription : Janvier 2008
    Messages : 46
    Par défaut Fichier Objet 3D et Vertex Arrays
    Bonjour

    Je tente de créer une application Opengl qui permet d'afficher des objets créé avec Blender.
    Pour commencer modestement, je tente d'afficher un simple cube sans matériau, sans texture,
    sans éclairage et pourtant je n'y arrive pas malgré des jours de recherche et de tentative.

    Voici un bout de mon code:

    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
    GLfloat sommets[] = {
        1.000000, -1.000000, -1.000000,
        1.000000, -1.000000, 1.000000,
        -1.000000, -1.000000, 1.000000,
        -1.000000, -1.000000, -1.000000,
        1.000000, 1.000000, -1.000000,
        1.000000, 1.000000, 1.000001,
        -1.000000, 1.000000, 1.000000,
        -1.000000, 1.000000, -1.000000
    };
     
    GLuint indices[] = {
        1, 2, 3, 4,
        5, 8, 7, 6,
        1, 5, 6, 2,
        2, 6, 7, 3,
        3, 7, 8, 4,
        5, 1, 4, 8
    };
     
     
    glEnableClientState(GL_VERTEX_ARRAY);
    glVertexPointer(3, GL_FLOAT, 0, sommets);
     
    glDrawElements(GL_QUADS, 24, GL_UNSIGNED_INT, indices);
     
    glDisableClientState(GL_VERTEX_ARRAY);
    Ce code affiche une forme étrange qui n'est pas le cube créé sur Blender.
    Les sommets sont aux bons endroits, mais les indices semblent totalement aléatoire.

    Il y a certainement un détail qui m'a échappé, mais je ne sais plus du tout quoi chercher.
    J'aimerais avoir vos opinion sur ce problème.

    Merci

  2. #2
    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 : 37
    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
    Je tente de créer une application Opengl qui permet d'afficher des objets créé avec Blender.
    Pour moi un objet créer par blender c'est un .obj par exemple.

    Sinon bah personne va vraiment vérifier si t'as mis les bonnes valeurs , il y a comme je l'ai dit quelque format 3D qui permet de pas trop s'en soucier.
    Apres est que tu es sur que c'est du GL_QUADS ?

    Sinon moi j'ai fait un cube et j'ai export ça me donne ça :

    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
     
    v 0.000000 0.496622 0.000000
    v 0.000000 -0.496622 0.000000
    v 0.993243 0.496622 0.000000
    v 0.993243 -0.496622 0.000000
    v 0.993243 0.496622 -0.993243
    v 0.993243 -0.496622 -0.993243
    v 0.000000 0.496622 -0.993243
    v 0.000000 -0.496622 -0.993243
    # 8 vertices
     
    f 1/1/1 2/2/1 3/3/1
    f 2/2/1 4/4/1 3/3/1
     
    f 3/1/2 4/2/2 5/3/2
    f 4/2/2 6/4/2 5/3/2
     
    f 5/1/3 6/2/3 7/3/3
    f 6/2/3 8/4/3 7/3/3
     
    f 7/1/4 8/2/4 1/3/4
    f 8/2/4 2/4/4 1/3/4
     
    f 7/1/5 1/2/5 5/3/5
    f 1/2/5 3/4/5 5/3/5
    f 2/1/6 8/2/6 4/3/6
    f 8/2/6 6/4/6 4/3/6
    Pour du GL_TRIANGLES.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Autodidacte
    Inscrit en
    Janvier 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Autodidacte

    Informations forums :
    Inscription : Janvier 2008
    Messages : 46
    Par défaut
    Je désactive l'option "triagulate faces" de l'exportateur de fichier obj pour avoir des quads.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur Autodidacte
    Inscrit en
    Janvier 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Autodidacte

    Informations forums :
    Inscription : Janvier 2008
    Messages : 46
    Par défaut
    J'ai essayé avec des triangles, ce qui donne:

    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
    GLfloat sommets[] = {
        1.000000, -1.000000, -1.000000,
        1.000000, -1.000000, 1.000000,
        -1.000000, -1.000000, 1.000000,
        -1.000000, -1.000000, -1.000000,
        1.000000, 1.000000, -0.999999,
        0.999999, 1.000000, 1.000001,
        -1.000000, 1.000000, 1.000000,
        -1.000000, 1.000000, -1.000000
    };
     
    GLuint indices[] = {
        1, 2, 4,
        5, 8, 6,
        1, 5, 2,
        2, 6, 3,
        3, 7, 4,
        5, 1, 8,
        2, 3, 4,
        8, 7, 6,
        5, 6, 2,
        6, 7, 3,
        7, 8, 4,
        1, 4, 8
    };
     
    glEnableClientState(GL_VERTEX_ARRAY);
    glVertexPointer(3, GL_FLOAT, 0, sommets);
     
    glDrawElements(GL_TRIANGLES, 36, GL_UNSIGNED_INT, indices);
     
    glDisableClientState(GL_VERTEX_ARRAY);
    J'obtiens le même résultat.

    Mon problème est que je ne sais pas si je comprend mal les vertex arrays ou l'exportateur de
    fichier obj...
    Peut-être devrais-je poser ma question sur un forum Blender?

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 161
    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 161
    Billets dans le blog
    152
    Par défaut
    Bonjour,

    Pouvons nous avoir une image du résultat, s'il vous plait.
    Ensuite, vous pouvez utiliser gDEBugger, pour avoir plus de détails sur comment le GPU traite les données.
    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.

  6. #6
    Membre averti
    Homme Profil pro
    Développeur Autodidacte
    Inscrit en
    Janvier 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Autodidacte

    Informations forums :
    Inscription : Janvier 2008
    Messages : 46
    Par défaut
    Pour bien voir le résultat je fais tourner le cube sur le plan x y.




    La première image représente seulement les sommets et les indices de sommets.
    La deuxième image représente les sommets, les coordonnées de texture et les indices de sommets.

    On voit mieux sur la deuxième image, mais les coordonnées et indices de textures complique les choses.
    Cependant, la première image démontre que le problème ne vient pas des textures.
    Images attachées Images attachées   

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

Discussions similaires

  1. Vertex Arrays et couleur
    Par pot dans le forum OpenGL
    Réponses: 6
    Dernier message: 07/05/2005, 18h46
  2. Vertex arrays
    Par goutbouyo dans le forum OpenGL
    Réponses: 9
    Dernier message: 06/01/2005, 13h11
  3. [SDL+glut] vertex array précompilés
    Par khayyam90 dans le forum OpenGL
    Réponses: 3
    Dernier message: 01/10/2004, 17h07
  4. vertex array
    Par Jbx 2.0b dans le forum OpenGL
    Réponses: 2
    Dernier message: 12/07/2004, 11h37
  5. Performance des vertex array
    Par Mathieu.J dans le forum OpenGL
    Réponses: 13
    Dernier message: 25/06/2004, 10h47

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