MAPEADO DE TEXTURAS Computación Geométrica Luis Alberto Vivas Tejuelo 1 CONTENIDO • Mapeado de texturas • Técnicas avanzadas: • Bump mapping • Displacement mapping • Normal mapping • Parallax mapping • Relief mapping 2 MAPEADO DE TEXTURAS • Definición: adición de un patrón definido por separado a una superficie lisa. Tras añadir el patrón, la superficie sigue siendo lisa • Del latín “textura”: tejido, lienzo • El mapeado de texturas es una técnica eficaz y sencilla de aumentar el realismo de una imagen. Simplifica la presentación de superficies complejas • Se puede emplear para definir diversos parámetros de la superficie además del color: la rugosidad, transparencia, brillo... • Todas las GPUs modernas desde las Voodoo de 3DFX soportan aceleración hardware para el mapeado de texturas (vía vertex/pixel shaders) 3 • Ejemplo: una naranja • Una esfera de color naranja es demasiado simple • Modelar una malla de miles y miles de polígonos es demasiado costoso • Solución: “pegar” una imagen que altere las propiedades de la esfera 4 HISTORIA • 1974: Edwin Catmull presenta el concepto original de mapeado de texturas para modular los valores de color de una superficie • Catmull fundó posteriormente la empresa Pixar • 1976: Mapas de reflexión (Blinn y Newell) • 1978: Bump mapping (Blinn) Bump mapping (Blinn) 5 • 1983: Mapeado de textura sobre polígonos en perspectiva (Heckbert), mip mapping (Williams) • 1984: Mapas de iluminación (Miller y Hoffman) • 1985: Texturas volumétricas (Perlin) • 1986: Environmental mapping (Greene), Survey of texture mapping (Heckbert) • 1991: Interpolación para el mapeado de texturas en polígonos (Heckbert) • 1992: Projective texture mapping (Segal), SGI RealityEngine (mapeado de texturas por hardware) • M. Segal (ingeniero jefe en SGI) fue uno de los autores de la especificación original de OpenGL 6 CONCEPTOS BÁSICOS • Textura: puede ser una textura propiamente dicha (madera, roca, tela), es decir, un patrón detallado que se repite muchas veces para recubrir un plano, o en una definición más general, una imagen multidimensional que se mapea en un espacio multidimensional • Se componen de primitivas denominadas texels que definen alguna propiedad tonal o regional que afecta a la apariencia. Un texel puede corresponder a varios pixeles • Mapeo de texturas: aplicar una función en una superficie en 3D. La función puede tener 1, 2 o 3 dimensiones, y se puede representar mediante arrays o una función matemática • Las texturas en 2D se denominan habitualmente texturas de superficie y las que realizan un mapeo 3D, texturas volumétricas. 7 • Aunque la idea de mapear una imagen a una superficie es sencilla, hay 3 o 4 sistemas de coordenadas involucrados: • Coordenadas paramétricas: se pueden usar para modelar superficies curvadas • Coordenadas de la textura: para identificar los puntos de la imagen • Coordenadas del entorno: conceptualmente, donde tiene lugar el mapeo • Coordenadas de la pantalla: donde se produce la imagen final 8 MAPEADO DE TEXTURAS 2D • Las texturas son patrones 2D obtenidos de dibujos, imágenes reales (texturas bitmap) o funciones matemáticas (texturas procedurales) • Se pueden aplicar sobre cualquier superficie; más sencillo si ésta se define de forma paramétrica • Mapeo de puntos de superficie en 3D a coordenadas de imagen en 2D f : R → [0, 1] 3 2 9 • Correspondencia de texturas: 1.Espacio de textura 2.Espacio del objeto 3.Espacio de la pantalla • En la fase de renderizado: “¿a qué texel corresponde este pixel?” 1.Coordenada 2D (pantalla) 2.Coordenada 3D (objeto) 3.Coordenada 2D (textura) 10 • ¿Cómo mapear una imagen en 2D en una superficie en 3D? • • El problema básico es cómo encontrar los mapas Partiendo de las coordenadas de la textura hacia un punto en la superficie, se necesitan tres funciones: x=x(s,t) y=y(s,t) z=z(s,t) • Como se ha comentado, realmente se quiere ir al revés. Se necesita un mapa con la forma: s = s(x, y, z) t = t(x, y, z) • En general, estas funciones son difíciles de encontrar 11 MÉTODOS DE MAPEADO • Mapeado • Mapeo plano en dos partes • Desplegado 12 MAPEADO PLANO • El mapeado plano proyecta las coordenadas paramétricas hacia la malla a través de un plano • Ideal para aplicar imágenes sobre superficies planas, ya que la distorsión es mínima mientras las superficies sean paralelas a los planos de proyección • Proyección plana sobre un plano XY de tamaño (w,h) (transformada afín para orientar el plano) f (p) = (px /w, py /h) 13 MAPEO EN DOS PARTES • Una posible solución al problema del mapeo es aplicar la textura a una superficie intermedia más sencilla • Ej. mapeado a un cilindro • Se mapea la textura como si fuese una superficie 3D enrollada sobre el objeto (generalmente cilindros, cubos, esferas) • Se define el método en cada dirección (s, t). Primero se aplica la textura sobre un objeto de referencia (S-Mapping) y luego se define como se mapea este sobre el objeto (O-Mapping). 14 PROYECCIÓN CÚBICA • Este método de proyección es una variación del método plano, que repite el mismo mapa u otro sobre cada una de las 6 caras de un cubo. • Se usa con el environmental mapping (cube maps) 15 Textura de damero aplicada sobre varias figuras usando mapeo cúbico 16 PROYECCIÓN CILÍNDRICA • Este método aplica el mapa sobre la superficie juntando los lados del mapa de modo de envolver el objeto con un mapa cilíndrico • Es el más conveniente para objetos cilíndricos como tubos, troncos, etc • Puede aplicarse de forma que las "tapas" no se cubran 17 • Parametrización del cilindro: x = r cos(2πu) y = r sin(2πu) z = v/h • Mapea un rectángulo en espacio u,v a un cilindro de radio r y altura h s=u t=v 18 Textura de damero aplicada sobre varias figuras usando mapeo cilíndrico 19 PROYECCIÓN ESFÉRICA • Aplica un mapa esférico que rodea al objeto • La textura se contrae en los polos de la imagen y se expande por el centro, por lo que las imágenes se distorsionan para adaptarse a la forma esférica • Esta técnica es útil para proyectar mapas sobre objetos redondos como un balón • También se usa en el environmental mapping 20 • Esfera paramétrica: x = r cos(2πu) y = r sin(2πu) cos(2πu) z = r sin(2πu) sin(2πu) • Similar al cilindro pero se decide donde se distorsiona 21 Textura de damero aplicada sobre varias figuras usando mapeo esférico 22 DEL OBJETO INTERMEDIO AL OBJETO FINAL (O-MAPPING) • Métodos de mapeo: 1.Normales del objeto intermedio hacia el final 2.Normales del objeto final hacia el intermedio 3.Vectores desde el centro del objeto intermedio 1 2 3 23 DESPLEGADO • Coordenadas explícitas: se almacenan las coordenadas de la textura en puntos de control • Especialmente útil en la animación de personajes 24 • Se genera una descomposición del modelo mismo en el espacio 3D que se proyecta en un plano • Se puede generar un atlas de textura que contenga las texturas de varias partes de un objeto 3D • La GPU lo trata como una unidad y es más rápido 25 ARTEFACTOS • El mapeo de texturas introduce distorsiones (inevitables): p.ej seams • Elegir el método más apropiado • Considerarlas en el diseño Distorsionado Sin distorsionar 26 OTRAS TÉCNICAS (TEXTURIZACIÓN AVANZADA) 27 BUMP MAPPING • Añade rugosidad a una superficie, simulando una geometría más compleja • El bump mapping cambia la perpendicularidad por otras normales para lograr el efecto deseado, sin modificar la topología ni la geometría del objeto • Sólo funciona con la iluminación 28 Esfera + bump map = naranja 29 IDEA ORIGINAL • Blinn, James F. "Simulation of Wrinkled Surfaces", Computer Graphics, Vol. 12 (3), p. 286-292 SIGGRAPH-ACM (Agosto 1978) 30 • Método aproximado: P (u, v) = P (u, v) + B(u, v)N N � = N + Bu N × Pv − Bv N × Pu � P(u,v) es un punto de la superficie original B(u,v) es la altura en ese punto (en función de una imagen en escala de grises) N es la normal en dicho punto • Método de interpolación: N = � � (P1 −P )× � � (P2 −P ) � Se evalúan dos puntos cercanos al punto y se elevan de forma acorde al mapa. Con los tres puntos, se calcula la normal a partir del producto vectorial. Es más intuitivo y más exacto. 31 • • Ventajas: • Rápido, acelerado por hardware • Resultado razonablemente rico y detallado, especialmente con luces en movimiento, siempre que la altura de los “baches” sea baja Desventajas: • Sólo se aprecian en la superficie, no en los contornos • Poco realista con mapas de gran elevación 32 NORMAL MAPPING • Es una variación del algoritmo de bump mapping de Blinn • En lugar de “perturbar” las normales las reemplaza con vectores normales precalculados • • Se almacena la información de la elevación en los ejes XYZ en imágenes RGB (rojo=X, verde=Y, azul=Z) de 8/16 bits por pixel donde los valores bajos representan las zonas bajas y los valores altos representan las zonas elevadas • • Estas normales serán usadas para calcular la luz que incide y es reflejada en ese pixel Al contener información para los 3 ejes se puede renderizar de forma diferente según la posición del espectador, a diferencia del bump mapping, pero tampoco cambia la silueta http://www.youtube.com/watch?v=AwZ8o5P31cM 33 Ejemplo de normal map: 34 Simulación de iluminación sobre mallas detalladas en objetos con poco detalle poligonal Malla detallada Versión con pocos polígonos Aplicación del mapa de normales 35 DISPLACEMENT MAPPING • Se emplea una textura para modificar la propia superficie geométrica sobre la que se aplica • La textura representa un desplazamiento en la dirección normal • No es tanto una técnica para simular objetos complejos como una aproximación para reducir la memoria necesaria para almacenar modelos complejos • Proporciona un alto realismo 36 • La textura (mapa de alturas) es una imagen 2D en escala de grises que define la función de desplazamiento h P (u, v) = P (u, v) + h(u, v)N (u, v) � 37 Displacement mapping Bump mapping 38 Bump mapping vs normal mapping vs displacement mapping 39 PARALLAX MAPPING • Son básicamente texturas con auto-oclusión en función del punto de vista del espectador, lo que incrementa notablemente la sensación de profundidad y realismo. • Desplaza las coordenadas de textura en función del ángulo de visión en el espacio tangente y el mapa de alturas en cada punto. • En ángulos de visión muy abruptos, las coordenadas de textura se desplazan más dando la ilusión de profundidad por el efecto de paralaje por cambios del punto de vista. • Suele acompañar a las técnicas de bump mapping y normal mapping. 40 • El parallax mapping almacena los bultos en una textura (mapa de alturas) • Cuando se observa la superficie en un pixel dado, se recupera el valor de la altura en ese punto y se utiliza para cambiar las coordenadas de la textura • Aplicando un offset a las coordenada de textura adecuadamente se produce el efecto deseado 41 Corrección de coordenada de textura en A 42 Parallax mapping en el videojuego Crysis (2007) 43 RELIEF MAPPING • Es una técnica alternativa al parallax mapping, pero mucho más precisa, ya que trabaja con auto-sombreado y mapas normales • Puede ser simplemente descrito como un raytracing de corta distancia 44 • Procedimiento (trazado de rayos en el pixel shader): • Calcula el punto de entrada (s,t) y el punto de salida (u,v) • Avanza hasta encontrar la intersección con el mapa de alturas • Búsqueda dicotómica (binaria) para refinar el punto de intersección 45 Ejemplo de relief mapping sobre un cubo 46 REFERENCIAS • Graphics & visualization: principles & algorithms (Theoharis Theoharis,Georgios Papaioannou,N. Platis,Nicholas M. Patrikalakis) • http://www.siggraph.org/education/materials/HyperGraph/mapping/r_wolfe_mapping.pdf • 3-D computer graphics: a mathematical introduction with OpenGL (Samuel R. Buss) • Artículos de Gamedev.net: http://www.gamedev.net/reference/list.asp?categoryid=40#212 • Modern Texture Mapping in Computer Graphics (Stephan Pajer) • Survey of texture mapping (Paul S. Heckbert) • Texture Mapping (Pavlo Golik) 47