Texturas - DAC
Texturas - DAC
Texturas - DAC
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Texturas</strong><br />
1
Bibliografía<br />
• Alan Watt. 3D Computer Graphics.<br />
Addi Addison-Wesley. W l Third Thi d Editi Edition. 2000<br />
• David SS. Ebert y otros otros. Texturing &<br />
Modeling. A Procedural Approach. Morgan<br />
KKaufmann. f Third Thi d Edition. Editi 2003<br />
• …<br />
2
• Introducción<br />
• Hi Historia t i<br />
• Clasificación<br />
• Color<br />
• Il Iluminación i ió<br />
• Transparencia p<br />
• Normales<br />
• GGeometría t í<br />
Índice<br />
• Mapeado<br />
• Difi Dificultades lt d<br />
• <strong>Texturas</strong><br />
procedurales<br />
• Compresión<br />
• Efectos<br />
• Ejemplos<br />
3
Introducción<br />
• Mapa de texturas: colección o array n-<br />
di dimensional i l dde valores. l<br />
• En OpenGL, se utilizan en la etapa de<br />
rasterizado.<br />
• Información sobre cualquier atributo que<br />
se vaya a aplicar.<br />
4
Introducción<br />
• La utilización de texturas:<br />
– Aumenta el realismo de la imagen sin<br />
aumentar número de polígonos. p g<br />
– Proporciona una clave para la percepción de<br />
la profundidad.<br />
profundidad<br />
– Permite simular multitud de efectos: sombras,<br />
reflejos, entornos, ...<br />
• GPGPU<br />
5
Apuntes históricos<br />
• 1974. Ed Catmull utiliza mapas de<br />
ttexturas t por primera i vez.<br />
• 1976 1976. Blinn y Newell introducen los mapas<br />
de reflexión o de entorno.<br />
• 1978. Blinn introduce los mapas de<br />
abolladuras (bump mapping)<br />
• 1984. Cook los extiende creando los<br />
mapas de desplazamiento<br />
6
Apuntes históricos (2)<br />
• 1985. Peachey y Perlin describen las<br />
ttexturas t sólidas ólid como alternativa lt ti a llas<br />
tradicionales texturas 2D.<br />
• 1987. Reeves, Salesin y Cook: algoritmo<br />
para generación ió dde sombras b sin i aliasing li i<br />
utilizando texturas (shadow mapping).<br />
…<br />
7
Clasificación (I)<br />
• Según el número de dimensiones<br />
– Unidimensionales<br />
• Poco usadas<br />
• Bandas que varían en una sola dirección<br />
– Bidimensionales<br />
• Las más frecuentes<br />
• Suelen ser cuadradas y potencias de 2<br />
• No tienen porque ser estáticas<br />
– Vídeos<br />
– Funciones matemáticas<br />
» <strong>Texturas</strong> procedurales<br />
• PPueden d generarse di dinámicamente<br />
á i t<br />
9
Clasificación (II)<br />
• Según el número de<br />
dimensiones<br />
- <strong>Texturas</strong> cúbicas<br />
- Extensión de las texturas<br />
bidimensionales<br />
- Muy usadas en mapeos de<br />
entornos.<br />
– Tridimensionales<br />
• Permiten mostrar datos<br />
volumétricos<br />
10
Clasificación (III)<br />
• Tipo de información que almacenan<br />
– CColor l<br />
• Diffuse Maps<br />
• Specular Maps<br />
– Iluminación<br />
• Light g Maps p<br />
– Transparencia<br />
• Alpha Blending<br />
– Normales<br />
• Bump Maps<br />
• Normal Maps<br />
• Parallax Map<br />
– Geométrica<br />
– …<br />
• Heightmap<br />
• Displacement Maps<br />
11
Color: mapas p difusos<br />
• Definen cómo el objeto<br />
refleja la luz difusa.<br />
• Son las más utilizadas.<br />
• Contiene el color base<br />
del mismo.<br />
12
Color: mapas p especulares p<br />
• DDefinen fi propiedades i d d ddel l objeto bj t sobre b cómo ó<br />
refleja la luz especular.<br />
• La reflexión de la luz no es igual en toda la<br />
superficie de un objeto: suciedad, suciedad humedad, humedad<br />
huella dactilar,...<br />
13
Iluminación: mapas p de luz<br />
• Etapa de sombreado:<br />
– El nº de luces aumenta la complejidad del<br />
sombreado.<br />
– De las etapas más costosas.<br />
– Las tarjetas limitan el número máximo de<br />
luces que q se ppueden<br />
utilizar.<br />
14
Iluminación: mapas p de luz<br />
• Extensión de los mapas de texturas:<br />
– La luz se preprocesa.<br />
– Se muestrea la luz reflejada por la superficie<br />
del objeto.<br />
– Se almacena en un mapa de textura 2D.<br />
15
Iluminación: mapas p de luz<br />
• Ventajas:<br />
– Ahorro en tiempo y cómputo.<br />
– Con un precálculo preciso se pueden obtener<br />
mejores resultados que con Gouraud.<br />
– Facilita trabajar con escenas complejas.<br />
• Limitaciones:<br />
– Fuentes de luz fijas.<br />
– Peores resultados sobre objetos en<br />
movimiento<br />
movimiento.<br />
• Posible compromiso.<br />
16
Transparencia: p mapas p alpha p<br />
• “Complementario”: mapas de opacidad.<br />
• α=1 objeto opaco; α=0 objeto<br />
transparente<br />
transparente.<br />
• La información de transparencia se<br />
almacena en escala de grises<br />
Utiliza el mismo mapa como textura especular<br />
17
Normales: bump p mapping pp g<br />
• <strong>Texturas</strong> en escala de grises.<br />
• El mapa de bultos almacena la<br />
profundidad del fragmento.<br />
• Modificación de normales para dar<br />
sensación de relieve relieve.<br />
18
Normales: mapa p de normales<br />
• <strong>Texturas</strong> RGB (R→X, ( , G →Y, , B →Z) )<br />
• Se almacenan los vectores tangentes a la<br />
superficie: fi i<br />
– Normal hacia delante (127,127,255) (127 127 255) → (0,0,1) (001)<br />
– Tonos azules: vectores normales.<br />
– Tonos rojos: variación horizontal.<br />
– Tonos verdes: variación vertical. vertical<br />
• Son más potentes que los mapas de<br />
bultos.<br />
• Estos se pueden transformar en mapas de 19<br />
• Estos se pueden transformar en mapas de<br />
normales
Normales<br />
20
Normales: parallax p mapping pp g<br />
• TTambién bié offset ff t mapping i o virtual i t l<br />
displacement p mapping pp g<br />
• Mejora sobre los mapas de normales.<br />
• Se usan en aplicaciones con renderizado<br />
3D: videojuegos<br />
videojuegos.<br />
• <strong>Texturas</strong> con auto-oclusión en función del<br />
punto de vista del usuario.<br />
• LLas ttexturas t tienen ti mayor sensación ió dde<br />
profundidad p y<br />
realismo.<br />
21
Normales: parallax p mapping pp g<br />
22
Geometría<br />
• En la textura se almacena el<br />
ddesplazamiento l i t dde llos ffragmentos. t<br />
• Las texturas pueden almacenar: valores<br />
no normalizados y en coma flotante<br />
• Mapas de altura o de desplazamiento<br />
– Almacenan información de la altura altura.<br />
– Escalas de grises.<br />
– Permiten auto-oclusiones, auto-sombras y<br />
siluetas siluetas.<br />
23
Geometría<br />
24
Comparación p<br />
Ruido<br />
(lattice noise)<br />
Mapas de desplazamiento Mapas de normales<br />
25
Mapeado (I)<br />
• Texture mapping: Se debe definir una<br />
correspondencia entre el modelo y la textura<br />
(píxels y texels)<br />
– Estas técnicas envuelven el objeto en algún tipo de<br />
figura o volumen contenedor (map shape)<br />
26
• Mapeado plano<br />
Mapeado (III)<br />
– Se proyecta la figura sobre un plano<br />
– Se debe definir la orientación del<br />
plano<br />
– Problemas en las zonas superiores<br />
– El más sencillo<br />
– Utilidad reducida<br />
– Ejemplos: j p<br />
1. Se ha anulado la coordenada z. El<br />
color no varía con dicha coordenada.<br />
2. En el resto de ejemplos j p se eliminan<br />
distintas coordenadas.<br />
27
Mapeado (IV)<br />
• Mapeado Cilíndrico<br />
– El objeto se envuelve en un<br />
cilindro<br />
– Las coordenadas del objeto se<br />
transforman a coordenadas<br />
cilíndricas<br />
• (x,y,z)->(radio, ángulo, altura)<br />
– A la hora de proyectar la textura<br />
sólo se tiene en cuenta el ángulo<br />
y la altura.<br />
– Debe tenerse en cuenta la<br />
orientación del cilindro<br />
28
• Mapeado esférico<br />
Mapeado (V)<br />
– El objeto se envuelve en<br />
una esfera<br />
– (x (x,y,z) y z)->(r >(r,alpha,theta)<br />
alpha theta)<br />
– Para el mapeo sólo se usa<br />
alpha y theta<br />
– Depende de la forma en la<br />
que q la textura se envuelva<br />
alrededor de la esfera.<br />
29
Mapeado (VI)<br />
• Comparación entre el mapeado<br />
esférico fé i y el l cilíndrico. ilí d i<br />
– El mapeado esférico tiene más<br />
resolución de la necesaria en los<br />
polos<br />
– El mapeado cilíndrico está muy<br />
limitado a la hora de representar la<br />
parte p superior p de los objetos j<br />
30
• Mapeado cúbico<br />
Mapeado (VII)<br />
– Se envuelve el objeto<br />
en un cubo<br />
– Similar al mapeado<br />
plano<br />
– Muy utilizado para<br />
simular entornos<br />
31
Mapeado (VIII)<br />
• En las trasparencias anteriores sólo se<br />
tenía en cuenta la figura contenedora.<br />
• A la ahora de proyectar o mapear la<br />
textura hay que establecer un método que<br />
nos permita extraer las coordenadas del<br />
objeto para luego proyectarlas sobre la<br />
figura contenedora (definir el map entity):<br />
– Posición respecto a la BB<br />
– Normal de la superficie<br />
– Centroide del objeto<br />
– Refle Reflexión ión del punto p nto de vista ista del observador<br />
obser ador<br />
sobre el objeto<br />
32
Mapeado (IX)<br />
• Dependiendo de la figura envolvente unos<br />
métodos ét d ffuncionarán i á mejor j que otros t<br />
Mapeado<br />
Cilíndrico<br />
MMapeado d<br />
Esférico<br />
33
• Mapeado u,v.<br />
Mapeado (X)<br />
– A cada vértice se le asigna una<br />
coordenada de textura<br />
– El mapeado se genera de forma<br />
explícita (más difícil de modelar)<br />
– Mucho más potente<br />
– Se suelen utilizar coordenadas<br />
normalizadas li d en ttexturas t cuadradas. d d<br />
– En texturas no cuadradas se utiliza la<br />
posición p del texel.<br />
– Mapeado no lineal<br />
34
• Proyectar la textura<br />
– Se proyecta la textura<br />
como si se tratase de<br />
un foco<br />
– Shadow mapping<br />
– Utilizado por Pixar (se<br />
utilizó en Toy Story)<br />
Mapeado (XI)<br />
35
Mapeado (XI)<br />
• Mapeado en texturas 3D<br />
– No se necesita figura envolvente<br />
– La obtención del valor es directa<br />
– Coste computacional potencialmente<br />
elevado.<br />
36
Dificultades<br />
• Diferencias entre las coordenadas del modelo y<br />
llas coordenadas d d dde lla escena virtual i t l<br />
– Se produce cuando se generan las coordenadas de<br />
textura de forma automática.<br />
– Diferencia entre coordenadas de la textura y<br />
coordenadas del mundo<br />
• Posible efecto no deseado<br />
37
• Aliasing<br />
Dificultades: aliasing<br />
– Las fronteras de las primitivas aparecen<br />
escalonadas<br />
– Repetir el rasterizado desplazando la rejilla<br />
(2 (x2, x4…). 4 )<br />
– Fusionar los distintos resultados<br />
38
Dificultades: aliasing<br />
39
Dificultades: aliasing<br />
• Aliasing g en texturas<br />
– Al proyectar una textura, ¿qué<br />
texel escoger?<br />
– UUndersampling: d li MMuestreo t<br />
demasiado bajo<br />
– Puede que el texel no sea<br />
representativo<br />
•Fronteras o te as esca escalonadas o adas<br />
• Información incorrecta<br />
– Se mapean p los 4 vértices del<br />
píxel sobre la textura.<br />
40
Dificultades: aliasing<br />
Supersampling<br />
Supe sa p g<br />
- Se toman las 4 esquinas del píxel y se<br />
proyectan. t<br />
- Se po ponderan de a los os 4 valores a o es obte obtenidos dos<br />
41
Dificultades: aliasing<br />
Prefiltering<br />
- Se trata el píxel como una región en<br />
la textura<br />
- Se pondera p esa región g<br />
-Costoso<br />
42
Dificultades: aliasing<br />
• Aliasing g en texturas<br />
– <strong>Texturas</strong> multimapa (mipmap)<br />
p)<br />
• Ajusta la textura según la<br />
resolución<br />
• Calculadas en preproceso<br />
(más rápidas)<br />
• Para su generado automático<br />
tiene que ser potencia de 2<br />
• En la fase de mapeo de<br />
texturas se escoge el nivel de<br />
detalle que mejor ajuste la<br />
región<br />
43
Dificultades: aliasing<br />
• Aliasing en texturas<br />
– Filtrados<br />
• Bilineal<br />
– Interpolación con 4 téxeles<br />
– Se combina con mid mid-maps maps<br />
– Problema en la transición de niveles<br />
– Blur<br />
• Trilineal<br />
– Interpolado del filtrado bilineal entre los niveles midmaps<br />
más cercanos<br />
– Blur<br />
44
Dificultades: aliasing<br />
• Aliasing en texturas<br />
• Filtrado anisotrópico (AF)<br />
– No utiliza mipmaps<br />
– Calcula la textura inline<br />
– Útil cuando se necesita más resolución en alguna<br />
di dirección ió<br />
– A la hora de generar la textura tiene en cuenta la<br />
orientación de la primitiva<br />
– Costoso computacionalmente, requiere mucha memoria<br />
– Se ha empezado a utilizar recientemente<br />
– No introduce emborronamiento, conserva el detalle<br />
– Sistema basado en máscaras elípticas p<br />
45
Dificultades<br />
Sin filtrado Filtrado bilineal Filtrado bilineal Filtrado anisotrópico<br />
Figure 1. Comparison of isotropic and anisotropic texture filtering.<br />
46
Bilineal<br />
47
Trilineal<br />
48
Anisotrópico<br />
49
Limitaciones texturas tradicionales<br />
• Tienen una resolución limitada.<br />
– Cantidad de memoria que ocupan.<br />
– Mayor detalle significa más submuestreos y<br />
filtrados.<br />
• MMultiresolución lti l ió artesanal t l<br />
– Implica retocar a mano.<br />
• La repetición de texturas (tilling)<br />
– Complica su dibujo si se quiere un diseño<br />
atractivo.<br />
50
<strong>Texturas</strong> procedurales<br />
p<br />
• Son algoritmos matemáticos (programas)<br />
a partir de los que se construye la imagen<br />
de la textura.<br />
– Si están en la GPU se llaman shaders shaders.<br />
• Surgieron como forma sencilla de<br />
sintetizar texturas.<br />
/* Copyrighted Pixar 1988 */<br />
/*<br />
* blue_marble(): a marble stone texture in shades of blue<br />
* surface<br />
*/<br />
blue_marble(<br />
float Ks = .4,<br />
Kd = .6,<br />
Ka = .1,<br />
roughness = .1,<br />
txtscale = 1;<br />
color specularcolor = 1)<br />
{<br />
point PP; /* scaled point in shader space */<br />
float csp; /* color spline parameter */<br />
point Nf; /* forward-facing normal */<br />
point V; /* for specular() */<br />
float píxelsize, twice, scale, weight, turbulence;<br />
Nf = faceforward( normalize(N), I);<br />
V = normalize(-I);<br />
PP = transform("shader", P) * txtscale;<br />
píxelsize = sqrt(area(PP));<br />
twice = 2 * píxelsize;<br />
turbulence = 0;<br />
for (scale = 1; scale > twice; scale /= / 2)<br />
turbulence += scale * noise(PP/scale);<br />
if (scale > píxelsize) {<br />
weight = (scale / píxelsize) - 1;<br />
weight = clamp(weight, 0, 1);<br />
turbulence += weight * scale * noise(PP/scale);<br />
}<br />
csp = clamp(4 * turbulence - 3, 0, 1);<br />
Ci = color spline(csp,<br />
color (0.25, 0.25, 0.35), /* pale blue */<br />
color (0.25, 0.25, 0.35), /* pale blue */<br />
color (0.20, 0.20, 0.30), /* medium blue */<br />
color (0 (0.20, 20 00.20, 20 00.30), 30) /* medium blue */<br />
color (0.20, 0.20, 0.30), /* medium blue */<br />
color (0.25, 0.25, 0.35), /* pale blue */<br />
color (0.25, 0.25, 0.35), /* pale blue */<br />
color (0.15, 0.15, 0.26), /* medium dark blue */<br />
color (0.15, 0.15, 0.26), /* medium dark blue */<br />
color (0.10, 0.10, 0.20), /* dark blue */<br />
color (0.10, 0.10, 0.20), /* dark blue */<br />
color (0.25, 0.25, 0.35), /* pale blue */<br />
color (0.10, 0.10, 0.20) /* dark blue */<br />
);<br />
Ci *= Ka*ambient() + Kd*diffuse(Nf );<br />
Oi = Os;<br />
Ci = Ci * Oi;<br />
Ci += specularcolor * Ks * specular(Nf,V,roughness);<br />
}<br />
51
Procedurales: ejemplos<br />
52
• Densidad<br />
Procedurales: ventajas j<br />
– Mapa de bits: discreto.<br />
– Textura procedural: para todo Rn Textura procedural: para todo R<br />
• No tienen por qué ser repetitivas.<br />
• No hay “tiling”.<br />
• MMultirresolución lti l ió<br />
Textura<br />
procedural<br />
Textura<br />
bitmap<br />
Zoom x1 Zoom x2 Zoom x4<br />
53
Procedurales: desventajas<br />
• No se dibujan.<br />
– Las herramientas habituales no sirven.<br />
• Pueden ser sorprendentes: a veces es<br />
muy difícil predecir el resultado.<br />
• Computacionalmente voraces<br />
– Ejecución en GPU GPU.<br />
• ¿Geometrías ¿ complejas? p j<br />
54
Procedurales: varios<br />
• Descomposición en varios mapas o<br />
ttexturas t proc. más á simples: i l áárboles b l<br />
• Implícitas: el valor de un píxel se obtiene<br />
en cualquier instante.<br />
• Explícitas: requieren un preprocesado (en<br />
un determinado orden). orden) El valor de un<br />
píxel depende de los de alrededor.<br />
• Se programan en OpenGL, CG, C, Perl,<br />
MATLAB MATLAB, …<br />
55
Compresión de texturas<br />
• Cuanto más detalle tienen las texturas,<br />
lógicamente ocupan más espacio en<br />
memoria y son costosas de tratar.<br />
Normalmente, las texturas se van alojando<br />
en la memoria de la tarjeta gráfica con un<br />
algoritmo LRU: least recently used<br />
• Algoritmo de S3: S3TC. Usado en DirectX.<br />
• Al Algoritmo it dde 3df 3dfx: FXT1<br />
56
Efectos (I)<br />
• Con las texturas podemos simular efectos<br />
complejos l j<br />
– exclusivos de los modelos de sombreado<br />
globales<br />
– simplificar otros efectos<br />
57
Efectos (II) ( )<br />
• Multitexturing<br />
– Se pueden aplicar varias<br />
texturas a un modelo<br />
• Una con información de<br />
color y otra con un texture<br />
bbumping i<br />
• Fusionar dos texturas con<br />
información de color color…<br />
– Renderizar sobre una<br />
textura<br />
• Es la base de multitud de<br />
técnicas<br />
– Environmental Mapping<br />
58
Efectos (III)<br />
• Generación de sombras en tiempo<br />
real<br />
– Existen multitud de técnicas<br />
– PProyectar t una textura t t es una de d las l<br />
más sencillas<br />
• Dividir los objetos en sombreadores<br />
( (generadores d dde sombra) b ) y objetos bj t<br />
sombreados (objetos sobre los que se<br />
proyecta la sombra)<br />
• Crear un buffer de color en blanco y<br />
negro<br />
• Deshabilitar texturas, luces …<br />
• Renderizar los objetos sombreadores<br />
desde el foco lumínico.<br />
• Almacenar el buffer de color en una<br />
textura<br />
• Renderizar la escena proyectando la<br />
textura sobre los objetos sombreados,<br />
utilizando una matriz de proyección<br />
que se usó para generar la textura.<br />
59
• Reflejos<br />
– Plano de simetría<br />
Efectos (IV)<br />
Objeto de la escena<br />
• Se renderiza la escena<br />
en la posición simétrica<br />
al observador<br />
• Se utiliza como plano de<br />
simetría el mismo que<br />
contiene al usuario<br />
• Se almacena el buffer de<br />
color en una textura<br />
Plano de simetría<br />
• Se renderiza la escena<br />
utilizando la textura<br />
generada en el paso<br />
anterior en el espejo<br />
• Sólo es valido para<br />
objetos planos<br />
Centro de proyección<br />
Espejo<br />
COP simétrico<br />
60
• Reflejos<br />
– Mapeo de entornos<br />
Efectos (V) ( )<br />
• Más flexible que la técnica anterior y más usada<br />
• Se utiliza la posición de la cámara y la normal del<br />
objeto para generar la coordenada de textura<br />
• Mapeado circular<br />
– 1 textura<br />
– Difícil generar la textura en tiempo real<br />
– Textura preprocesada<br />
• Mapeado parabólico dual<br />
– Es el mismo principio que subyace en las lentes<br />
parabólicas<br />
– Función de mapeado<br />
– 2 parábolas, p , 2 imágenes g<br />
– Las imágenes pueden generarse en tiempo real<br />
• Mapeado cúbico<br />
– 6 texturas<br />
– El más utilizado<br />
– Fácil generar la textura en tiempo real (ajustar<br />
frustrums)<br />
61
• Reflejos<br />
– Mapeo de entornos<br />
•Ejemplos: j p<br />
Efectos (III)<br />
– Comparación con Ray-Tracing<br />
62
Efectos (IV)<br />
• Image Based Rendering<br />
– Utilizamos un conjunto<br />
de mapas p de bits ppara<br />
representar un objeto<br />
– Dependiendo del punto<br />
de vista mostramos un<br />
bit bitmap u otro. t<br />
63
Ejemplo j p ( (I) )<br />
– Mapa p difuso del ojo j<br />
(mapeado plano)<br />
– Mapa de brillos del ojo<br />
– Textura facial<br />
(mapeado cilíndrico)<br />
– Mapa de brillos de la<br />
cara<br />
– BumpMap<br />
64