lunes, octubre 08, 2012

Parallax Maping



Mapeado por paralaje

En esta entrada, se explicará una técnica  que nos ayuda a dar más realismo a las escenas de los vieojuegos, el Mapeado por paralaje del inglés parallax mapping (también llamado "offset mapping" o "virtual displacement mapping") es una mejora de las técnicas de mapeado normal que se aplican a texturas en aplicaciones 3D. Para el usuario final, esto significa que las texturas como las de las rocas tendrán una profundidad más clara, una apariencia de relieve y por lo tanto, un realismo mayor con poca influencia en el rendimiento de la simulación. El mapeado por paralaje fue introducido por Tomomichi Kaneko en el 2001.
Esta técnica de mapeado se logra implementar desplazando las coordenadas de la textura a un punto en el polígono por una función desde el ángulo de vista en  el espacio de la tangente (el ángulo relativo a la superficie normal) y el valor  del mapa de alturas en tal punto. Toma en cuenta la posición de la luz, la posición del observador y la dirección que tiene la superficie donde está la textura cuyo relieve queremos simular. Desde un punto de vista inclinado, las coordenadas de la textura se desplazan más, y así se logra la ilusión de profundidad debido a los efectos de paralaje mientras la vista se mueve. Decimos que es una "ilusión" porque no es mas que un engaño al ojo, es decir, si miramos la superficie completamente de perfil, no se verá ningún relieve. Lo que nos ayuda a simular relieves realmente complejos sin tener que agregar geometrías adicionales, lo que se reduce en el tiempo de calculo. 
En otras palabras: cuando la tarjeta gráfica está rasterizando (1) una textura sobre un triángulo, para cada píxel (2) rasterizado se define lo siguiente ¿Pintar el píxel correspondiente, o el más cercano al observador que lo oculta ?

Para responder a esta pregunta, se analizan varios puntos vecinos que estén más cerca del observador y que tengan una altura mayor que este, finalmente es seleccionado el punto más alto y este será el pintado.

Esto sugiere varias cosas, la primera de ellas es determinar qué vecinos buscar, aunque lógicamente los vecinos a comprobar son aquellos que siguen la línea observador-punto. Otra de las cosas consiste en asignar una altura a cada píxel donde el valor de altura está comprendido entre 0 y 255.

De forma que para cada punto a rasterizar, hay que mirar a una serie de vecinos, por supuesto la calidad de esta técnica depende del número de vecinos explorados. A mayor numero de vecinos explorados mayor será la calidad final, pero mayor será el trabajo para la tarjeta gráfica. Explorando pocos vecinos pueden aparecer “escalones” u otros artefactos extraños.


(1) La rasterización es el proceso por el cual una imagen descrita en un formato gráfico vectorial se convierte en un conjunto de píxeles o puntos para ser desplegados en un medio de salida digital.

(2) Píxel es la menor unidad homogénea en color que forma parte de una imagen digital.

No hay comentarios:

Publicar un comentario