Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





generar automáticamente las coordenadas de textura

Iniciado por coolhand, 09 de Febrero de 2007, 12:52:57 PM

« anterior - próximo »

coolhand

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.


tamat

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.
Por un stratos menos tenso

marcode

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í.
size=9]afortunadamente siempre ha habido alguien dispuesto a reinventar la rueda, de lo contrario seguiríamos usando un disco de piedra con un agujero.[/size]

ethernet

también puedes usar sphere map que no tienes que andar liado con 6 texturas.

coolhand

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).

marcode

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.
size=9]afortunadamente siempre ha habido alguien dispuesto a reinventar la rueda, de lo contrario seguiríamos usando un disco de piedra con un agujero.[/size]






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.