>

Demostración básica de normal maps.

Los 'normal maps' o mapas de normales son texturas iguales que cualquier otra, pero con una particularidad: los colores de la textura no representan a la información de color própiamente dicha, sino que codifican la dirección de la normal a la superfície en ese píxel. Su utilidad principal es de dar detalle para el tema de iluminación. Si se dispusiera además de la textura con información de color (que sería otra textura adicional), se podría combinar para conseguir un efecto más realista.

Hay que tener en cuenta que una normal puede variar sus componentes (i,j,k) entre -1.0 y 1.0. Las texturas almacenan sus valores entre 0.0 y 1.0 (recordemos que en una textura estos valores se asocian normalmente a las componentes R,G,B de un pixel/texel). Para ello, se debe multiplicar el valor de las componentes de la textura x2, y del resultado restar 1 (o restar primeramente 0.5 y luego multiplicar x2), con lo cual se consigue mapear los valores del rango (0.0, 1.0) a (-1.0, 1.0).

En la demostración se ha utilizado una aproximación de luz especular (potencia baja: 8.0) y una luz difusa para dar algo de color. Se utiliza la información de la normal en cada pixel para calcular, junto con la posición de una luz que vamos moviendo, cómo incide la luz. Para ello basta con el producto escalar de la normal asociada al píxel que estamos tratando con el vector que define la dirección hacia dónde se encuentra la luz: cuando este producto escalar tiende a 1.0 -siempre hablando de vectores normalizados-, es cuando el vector normal apunta en dirección a la luz.

Más detalles sobre el algoritmo próximamente

Inicio