Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: coolhand en 09 de Febrero de 2007, 12:52:57 PM

Título: generar automáticamente las coordenadas de textura
Publicado por: coolhand en 09 de Febrero de 2007, 12:52:57 PM
He leido por ahí que se puede generar automáticamente (openGL) las coordenadas de una textura (para environment mapping). Me gustaría saber cómo lo hace exactamente, si hace falta indicarle alguna coordenada de referencia, qué polígonos son a los que se le va a aplicar, etc.
Título: generar automáticamente las coordenadas de textura
Publicado por: ethernet en 09 de Febrero de 2007, 01:23:35 PM
http://www.google.es/search?hl=es&client=firefox-a&rls=org.mozilla%3Aes-ES%3Aofficial&hs=hAp&q=generacion+coordenadas+de+textura+opengl&btnG=B%C3%BAsqueda&meta=
Título: generar automáticamente las coordenadas de textura
Publicado por: tamat en 10 de Febrero de 2007, 02:59:11 PM
Basta con hacer rebotar el rayo incidiente por la normal al punto en el que pintas, GLSL tiene un método que ya lo hace.
Título: generar automáticamente las coordenadas de textura
Publicado por: marcode en 10 de Febrero de 2007, 06:02:45 PM
Yo lo hago usando texturas cúbicas (o como se llamen).

La forma de activar y generar las coordenadas a aplicar al objeto es así:


glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
glEnable(GL_TEXTURE_GEN_R);

glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP);
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP);
glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP);


Pero antes hay que crearlas y cargar cada uno de los 6 lados del cubo (del entorno).

para referirse a cada una de ellas al cargar la imagen en lugar de usar GL_TEXTURE_2D es con GL_TEXTURE_CUBE_MAP_POSITIVE_X, cada una de las 6 tiene uno diferente según el lado.

y al hacer el bind hay que desactivar las 2D y activar la cúbica con GL_TEXTURE_CUBE_MAP

Bueno, seguro que encuentras más info por ahí.
Título: generar automáticamente las coordenadas de textura
Publicado por: ethernet en 10 de Febrero de 2007, 06:41:23 PM
también puedes usar sphere map que no tienes que andar liado con 6 texturas.
Título: generar automáticamente las coordenadas de textura
Publicado por: coolhand en 12 de Febrero de 2007, 02:53:22 PM
Realmente, yo usaría sphere map, ya que se trata de texturizar una esfera, pero el problema es que solo deseo texturizar una porción de esfera...

   o sea, tengo una textura con las coordenadas de georeferenciación y me gustaría no tener que calcular las coordenadas de textura correpondientes a cada vertice una a una. Básicamente, al final será una textura cuadrada (que puede ser la península ibérica o un trozo de francia o lo que sea), que iría puesta justo en los paralelos y meridianos donde fue tomada siguiendo los puntos de control de georeferencia que acompañan la imagen (es una imagen "curva", y siguiendo la dirección del satélite, no tiene por qué seguir ningún paralelo ni meridiano, sino oblícuamente).
Título: generar automáticamente las coordenadas de textura
Publicado por: marcode en 12 de Febrero de 2007, 07:00:43 PM
pruba con esto:

glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
glEnable(GL_TEXTURE_GEN_R);

glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_NORMAL_MAP);
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_NORMAL_MAP);
glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_NORMAL_MAP);

glMatrixMode(GL_TEXTURE);
glLoadMatrixf((float*)&TextureMatrix);


Con la matriz de textura puedes establecer exactamente la posición, orientación y escalado al mapear. En lugar de glLoadMatrix puedes cargar la de identidad y luego hacer las transformaciones con los comandos de OpenGL.