Historique des modifications - Message

Message #7659

Sujet: récupérer le contenu d'un fichier .obj


Type Date Auteur Contenu
Création du message 07-01-2010 15:46:51 shiratori
Bonjour,
Je dois récupérer les sommets et faces d'un objet chargé avec irrlicht pour déterminer les sommets adjacents à un sommet donné et les faces adjacentes à une face donnée.
J'ai déjà réussi à récupérer les coordonnées des sommets de mon fichier en me basant sur l'algorithme a* donné par neo:

Code c++ :


//  Récupération du maillage
void maillage(irr::scene::IAnimatedMesh *modele) //Modele passé en paramètre
{
    //  Récupération du maillage
    irr::scene::IMesh* Mesh = modele->getMesh(0);

    for(int i=0;i<(int)(Mesh->getMeshBufferCount());i++)    // Balaye chaque partie du même objet 3D
    {
        irr::scene::IMeshBuffer *IMeshBuf = Mesh->getMeshBuffer(i);
        int VertexCount =     IMeshBuf->getVertexCount();    //  Nombre de sommets
        int IndexCount  =     IMeshBuf->getIndexCount();    //  Nombre de faces

        irr::video::S3DVertex* normVerts = (irr::video::S3DVertex*)(IMeshBuf->getVertices()); // Tableau de sommets

        positionSommets(VertexCount, normVerts); // Affiche les coordonnées des sommets
    }
}


Avec la fonction d'affichage des coordonnées des sommets:

Code c++ :


//  Récupération des coordonnées des sommets
void positionSommets(int VertexCount, irr::video::S3DVertex* normVerts)
{
    for(int j=0;j<VertexCount;j++)// Balaye chaque vertex d'une des parties de l'objet 3D
    {
        float PosX = -(float)normVerts[j].Pos.X;            // Récupération de la coordonnée x
        float PosY = (float)normVerts[j].Pos.Y;            // Récupération de la coordonnée y
        float PosZ = (float)normVerts[j].Pos.Z;            // Récupération de la coordonnée z
        printf("position du sommet %d sur %d: x:%f, y:%f, z:%f \
",j, VertexCount,PosX,PosY,PosZ);
    }
}



Je récupère donc les informations contenues dans les lignes de mon fichier de la forme suivante:
v 41.183029 839.117737 51.900291

Je souhaiterais faire la même chose pour parcourir et récupérer les faces. C'est à dire les lignes de la forme:
f 9316/9409 9226/9319 9306/9399 9175/9268

Je pense que pour récupérer le nombre de faces et le tableau des faces, il faut utiliser les méthodes

Code c++ :

IMeshBuf->getIndexCount()
et

Code c++ :

IMeshBuf->getIndices()
mais je ne sais pas comment les utiliser de manière a afficher les valeurs.
Quelqu'un aurait-il une idée d'implémentation pour récupérer les faces de la même manière que j'ai récupéré les sommets?

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
156 invités en ligne
membre en ligne: -
RSS Feed