No habría Shrek sin matemática, parte II

Por Enrique

Como habíamos visto en la primera parte de este post , todo proyecto de animación por computadora consta de tres partes: modelado, texturizado y animación. Una vez que tenemos los objetos que conforman la escena, nos damos a la tarea de darles la apariencia adecuada. Es decir, les damos una textura.

La textura puede ser del tipo realista, en donde uno quiere que los objetos tengan el aspecto que tienen en el mundo real. O bien podría ser que el artista está interesado en una animación tipo caricatura, en la cual la textura de los objetos no es tan detallada. En cualquier caso, existen dos formas de darle textura a un objeto. La primera es mediante patrones generados por medio de un algoritmo, llamada textura procedural (procedural texture). La segunda es utilizando fotografías de la textura que se desea emular.

La textura procedural la proporciona el programa mismo y es controlada por medio de parámetros. Por ejemplo, se puede encontrar texturas que semejan nubes, madera, mármol, ruido, gradientes de color y rajaduras. Todas ellas son generadas por fórmulas matemáticas. Son funciones escalares de dos variables en el intervalo [0,1] donde un valor de 0 representa el negro y 1, el blanco (o a la inversa dependiendo el programa que se use). Estas simples imágenes en blanco y negro tienen un potencial increíble. La idea es que no solo proporcionan el color de una superficie o un sombreado. El rango de valores en el intervalo de cero a uno puede ser utilizado para modificar otros atributos del objeto. Por ejemplo, un simple plano puede ser transformado en un terreno con valles y montañas al utilizar una textura de nuble en donde el color de la nube (en escala de gris de 0 a 1) es mapeado a un desplazamiento en la dirección perpendicular al plano. Así, uno puede hacer que las regiones más obscuras sean los valles y las regiones más claras sean las cumbres de las montañas. Todo esto se hace presionando botones y deslizando cursores en los rangos de los parámetros.

También es posible hacer un mapeo entre la escala de grises y el vector normal a la superficie. Esto crea efectos muy realistas de superficies corrugadas. La escala de grises también se puede mapear a otros parámetros de la superficie, como la reflexión, luz de difusión, especularidad, transparencia y otros más. Al especificar valores para cada uno de estos parámetros uno crea el material de cada objeto. El material es lo que hace que una mesa de madera se vea diferente a una mesa de plástico. La madera tiene menos reflexión especular y esto le da un aspecto mate. Un metal pulido, por el contrario tiene mucha reflexión especular, lo que le da un aspecto brillante. Juntos, el material y la textura le dan la apariencia real al objeto. El cálculo del color que cada pixel en la pantalla debe tener — según el objeto que se despliega — se hace por medio del sombreador (shader). El sombreador puede correr en tiempo real, como el caso de los juegos de video (en general, aplicaciones que usan las librerías de OpenGL, por ejemplo); o puede ser llamado para hacer el cálculo (render) de un sólo cuadro en la animación. Un sombreador no es más que una fórmula o un algoritmo que toma en cuenta información como el vector normal, intensidad de luz incidente, reflexión especular, reflexión difusa, reflexión ambiental y devuelve el color adecuado en la dirección en la que el objeto es observado. Existen muchas clases de sombreadores entre ellas: Lambert, Phong y Blinn. Lambert funciona mejor para objetos de aspecto mate y Blinn para objetos brillantes. El tema de los sombreadores es muy extenso y existe mucha investigación en relación a gráficas generadas por computadora. Fabricantes de tarjetas gráficas como Nvidia están constantemente buscando la forma de hacer algoritmos más realistas y más rápidos. En los juegos de video, los cálculos (rendering) se hacen en tiempo real. El poder computacional de las tarjetas gráficas (GPU) es tan grande que actualmente sobrepasa el del procesador normal de la computadora. Aunque no es tan fácil escribir programas que corran en ellos, varias universidades en EEUU están empezando a desarrollar aplicaciones que se beneficien de la capacidad del GPU. ¡Qué gran oportunidad de trabajo para alguien con habilidades matemáticas y de programación!

Volviendo al tema después de este pequeño desvío, la otra alternativa para crear una textura es importando una foto de la textura deseada. Esta es la mejor forma de crear objetos con apariencia realista. Todo lo que hablamos anteriormente de la textura procedural aplica aquí también.

Para que no piensen que este post hubiera sido mejor si mostrara un ejemplo, aquí va uno. Esta animación es un intento de crear la superficie de un lago. Lo que se usa son dos texturas de nubes. Una para las ondas grandes y otra para los detalles pequeños. El sombreador es Blinn con alta reflexión especular. Esta textura se mapea al vector normal del plano para crear el efecto ondulatorio. El movimiento se logra haciendo que el parámetro de desplazamiento de la textura en la dirección perpendicular al plano dependa linealmente del tiempo. El efecto es bastante realista. La guía completa está aquí.

Anuncios
Esta entrada fue publicada en Ciencia y Sociedad, Divulgación de las Ciencias y etiquetada , . Guarda el enlace permanente.

Una respuesta a No habría Shrek sin matemática, parte II

  1. Pingback: Ecuaciones animadas de ayer y hoy | GuateCiencia

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s