Este documento describe diferentes técnicas avanzadas para la visualización y reproducción de texturas. Explica el mapeo de texturas, incluyendo el mapeo sobre superficies paramétricas y dependientes de la vista. También cubre técnicas como el bump mapping, texturas 3D, texturas procedimentales y el uso de fractales para generar paisajes naturales como montañas, nubes, fuego y agua.
5. Texturas Mapeo de texturas Consiste en una transformación de coordenadas, pasamos de 2D (u,v) a 3D (x,y,z). El color del pixel se modifica en función del color de la correspondiente imagen a mapear
6. Texturas Mapeo de texturas La imagen es habitualmente una matriz de muestras, reconstruiremos una imagen continua a partir de esas muestras. Se transforma para adaptarse a la deformación del objeto sobre el que se mapea. Finalmente se aplica un filtro para evitar el aliasing (habitual el mipmapping)
7. Texturas Mapeo de texturas La técnica básica se aplica una imagen a un polígono, ajustanto los vértices a las coordenadas de la textura e interpolando en los puntos interiores al polígono.
8. Texturas Mapeo de texturas Para superficies más complejas, una primera técnica utiliza superficies intermedias, cuyas funciones de transformación son conocidas (cilindros, esferas, ...)
22. Texturas. Anti aliasing Pero sólo hemos indicado el mapeo de las esquinas, ¿qué hacemos en los puntos interiores? Habitualmente se utiliza una imagen virtual de mayor resolución, y el tono del pixel viene dado por el promedio de una serie de pixels de dicha imagen virtual.
23.
24.
25.
26. v v u u Texturas Mapeo sobre superficies paramétricas Utilizamos los parámetros que definen la superficie para movernos en el espacio de textura.
27. Texturas Mapeos dependientes de la vista (cambia con las transformaciones) Afín al trazado de rayos. Para cada pixel se construye un rayo, el pixel está asociado a un polígono. Para cada vértice del polígono hemos calculado una normal (Phong), calculamos con la normal su vector de reflexión o refracción, y este vector nos asignará un valor de la textura al proyectar el rayo sobre la zona de textura.
39. Texturas Mapeo del entorno El mejor resultado se obtiene rodeando el objeto en cuestión por una esfera que rodea la escena, y calculando la intersección del rayo con ella
40.
41. Para la rugosidad se introduce en la definición de la superficie una variación aleatoria sobre la definición de la superficie.
42.
43. Texturas Bump Mapping Podemos calcular el producto vectorial de las parciales para obtener la nueva normal
44. Texturas Bump Mapping Planteando el producto vectorial, y suponiendo una perturbación pequeña obtenemos la nueva normal:
47. Texturas Texturas 3D (Peachey, Perlin y Gardner 1985) RGB: El color asignado es el de la posición 3D, es decir, para el punto del espacio (x y z) tomamos el color del punto (x y z) del espacio RGB.
48. Texturas Texturas 3D (Peachey, Perlin y Gardner 1985) Una textura sólida puede verse como la creación de un espacio de color tridimensional que rodea al objeto. Al pintar el objeto o simplemente quitamos el espacio sobrante. Ebert hace uso de ruido y turbulencias para tal fin, e incluso la transparencia de una textura sólida.
49. Texturas Texturas 3D Madera: Se suponen cilindros concéntricos (años del árbol). Aquellos valores (x y z) pertenecientes a un cilindro toman el valor oscuro o en otro caso el valor claro (rangos de r). Cilindros
50. Texturas Texturas 3D Podemos además torcer el cilindro a lo largo de su eje. a y b son constantes en este ejemplo. Madera Para simular la desviación de los cilindros aplicamos por ejemplo una sinusoidal al radio. q=tan-1(x/z)
56. Texturas procedimentales Animando espacios sólidos Un ejemplo que rota sobre el eje z cada 100 frames theta=(nframe%100)*(2*M_PI/100); path.x=cos(theta); path.y=sin(theta); path.z=theta*veloc_lineal;
57. Texturas procedimentales Animando espacios sólidos Aplicar sobre la textura las dos variantes tiene efectos distintos El mármol se obtiene gracias a la mezcla turbulenta de franjas de rocas diferentes. Con la primera aproximación podemos obtener el proceso de formación del mármol. El proceso se consigue incrementando la turbulencia en función del tiempo, así en el primer instante sólo el seno define el color del pixel.
59. Texturas procedimentales Animando espacios sólidos Las primeras imágenes no tendrán variación, es decir, la turbulencia será nula, el color vendrá dado por el seno. Aumentando el número de frame la turbulencia se irá incrementando, deformando las bandas Cambiar el color del mármol puede ayudar a dar mayor realismo, simulando el calentamiento antes y durante la deformación, dependerá nuevamente del frame en el que nos encontremos
60. Texturas procedimentales Animando espacios sólidos La otra variante, es decir, mover el punto por el espacio de turbulencia ofrece un efecto diferente. Puede elegirse una trayectoria lineal, o aplicarle una turbulencia, o una helicoidal (el resultado más interesante) Recorremos hacia abajo por lo que tenemos la sensación de movimiento hacia arriba
68. Fractales En la figura ejemplo la longitud es , esto indica que no puede medirse o describirse con una medida unidimensional. Por otro lado su área es nula, luego tampoco puede describirse con una medida bidimensional. ¿Cómo describirlo? ¿Qué regla puede medirlo? Asignamos una dimensión fraccionaria entre 1 y 2, la dimensión fractal, dimensión en la que sí podremos medir el objeto.
69. Fractales Estamos habituados a utilizar sólo cuatro escalas de medidas, son las distintas dimensiones Dimensión 0, contar Dimensión 1, longitud Dimensión 2, área Dimensión 3, volumen Para estos objetos diferentes buscaremos una dimensión donde su expresión para el límite cuando k no sea ni 0 ni , en definitiva, que ofrezca un valor medible. Para este tipo de fractales deterministas la dimensión se obtiene como
70. Fractales Los utilizaremos para generar objetos con apariencia más natural, en la naturaleza encontramos autosimilitud hasta cierto orden, como en los fractales.
75. Fractales IFS (Iterated Function Systems) Para obtenerlo hemos visto que partimos de una imagen original a la que sustituimos en base a una regla. Para von Koch el elemento inicial se escalaba a 1/3 de su longitud y se formaba un nuevo elemento a partir de cuatro copias escaladas del original, si bien los nuevos elementos se trasladaban y rotaban también
76.
77. Partiendo de un segmento recto o de una R, al final obtenemos un fractal idéntico.
82. Fractales Montañas con un esquema similar a Sierpinski, pero en lugar de escoger el punto medio introducimos un desplazamiento aleatorio, y sin olvidar el triángulo central.
84. Fractales Una función de movimiento browniano (fBm) resulta un movimiento homogéneo (igual en todas partes) e isotrópico (igual en todas direcciones) La naturaleza no es así, necesitamos funciones heterogéneas
85. Fractales Los multifractales son fractales que requieren multiplicidad de medidas (dimensiones fractales) para caracterizarlos Son fractales cuya dimensión varía según la posición
86. Fractales Nubes Representación de nubes delgadas en un cielo azul, basta con una fBm con umbral, por debajo de un valor aplicamos cielo azul.
92. Fractales Agua Utilizando bump mapping, se necesita una fBm para cada coordenada. El resultado perturba la normal utilizando una función fractal con dos octavos.
93. Fractales Agua Pero en la realidad hay menos homogeneidad, el viento afecta, es un flujo turbulento, un fractal
106. Fractales Terrenos fractales Los paisajes aparecieron trazando una función de dimensión 1.2 Recordaba al perfil de una montaña Extensión a 2D
107. Fractales Dimensión 2.2 obtenemos un paisaje rugoso pero homogéneo La dimensión da información sobre la rugosidad del objeto. Aumentando la dimensión fractal añadimos tensión. Variando de 2.0 a 3.0 (derecha)
108. Fractales Terrenos fractales Los mismos procedimientos utilizados para generar texturas pueden emplearse para generar terrenos, el valor devuelto no indicará un color sino la altura. Musgrave comenzó realizando subdivisión poligonal, el resultado tiene el aspecto de homogeneidad
114. Fractales Terrenos fractales Un campo de altura es una matriz de datos bidimensional, cada punto tiene una altura asociada. Existen distintos formatos de ficheros. La limitación de una altura por punto impide la existencia de cuevas, y no resulta sencilla de evitar. El campo de altura se adapta muy bien a trazadores de rayos
119. Fractales Terrenos fractales Modelos de terreno heterogéneos Los terrenos reales son heterogéneos, hay erosión, comportamientos tectónicos etcétera. Un primer detalle, los terrenos más bajos suelen ser más suaves, la áreas altas suelen ser más afiladas
130. Existen dos conjuntos sencillos que parten de la reglaUn nuevo número complejo, zn+1 , se calcula a partir de otro previo, zn , al que le sumamos una constante compleja. Ambos conjuntos Julia y Mandelbrot utilizan el plano complejo como área de dibujo.
131. Fractales Con el esquema de Julia se escoge un valor para c, y siendo éste conocido recorremos todo el plano complejo, en cada punto tomamos z0como las coordenadas del punto e iteramos. Si después de realizar n iteraciones el valor actual de z no se ha disparado asociamos al pixel el color negro, en otro caso asociamos al pixel un color asociado a la iteración en la que se superó un cierto umbral. Variando c obtenemos distintas figuras.
132. Fractales El esquema de Mandelbrot cambia ligeramente al asociar c con las coordenadas del punto del plano complejo y escogiendo z0=0.