4.8.5.2.1        Iniziare con un Alone Semplice



Un approccio metodico nel creare un effetto di alone, è iniziare con un oggetto semplice, di dimensione unitaria, che si trova al centro del nostro sistema di riferimento. Nel primo esempio (file halo01.pov) cerchiamo di creare una potente esplosione, per cui l'oggetto migliore è la sfera. Iniziamo con una semplice scena costituita da una camera, una sorgente luminosa (non ci interessano le ombre, per cui aggiungiamo la parola chiave shadowless) un piano a scacchiera ed una sfera di raggio 1 contenente l'alone (halo).

camera {
location <0, 0, -2.5>
look_at <0, 0, 0>
}

light_source { <10, 10, -10> color rgb 1 shadowless }
plane { z, 2
pigment { checker color rgb 0, color rgb 1 }
finish { ambient 1 diffuse 0 }
scale 0.5
hollow
}

sphere { 0, 1
pigment { color rgbt <1, 1, 1, 1> }
halo {
emitting
spherical_mapping
linear
color_map {
[ 0 color rgbt <1, 0, 0, 1> ]
[ 1 color rgbt <1, 1, 0, 0> ]
}
samples 10
}
hollow
}

Fig. 139-Semplice alone

Notiamo che la sfera è impostata per essere vuota ed ha la superficie completamente trasparente (il canale della trasmittanza nel colore è impostato ad 1), proprio come è richiesto per le halo. Notiamo anche che il piano ha la parola chiave hollow nonostante che non abbia associato nessun alone. Perché è necessario ?
Il motivo è molto semplice. Come si spiega nel paragrafo "Oggetti Vuoti e Oggetti Solidi", non ci può essere nessuna halo all'interno di un oggetto non vuoto. Dato che la camera si trova all'interno del piano, dalla parte del piano, cioè che è considerata essere 'dentro', l'alone non sarebbe visibile a meno che il piano non sia reso vuoto specificando l'attributo
hollow (cavo) (oppure, si aggiunga la parola chiave negative per portare la camera dal lato positivo del piano).
Cosa significano tutte queste parole chiave e valori ? All'inizio della halo, la parola chiave
emitting è usata per specificare che tipo di halo si vuole definire. La halo emittente (emitting) emette luce. Questa è la soluzione migliore per la nostra esplosione. Le parole chiave spherical_mapping e linear hanno bisogno di una spiegazione più dettagliata sul funzionamento delle halo (questa si trova, in maggiore dettaglio, nel paragrafo "Halo").
Come abbiamo notato sopra, un alone è formato da una grande quantità di piccole particelle. La distribuzione nello spazio di queste particelle è determinata da una funzione di densità. In generale, una funzione di densità ci dice quante particelle possiamo trovare in una data posizione nello spazio. Invece di utilizzare una funzione di densità esplicita, definita matematicamente, le halo si basano su di un sistema di mappature di densità e di funzioni di densità per modellare una varietà di distribuzioni di particelle. Il primo passo in questo modello è la funzione di mappatura della densità che viene utilizzata per mappare punti a tre dimensioni (di uno spazio tridimensionale) in un set di valori monodimensionali. Nel nostro esempio, utilizziamo una mappatura sferica, cioè consideriamo la distanza di un punto dal centro del sistema di coordinate. Questo è il motivo per cui è meglio iniziare con un oggetto contenitore che si trova al centro del sistema di coordinate. Dato che tutte le mappature di densità sono calcolate rispetto al centro del sistema di assi, non vedremmo nulla, se iniziassimo con un oggetto contenitore che si trovasse da qualunque altra parte. Il metodo corretto di posizionare un oggetto contenitore, è spostare tutto l'oggetto dopo averlo definito (comprese texture e halo).
Ora abbiamo per la distanza dal centro, un valore compreso tra 0 ed 1. Questo valore verrà trasformato usando una funzione densità per ottenere valori di densità invece che valori di distanza. Usare questo singolo valore non funziona perché vogliamo avere una distribuzione della densità delle particelle che diminuisca man mano che ci allontaniamo dal centro dell'oggetto contenitore verso l'esterno. Ciò avviene grazie alla funzione densità. Ci sono diverse alternative disponibili nel paragrafo di riferimento sulle halo ( vedi § 7.6.4 e "Funzione Densità"). Usiamo la più semplice funzione lineare che mappa i valori tra 0 ed 1 in un raggio di valori tra 1 e 0. Quindi, otteniamo una densità di 1 al centro della sfera e di 0 ad una distanza dal centro uguale al raggio.
Ora che abbiamo una funzione densità, cosa dobbiamo fare per vedere qualcosa ? Qui entra in gioco la parola chiave
colour_map. Viene usata per descrivere una mappatura di colore che in effetti dice al programma quali colori vengono usati in corrispondenza di una certa densità. La relazione è semplice : i colori all'inizio della mappa di colore (con valori bassi) saranno usati nelle zone con bassi valori di densità e i colori alla fine della mappa (con alti valori ) saranno usati per le zone di alta densità. Nel nostro esempio, la halo sarà gialla al centro, dove la densità è maggiore e sfumerà al rosso verso la superficie della sfera, dove la densità si avvicina allo 0.
Il canale della trasmittanza dei colori nella mappa è usato per modellare la trasparenza del campo di densità. Un valore di 0 rappresenta la completa opacità, cioè aree con la densità corrispondente saranno (quasi) opache, mentre il valore di 1 significa (quasi) totale trasparenza. Nel nostro esempio, usiamo

color_map {
[ 0 color rgbt <1, 0, 0, 1> ]
[ 1 color rgbt <1, 1, 0, 0> ]
}

Che risulta in una halo con una zona esterna molto trasparente, rossastra ed una zona interna quasi opaca e gialla.
C'è un altro parametro che deve ancora essere spiegato : la parola chiave
samples. Questa parola chiave dice a POV-Ray quanti campioni devono essere presi lungo ogni raggio che attraversa la halo per calcolare il suo effetto. Usare un basso valore porterà ad un'alta velocità del rendering, mentre un alto valore darà tempi di rendering considerevolmente più lunghi. Il numero di campioni deve essere aumentato quando l'alone ha un aspetto 'confuso', cioè quando risultano evidenti alcune irregolarità dovute al basso tasso di campionamento. Per maggiori dettagli, vedi il paragrafo "Campionamento per gli Aloni".
Un buon valore iniziale per il numero di campioni è 10.