3.8.3 Creando Patrones de Colores
Podemos hacer algo más que asignar colores sólidos a un
objeto. Podemos crear patrones complejos en el bloque del pigmento como
en este ejemplo:
sphere {
<0, 1, 2>, 2
texture {
pigment {
wood
color_map {
[0.0 color DarkTan]
[0.9 color DarkBrown]
[1.0 color VeryDarkBrown]
}
turbulence 0.05
scale <0.2, 0.3, 1>
}
finish { phong 1 }
}
}
sphere {
<0, 1, 2>, 2
texture {
pigment {
wood
color_map {
[0.0 color Red]
[0.5 color Red]
[0.5 color Blue]
[1.0 color Blue]
}
scale <0.2, 0.3, 1>
}
finish { phong 1 }
}
}
La palabra
wood
especifica un
patron (patrón)
de pigmento de anillos concéntricos como si fueran los anillos de
la madera. Para cada posición del espacio, un patrón devuelve un
valor en coma flotante comprendido en un rango que varía desde 0
a 1. Los valores fuera de este rango son ignorados. La palabra
color_map
especifica que color es asignado a ese valor flotante. En el primer ejemplo
el color de la madera se mezclará desde
DarkTan
a
DarkBrown
en el primer 90% del veteado y de
DarkBrown
a
VeryDarkBrown
en el restante 10%. En el segundo ejemplo el color no se mezcla de uno
a otro sino que cambia de manera brusca. La palabra reservada
turbulence
agita ligeramente el patrón para que las vetas no parezcan
círculos perfectos y la palabra reservada
scale
ajusta el tamaño del patrón.
La mayoría de los patrones vienen dados por defecto para mostrarnos
esa característica a lo ancho de una esfera de radio 1. Se podría
definir esta característica como transiciones de colores. Por ejemplo,
una textura de madera podría circundar a una esfera de radio 1.
En este ejemplo, hemos escalado el patrón usando la palabra scale
seguida por un vector. En este caso, escalamos 0.2 en la dirección
del eje X, 0.3 en la dirección del eje Y, dejando en 1 la dirección
del eje Z , lo cual lo deja inalterado. Valores del escalado más
grandes de 1 alargarán el elemento. Valores de escala menores que 1 encogerán al elemento. Un valor de escala de
1 dejará
al elemento sin cambiar.