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.