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.
![]() |
![]() |
![]() |