Presentación

Anuncio
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
Descargar