3.12.3  La Sentencia Phase

Existe otra palabra clave que deberíamos conocer para nuestros propósitos de animación: La palabra clave phase. La sentencia phase  se puede usar sobre muchos elementos de las texturas, especialmente aquéllos que pueden llevar un color, pigmento, normal o mapa de textura. Recordemos la forma que tenían los mapas. Por ejemplo:

  color_map {
    [0.00 White ]
    [0.25 Blue ]
    [0.76 Green ]
    [1.00 Red ]
  }
El valor de coma flotante de la parte interior izquierda de cada uno de los corchetes  servía a POV-Ray para mapear el valor del color para las zonas del objeto que estaba siendo texturizado. Notar que el mapa de colores varía de 0.0 a 1.0.

La sentencia phase hace que los valores del color se alternen a lo largo del mapa a causa de un valor en coma flotante el cual se coloca detrás de la palabra clave phase. Ahora, en cualquier caso, si estamos usando un valor normalizado de clock, podemos asociar el valor de la variable clock con el valor de phase, y el patrón se alternará suavemente a lo largo de la animación. Veamos un ejemplo común usando un patrón gradiente en la normal:

  #include "colors.inc"
  #include "textures.inc"
  background { rgb<0.8, 0.8, 0.8> }
  camera {
    location <1.5, 1, -30>
    look_at <0, 1, 0>
    angle 10
  }
  light_source { <-100, 20, -100> color White }
  // flag
  polygon {
    5, <0, 0>, <0, 1>, <1, 1>, <1, 0>, <0, 0>
    pigment { Blue }
    normal {
      gradient x
      phase clock
      scale <0.2, 1, 1>
      sine_wave
    }
    scale <3, 2, 1>
    translate <-1.5, 0, 0>
  }
  // flagpole
  cylinder {
    <-1.5, -4, 0>, <-1.5, 2.25, 0>, 0.05
    texture { Silver_Metal }
  }
  // polecap
  sphere {
    <-1.5, 2.25, 0>, 0.1
    texture { Silver_Metal }
  }
Aquí hemos creado una simple bandera azul colocando sobre ella un patrón gradiente en la normal. Hemos forzado al gradiente a usar una onda del tipo seno a fin de que diese la impresión de que la bandera esté enrollándose de atrás hacia adelante como si ondease en el viento. Pero lo realmente mágico es la palabra clave phase. Ésta empieza tomando la variable clock como un valor flotante el cual, como aumenta lentamente hasta llegar a 1.0, producirá las ondulaciones de la bandera alternándose a lo largo del eje X. Efectivamente, cuando animemos los fotogramas creados con este código, observaremos cómo la bandera está realmente ondeando en el viento.

Esto es solo un único y simple ejemplo de cómo la sentencia phase condicionada al valor de clock puede crear interesantes efectos de animación. Probemos el comando phase con todo tipo de patrones de texturas y nos asombraremos del alcance de los efectos de animación que podemos crear usando únicamente la palabra phase sin tener que mover el objeto realmente.