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

Développement 2D, 3D et Jeux Discussion :

Terrain avec octree


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre régulier Avatar de lXT95l
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 106
    Points : 116
    Points
    116
    Par défaut Terrain avec octree
    Bonjour a tous,
    Je cherche a implémenter les octrees pour mon terrain :
    J'ai un terrain répartit par petites box(ou tile) de 32*32.
    Je charge donc mon fichier terrain et j'envois les points correctement dans chaque quadrillage de chaque box.
    Voici le header pour être bien clair :
    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
     
    //-----------------------------------------------------------------------------
    // Box
    //-----------------------------------------------------------------------------
    class Box
    {
    public:
          Box();
          void Generate();
          void Draw();
          void DrawBox();
          ~Box();
     
          float vertex[32][32];
          vec3 normals[32][32];
    };
     
    //-----------------------------------------------------------------------------
    // Terrain
    //-----------------------------------------------------------------------------
    class Terrain
    {
    public:
          Terrain();
          void Load(const std::string &filename);
          void SetTexture(const std::string &filename);
          void SetPosition(vec3 v);
          void Draw();
          ~Terrain();
    private:
          Texture2D texture;
          Box **box;
          ivec2 size;
          ivec2 nbox;
          vec3 pos;
    };


    Le probleme vient lors de l'affichage (ici la méthode Draw de la classe Box) :
    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
     
        for(int y=0; y<31; y++)
        {
            glBegin(GL_TRIANGLE_STRIP);
            for(int x=0; x<31; x+=2)
            {
                glNormal3f(normals[y][x].x,normals[y][x].y,normals[y][x].z);
                glMultiTexCoord2fARB(GL_TEXTURE0_ARB, (float)x/32,(float)y/32);              glVertex3d(x, vertex[y  ][x  ]/2, y);
     
                glNormal3f(normals[y+1][x].x,normals[y+1][x].y,normals[y+1][x].z);
                glMultiTexCoord2fARB(GL_TEXTURE0_ARB, (float)x/32,(float)y/32+(1.f/32));        glVertex3d(x, vertex[y+1][x  ]/2, y+1);
     
                glNormal3f(normals[y+1][x+1].x,normals[y+1][x+1].y,normals[y+1][x+1].z);
                glMultiTexCoord2fARB(GL_TEXTURE0_ARB, (float)x/32+(1.f/32),(float)y/32); glVertex3d(x+1, vertex[y][x+1]/2, y);
     
                glNormal3f(normals[y+2][x+1].x,normals[y+2][x+1].y,normals[y+2][x+1].z);
                glMultiTexCoord2fARB(GL_TEXTURE0_ARB, (float)x/32+(1.f/32),(float)y/32+(1.f/32));        glVertex3d(x+1, vertex[y+1][x+1]/2, y+1);
            }
            glEnd();
        }
    (l'implémentation des VBOs viendra par la suite).

    Pour afficher la denière ligne de triangle_strip j'ai besoin des données de la box d'après.
    Ce qui me donne donc des problemes au niveau du rendu, il manque des "raccords" :



    Voila, je ne trouves pas comment régler ce problème proprement :/.
    Je pensais faire des box de 33*33 qui contiendrait donc la 1ere donnée du box d'après pour compléter ces "raccords" mais je voulais d'abord entendre vos conseils .

    Merci d'avance.
    #opengl@irc.epiknet.net

  2. #2
    Membre éclairé
    Avatar de N_I_C_S
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 450
    Points : 681
    Points
    681
    Par défaut
    Salut,
    as-tu essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(int y=0; y<32; y++)
        {
            glBegin(GL_TRIANGLE_STRIP);
            for(int x=0; x<32; x+=2)
    Désolé, c'est tout naze, mais on sait jamais...

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

Discussions similaires

  1. Terrain avec végétation et eau
    Par ReiKiss dans le forum Contribuez
    Réponses: 1
    Dernier message: 22/05/2019, 17h00
  2. Calculer le périmètre d'un terrain avec le GPS du mobile
    Par auxiliaire dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 18/12/2014, 09h53
  3. problème avec terrain scene manager
    Par RaygKross dans le forum Ogre
    Réponses: 2
    Dernier message: 16/03/2009, 11h24
  4. Réponses: 10
    Dernier message: 21/01/2007, 01h04
  5. [Tuto] [OpenGL] Afficher un terrain avec un fichier RAW
    Par Bakura dans le forum Contribuez
    Réponses: 1
    Dernier message: 05/09/2006, 20h03

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