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

Physique Discussion :

[C++ ] 3DS --> Collision


Sujet :

Physique

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 124
    Points : 43
    Points
    43
    Par défaut [C++ ] 3DS --> Collision
    Bonjour,

    Je debut assez en Opengl,
    J'ai décider de faire un monde 3d avec 3dsmax, j'arrive bien a afficher le 3ds avec les textures, mais je n'arrive pas a faire la gestion des collision avec les objet de ce 3ds,

    voici la fonction draw :

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
    void Model_3DS::Draw()
    {
        if (visible)
        {
        glPushMatrix();
     
            // Move the model
            glTranslatef(pos.x, pos.y, pos.z);
     
            // Rotate the model
            glRotatef(rot.x, 1.0f, 0.0f, 0.0f);
            glRotatef(rot.y, 0.0f, 1.0f, 0.0f);
            glRotatef(rot.z, 0.0f, 0.0f, 1.0f);
     
            glScalef(scale, scale, scale);
     
            // Loop through the objects
            for (int i = 0; i < numObjects; i++)
            {
                // Enable texture coordiantes, normals, and vertices arrays
                if (Objects[i].textured)
                    glEnableClientState(GL_TEXTURE_COORD_ARRAY);
                if (lit)
                    glEnableClientState(GL_NORMAL_ARRAY);
                glEnableClientState(GL_VERTEX_ARRAY);
     
                // Point them to the objects arrays
                if (Objects[i].textured)
                    glTexCoordPointer(2, GL_FLOAT, 0, Objects[i].TexCoords);
                if (lit)
                    glNormalPointer(GL_FLOAT, 0, Objects[i].Normals);
                glVertexPointer(3, GL_FLOAT, 0, Objects[i].Vertexes);
     
                // Loop through the faces as sorted by material and draw them
                for (int j = 0; j < Objects[i].numMatFaces; j ++)
                {
                    // Use the material's texture
                    Materials[Objects[i].MatFaces[j].MatIndex].tex.Use();
                    glPushMatrix();
     
                        // Move the model
                        glTranslatef(Objects[i].pos.x, Objects[i].pos.y, Objects[i].pos.z);
     
                        // Rotate the model
                        //glRotatef(Objects[i].rot.x, 1.0f, 0.0f, 0.0f);
                        //glRotatef(Objects[i].rot.y, 0.0f, 1.0f, 0.0f);
                        //glRotatef(Objects[i].rot.z, 0.0f, 0.0f, 1.0f);
     
                        glRotatef(Objects[i].rot.z, 0.0f, 0.0f, 1.0f);
                        glRotatef(Objects[i].rot.y, 0.0f, 1.0f, 0.0f);
                        glRotatef(Objects[i].rot.x, 1.0f, 0.0f, 0.0f);
                        // Draw the faces using an index to the vertex array
                        glDrawElements(GL_TRIANGLES, Objects[i].MatFaces[j].numSubFaces, GL_UNSIGNED_SHORT, Objects[i].MatFaces[j].subFaces);
     
                    glPopMatrix();
                }
     
                // Show the normals?
                if (shownormals)
                {
                    // Loop through the vertices and normals and draw the normal
                    for (int k = 0; k < Objects[i].numVerts * 3; k += 3)
                    {
                        // Disable texturing
                        glDisable(GL_TEXTURE_2D);
                        // Disbale lighting if the model is lit
                        if (lit)
                            glDisable(GL_LIGHTING);
                        // Draw the normals blue
                        glColor3f(0.0f, 0.0f, 1.0f);
     
                        // Draw a line between the vertex and the end of the normal
                        glBegin(GL_LINES);
                            glVertex3f(Objects[i].Vertexes[k], Objects[i].Vertexes[k+1], Objects[i].Vertexes[k+2]);
                            glVertex3f(Objects[i].Vertexes[k]+Objects[i].Normals[k], Objects[i].Vertexes[k+1]+Objects[i].Normals[k+1], Objects[i].Vertexes[k+2]+Objects[i].Normals[k+2]);
                        glEnd();
     
                        // Reset the color to white
                        glColor3f(1.0f, 1.0f, 1.0f);
                        // If the model is lit then renable lighting
                        if (lit)
                            glEnable(GL_LIGHTING);
                    }
                }
            }
     
        glPopMatrix();
        }
    }
    si vous pouvez m'aider a la gestion des collision,
    je vous rappelle que je suis débutant ,
    merci a vous !

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

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    les calculs et tests de collision ne font pas partie d'opengl
    tu devrais te renseigner dans la partie algorithmes du forum

    opengl ne sert qu'à l'affichage, aucune commande opengl ne pourra t'aider à la résolution des tests de collision
    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 Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut
    Salut, Sheron666 a raison, pour les collisions, tu a des moteurs Physiques qui vont beaucoup t'aider, comme ODE (www.ode.org) c'est ce que j'utilise et c'est genial, puis il y a Tokamak, Newton Games Dynamics etc..

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 124
    Points : 43
    Points
    43
    Par défaut
    Merci , je vein de tester une demo (avec la voiture avec les caisses)
    je trouve ça surper , je vais voir ça tout de suite ! merci

    esqu'il y aurais un tutorial en francais ? merci

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

Discussions similaires

  1. algorithme de collision 3D
    Par chetropinchuste dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 14/02/2010, 13h16
  2. insérer du 3ds dans opengl + collisions + tout quoi ;)
    Par Darknicosh dans le forum OpenGL
    Réponses: 5
    Dernier message: 22/04/2005, 15h14
  3. Collision avec 3ds ou ms3d
    Par goutbouyo dans le forum Physique
    Réponses: 3
    Dernier message: 29/03/2005, 12h34
  4. test collisions
    Par tatakinawa dans le forum OpenGL
    Réponses: 5
    Dernier message: 08/06/2002, 06h03
  5. OpenGL et *.3ds
    Par tintin22 dans le forum OpenGL
    Réponses: 4
    Dernier message: 06/05/2002, 13h51

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