I. TEORÍA
2. Materiales virtuales
2.5 Simulación de texturas Métodos principales
Tipos de texturas y tipos de aplica-
ciones
La palabra textura, como ya hemos visto en el capítulo anterior, se aplica en dos sentidos principales, como texturas planas que se ca-
Materiales virtuales
racterizan porque no hay variación geométri- ca local pero sí variación de absorción (color), y texturas rugosas en las que ocurre básica- mente lo contrario: puede no haber variación de color pero hay variación geométrica que modifica el reflejo.
Las texturas planas se simulan por medio de proyecciones de imágenes planas. Son las más fáciles de simular y las que dan resulta- dos más satisfactorios. Sin embargo hay que tener en cuenta varios aspectos. Primero, el término “textura plana” es una descripción de variación local a pequeña escala, que vale tanto para un muro plano como para un muro curvo. Pero el método de proyección no será el mismo en los dos casos. Segundo, la reso- lución de la imagen que utilicemos debe ser “adecuada”, esto es, ni demasiado “grande” ni demasiado “pequeña”. Pero no es posible dar una respuesta sencilla de lo que quiere decir “grande” o “pequeña”. En tercer lugar, si la textura abarca una superficie muy grande, tendremos que hacer todo lo posible para po- der abarcarla con una textura más pequeña pero que se repita y, al mismo tiempo, hacer todo lo posible para evitar que estas repeticio- nes sean visibles. Estos problemas técnicos característicos se abordarán con más detalle en los capítulos siguientes.
Las texturas rugosas se pueden simular de tres modos principales. Primero, mediante una simulación del relieve al hacer el render, es decir, procesando el resultado en la pro- pia imagen, sin modificar la geometría de la escena. Esto se hace superponiendo a la tex- tura un tipo especial de mapa de proyección denominado mapa de relieve que, como ve- remos, puede ser de varios tipos. Segundo, mediante una simulación ligada a un mapa que lleva a cabo una modificación transitoria de la geometría del objeto durante la repre- sentación de la escena, pero que no altera la geometría de la escena de modo permanen- te. Tercero, mediante una modificación real y permanente de la geometría de la escena. El primer método es el más sencillo pero tam- bién el más limitado y puede resultar insufi- ciente si el relieve va a verse con suficiente
detalle. El segundo consume más recursos y no funciona igual de bien con todos los pro- gramas. Es recomendable para aquellos ca- sos en los que el relieve va a verse en primer plano, con suficiente detalle. El tercero solo está justificado en casos en los que el detalle se va a ver muy de cerca.
Las texturas se utilizan para una variedad de aplicaciones que también se analizarán en los capítulos siguientes. Las principales son las siguientes:
Modificación del color local o color difu- so. En el caso más corriente se produce una simple substitución: el color dado por los pa- rámetros básicos del material asignado a la superficie se substituye por el color dado por la textura.
Modificación del color o la intensidad espe- cular. Es una variante del caso anterior, para superficies reflectantes, en donde la textura se aplica solo a las partes brillantes (para si- mular efectos de reflexión del entorno) o se utiliza para modificar otras características del reflejo.
Modificación del relieve. En este caso el mapa se utiliza para alterar la geometría de la superficie de diversos modos tal como se ha avanzado antes.
Modificación de la transparencia. Si el mapa incorpora un canal alfa (un cuarto ca- nal añadido a los tres primarios, RGB) los valores de este canal pueden utilizarse para anular los valores superficiales de modo que se tengan en cuenta los de cualquier otra su- perficie que está en la misma línea de repre- sentación.
Creación de Lightmaps. En aplicaciones interactivas, principalmente en juegos de ví- deo, no es posible llevar a cabo un cálculo de iluminación de la escena a la velocidad reque- rida si la escena debe modificarse con rapidez para adaptarse a la interacción con el usuario. La solución es activar un único cálculo previo y convertir el resultado, los gradientes de ilu- minación, en textura y superponer esta textu- ra a la del material. Es un método que tiene bastante que ver con los métodos primitivos de simular reflejos por medio de mapas de
Simulación visual de materiales
entorno (environment maps) que se descri- ben también en los apartados siguientes.
Hay otras aplicaciones que también vere- mos pero estas son las principales.
Texture mapping (Catmull, 1974)
La proyección de texturas para incorporar de- talle a las superficies se comenzó a aplicar desde los comienzos de los métodos de simu- lación de materiales, concretamente a partir de la tesis doctoral presentada por Edwin Cat- mull (nacido en 1945 y hasta hace poco presi- dente de Walt Disney Animation Studios y de Pixar Animation Studios) en la Universidad de Utah, en 1974, y publicada al año siguiente.
El procedimiento básico sigue siendo el mismo aunque hay varios aspectos que con- vendrá recordar. El método presentado por Catmull estaba aplicado a parches paramé- tricos bicúbicos, lo que permitía solucionar limpiamente muchos problemas que apa- recen cuando la proyección de texturas se aplica a polígonos planos. De hecho, muchos de estos problemas se siguen evitando si se trabaja con NURBS (cuya parametrización interna es similar a los parches paramétricos utilizados por Catmull). El problema es que la mayoría de los modelos no utilizan NURBS ni parches paramétricos, que son herramientas sofisticadas y que solo se utilizan para mode- lar superficies de curvatura compleja, lo que en muchos modelos es algo innecesario.
El problema básico se resume en la figura 2.31. En el caso más general el problema es desarrollar una transformación que proyecta un espacio 2D (el espacio de textura) sobre otro espacio 2D (el espacio de la imagen de salida) a través de un espacio 3D (el espacio del objeto). Como veremos más adelante, en el caso de mapas o texturas procedurales, también se puede proyectar un espacio de textura 3D sobre un objeto 3D, lo que elimina muchos de estos problemas a costa de tener que utilizar un algoritmo puramente artificial.
El método de Catmull ligaba las coorde- nadas u, v, propias del espacio textura (o las coordenadas s, t, como las denominan otros autores para evitar confusión con las de los parches geométricos) con las coordenadas u, v, propias del parche paramétrico. Y, a par- tir de ahí, se llevaba a cabo una subdivisión recursiva de ambos espacios hasta que la subdivisión del parche paramétrico se corres- pondía con un único píxel. Al llegar a este es- tadio, el color del píxel se obtenía a partir del área correspondiente en el espacio de textu- ra. Este método es directo y fácil de aplicar. Lo sigue siendo, como decía, si contamos con elementos paramétricos.
Parafraseando un artículo posterior (véa- se Cook et al., 1987) se podría introducir una distinción entre texturas de acceso coherente (aquellas en las que la parametrización del espacio de texturas se puede relacionar di- rectamente con el espacio del objeto) y tex-
espacio textura s
t
espacio objeto espacio imagen
1 2 3 4 1 2 1 3 4 2 3 4 proyección x y z ximg yimg
Materiales virtuales
turas de acceso no coherente (aquellas que requieren una reparametrización).
También hay que mencionar que, debido a que el método utilizado subdividía los objetos de un modo no adecuado para los sistemas corrientes de representación, Catmull desa- rrolló un sistema alternativo, que denominó Z-Buffer, y que utilizaba una memoria adicio- nal para guardar la coordenada z del objeto desde el punto de vista de la cámara. De este modo, para cada elemento, se comparaba su coordenada z con las previamente alma- cenadas, lo que permitía descartar cualquier elemento cuya coordenada z fuera mayor que otro pues esto implicaria que no sería visible, quedaría oculto por el de coordenada z infe- rior. Por añadidura, facilitaba la combinación de resultados obtenidos por un algoritmo con resultados obtenidos por otros algoritmos, lo que abría la puerta a sistemas más flexibles que incorporasen diferentes técnicas. Este método, que en la época se consideró muy eficaz pero costoso en términos computacio- nales, pasó a convertirse en el más utilizado a medida que los ordenadores aumentaron su potencia de cálculo y está incorporado (con variantes, como el w buffer) a todas las tarje- tas gráficas actuales.
Si en lugar de esto tenemos un modelo ba- sado en caras poligonales, hay que resolver otras dificultades. Dado que toda la informa- ción con que contamos son las coordena- das de los vértices (x, y, z), será necesario parametrizar de algún modo el interior de las caras de los polígonos para poder estable- cer una correspondencia con el espacio de texturas. Si la cara es plana, esto no supone otra dificultad importante que la posible falta de correspondencia de las resoluciones, de las proporciones respectivas o de ambas, un problema que veremos con más detalle en la segunda parte de este libro. Sin embargo, si la cara no es plana, será necesario encontrar un método adecuado de proyectar el espacio de textura, plano, sobre la superficie. Una primera revisión sistemática de los tipos de proyecciones requeridos según los casos se encuentra en Heckbert (1986), que es una
buena introducción, aún vigente en muchos aspectos, a este tema. Los programas ac- tuales proporcionan amplios recursos para intentar abordar este problema, recursos que también veremos más adelante. Pero es im- portante tener presente que en muchos casos no existe una solución perfecta.
La proyección de texturas se ha aplicado de múltiples maneras y para conseguir todo tipo de efectos. En los capítulos siguientes analizaremos y pondremos ejemplos de todas las técnicas apropiadas para cada caso.
Por último, también hay que recalcar que los métodos de proyección de texturas dan lugar a varios tipos de “artefactos” o alias, que también se revisarán más adelante. En general, las transformaciones son perspecti- vas por lo que la proyección final no cae en una retícula regular, tal como se muestra en la figura 2.31 (centro). Esto requiere filtros que varían espacialmente (space variant filters) y que son más difíciles de aplicar pues deben modificarse según la posición del elemento al que se aplican.
Environment mapping (Blinn y Newell,
1976)
La proyección de texturas se utilizó, un par de años después de la aportación de Cat- mull, para simular reflejos. Este fue el pri- mer ejemplo de cómo la aplicación de ma- pas podía servir para algo más que para simular materiales con textura. Aunque ac- tualmente los reflejos se simulan por méto- dos de iluminación avanzada, este método se sigue utilizando y está estrechamente re- lacionado con toda una serie de técnicas de importancia, entre ellas Light mapping, que ya he mencionado. Por otra parte introduje- ron mejoras técnicas importantes al aplicar el método a casos más generales que los abordados por Catmull.
Blinn y Newell desarrollaron un método que consistía en dos pasos principales. En primer lugar, se obtenía una representación de la escena desde una cámara virtual si- tuada en el centro del objeto cuyos reflejos
Simulación visual de materiales
se querían simular. Esto resulta muy sencillo en escenarios virtuales pues todo lo que hay que hacer es una transformación del espacio de coordenadas. Esta representación puede desplegarse sobre una esfera o, alternativa- mente, sobre las seis caras de un cubo vir- tual. En cualquiera de los dos casos se puede obtener una correspondencia exacta entre los puntos de la superficie del objeto y la esfera o el cubo virtual que lo rodea.
En segundo lugar, el resultado de esta representación se reinterpreta como un mapa 2D que se proyecta sobre el objeto como si fuera una textura, siguiendo los mismos procedimientos que en el método de Catmull. El resultado es que el objeto parece reflejar la escena que le rodea con algunas restricciones que llevan a algunas complicaciones técnicas, que aquí no será necesario recordar.
El método funcionaba muy bien para ob- jetos más o menos similares a una esfera pero bastante peor para objetos planos. Esto dio lugar a técnicas alternativas a ve- ces denominadas flat reflection mapping, muy utilizadas a finales de la década de 1990 pero que prácticamente han desapa- recido debido a la difusión de métodos de iluminación avanzada y al aumento de la potencia de los ordenadores.
Relieve con Bump mapping (Blinn, 1978)
La simulación de relieve por medio de Bump mapping se introdujo en 1978 por James Blinn (vése Blinn, 1977) y se ha utilizado am-pliamente desde principios de la década de 1990 con la difusión de los PC y la incorpo- ración de todas estas técnicas al software co- mercial y, posteriormente, a la GPU (Graphics Processing Unit).
La idea básica consiste en perturbar la di- rección de la normal a una superficie antes de que sea computada por el sistema de cálculo de iluminación y enviada al sistema de repre- sentación. De este modo no es necesario mo- dificar la geometría del objeto.
Para ello se usa un mapa que codifica desplazamientos virtuales por medio de patrones en blanco y negro o valores in- termedios. Las zonas negras se asocian a desplazamientos negativos, a huecos, por debajo de la superficie real, y las zonas blancas a desplazamientos positivos, a re- lieves, por encima de la superficie real. Los valores grises se computan como valores de desplazamiento intermedio entre estos dos extremos.
La figura 2.33 muestra un esquema que resume el proceso. A una superficie con di- ferentes orientaciones, dadas por sus vec- tores normales, se le asocia una función (una tabla de valores que corresponden a diferentes intensidades del mapa asocia- do). El resultado de esta combinación es una alteración virtual de las normales que simula rugosidades en la superficie sin alte- rar la geometría real.
Los resultados son muy eficaces desde un punto de vista computacional pues se puede simular con un mínimo gasto el relieve de objetos. Sin embargo, pueden no serlo tanto Figura 2.32 Environment mapping: a) Vista general de la escena; b) Mapa de entorno obtenido desde la posición del objeto; c) Mapa reproyectado sobre el objeto como textura para simular reflejos.
Materiales virtuales
Figura 2.33 Bump mapping.
desde el punto de vista de la calidad de los re- sultados. Los principales inconvenientes son los siguientes: a) la silueta de los objetos se seguirá viéndo con su contorno real, b) otro tanto ocurre con sombras arrojadas que tam- bién mostrarían la silueta real del objeto, c) las oclusiones debidas al relieve no se computan. Si la silueta no es visible o no hay sombras, el resultado puede ser bastante convincente. Pero si no es así, se puede arruinar el efecto. La única solución es ocultar los contornos o recurrir a los procedimientos más sofisticados que siguen.
Relieve con Displacement mapping
(Cook, 1984)
La simulación de relieve con mapas de des- plazamiento se introdujo en 1984 por Robert L. Cook. Con este método se altera la altu- ra de la superficie según los valores dados por un rango de valores de grises dados por el mapa asociado, de modo similar a Bump mapping. Sin embargo, la superficie se mo- difica geométricamente con lo que los proble- mas mencionados al final del apartado ante- rior se solucionarían.
No obstante, los problemas técnicos son considerables. En el artículo original, Cook no dio detalles sobre cómo podía implemen- tarse el método, solo describió su integra- ción en un tipo especial de shader. En un artículo posterior (1987) dio algún detalle
adicional de un tipo particular de implemen- tación utilizando micropolígonos. Esta imple- mentación estaba ligada al famoso algoritmo Reyes (Renders Everything You Ever Saw), desarrollado por Carpenter y Cook para el Computer Graphics Research Group de Lu- casfilm, que posteriormente se convertiría en Pixar, y se utilizó por primera vez en 1982 para las imágenes del efecto Génesis en la película Star Treck II: the wrath of Kahn. Fue también uno de los puntos de partida princi- pales del lenguaje RenderMan.
P(u,v) N’(u,v) P’(u,v)
Figura 2.34 Displacement mapping. Arriba: vista en perspecti- va del desplazamiento virtual. Abajo: esquema de la modifica- ción de posición de un punto.
Simulación visual de materiales
Sin embargo no se ha utilizado mucho, hasta hace poco, debido a su coste com- putacional, pese a los diversos intentos de mejorar el procedimiento básico. En su ver- sión más simple, la superficie de base se subdivide recursivamente, hasta llegar a un tamaño de micropolígono relacionado con el tamaño de la imagen de salida, gene- ralmente del orden de un píxel o menos. A partir de esta teselación básica, los vértices se empujan según los valores dados por un campo de alturas (height field), un campo escalar que se asocia a la superficie.
El desplazamiento se computa mediante un cálculo simple que define la nueva posi- ción P’ de los puntos de una superficie P:
P’(u,v) = P(u,v) + N’(u.v)H(u,v)
donde P’(u,v) son las coordenadas del punto desplazado, P(u,v) son las coordenadas del punto original, N’(u,v) es el vector normal co- rrespondiente al punto que define la dirección de desplazamiento y H es el valor correspon- diente al campo escalar de alturas que define la altura a que se desplaza el punto en cues- tión. La figura 2.34 ilustra estas operaciones básicas.
El campo escalar de altura se da corriente- mente por medio de imágenes de mapas de bits en blanco y negro en los que los valores de altura están asociados al nivel de gris. Hay diversos métodos recientes que permiten au- mentar la precisión por medio de mapas de bits en color con información más precisa so- bre la altura y que se han utilizado para mo- delar terrenos.
El principal problema de este método es que el número de polígonos necesarios para conseguir resultados adecuados era, y es, muy alto. Y, en consecuencia, el coste com- putacional es muy elevado. Por esta razón se han desarrollado varios métodos alterna- tivos que buscan en todos los casos reducir este coste. Entre ellos cabe citar los trabajos de Michael Doggett (2000) sobre teselación adaptativa e integración en hardware por di- versos métodos, lo que puede resolver el pro- blema del alto coste de computación.
Desde hace pocos años, con la integración de procedimientos de teselación en las tarje- tas gráficas avanzadas, estos problemas se han reducido considerablemente.
Relieve con Normal mapping (varios,
1992, 1996, 1998)
Un método más eficaz que Bump mapping es lo que se denomina Normal mapping. El término fue introducido por Alain Fournier (el mismo autor que con Poulin presentó un algoritmo anisotrópico para calcular la BRDF en 1990, que hemos visto anterior- mente) en un artículo de 1992, a partir de una interesante reflexión sobre los diferen- tes niveles de detalle de un modelo, de las técnicas requeridas en cada caso y del flujo que se requiere establecer en la práctica entre estos tres niveles.
Estos tres niveles dependen de la esca- la a que consideremos el material. El nivel superior y mejor definido es el geométrico (superficies definidas por polígonos, parches paramétricos o NURBS) que se puede de- nominar macroscópico. El nivel inferior, que también ha sido estudiado con gran detalle, es el nivel correspondiente a los modelos de reflexión local para los que se computa la BRDF y que puede ser denominado micros-