Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

tobias

aplicar textura em hightmap

Mensagens Recomendadas

tobias

Boas,

Estou a fazer um projecto de computação gráfica onde é suposto fazer um cenário, escolhi fazer uma espécie de terreno tipo "Alentejo" com algumas árvores talvez uma casinha etc. mas estou a ter alguns problemas.

Depois de muita pesquisa concegui ao seguir um tutorial (

https://www.youtube.com/embed/videoseries?list=PL0AB023E769342AFE

deixo aqui que pode ajudar outros que estejam a começar) arranjar os loaders para as texturas e objectos e o load para hightmaps tambem, o meu problema agora é que não consigo meter uma textura no hightmap correctamente.

void renderHeightmap(float size,float h)
{
   for(int i=0;i<heights.size()-1;i++)
    for(int j=0;j<heights[0].size()-1;j++)
    {
	    glBegin(GL_TRIANGLE_STRIP);
		    glColor3f(heights[i][j],heights[i][j],heights[i][j]);
		    glVertex3f(i*size,heights[i][j]*h,j*size);
		    glVertex3f((i+1)*size,heights[i+1][j]*h,j*size);
		    glVertex3f(i*size,heights[i][j+1]*h,(j+1)*size);
		    glVertex3f((i+1)*size,heights[i+1][j+1]*h,(j+1)*size);
	    glEnd();
    }
}

este é o codigo que faz o render do hightmap, tenho outra função apra ler a imagem.

pronto, aplicar a textura a um quadrado é simples e já concigo, usando a função glTexCoord2f com a possição, funciona bem, mas meter a funcionar com o hightmap nao consigo.

Alguem tem alguma ideia ou algum exemplo que me possa mostrar.


Cumprimentos,Tobias Cintrão


"O que se pensa começa no que se ouve"
"Inspiração == Interrupção momentânea da estupidez"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

se pensares nos cantos do teu heightmap como os cantos da imagem, basta aplicar o triângulo correspondente da imagem ao triângulo do teu ciclo


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tobias

Sim eu pensei nisso, o problema é que nao sei como "cortar" o meu tecido em triangulos que vao corresponder aos do heightmap, eu comecei a estudar isto á uns dias entao ainda tenho muita falta de conhecimento, até pode ser mais facil do que concegui com o tutorial, mas como nunca vi como se fazia nao tenho a minima ideia.

Obrigado desde ja pela a atenção.


Cumprimentos,Tobias Cintrão


"O que se pensa começa no que se ouve"
"Inspiração == Interrupção momentânea da estupidez"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

tu não tens de cortar. o que tens de fazer é dar as coordenadas correspondentes da textura ao triângulo que estás a apresentar


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tobias

Já percebi o que queres dizer, e tentei fazer isso agora, mas nao tou a conseguir meter a textura corretamente, fiz uns if para meter as cordenadas em cada canto, mas nao sei o porque a textura nao é aplicada corretamente.

void renderHeightmap(float size,float h)
{
glEnable(GL_TEXTURE_2D); //and turn on texturing
glBindTexture(GL_TEXTURE_2D,terrenoTex); //use the texture we want
for(int i=0;i<heights.size()-1;i++)
 for(int j=0;j<heights[0].size()-1;j++)
 {
  glBegin(GL_TRIANGLE_STRIP);

   if(i == 0 && j==0)
 glTexCoord2f(0,0);
   if(i== 0 && j==heights[0].size())
 glTexCoord2f(0,1);
   if(i==heights.size() && j==0);
 glTexCoord2f(1,0);
   if(i==heights.size() && j==heights[0].size())
 glTexCoord2f(1,1);

   glColor3f(heights[i][j],heights[i][j],heights[i][j]);
   glVertex3f(i*size,heights[i][j]*h,j*size);
   glVertex3f((i+1)*size,heights[i+1][j]*h,j*size);
   glVertex3f(i*size,heights[i][j+1]*h,(j+1)*size);
   glVertex3f((i+1)*size,heights[i+1][j+1]*h,(j+1)*size);
  glEnd();
 }
 glDisable(GL_TEXTURE_2D);
}

Devo estar a fazer alguma coisa mal ja tentei algumas maneiras, mas agora tou a ficar á nora com isto...

alguma ideia?


Cumprimentos,Tobias Cintrão


"O que se pensa começa no que se ouve"
"Inspiração == Interrupção momentânea da estupidez"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.