|
Los arco iris se implementan usando arcos circulares que se comportan como la niebla. Su sintaxis es:
RAINBOW: rainbow { [RAINBOW_IDENTIFIER] [RAINBOW_ITEMS...] } RAINBOW_ITEM: direction <Dir> | angle Angle | width Width | distance Distance | COLOR_MAP | jitter Jitter | up <Up> | arc_angle Arc_Angle | falloff_angle Falloff_Angle
arc_angle : 180.0 falloff_angle : 180.0 jitter : 0.0 up : y
El vector requerido direction
determina la dirección de
la fuente de luz (virtual) que es responsable del arco iris. Idealmente
es una fuente de luz muy lejana e infinita que emite rayos paralelos,
como el sol. La posición y el tamaño del arco iris se especifican con
las palabras clave requeridas angle
y width
.
Para comprender cómo funcionan primero se debería saber cómo se calcula
el arco iris.
Para cada rayo se calcula el ángulo entre la dirección del arco iris
y la dirección del rayo. Si este ángulo está en el intervalo
Angle-Width/2
a Angle+Width/2
, el
rayo golpea el arco iris. Entonces el color se determina usando el
ángulo como un índice dentro del mapa de colores del arco iris. Después
de esto se fundirá con el fondo del mismo modo que se hace con las
nieblas.
De este modo los parámetros ángulo y
anchura determinan los ángulos bajo los cuales se verá el arco iris. La
palabra reservada opcional jitter
se puede usar para
añadir un ruido aleatorio al índice. Esto añade algunas irregularidades
al arco iris que lo hacen parecer más realista.
La palabra reservada requerida distance
tiene el mismo significado que la usada con las nieblas. Como el efecto arco
iris se comporta como el efecto niebla, es posible que el arco iris
sea visible en los objetos. Si esto no se desea se puede evitar usando
un gran valor para la distancia. Por defecto se usa un valor
suficientemente grande para asegurarse que esto no ocurre.
La sentencia color_map
se
usa para asignar un mapa de colores que será mapeado en el arco iris.
Para crear arco iris realistas es importante saber que el índice dentro
del mapa de colores se incrementa con el ángulo entre el rayo y el
vector dirección del arco iris. El índice es 0 en el anillo más interno
del arcoiris y 1 en el más externo. Los valores de filtrado y
transmisión de luz de los colores en el mapa de colores tienen el mismo
significado que los usados con las nieblas (ver sección "Niebla (Fog)").
El arco iris por defecto es un arco de 360 grados que parece un
círculo. Esto no es un problema si se tiene un plano que haga de suelo
y esconda la parte baja, no visible del arco iris. Si éste no es el caso
o si no se quiere que sea visible todo el arco se pueden usar las
palabras clave opcionales up
, arc_angle
y falloff_angle
para especificar un arco más pequeño.
La palabra clave arc_angle
determina el tamaño del arco en grados (desde 0 a 360 grados). Un valor
menor que 360 grados resulta en un arco que desaparece de un modo muy
brusco. Como esto no queda muy bien, se puede usar la palabra reservada falloff_angle
para especificar una región en la cual el arcoiris se mezclará
suavemente con el fondo haciéndolo desaparecer dulcemente. El ángulo de caída (falloff_angle
) tiene que ser menor o igual que el
ángulo del arco (arc_angle
).
La palabra clave up
determina dónde está la posición para el ángulo 0. Cambiando este
vector se puede rotar el arco iris sobre su dirección. Se debería notar
que el arco va desde -Arc_Angle/2
hasta +Arc_Angle/2
.
Las regiones suavizadas van desde -Arc_Angle/2
hasta -Falloff_Angle/2
y desde +Falloff_Angle/2
hasta +Arc_Angle/2
.
El siguiente ejemplo genera un arco iris de 120 grados que tiene una región de caída de 30 grados en sus dos extremos:
rainbow { direction <0, 0, 1> angle 42.5 width 5 distance 1000 jitter 0.01 color_map { Rainbow_Color_Map } up <0, 1, 0> arc_angle 120 falloff_angle 30 }
Se pueden usar cualquier número de arco iris y combinarlos con cualquier otro efecto atmosférico.
|