1 / 39

Texturas

Texturas. Visualización Computacional II. 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

arawn
Télécharger la présentation

Texturas

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Texturas Visualización Computacional II

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

  3. Crysis, Crytek - EA

  4. Texturas - Resumen • ¿Por qué usar texturas? • Introducción • Conceptos básicos • Interpolación • Mapeo • Tiling • Mipmapping • Usos adicionales • Texturas procedurales • Lightmaps • Bump Mapping • Environment Mapping

  5. Texturas - ¿Por qué usar texturas? • ¿Podemos representar todo con geometría?

  6. Texturas - ¿Por qué usar texturas? • Sería costoso y complicado representar TODO con geometría. • Ej. MUY Simple: ¿Qué pasaría con una etiqueta?.

  7. Texturas - ¿Por qué usar texturas?

  8. Unreal 3 – Epic Studios Texturas - ¿Por qué usar texturas? The Guild II - 4Head Game Studios

  9. Texturas - Introducció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.) Textura usada como color cte. Textura usada como color difuso. Textura usada como normal map.

  10. Texturas - Introducción Para cada polígono se establece una correspondencia con la textura.

  11. (0,1) (0,0) (1,0) Texturas - Mapeo eInterpolación • ¿Podemos interpolar de manera directa linealmente los valores en el espacio de la pantalla?.

  12. Texturas - Mapeo eInterpolación • Interpolación lineal en espacio de coord. de pantalla: textura resultado esperado

  13. Texturas - Mapeo eInterpolación • Podemos reducir los errores subdividiendo el modelo en triangulos más pequeños. • Igualmente persisten los “errores”.

  14. Texturas -Mapeo eInterpolació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]

  15. Texturas – Mapeo • Se especifica una coordenada (u,v) para cada vértice. • Coordenadas canónicas (0,0) (1,0) (0,3,0) 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; (1,1) (0,0) (0,0,0) (3,0,0)

  16. Texturas - Tipos 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

  17. Texturas - Mapeo • Truco: • Coordenadas de textura en una matriz adicional (Texture Matrix). • Aplicar transformaciones a esa matriz para modificar las coordenadas.

  18. (0,3) (0,3) (1,1) (1,1) (0,0) (0,0) (0,0) (3,0) (0,0) (3,0) Texturas - Tiling tiles con bordes visibles tiles sin bordes

  19. Texturas - Mipmapping • Del Latín “MultumIn Parvo” (muchos en un lugar pequeño). 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);

  20. Texturas - Mipmapping • Se pueden almacenar de manera compacta. • Mínimo overhead para mantener un MIP map. Almac. en memoria Mip map de 10 niveles.

  21. Texturas - Variables

  22. Texturas - 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

  23. Texturas - 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

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

  25. Texturas - Uso de luces ¿Cuántas luces vemos en la escena? ¿Cálculo? ¿Ideas, opciones?

  26. + = Texturas - Lightmaps • 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?.

  27. Texturas - Lightmaps • Dibujar la geometría dos veces con distinta textura. • Costo memoria. • Costo GPU. • Lightmaps de poca resolución. • ¿Coordenadas?.

  28. Texturas - Lightmaps • Mejora: Utilización de multitextura • Diferentes texturas a un mismo objeto. • Coordenadas de texturas independientes. • ¿Posibles usos?.

  29. Texturas - Bump Mapping • Usar la textura para alterar la normal del polígono. Bump Map Esfera con textura (difuso y bump map) Esfera con textura (difuso) Ganar detalle sin incrementar la geometría

  30. Texturas - Bump 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

  31. Texturas - 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.

  32. Texturas - 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.

  33. Texturas - Bump 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

  34. Texturas - Environment 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)

  35. Texturas - Environment 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.

  36. Texturas - Environment Mapping

  37. Texturas - Texturas procedurales • F(x,y,z) è color

  38. Texturas - Texturas procedurales • Ventajas: • Fácil de implementar en un raytracer/shaders. • Menos espacio. • Resolución infinita. • Desventajas: • No intuitivo. • Sirven para situaciones puntuales.

  39. Texturas - Texturas procedurales

More Related