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.