Partage
  • Partager sur Facebook
  • Partager sur Twitter

[openGL] 3DSMAX

    5 juillet 2007 à 12:19:25

    bonjour
    je voulai savoir comment inclure un terrain cree sous 3DSmax en openGL
    • Partager sur Facebook
    • Partager sur Twitter
      5 juillet 2007 à 14:47:56

      Salut,
      exporte ton terrain dans un format (.obj par exemple), créer un loader de fichier .obj dans ton programme et charge ton .obj dans ton programme.
      • Partager sur Facebook
      • Partager sur Twitter
        6 juillet 2007 à 11:56:27

        comme si j'inporttait une image ?? pouvez vous me montrer un exmenple de code svp
        • Partager sur Facebook
        • Partager sur Twitter
          6 juillet 2007 à 13:06:37

          Tu peux aussi utiliser un moteur graphique our avoir plus facile.
          Irrlicht par exemple.
          • Partager sur Facebook
          • Partager sur Twitter
            6 juillet 2007 à 14:33:17

            Citation : jovanito

            comme si j'inporttait une image ?? pouvez vous me montrer un exmenple de code svp



            J'ai pas d'exemple sous la main, mais je peux t'expliquer dans les grandes lignes.

            La question à déjà été posé beaucoup de fois mais je crois que le module de recherche est en panne en ce moment, au pire googleise un coup.

            Un fichier .obj peut s'ouvrir avec n'importe quel éditeur de texte déjà, ça facilite les choses.

            A l'intérieur chaque ligne sera précédé d'une (ou deux) lettre, par exemple v, f ou vn.
            Elle(s) indique(nt) la nature de ce qui va suivre.

            Pour v par exemple, le reste de la ligne sera les coordonnées d'un sommet.

            Consulte les spécifications du format .obj pour avoir la liste complète des lettres et leur significations.

            Après tout ce qu'il te reste à faire (si je puis dire) est de reconstituer le modèle à partir des données contenues dans le fichier.

            Tu as les coordonnées des sommets, puis les sommets associés aux faces, etc...
            • Partager sur Facebook
            • Partager sur Twitter
              8 juillet 2007 à 12:05:20

              voila j'ai reussi a ouvri un .obj et je les "traduit" du .obj au .cpp mais voila quand je le met dans mon code le prog ce compile bien mais il n'y a rien quand ca apparait

              mon code(racourci au niveau de piont car trop long sinon

              #include <SDL/SDL.h>
              #include <GL/gl.h>
              #include <GL/glu.h>
              #include <cstdlib>

              void Dessiner();

              int main(int argc, char *argv[])
              {
                  SDL_Event event;

                  SDL_Init(SDL_INIT_VIDEO);
                  atexit(SDL_Quit);
                  SDL_WM_SetCaption("SDL GL Application", NULL);
                  SDL_SetVideoMode(640, 480, 32, SDL_OPENGL);

                  glMatrixMode( GL_PROJECTION );
                  glLoadIdentity();
                  gluPerspective(70,(double)640/480,1,1000);
                  glEnable(GL_DEPTH_TEST);

                  Dessiner();

                  for (;;)
                  {
                      SDL_WaitEvent(&event);

                      switch(event.type)
                      {
                          case SDL_QUIT:
                          exit(0);
                          break;
                      }
                      Dessiner();

                  }

                  return 0;
              }

              void Dessiner()
              {
                  glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

                  glMatrixMode( GL_MODELVIEW );
                  glLoadIdentity( );

                  gluLookAt(3,4,2,0,0,0,0,0,1);

                  glBegin(GL_POINTS);


              // 2216 Verticies
              // 2165 Texture Coordinates
              // 2981 Normals
              // 4351 Triangles

              static short face_indicies[4351][9] = {
              // Hip
                      {48,58,50 ,0,1,2 ,0,1,2 }, {25,24,57 ,3,4,5 ,3,4,5 }, {36,35,54 ,6,7,8 ,6,7,8 },
                      {35,34,50 ,7,9,2 ,7,9,2 }, {79,71,81 ,10,11,12 ,10,11,12 }, {72,105,104 ,13,14,15 ,13,14,15 },
                      {75,94,93 ,16,17,18 ,16,17,18 }, {79,95,94 ,10,19,17 ,10,19,17 },
                      {128,0,107 ,20,21,22 ,20,21,22 }, {0,1,107 ,21,23,22 ,21,23,22 },
                      {22,107,1 ,24,22,23 ,24,22,23 }, {27,26,45 ,25,26,27 ,25,26,27 },
                      {45,64,27 ,27,28,25 ,27,28,25 }, {64,45,44 ,28,27,29 ,28,27,29 },
                      {44,63,64 ,29,30,28 ,29,30,28 }, {62,63,44 ,31,30,29 ,31,30,29 },
                      {44,43,62 ,29,32,31 ,29,32,31 }, {61,62,43 ,33,31,32 ,33,31,32 },
                      {43,42,61 ,32,34,33 ,32,34,33 }, {60,61,42 ,35,33,34 ,35,33,34 },
                      {42,41,60 ,34,36,35 ,34,36,35 }, {59,60,41 ,37,35,36 ,37,35,36 },
                      {41,40,59 ,36,38,37 ,36,38,37 }, {40,39,51 ,38,39,40 ,39,40,41 },
                      {51,59,40 ,40,37,38 ,41,42,39 }, {58,54,35 ,1,8,7 ,1,8,7 }, {35,50,58 ,7,2,1 ,7,2,1 },
                      {34,33,48 ,9,41,0 ,9,43,0 }, {48,50,34 ,0,2,9 ,0,2,9 }, {57,56,29 ,5,42,43 ,5,44,45 },
                      {29,25,57 ,43,3,5 ,45,3,5 }, {56,47,28 ,42,44,45 ,44,46,47 },
              };
                  glEnd();

                  glFlush();
                  SDL_GL_SwapBuffers();
              }

              donc voila aidez moi
              • Partager sur Facebook
              • Partager sur Twitter
                8 juillet 2007 à 12:10:51

                Ca m'interresse aussi ça : comment créer ce loader ? On peut ouvrir un .obj comme une entré ifstream ou fopen() ?
                • Partager sur Facebook
                • Partager sur Twitter
                  8 juillet 2007 à 12:30:50

                  Citation : -Skypers-

                  Ca m'interresse aussi ça : comment créer ce loader ? On peut ouvrir un .obj comme une entré ifstream ou fopen() ?


                  oui, le format obj est un format ASCII, vous devez donc l'ouvrir comme un fichier texte normal et stocké dans un tableau les positions des vertex, les coordonnées de texture etc et ensuite se servir de ces tableaux pour afficher l'objets avec opengl.

                  <pub>
                  Télécharge ca :
                  http://www.cppfrance.com/codes/XTENGINE-MOTEUR-3D-BASE-SUR-OPENGL-GLEW-SDL_43182.aspx
                  et regarde mon fichier obj.cpp qui ce trouve dans src/XT3D/ ;)
                  Sinon il me semble qu'Yno est en train de faire un tuto la dessus.
                  </pub>
                  • Partager sur Facebook
                  • Partager sur Twitter
                    8 juillet 2007 à 12:42:29

                    Whoua merci beaucoup vu que je suis aussi sous 3DS Max et que je cherche un tutau depuis longtemps lol en fait c'est pas si dure ?

                    Et heuuu, "Gestion des vecteurs, 2D, 3D, et.... 4D ?

                    Par contre je trouve pas de tutau pour les les lettres en tête de chaque ligne. Je me doute bien que "v" signifie "Vertex", que "vt" signifie "Vertex Texture", mais les autres ? Quelles sont les intérêts des faces ? Et pourquoi sont-elles définies par plusieurs points ? (Qui sont les vertexe normalement mais ils sont définis avant o_O )
                    • Partager sur Facebook
                    • Partager sur Twitter
                      8 juillet 2007 à 13:13:06

                      Citation : -Skypers-

                      Par contre je trouve pas de tutau pour les les lettres en tête de chaque ligne.


                      Et tu n'en as pas besoin, la spécification suffit :
                      http://www.wotsit.org/list.asp?fc=2

                      Citation : -Skypers-

                      Quelles sont les intérêts des faces ? Et pourquoi sont-elles définies par plusieurs points ?


                      Imagine qu'il n'y ait pas les faces et l'indication des points dont elles sont composées.

                      Basiquement ton fichier contiendrais tous les points dont est composé ton modèle, et après...

                      Que vas tu en faire ?

                      Tu ne peux pas reconstituer le modèle si tu ne sais pas quels points connecter entre eux.
                      D'où l'indication des points qui composent les faces.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        8 juillet 2007 à 13:29:22

                        Merci pour la spécification, mais c'est pas si facile que je ne le pensais lol

                        Voici un cube


                        # Max2Obj Version 4.0 Mar 10th, 2001
                        #
                        # object Box01 to come ...
                        #
                        v  45.000000 45.000000 0.000000
                        v  55.000000 45.000000 0.000000
                        v  45.000000 55.000000 0.000000
                        v  55.000000 55.000000 0.000000
                        v  45.000000 45.000000 10.000000
                        v  55.000000 45.000000 10.000000
                        v  45.000000 55.000000 10.000000
                        v  55.000000 55.000000 10.000000
                        # 8 vertices

                        g Box01
                        f -8 -6 -5
                        f -5 -7 -8
                        f -4 -3 -1
                        f -1 -2 -4
                        f -8 -7 -3
                        f -3 -4 -8
                        f -7 -5 -1
                        f -1 -3 -7
                        f -5 -6 -2
                        f -2 -1 -5
                        f -6 -8 -4
                        f -4 -2 -6
                        # 12 faces

                        g


                        Les 8 lignes commançant par v sont les vertex, et en fait, je dois me servir des f pour constituer ma face ? Que représente les f -8 -6 -5 ? Est-ce "Pour la première face, on doit utiliser le vertex n)8, puis le 6, puis le 5 ? Ce qui fait un triangle et non un carré o_O Bref je suis vraiment perdu là :-°
                        • Partager sur Facebook
                        • Partager sur Twitter
                          8 juillet 2007 à 13:59:06

                          Oui c'est exactement ça.

                          Tu part du principe qu'un cube est composé de 1 carré par coté.
                          Donc 6 faces.

                          Et pourtant dans ton fichier tu as 12 faces constituées de 3 sommets.
                          C'est tout simplement que chaque carré à été divisé en 2 triangles.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            8 juillet 2007 à 14:12:58

                            Rah ^^ Merci beaucoup tu me rassures !

                            Par contre, j'ai changé deux trois options d'export dans 3DS Max, tels que Rotate model (je pense que ça a un rapport avec la verticale...), et lorsque je décoche "Smooth groups", j'obtiens mes définitions de faces comme celles dessus. par contre, si je la coche, j'ai ça o_O


                            g Box01
                            s 2
                            f -8 -6 -5
                            f -5 -7 -8
                            s 4
                            f -4 -3 -1
                            f -1 -2 -4
                            s 8
                            f -8 -7 -3
                            f -3 -4 -8
                            s 16
                            f -7 -5 -1
                            f -1 -3 -7
                            s 32
                            f -5 -6 -2
                            f -2 -1 -5
                            s 64
                            f -6 -8 -4
                            f -4 -2 -6
                            # 12 faces


                            Je ne sais pas du tout ce que sont ces 's'.

                            De même, si j'active "Texture coordinates", j'obtens cela :


                            g Box01
                            s 2
                            f -8/-3 -6/-1 -5/-2
                            f -5/-2 -7/-4 -8/-3
                            s 4
                            f -4/-4 -3/-3 -1/-1
                            f -1/-1 -2/-2 -4/-4
                            s 8
                            f -8/-8 -7/-7 -3/-5
                            f -3/-5 -4/-6 -8/-8
                            s 16
                            f -7/-12 -5/-11 -1/-9
                            f -1/-9 -3/-10 -7/-12
                            s 32
                            f -5/-8 -6/-7 -2/-5
                            f -2/-5 -1/-6 -5/-8
                            s 64
                            f -6/-12 -8/-11 -4/-9
                            f -4/-9 -2/-10 -6/-12
                            # 12 faces


                            Que représentent les nombres après les slashs ? Je pense que se sont les UV Mapping mais je n'en suis pas sûr du tout lol
                            • Partager sur Facebook
                            • Partager sur Twitter
                              8 juillet 2007 à 15:09:38

                              Quand tu stockes les coordonnées de texture dans ton fichier, une deuxième liste de sommets apparaît, les coordonnées de texture justement.

                              Pour chaque sommet d'une face, le premier chiffre indique le numéro du sommet contenant les coordonnées spatiales et le deuxième chiffre (après le slash) indique le numéro de sommet contenant les coordonnées de texture.

                              Tout est indiqué dans la spécification du format.
                              On va peut être pas tout expliquer ici non plus hein. ^^
                              • Partager sur Facebook
                              • Partager sur Twitter
                                8 juillet 2007 à 15:33:14

                                Ok :)

                                Oui, jovanito, si tu as réussi à corriger ton erreur, mets-le en résolu, sinon, bah moi je veux bien t'aider mais bon vu que j'étais dans le même état que toi ce matin.... :-°
                                • Partager sur Facebook
                                • Partager sur Twitter

                                [openGL] 3DSMAX

                                × 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