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
• Unaesfera 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:
[Link] de textura
[Link] del objeto
[Link] de la pantalla
• En la fase de renderizado:
“¿a qué texel corresponde este pixel?”
[Link] 2D (pantalla)
[Link] 3D (objeto)
[Link] 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 plano
• Mapeo 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
• Esel 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
• Latextura 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:
[Link] del objeto intermedio hacia el final
[Link] del objeto final hacia el intermedio
[Link] 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): [Link] 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ñaderugosidad 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
• Estas normales serán usadas para calcular la luz que incide y es reflejada en ese pixel
• 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
• 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
• [Link]
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 Aplicación del
polígonos mapa de normales
35
DISPLACEMENT MAPPING
• Seemplea una textura para modificar la propia superficie
geométrica sobre la que se aplica
• Latextura 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
• Aplicandoun 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)
• [Link]
• 3-D computer graphics: a mathematical introduction with OpenGL (Samuel R. Buss)
• Artículos de [Link]: [Link]
• Modern Texture Mapping in Computer Graphics (Stephan Pajer)
• Survey of texture mapping (Paul S. Heckbert)
• Texture Mapping (Pavlo Golik)
47