You are on page 1of 16

Bibliografía

• Alan Watt. 3D Computer Graphics.


Addison-Wesley. Third Edition. 2000
Texturas • David S. Ebert y otros. Texturing &
Modeling. A Procedural Approach. Morgan
Kaufmann. Third Edition. 2003
• …

1 2

Índice Introducción
• Introducción • Mapeado • Mapa de texturas: colección o array n-
• Historia • Dificultades dimensional de valores.
• Clasificación • Texturas
• Color procedurales
• En OpenGL, se utilizan en la etapa de
• Iluminación • Compresión
rasterizado.
• Transparencia • Efectos
• Normales • Ejemplos
• Información sobre cualquier atributo que
• Geometría
se vaya a aplicar.
3 4
Introducción Apuntes históricos
• La utilización de texturas: • 1974. Ed Catmull utiliza mapas de
– Aumenta el realismo de la imagen sin texturas por primera vez.
aumentar número de polígonos. • 1976. Blinn y Newell introducen los mapas
– Proporciona una clave para la percepción de de reflexión o de entorno.
la profundidad.
• 1978. Blinn introduce los mapas de
– Permite simular multitud de efectos: sombras,
reflejos, entornos, ...
abolladuras (bump mapping)
• GPGPU • 1984. Cook los extiende creando los
mapas de desplazamiento
5 6

Apuntes históricos (2)


• 1985. Peachey y Perlin describen las
texturas sólidas como alternativa a las
tradicionales texturas 2D.
• 1987. Reeves, Salesin y Cook: algoritmo
para generación de sombras sin aliasing
utilizando texturas (shadow mapping).

7 8
Clasificación (I)
Clasificación (II)
• Según el número de dimensiones
– Unidimensionales • Según el número de
• Poco usadas dimensiones
• Bandas que varían en una sola dirección
- Texturas cúbicas
– Bidimensionales
- Extensión de las texturas
• Las más frecuentes
bidimensionales
• Suelen ser cuadradas y potencias de 2
- Muy usadas en mapeos de
• No tienen porque ser estáticas
entornos.
– Vídeos
– Funciones matemáticas – Tridimensionales
» Texturas procedurales • Permiten mostrar datos
• Pueden generarse dinámicamente volumétricos

9 10

Clasificación (III) Color: mapas difusos


• Tipo de información que almacenan
– Color
• Diffuse Maps
• Specular Maps
• Definen cómo el objeto
– Iluminación refleja la luz difusa.
• Light Maps
– Transparencia
• Alpha Blending • Son las más utilizadas.
– Normales
• Bump Maps
• Normal Maps • Contiene el color base
• Parallax Map del mismo.
– Geométrica
• Heightmap
• Displacement Maps
–…
11 12
Color: mapas especulares Iluminación: mapas de luz
• Etapa de sombreado:
• Definen propiedades del objeto sobre cómo – El nº de luces aumenta la complejidad del
refleja la luz especular. sombreado.
• La reflexión de la luz no es igual en toda la – De las etapas más costosas.
superficie de un objeto: suciedad, humedad,
– Las tarjetas limitan el número máximo de
huella dactilar,...
luces que se pueden utilizar.

13 14

Iluminación: mapas de luz Iluminación: mapas de luz


• Extensión de los mapas de texturas: • Ventajas:
– La luz se preprocesa. – Ahorro en tiempo y cómputo.
– Se muestrea la luz reflejada por la superficie – Con un precálculo preciso se pueden obtener
del objeto. mejores resultados que con Gouraud.
– Se almacena en un mapa de textura 2D. – Facilita trabajar con escenas complejas.
• Limitaciones:
– Fuentes de luz fijas.
– Peores resultados sobre objetos en
movimiento.
• Posible compromiso.
15 16
Transparencia: mapas alpha Normales: bump mapping
• “Complementario”: mapas de opacidad.
• α=1 objeto opaco; α=0 objeto • Texturas en escala de grises.
transparente. • El mapa de bollos almacena la
• La información de transparencia se profundidad del fragmento.
almacena en escala de grises • Modificación de normales para dar
Utiliza el mismo mapa como textura especular
sensación de relieve.

17 18

Normales: mapa de normales Normales


• Texturas RGB (R→X, G →Y, B →Z)
• Se almacenan los vectores tangentes a la
superficie:
– Normal hacia delante (127,127,255) → (0,0,1)
– Tonos azules: vectores normales.
– Tonos rojos: variación horizontal.
– Tonos verdes: variación vertical.
• Son más potentes que los mapas de
bollos.
• Estos se pueden transformar en mapas de
19 20
normales
Normales: parallax mapping Normales: parallax mapping
• También offset mapping o virtual
displacement mapping
• Mejora sobre los mapas de normales.
• Se usan en aplicaciones con renderizado
3D: videojuegos.
• Texturas con auto-oclusión en función del
punto de vista del usuario.
• Las texturas tienen mayor sensación de
profundidad y realismo.
21 22

Geometría Geometría

• En la textura se almacena el
desplazamiento de los fragmentos.
• Las texturas pueden almacenar: valores
no normalizados y en coma flotante
• Mapas de altura o de desplazamiento
– Almacenan información de la altura.
– Escalas de grises.
– Permiten auto-oclusiones, auto-sombras y
siluetas.
23 24
Comparación Mapeado (I)
• Texture mapping: Se debe definir una
Ruido
(lattice noise)
correspondencia entre el modelo y la textura
(píxels y texels)
– Estas técnicas envuelven el objeto en algún tipo de
figura o volumen contenedor (map shape)
Mapas de desplazamiento Mapas de normales

25 26

Mapeado (III) Mapeado (IV)


• Mapeado plano • Mapeado Cilíndrico
– Se proyecta la figura sobre un plano – El objeto se envuelve en un
– Se debe definir la orientación del cilindro
plano – Las coordenadas del objeto se
– Problemas en las zonas superiores transforman a coordenadas
– El más sencillo cilíndricas
• (x,y,z)->(radio, ángulo, altura)
– Utilidad reducida
– A la hora de proyectar la textura
– Ejemplos: sólo se tiene en cuenta el ángulo
1. Se ha anulado la coordenada z. El y la altura.
color no varía con dicha coordenada.
– Debe tenerse en cuenta la
2. En el resto de ejemplos se eliminan orientación del cilindro
distintas coordenadas.

27 28
Mapeado (V) Mapeado (VI)
• Mapeado esférico • Comparación entre el mapeado
– El objeto se envuelve en
una esfera
esférico y el cilíndrico.
– (x,y,z)->(r,alpha,theta) – El mapeado esférico tiene más
– Para el mapeo sólo se usa resolución de la necesaria en los
alpha y theta polos
– Depende de la forma en la
que la textura se envuelva – El mapeado cilíndrico está muy
alrededor de la esfera. limitado a la hora de representar la
parte superior de los objetos

29 30

Mapeado (VII) Mapeado (VIII)


• En las trasparencias anteriores sólo se
• Mapeado cúbico tenía en cuenta la figura contenedora.
– Se envuelve el objeto • A la ahora de proyectar o mapear la
en un cubo textura hay que establecer un método que
– Similar al mapeado nos permita extraer las coordenadas del
plano objeto para luego proyectarlas sobre la
– Muy utilizado para figura contenedora (definir el map entity):
simular entornos – Posición respecto a la BB
– Normal de la superficie
– Centroide del objeto
– Reflexión del punto de vista del observador
31
sobre el objeto 32
Mapeado (IX) Mapeado (X)
• Mapeado u,v.
– A cada vértice se le asigna una
coordenada de textura
• Dependiendo de la figura envolvente unos – El mapeado se genera de forma
explícita (más difícil de modelar)
métodos funcionarán mejor que otros – Mucho más potente
– Se suelen utilizar coordenadas
normalizadas en texturas cuadradas.
– En texturas no cuadradas se utiliza la
Mapeado posición del texel.
Cilíndrico – Mapeado no lineal

Mapeado
Esférico

33 34

Mapeado (XI) Mapeado (XI)


• Mapeado en texturas 3D
• Proyectar la textura
– Se proyecta la textura
– No se necesita figura envolvente
como si se tratase de – La obtención del valor es directa
un foco – Coste computacional potencialmente
– Shadow mapping elevado.
– Utilizado por Pixar (se
utilizó en Toy Story)

35 36
Dificultades Dificultades: aliasing
• Diferencias entre las coordenadas del modelo y • Aliasing
las coordenadas de la escena virtual – Las fronteras de las primitivas aparecen
– Se produce cuando se generan las coordenadas de escalonadas
textura de forma automática.
– Diferencia entre coordenadas de la textura y
– Repetir el rasterizado desplazando la rejilla
coordenadas del mundo (x2, x4…).
• Posible efecto no deseado – Fusionar los distintos resultados

37 38

Dificultades: aliasing Dificultades: aliasing


• Aliasing en texturas
– Al proyectar una textura, ¿qué
texel escoger?
– Undersampling: Muestreo
demasiado bajo
– Puede que el texel no sea
representativo
• Fronteras escalonadas
• Información incorrecta
– Se mapean los 4 vértices del
píxel sobre la textura.

39 40
Dificultades: aliasing Dificultades: aliasing
Supersampling Prefiltering
- Se toman las 4 esquinas del píxel y se - Se trata el píxel como una región en
proyectan.
la textura
- Se ponderan los 4 valores obtenidos - Se pondera esa región
- Costoso

41 42

Dificultades: aliasing Dificultades: aliasing


• Aliasing en texturas • Aliasing en texturas
– Texturas multimapa (mip- – Filtrados
map) • Bilineal
• Ajusta la textura según la – Interpolación con 4 téxeles
resolución
– Se combina con mid-maps
• Calculadas en preproceso
(más rápidas) – Problema en la transición de niveles
• Para su generado automático – Blur
tiene que ser potencia de 2 • Trilineal
• En la fase de mapeo de – Interpolado del filtrado bilineal entre los niveles midmaps
texturas se escoge el nivel de más cercanos
detalle que mejor ajuste la
– Blur
región

43 44
Dificultades: aliasing Dificultades
• Aliasing en texturas
• Filtrado anisotrópico (AF)
– No utiliza mipmaps
– Calcula la textura inline
– Útil cuando se necesita más resolución en alguna
dirección
Sin filtrado Filtrado bilineal Filtrado bilineal Filtrado anisotrópico
– A la hora de generar la textura tiene en cuenta la
orientación de la primitiva
– Costoso computacionalmente, requiere mucha memoria
– Se ha empezado a utilizar recientemente
– No introduce emborronamiento, conserva el detalle
– Sistema basado en máscaras elípticas
45 Figure 1. Comparison of isotropic and anisotropic texture filtering. 46

Trilineal
Bilineal

47 48
Anisotrópico Limitaciones texturas tradicionales
• Tienen una resolución limitada.
– Cantidad de memoria que ocupan.
– Mayor detalle significa más submuestreos y
filtrados.
• Multiresolución artesanal
– Implica retocar a mano.
• La repetición de texturas (tilling)
– Complica su dibujo si se quiere un diseño
atractivo.
49 50

Texturas procedurales Procedurales: ejemplos


• Son algoritmos matemáticos (programas)
a partir de los que se construye la imagen
de la textura.
– Si están en la GPU se llaman shaders.
• Surgieron como forma sencilla de
sintetizar texturas.
if (scale > píxelsize) {
/* Copyrighted Pixar 1988 */
weight = (scale / píxelsize) - 1;
/*
weight = clamp(weight, 0, 1);
* blue_marble(): a marble stone texture in shades of blue
turbulence += weight * scale * noise(PP/scale);
* surface
}
*/
blue_marble(
csp = clamp(4 * turbulence - 3, 0, 1);
float Ks = .4,
Ci = color spline(csp,
Kd = .6,
color (0.25, 0.25, 0.35), /* pale blue */
Ka = .1,
color (0.25, 0.25, 0.35), /* pale blue */
roughness = .1,
color (0.20, 0.20, 0.30), /* medium blue */
txtscale = 1;
color (0.20, 0.20, 0.30), /* medium blue */
color specularcolor = 1)
color (0.20, 0.20, 0.30), /* medium blue */
{
color (0.25, 0.25, 0.35), /* pale blue */
point PP; /* scaled point in shader space */
color (0.25, 0.25, 0.35), /* pale blue */
float csp; /* color spline parameter */
color (0.15, 0.15, 0.26), /* medium dark blue */
point Nf; /* forward-facing normal */
color (0.15, 0.15, 0.26), /* medium dark blue */
point V; /* for specular() */
color (0.10, 0.10, 0.20), /* dark blue */
float píxelsize, twice, scale, weight, turbulence;
color (0.10, 0.10, 0.20), /* dark blue */
color (0.25, 0.25, 0.35), /* pale blue */
Nf = faceforward( normalize(N), I);
color (0.10, 0.10, 0.20) /* dark blue */
V = normalize(-I);
);
PP = transform("shader", P) * txtscale;
píxelsize = sqrt(area(PP));
Ci *= Ka*ambient() + Kd*diffuse(Nf );
twice = 2 * píxelsize;
Oi = Os;
turbulence = 0;
Ci = Ci * Oi;
for (scale = 1; scale > twice; scale /= 2)
Ci += specularcolor * Ks * specular(Nf,V,roughness);
turbulence += scale * noise(PP/scale);
}

51 52
Procedurales: ventajas Procedurales: desventajas
• Densidad • No se dibujan.
– Mapa de bits: discreto. – Las herramientas habituales no sirven.
– Textura procedural: para todo Rn • Pueden ser sorprendentes: a veces es
• No tienen por qué ser repetitivas. muy difícil predecir el resultado.
• No hay “tiling”. Zoom x1 Zoom x2 Zoom x4 • Computacionalmente voraces
• Multirresolución Textura
– Ejecución en GPU.
procedural
• ¿Geometrías complejas?
Textura
bitmap

53 54

Procedurales: varios Compresión de texturas


• Descomposición en varios mapas o • Cuanto más detalle tienen las texturas,
texturas proc. más simples: árboles lógicamente ocupan más espacio en
• Implícitas: el valor de un píxel se obtiene memoria y son costosas de tratar.
en cualquier instante. Normalmente, las texturas se van alojando
en la memoria de la tarjeta gráfica con un
• Explícitas: requieren un preprocesado (en
algoritmo LRU: least recently used
un determinado orden). El valor de un
píxel depende de los de alrededor. • Algoritmo de S3: S3TC. Usado en DirectX.
• Se programan en OpenGL, CG, C, Perl, • Algoritmo de 3dfx: FXT1
MATLAB, …
55 56
Efectos (I) Efectos (II)
• Multitexturing
• Con las texturas podemos simular efectos – Se pueden aplicar varias
texturas a un modelo
complejos • Una con información de
– exclusivos de los modelos de sombreado color y otra con un texture
bumping
globales • Fusionar dos texturas con
– simplificar otros efectos información de color…
– Renderizar sobre una
textura
• Es la base de multitud de
técnicas
– Environmental Mapping

57 58

Efectos (III) Efectos (IV)


• Generación de sombras en tiempo Objeto de la escena
• Reflejos
real Espejo
– Existen multitud de técnicas – Plano de simetría
– Proyectar una textura es una de las • Se renderiza la escena
más sencillas en la posición simétrica
• Dividir los objetos en sombreadores al observador
(generadores de sombra) y objetos
sombreados (objetos sobre los que se • Se utiliza como plano de
proyecta la sombra) simetría el mismo que
• Crear un buffer de color en blanco y contiene al usuario
negro Centro de proyección
• Deshabilitar texturas, luces … • Se almacena el buffer de
• Renderizar los objetos sombreadores color en una textura Plano de simetría
COP simétrico
desde el foco lumínico. • Se renderiza la escena
• Almacenar el buffer de color en una utilizando la textura
textura
• Renderizar la escena proyectando la generada en el paso
textura sobre los objetos sombreados, anterior en el espejo
utilizando una matriz de proyección
que se usó para generar la textura. • Sólo es valido para
59 objetos planos 60
Efectos (V) Efectos (III)
• Reflejos
– Mapeo de entornos
• Más flexible que la técnica anterior y más usada
• Se utiliza la posición de la cámara y la normal del • Reflejos
objeto para generar la coordenada de textura
• Mapeado circular – Mapeo de entornos
– 1 textura
– Difícil generar la textura en tiempo real • Ejemplos:
– Textura preprocesada – Comparación con Ray-Tracing
• Mapeado parabólico dual
– Es el mismo principio que subyace en las lentes
parabólicas
– Función de mapeado
– 2 parábolas, 2 imágenes
– Las imágenes pueden generarse en tiempo real
• Mapeado cúbico
– 6 texturas
– El más utilizado
– Fácil generar la textura en tiempo real (ajustar
frustrums)

61 62

Efectos (IV) Ejemplo (I)


– Mapa difuso del ojo
• Image Based Rendering (mapeado plano)
– Utilizamos un conjunto
de mapas de bits para – Mapa de brillos del ojo
representar un objeto
– Dependiendo del punto – Textura facial
de vista mostramos un (mapeado cilíndrico)
bitmap u otro.
– Mapa de brillos de la
cara

63 – BumpMap 64

You might also like