Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème affichage d'un dessin

loader .obj

    29 mars 2008 à 19:32:20

    coucou,

    J'aurais voulu avoir un ptit coup de pouce, svp? :-°
    J'ai crée un loader de modele 3D .obj, mon dessin s'affiche mais là au lieu d'avoir un cube j'ai un triangle à 4 côtés.

    Voici mon code :

    1. #include "CObjet3D.h"
    2. #include <GL/gl.h>
    3. #include <iostream>
    4. #include <fstream>
    5. using namespace std;
    6. void Cobjet3D::ChargerObjet(char *fichier)
    7. {
    8.     // on ouvre le fichier
    9.     ifstream FichierSource(fichier);
    10.     // on vérifie s'il est bien ouvert
    11.     if(!FichierSource)
    12.         cout << "Erreur: fichier introuvable" << endl;
    13.     else
    14.     {
    15.         // on lit dans le fichier le nombre de points puis de faces
    16.         FichierSource >> NbVertex
    17.                       >> NbFaces;
    18.         // on définit l'espace mémoire necessaire au stockage des points
    19.         vertices = new VERTEX[NbVertex];
    20.         // on stocke les points en mémoire
    21.         for(unsigned int i=0; i<NbVertex; i++) // pour chaque point
    22.         {
    23.             FichierSource >> vertices[i].x // lecture de la coordonnée x
    24.                           >> vertices[i].y // de la coordonnée y
    25.                           >> vertices[i].z; // et de la coordonnée z
    26.         }
    27.         // on définit l'espace mémoire necessaire au stockage des faces
    28.         faces = new FACE[NbFaces];
    29.         // on stocke les faces en mémoire
    30.         for(unsigned int i=0; i<NbFaces; i++) // pour chaque face
    31.         {
    32.             FichierSource >> faces[i].a // lecture du point a
    33.                           >> faces[i].b // du point b
    34.                           >> faces[i].c; // et du point c
    35.         }
    36.         FichierSource.close(); // on ferme le fichier
    37.     }
    38. }
    39. void Cobjet3D::AfficherObjet()
    40. {
    41.         glPushMatrix();
    42.                 glBegin(GL_TRIANGLES);
    43.                 for(unsigned int i=0; i<NbFaces; i++)
    44.                 {
    45.                         glColor3ub(255, 100, 0);
    46.                         glVertex3f(vertices[ faces[i].a ].x,
    47.                                        vertices[ faces[i].a ].y,
    48.                                    vertices[ faces[i].a ].z);
    49.                         glVertex3f(vertices[ faces[i].b ].x,
    50.                                        vertices[ faces[i].b ].y,
    51.                                    vertices[ faces[i].b ].z);
    52.                         glVertex3f(vertices[ faces[i].c ].x,
    53.                                        vertices[ faces[i].c ].y,
    54.                                    vertices[ faces[i].c ].z);
    55.             }
    56.         glEnd();
    57.         glPopMatrix();
    58. }
    59. void Cobjet3D::LibereObjet()
    60. {
    61.         if(vertices)
    62.     {
    63.         delete [] vertices;
    64.         vertices = NULL;
    65.     }
    66.         if(faces)
    67.     {
    68.         delete [] faces;
    69.         faces = NULL;
    70.     }
    71. }


    Et voici mon .obj :
    1. 8
    2. 12
    3.   -10.1 -7.2 0.0
    4.   -7.3 -7.2 0.0
    5.   -10.1 -4.4 0.0
    6.   -7.3 -4.4 0.0
    7.   -10.1 -7.2 2.8
    8.   -7.3 -7.2 2.8
    9.   -10.1 -4.4 2.8
    10.   -7.3 -4.4 2.8
    11.  1 3 4
    12.  4 2 1
    13.  5 6 8
    14.  8 7 5
    15.  1 2 6
    16.  6 5 1
    17.  2 4 8
    18.  8 6 2
    19.  4 3 7
    20.  7 8 4
    21.  3 1 5
    22.  5 7 3


    Merci, ;)
    • Partager sur Facebook
    • Partager sur Twitter

    Problème affichage d'un dessin

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown