7.7.5 Arcobaleno
E' possibile generare arcobaleni usando
archi circolari, simili alla nebbia. La sintassi completa è :
rainbow {
direction <DIREZIONE>
angle ANGOLO
width LUNGHEZZA
distance DISTANZA
color_map { MAPPA_DEI_COLORI }
[ jitter JITTER ]
[ up <UP> ]
[ arc_angle ANGOLO_DELL'_ARCO ]
[ falloff_angle ANGOLO_DI_DECADIMENTO]
}
Il vettore direction
determina la direzione della luce (virtuale) che causa l'arcobaleno. Idealmente
questa è una sorgente luminosa infinitamente lontana che emette
raggi di luce paralleli (come il sole). La posizione e la dimensione dell'arcobaleno
sono specificate dalle parole chiave angle
e width.
Per capire come funzionano si dovrebbe prima sapere come viene calcolato
l'arcobaleno.
Per ogni raggio si calcola l'angolo tra il vettore direzione dell'arcobaleno
e il vettore direzione del raggio di luce. Se questo angolo si trova nell'intervallo
che va da ANGLE-WIDTH/2 a
ANGLE+WIDTH/2 l'arcobaleno è
colpito dal raggio. Il colore viene quindi determinato utilizzando l'angolo
come indice nella mappa di colori dell'arcobaleno. Dopo che il colore è
stato determinato verrà unito al colore dello sfondo come avviene
per la nebbia. In questo modo i parametri angle
e width
determinano l'angolo sotto il quale l'arcobaleno è visibile. La
parola chiave jitter può
essere usata per aggiungere perturbazioni casuali alla mappa dei colori.
Ciò aggiunge qualche irregolarità all'arcobaleno e lo rende
più realistico.
La parola chiave distance
è la stessa che viene usata per la nebbia. Dato che l'arcobaleno
è un effetto simile alla nebbia è possibile che esso sia
visibile sugli oggetti. Se questo effetto è indesiderato può
essere evitato utilizzando un alto valore per la distanza. Per default
si usa un valore abbastanza alto da far sì che questo effetto non
si presenti.
La parola chiave color_map
è usata per definire una mappatura del colore che verrà distribuita
sull'arcobaleno. Per creare arcobaleni realistici è importante sapere
che l'indice della mappa aumenta con l'angolo trai vettori direzione del
raggio e dell'arcobaleno. L'indice è 0 sull'anello più interno
e 1 sull'anello più esterno. I valori di filtro e di trasmittanza
nei colori della mappa hanno lo stesso significato di quelli usati coi
vari tipi di nebbia (vedi paragrafo "Nebbia").
L'arcobaleno predefinito è un cerchio di 360°. Questo non è
un problema fino a quando si ha un piano che nasconde la parte inferiore
dell'arcobaleno. Se non vuoi che si veda tutto l'arco puoi usare le parole
chiave opzionali up,
arc_angle
e falloff_angle
per specificare un arco più piccolo.
La parola chiave arc_angle
specifica la misura dell'arco in gradi, da zero a 360. Un valore minore
di 360° dà un arco con le estremità molto nette. Dal
momento che questo non ha un bell'aspetto puoi usare la parola chiave falloff_angle
per specificare una regione nella quale l'arcobaleno sfumerà lentamente
nel colore dello sfondo. L'angolo di falloff deve essere minore o uguale
all'angolo dell'arco.
La parola chiave up
determina dove è posizionato l'angolo zero. Cambiando questo vettore
puoi ruotare l'arcobaleno nella direzione che esso indica. Puoi notare
che l'arco parte da -arc_angle/2
e termina a +arc_angle/2.
La regione sfumata va da -arc_angle/2
a falloff_angle/2
e da +falloff_angle/2 a
+arc_angle/2.
Il seguente esempio crea un arcobaleno di 120° che ha un regione in
cui viene sfumato ampia 30° ad entrambe le estremità.
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 240
falloff_angle 60
}
E' possibile usare più di un
arcobaleno e combinare ognuno degli arcobaleni con altri effetti atmosferici.
![]() |
![]() |
![]() |