texturastexturas visualización computacional ii. horarios (again…) lunes 26/10: aula 2 facultad...
Post on 31-Jan-2016
216 Views
Preview:
TRANSCRIPT
TexturasTexturasTexturasTexturasVisualización Computacional
II
Horarios (again…)Horarios (again…)
LUNES 26/10: Aula 2 Facultad (19 hs.): Introducción
MARTES 27/10: Aula 2 Facultad (19 hs.): Texturas MIERCOLES 28/10: Aula 2 Facultad (19 hs.): Técnicas de iluminación avanzadas
JUEVES 29/10: Aula 3 Facultad (19 hs.): Sombras
VIERNES 30/10: Aula 2 Facultad (19 hs.): Animación - [Física]
LUNES 2/11: A determinar: [Física] - Optimización
Crysis, Crytek - EA
Texturas - Texturas - ResumenResumen
¿Por qué usar texturas?IntroducciónConceptos básicos
InterpolaciónMapeoTilingMipmapping
Usos adicionalesTexturas proceduralesLightmapsBump MappingEnvironment Mapping
Texturas - Texturas - ¿Por qué usar texturas?¿Por qué usar texturas?
¿Podemos representar todo con geometría?
Texturas - Texturas - ¿Por qué usar texturas?¿Por qué usar texturas?
Sería costoso y complicado representar TODO con geometría.
Ej. MUY Simple: ¿Qué pasaría con una etiqueta?.
Texturas - Texturas - ¿Por qué usar texturas?¿Por qué usar texturas?
Texturas - Texturas - ¿Por qué usar texturas?¿Por qué usar texturas?
The Guild II - 4Head Game StudiosUnreal 3 – Epic Studios
Texturas - Texturas - IntroducciónIntroducción
Podemos utilizar la textura para modifcar alguna o todas las vars / ctes. de la ecuación de iluminación (color de pixel, color difuso, alterar normal, etc.)
Nluces
pp
nsdpaa KKIIKI
i
0
coscos
Textura usada como color cte.
Textura usada como color difuso.
Textura usada como normal map.
Texturas - Texturas - IntroducciónIntroducción
Para cada polígono se establece una correspondencia con la textura.
Texturas - Texturas - Mapeo eMapeo e InterpolaciónInterpolación
¿Podemos interpolar de manera directa linealmente los valores en el espacio de la pantalla?.
(0,0) (1,0)
(0,1)
Texturas - Texturas - Mapeo eMapeo e InterpolaciónInterpolación
textura resultado esperado
Interpolación lineal en espacio de coord. de pantalla:
Texturas - Texturas - Mapeo eMapeo e InterpolaciónInterpolación
Podemos reducir los errores subdividiendo el modelo en triangulos más pequeños.
Igualmente persisten los “errores”.
Texturas -Texturas - Mapeo eMapeo e InterpolaciónInterpolación
Los pasos uniformes de la interpolación en el plano de la pantalla no se corresponden con los pasos uniformes de la interpolación a lo largo del triángulo.
Soluc.: Interpolación
en el espacio
[automática x OpenGL]
Texturas – Texturas – MapeoMapeo
Se especifica una coordenada (u,v) para cada vértice.
Coordenadas canónicas (0,0) (1,0)
(0,0,0) (3,0,0)
(0,3,0)
(0,0)
(1,1)
glEnable(GL_TEXTURE);
glBindTexture(texID);
glbegin(GL_TRIANGLES);
glVertex3f(0.0, 0.0, 0);
glTexCoord2f(0,0);
glVertex3f(0.0, 3.0, 0);
glTexCoord2f(0,1);
glVertex3f(3.0, 0.0, 0);
glTexCoord2f(1,0);
glend;
Texturas - Texturas - Tipos de mapeoTipos de mapeo
Generar automáticamente las
coordenadas de textura:
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
Tipos: GL_OBJECT_LINEAR, GL_EYE_LINEAR, GL_SPHERE_MAP, GL_REFLECTION_MAP
Texturas - Texturas - MapeoMapeo
Truco:
Coordenadas de textura en una matriz adicional (Texture Matrix).
Aplicar transformaciones a esa matriz para modificar las coordenadas.
Texturas - Texturas - TilingTiling
tiles sin bordestiles con bordes visibles(0,0) (3,0)
(0,3)
(0,0)
(1,1)
(0,0) (3,0)
(0,3)
(0,0)
(1,1)
Texturas - Texturas - MipmappingMipmapping
Del Latín “Multum In Parvo” (muchos en un lugar pequeño).
gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA, 128, 128, GL_RGBA, GL_UNSIGNED_BYTE, image);gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA, 128, 128, GL_RGBA, GL_UNSIGNED_BYTE, image);
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
Texturas - Texturas - MipmappingMipmapping
Se pueden almacenar de manera compacta.
Mínimo overhead para mantener un MIP map.
Mip map de 10 niveles.
Almac. en memoria
Texturas - Texturas - VariablesVariables
Texturas - MaskingTexturas - Masking
“Recortar” parte de un gráfico (según color o siguiendo un patrón)
Dar aspecto de transparencia a lo que se ha recortado
Texturas - MaskingTexturas - Masking
Alpha Test:
Se hace sobre el valor de la componente alpha que se está evaluando.
Una función y un valor de referencia, según el resultado se acepta o se rechaza el fragmento.
glEnable(GL_ALPHA_TEST);glAlphaFunc (GL_GREATER, 0.1);
GL_NEVER: Nunca acepta el fragmento.
GL_ALWAYS: Siempre acepta el fragmento.
GL_LESS: Acepta el fragmento si Alpha origen < Alpha referencia
GL_LEQUAL: Acepta el fragmento si Alpha origen <= Alpha referencia
GL_EQUAL: Acepta el fragmento si Alpha origen = Alpha referencia
GL_GEQUAL: Acepta el fragmento si Alpha origen >= Alpha referencia
GL_GREATER: Acepta el fragmento si Alpha origen > Alpha referencia
GL_NOTEQUAL: Acepta el fragmento si Alpha origen <> Alpha referencia
Texturas - MaskingTexturas - Masking
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA)
glEnable(GL_BLEND)
Alpha Blending:
Se hace sobre el valor de la componente alpha que se está evaluando, combinando un fragmento con otro
Probar!! (uds.)
Texturas - Texturas - Uso de lucesUso de luces
•¿Cuántas luces vemos en la escena?
•¿Cálculo?
•¿Ideas, opciones?
Texturas - Texturas - LightmapsLightmaps
La utilización de luces brinda realismo a nuestras escenas, pero ¿cuál es el límite?.
Notar que la mayoría de luces en una escena son estáticas.
¿Se puede aprovechar de alguna manera esto para precalcular sombras e iluminaciones?.
+ =
Texturas - Texturas - LightmapsLightmaps
Dibujar la geometría dos veces con distinta textura.
Costo memoria.
Costo GPU.
Lightmaps de poca resolución.
¿Coordenadas?.
Texturas - Texturas - LightmapsLightmaps
Mejora: Utilización de multitextura
Diferentes texturas a un mismo objeto.
Coordenadas de texturas independientes.
¿Posibles usos?.
Texturas - Texturas - Bump MappingBump Mapping
Usar la textura para alterar la normal del polígono.
Esfera con textura (difuso) Bump Map Esfera con textura (difuso y bump map)
Ganar detalle sin incrementar la geometría
Texturas - Texturas - Bump MappingBump Mapping
Tomar la textura como una función de desplazamiento.
Calcular la normal a partir de esa función.
Diferentes opciones de implementación DESORDEN
Texturas - Texturas - Bump Mapping (Fake)Bump Mapping (Fake)
Zonas negras Menor relieve
Zonas blancas Mayor relieve
Utilización de multitexturas.
Desplazamiento de la textura de Bump de acuerdo a la luz.
Texturas - Texturas - Bump Mapping (Per Pixel)Bump Mapping (Per Pixel)
Utilización de un Normal Map.
Nuevas aproximaciones en tiempo real mediante shaders.
Idea de Per-pixel lighting.
Los componentes XYZ son reescalados del rango [-1, 1] a [0, 255]
Por ejemplo el vector [0, 0, 1] (Normal perpendicular entrante) sería convertido a [127, 127, 255], el azul violáceo q predominan en estas texturas.
Texturas - Texturas - Bump MappingBump Mapping
norm = vec3(texture2D(sampler2d, vec2 (gl_TexCoord[0])));
norm = (norm - 0.5) * 2.0;
intensity = max(dot(lightDir, norm), 0.0) * diffuseFactor;
Norm: Valor de 0 a 1
Norm - 0.5: Valor de -0.5 a 0.5
(Norm - 0.5) * 2: Valor de -1 a 1
Texturas - Texturas - Environment MappingEnvironment Mapping
Objetivo: Renderizar un objeto como si fuera perfectamente reflectivo.
Las reflexiones que vemos en el objeto dependen de:
Posición del espectador.
Forma del objeto.
Environment Map es una aproximación (se asume que los objetos del entorno están muy lejos del objeto reflectivo)
Texturas - Texturas - Environment MappingEnvironment Mapping
Se utiliza la dirección del rayo reflectado para indexar una posición en una textura con coordenadas esféricas.
Se asume que todos los rayos comienzan en el mismo punto.
Texturas - Texturas - Environment MappingEnvironment Mapping
Texturas - Texturas - Texturas proceduralesTexturas procedurales
F(x,y,z) color
Texturas - Texturas - Texturas proceduralesTexturas procedurales
Ventajas:Fácil de implementar en un raytracer/shaders.
Menos espacio.
Resolución infinita.
Desventajas:No intuitivo.
Sirven para situaciones puntuales.
Texturas - Texturas - Texturas proceduralesTexturas procedurales
top related