|
La característica rainbow
se puede usar para crear un arco iris y quizás otros efectos
más extraños. El arco iris es un efecto como la niebla el
cual se restringe al volumen de un cono.
El arco iris se especifica con muchos parámetros: el ángulo bajo el cual es visible, la anchura del color de la banda, la dirección de la luz entrante, la distancia de la niebla que lo envuelve basada en la densidad de las partículas y por último, pero no menos importante, el mapa de color que será usado.
El tamaño y la forma del arco iris son determinados por los
identificadores angle
y width
. El
identificador direction
se usa para establecer la dirección de la luz entrante, colocando
el arco iris en esa posición. El arco iris es visible cuando el
ángulo entre el vector de dirección y la dirección
de la luz incidente es mayor que angle-width/2 y más
pequeño que angle+width/2.
La luz entrante es la fuente de luz virtual que es responsable del arco iris. Ahí no se necesita una fuente de luz real para crear el efecto del arco iris.
El arco iris es como un efecto de niebla, i.e. el color del arco iris se mezcla con el color de fondo basándose en la distancia al punto de intersección. Si elegimos valores pequeños de distance el arco iris será visible sobre los objetos, no solamente en el fondo. Puedes evitarlo usando un valor muy grande de distance.
El mapa de colores es una parte crucial del arco iris, ya que contiene todos los colores que normalmente se pueden ver en un arco iris. El color de la banda más interna se toma de la entrada 0 del mapa de color mientras que el de la banda exterior se toma del color de entrada 1. Podrías notar que debido al limitado rango de colores que algunos monitores pueden mostrar es imposible crear un arco iris real. Hay justamente algunos colores que no podremos visualizar.
El canal filtro en el mapa de colores del arco iris es usado de alguna manera igual como en la niebla. Determina cuánto de la luz que pasa a través del arco iris es filtrada por el color.
El siguiente ejemplo muestra una escena simple con un plano en el suelo, tres esferas y un arco iris un poco exagerado (rainbow1.pov).
#include "colors.inc" camera { location <0, 20, -100> look_at <0, 25, 0> angle 80 } background { color SkyBlue } plane { y, -10 pigment { color Green } } light_source { <100, 120, 40> color White } // declara los colores del arco iris #declare r_violet1 = color rgbf<1.0, 0.5, 1.0, 1.0>; #declare r_violet2 = color rgbf<1.0, 0.5, 1.0, 0.8>; #declare r_indigo = color rgbf<0.5, 0.5, 1.0, 0.8>; #declare r_blue = color rgbf<0.2, 0.2, 1.0, 0.8>; #declare r_cyan = color rgbf<0.2, 1.0, 1.0, 0.8>; #declare r_green = color rgbf<0.2, 1.0, 0.2, 0.8>; #declare r_yellow = color rgbf<1.0, 1.0, 0.2, 0.8>; #declare r_orange = color rgbf<1.0, 0.5, 0.2, 0.8>; #declare r_red1 = color rgbf<1.0, 0.2, 0.2, 0.8>; #declare r_red2 = color rgbf<1.0, 0.2, 0.2, 1.0>; // crea el arco iris rainbow { angle 42.5 width 5 distance 1.0e7 direction <-0.2, -0.2, 1> jitter 0.01 color_map { [0.000 color r_violet1] [0.100 color r_violet2] [0.214 color r_indigo] [0.328 color r_blue] [0.442 color r_cyan] [0.556 color r_green] [0.670 color r_yellow] [0.784 color r_orange] [0.900 color r_red1] } }Se añaden algunas irregularidades al color de las bandas usando la palabra clave
jitter
.
Un colorido arco iris.
El arco iris del ejemplo es demasiado brillante. Nunca veremos un
arco iris como éste en la realidad. Podríamos disminuir
los colores del arco iris disminuyendo el valor de RGB en el mapa de
colores.
Podemos usar el canal de transmisión de los colores en el mapa de color para especificar una translucidez mínima, justo como hicimos con la niebla. Para conseguir resultados realistas tenemos que usar un valor grande de trasmisión como se puede ver en el siguiente ejemplo (rainbow2.pov).
rainbow { angle 42.5 width 5 distance 1.0e7 direction <-0.2, -0.2, 1> jitter 0.01 color_map { [0.000 color r_violet1 transmit 0.98] [0.100 color r_violet2 transmit 0.96] [0.214 color r_indigo transmit 0.94] [0.328 color r_blue transmit 0.92] [0.442 color r_cyan transmit 0.90] [0.556 color r_green transmit 0.92] [0.670 color r_yellow transmit 0.94] [0.784 color r_orange transmit 0.96] [0.900 color r_red1 transmit 0.98] } }
Al aumentar el valor de la trasmisión en las bandas exteriores del arco iris logramos que se mezcle suavemente dentro del fondo.
La imagen resultante tiene una apariencia mucho más realista que nuestro primer arco iris
arc_angle
con un ángulo inferior a 360 grados.
Si usamos arc_angle 120
por ejemplo conseguiremos un
arco de arco iris en el cual desaparece bruscamente el final del mismo.
Esto no tiene buen aspecto. Para evitarlo, la palabra clave falloff_angle
puede
usarse para especificar un área donde el arco se mezcla
suavemente con el fondo.
Como se explica en la sección de referencia del arco iris
(ver "Rainbow") el arco se
extiende desde -arc_angle/2 a arc_angle/2 mientras el mezclado
tiene lugar desde -arc_angle/2 a -falloff_angle/2 y falloff_angle/2 a
arc_angle/2. Ésta es la razón por la cual el valor de falloff_angle
tiene que ser menor o igual que el valor de arc_angle
.
En el siguiente ejemplo, se ha usado un arco de 120 grados con un
valor de 45 grados de desvanecimiento en ambos lados del arco
(rainbow3.pov).
rainbow { angle 42.5 width 5 arc_angle 120 falloff_angle 30 distance 1.0e7 direction <-0.2, -0.2, 1> jitter 0.01 color_map { [0.000 color r_violet1 transmit 0.98] [0.100 color r_violet2 transmit 0.96] [0.214 color r_indigo transmit 0.94] [0.328 color r_blue transmit 0.92] [0.442 color r_cyan transmit 0.90] [0.556 color r_green transmit 0.92] [0.670 color r_yellow transmit 0.94] [0.784 color r_orange transmit 0.96] [0.900 color r_red1 transmit 0.98] } }Los ángulos de los arcos están medidos en sentido contrario a la dirección vertical del arco iris la cual puede especificarse usando la palabra clave
up
. Por defecto, la
dirección vertical del arco iris es el eje Y.
Un arco de arco iris.
Finalmente estamos observando un arco de arco iris realista.
|