|
Tenemos algunas herramientas de texturización realmente potentes a nuestra disposición, pero ¿qué pasa si queremos manejar más libremente las texturas complejas? Bueno, tal como los mapas de imagen hacían con los pigmentos, o los mapas de bultos con los normales, las texturas completas también se pueden mapear usando un mapa de materiales, cuando la necesidad obligue.
Tal como con los mapas de imagen o de bultos, necesitamos una imagen fuente en formato de mapa de bits, que POV-Ray
utilizará como mapa para situar las texturas individuales. Sin embargo, en este caso, necesitamos especificar
qué textura va asociada con cada índice de la paleta. Para generar tal imagen, podemos servirnos de un programa de dibujo que nos permita seleccionar los colores por su
número de índice en la paleta (el color real es irrelevante, ya que se trata
sólo de un mapa para que POV-Ray sepa qué textura va en cada posición). Ahora, si tenemos instalado el paquete original de POV-Ray, debemos tener en nuestro directorio de archivos de inclusión una imagen llamada povmap.gif
, la cual es un mapa de bits que
sólo usa los primeros cuatro índices de la paleta para crear un borde cuadrado enmarcando las palabras "Persistence of Vision".
Éste sirve de maravilla para ilustrar el siguiente ejemplo. Usando los mismos archivos de inclusión estándar, cámara y fuente de luz, introduzcamos el siguiente objeto:
plane { -z, 0 texture { material_map { gif "povmap.gif" interpolate 2 once texture { PinkAlabaster } // el borde interior texture { pigment { DMFDarkOak } } // borde exterior texture { Gold_Metal } // letras texture { Chrome_Metal } // fondo de la ventana } translate <-0.5, -0.5, 0> scale 5 } }
La posición de la fuente de luz y la falta de objetos que reflejar en primer plano, hacen que no se puedan apreciar estas texturas en todo su esplendor. Sin embargo, al menos podemos ver
cómo funciona todo el proceso. Las texturas han sido colocadas de acuerdo con la posición de los
píxeles de su índice de la paleta. Usando el identificador once
(para evitar la repetición del motivo), y trasladando y escalando nuestro mapa, para encuadrarlo en la cámara, hemos conseguido verlo trazado.
Por supuesto, esto se refiere solo a formatos de imagen con mapa de paleta, como el GIF y ciertos tipos de PNG. Los mapas de materiales también pueden usar formatos sin paleta, como los TGA que el mismo POV-Ray obtiene. Ello tiene interesantes consecuencias: ¡podemos utilizar POV-Ray para producir mapas para POV-Ray! Antes de liarnos con las limitaciones de las texturas especiales, hagamos algo más con los mapas de materiales, para mostrar cómo POV-Ray puede producir sus propios mapas.
Para empezar, si usamos una imagen sin paleta, POV-Ray mira el 8º bit del componente rojo del color del píxel (que será un valor de 0 a 255), para determinar qué textura de la lista es la que debe de usar. Así, para crear un mapa, necesitamos controlar con precisión cuál es el valor del componente rojo de cada píxel. Podemos hacer esto de la siguiente forma:
1.) Usando una sentencia "rgb" para escoger el color, como rgb <N/255,0,0>
, donde "N" es el valor de rojo que queremos asignar, y además...
2.) Sin especificar ninguna fuente de luz, pero aplicando un acabado finish{ambient 1}
a todos los objetos, para asegurar que las sombras y luces no interfieren.
¿Confundido? De acuerdo, ahí va un ejemplo que genera un mapa muy parecido a povmap.gif
, que usábamos antes, excepto en que el nuestro usará el formato TGA. Habrás notado que usábamos los componentes verde y azul del pigmento. POV-Ray los ignora cuando usa el mapa, así que son para nosotros, humanos cuyos ojos no pueden ver la diferencia entre variaciones de rojo entre 0 y 4/255ths. Sin estas variaciones de verde y azul, nuestro mapa aparecería ante nuestros ojos como un sólido bloque rojo. Ello puede ser un buen método para mandar mensajes secretos usando POV-Ray (usa el mapa de material para decodificarlo), pero no es de mucha ayuda si queremos ver
cómo queda nuestro mapa para estar seguros de que es lo que queríamos.
Tracemos el siguiente código, y nombremos el archivo resultante como povmap.tga
.
camera { orthographic up <0, 5, 0> right <5, 0, 0> location <0, 0, -25> look_at <0, 0, 0> } plane { -z, 0 pigment { rgb <1/255, 0, 0.5> } finish { ambient 1 } } box { <-2.3, -1.8, -0.2>, <2.3, 1.8, -0.2> pigment { rgb <0/255, 0, 1> } finish { ambient 1 } } box { <-1.95, -1.3, -0.4>, <1.95, 1.3, -0.3> pigment { rgb <2/255, 0.5, 0.5> } finish { ambient 1 } } text { ttf "crystal.ttf", "The vision", 0.1, 0 scale <0.7, 1, 1> translate <-1.8, 0.25, -0.5> pigment { rgb <3/255, 1, 1> } finish { ambient 1 } } text { ttf "crystal.ttf", "Persists!", 0.1, 0 scale <0.7, 1, 1> translate <-1.5, -1, -0.5> pigment { rgb <3/255, 1, 1> } finish { ambient 1 } }
Todo lo que tenemos que hacer ahora es modificar nuestro último ejemplo del mapa de materiales cambiándolo de tipo GIF a TGA y modificando el nombre del archivo. Cuando lo tracemos, obtendremos un resultado muy similar al obtenido con la imagen GIF con paleta, excepto por el leve detalle de que no hemos usado ningún programa externo para generar el mapa: !POV-Ray lo ha hecho todo!
|