14.04.2013 Views

Texturas - DAC

Texturas - DAC

Texturas - DAC

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!