Texturare in opengl un terreno
  • In diretta da GamesVillage.it
    • News
    • -
    • In Evidenza
    • -
    • Recensioni
    • -
    • RetroGaming
    • -
    • Anteprime
    • -
    • Video
    • -
    • Cinema

Visualizzazione risultati da 1 a 3 di 3

Discussione: Texturare in opengl un terreno

Cambio titolo
  1. #1
    -Gray Fox-
    Ospite

    Texturare in opengl un terreno

    Ciao a tutti.
    Attualmente sto lavorando ad un editor di terreni 3d in opengl. Il principale problema che ho con questo progetto e il texturaggio (termine orribile). Attualmente ciò che faccio è dare una texture dettagliata ad ogni vertice a seconda della sua altezza: i picchi saranno texturati con rocce mentre le valli con erba (per capirci ). Quello che non riesco a fare è rendere graduale il passaggio da una texture all'altra (ad esempio dall'erba delle valli alle rocce dei picchi)... come posso fare? che tecnica mi consigliate?

  2. #2
    Cazzaro L'avatar di thor82
    Registrato il
    09-05
    Messaggi
    2.743
    uhm se non ricordo male avevo utilizzato il variare l'alpha channel della texture in maniera proporzionale all'altezza (e inversamente per l'altra texture)

    la texture però dev'essere mappata per ogni vertice


  3. #3
    -Gray Fox-
    Ospite
    Citazione thor82 Visualizza Messaggio
    uhm se non ricordo male avevo utilizzato il variare l'alpha channel della texture in maniera proporzionale all'altezza (e inversamente per l'altra texture)

    la texture però dev'essere mappata per ogni vertice
    Perciò avevi utilizzato la "multi-texture" aumentando progressivamente l'opacità di una delle due texture?

    La multi-texture la faccio così:
    Codice:
        [...]
        glActiveTextureARB(GL_TEXTURE0_ARB);
        glBindTexture(GL_TEXTURE_2D, texture[1]);
    
        glActiveTextureARB(GL_TEXTURE1_ARB);
        glBindTexture(GL_TEXTURE_2D, texture[0]);
        
        glTranslatef(0.0f,-2.0f,z);
          
        glRotatef(135 + xrot,1.0f,0.0f,0.0f);
        glRotatef(yrot,0.0f,1.0f,0.0f);
        glRotatef(zrot,0.0f,0.0f,1.0f);                                
    
        glPushMatrix();
        glBegin(GL_QUADS);
        for (int x = 0; x<44; x++)
        {
            for (int y = 0; y<44; y++)
            {
                glMultiTexCoord2fARB(GL_TEXTURE0_ARB, float(x)/44.0f,     float(y)/44.0f);
                glMultiTexCoord2fARB(GL_TEXTURE1_ARB, float(x)/44.0f, float(y)/44.0f);
                glVertex3f(terrain [x][y][0],     terrain [x][y][1],     terrain [x][y][2]);
                
                glMultiTexCoord2fARB(GL_TEXTURE0_ARB, float(x)/44.0f, float(y+1)/44.0f);
                glMultiTexCoord2fARB(GL_TEXTURE1_ARB, float(x)/44.0f, float(y+1)/44.0f);
                glVertex3f(terrain [x][y+1][0],   terrain [x][y+1][1],   terrain [x][y+1][2]);
                
                glMultiTexCoord2fARB(GL_TEXTURE0_ARB, float(x+1)/44.0f, float(y+1)/44.0f);
                glMultiTexCoord2fARB(GL_TEXTURE1_ARB, float(x+1)/44.0f, float(y+1)/44.0f);
                glVertex3f(terrain [x+1][y+1][0], terrain [x+1][y+1][1], terrain [x+1][y+1][2]);
                
                glMultiTexCoord2fARB(GL_TEXTURE0_ARB, float(x+1)/44.0f, float(y)/44.0f);
                glMultiTexCoord2fARB(GL_TEXTURE1_ARB, float(x+1)/44.0f, float(y)/44.0f);
                glVertex3f(terrain [x+1][y][0],   terrain [x+1][y][1],   terrain [x+1][y][2]);
            }
        }
        glEnd();
        [...]
    [Come puoi vedere in questo momento sto testando il multi-texturing di due sole texture spiaccicate per tutto il terreno ]
    Ma come fai a controllare l'apha delle texture con il multi-texturing?

Regole di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •