7.7.1 Atmosfera
Annotazione importante : la
funzione atmosfera è sperimentale per POV-Ray 3.0. C'è un'alta
probabilità che questa funzione venga cambiata in futuro. Non possiamo
garantire che le scene che usano l'atmosfera nella versione 3.0 appariranno
identiche nelle versioni future o che rimanga la piena compatibilità
con la sintassi attuale.
Le immagini generate al computer normalmente sono ambientate in uno spazio
vuoto che non permette il rendering di fenomeni naturali come il fumo,
i raggi di luce ecc. Un metodo molto semplice per aggiungere la nebbia
alla scena è descritto nel paragrafo "Nebbia".
Questo tipo di nebbia non interagisce con alcuna luce. Non mostrerà
i raggi luminosi o altri effetti e quindi non è molto realistico.
L'atmosfera supera alcune delle limitazioni della nebbia calcolando le
interazioni tra la luce e le particelle presenti nell'atmosfera usando
un campionamento sul volume. Quindi fasci di luce diventeranno visibili
e gli oggetti proietteranno ombre nel fumo o nella nebbia.
La sintassi per l'atmosfera è :
atmosphere {
type TIPO
distance DISTANZA
[ scattering DISPERSIONE ]
[ eccentricity ECCENTRICITA' ]
[ samples CAMPIONI ]
[ jitter JITTER ]
[ aa_threshold SOGLIA ]
[ aa_level LIVELLO ]
[ colour <COLORE> ]
}
La parola chiave type
determina il metodo di dispersione che deve essere usato. Ci sono cinque
differenti funzioni di fase che rappresentano i diversi modelli :
isotropo, di Rayleigh, di Mie (nebbia) e di Henyey-Greenstein.
La dispersione isotropa è la forma più semplice di dispersione
perché è indipendente dalla direzione. La quantità
di luce dispersa dalle particelle dell'atmosfera non dipende dall'angolo
tra la direzione della vista e la luce incidente.
La dispersione di Rayleigh è un modello di dispersione per particelle
molto piccole come le molecole dell'aria. La quantità di luce dispersa
dipende dall'angolo di incidenza della luce. E' più grande quando
la luce incidente è parallela alla direzione della vista e più
piccola quando la luce incidente è perpendicolare. Il modello di
Rayleigh usato da POV-Ray non prende in considerazione la dipendenza della
dispersione dalla lunghezza d'onda della luce.
![]() |
Figura 229- La funzione di dispersione
di Rayleigh
La dispersione di Mie è usata per particelle abbastanza piccole come le minuscole gocce d'acqua che costituiscono la nebbia, le nuvole e le particelle inquinanti. Questo modello di dispersione è estremamente direzionale ; la quantità di luce dispersa è maggiore quando la luce incidente è rivolta direttamente contro l'osservatore. E' minore quando la luce incidente si allontana dall'osservatore, rimanendo parallela con la sua vista. C'è inoltre differenza tra i modelli che descrivono la foschia e l'atmosfera inquinata. Il modello che descrive questo secondo tipo di atmosfera è molto più direzionale dell'altro.
![]() |
Figura 230- La funzione di dispersione
di Mie per la foschia
![]() |
Figura 231- La funzione di dispersione
di Mie per particelle più grandi (aria inquinata)
La dispersione di Heyney-Greenstein è basata su una funzione analitica e può essere usata per modellare una grande varietà di tipi di dispersioni. La funzione modella un'ellisse con una determinata eccentricità, e. Quest'eccentricità è specificata dalla parola chiave eccentricity che è usata solo per questo tipo di atmosfera (tipo 5). Il valore 0 assegnato all'eccentricità definisce la dispersione isotropa, mentre valori positivi produrranno una dispersione nella direzione della luce e valori negativi produrranno dispersione nella direzione opposta alla luce. Valori molto grandi di e incrementeranno la direzionalità della dispersione.
![]() |
Figura 232- La funzione di dispersione
di Henyey -Greenstein con diversi valori di eccentricità
Il modo più veloce per usare diversi
tipi di dispersione sarà quello di dichiarare alcne costanti ed
usarle nella definizione dell'atmosfera.
#declare ISOTROPIC_SCATTERING = 1
#declare MIE_HAZY_SCATTERING = 2
#declare MIE_MURKY_SCATTERING = 3
#declare RAYLEIGH_SCATTERING = 4
#declare HENYEY_GREENSTEIN_SCATTERING = 5
la parola chiave distance
è usata per determinare la densità delle particelle nell'atmosfera.
Questa densità è costante nell'intera atmosfera e il parametro
distance
funzionerà allo stesso modo visto per la nebbia.
Con la parola chiave scattering
è possibile modificare la quantità di luce che è dispersa
dall'atmosfera aumentandone o diminuendone la luminosità. Valori
più piccoli di dispersione diminuiranno la luminosità mentre
valori più alti l'aumenteranno.
La parola chiave color o
colour
può essere usata per creare atmosfere colorate, cioè può
essere usata per creare particelle che filtreranno la luce che le attraversa.
Il colore predefinito è nero.
La luce che passa attraverso l'atmosfera (sia proveniente dalle sorgenti
luminose, sia dallo sfondo) è filtrata dal colore dell'atmosfera
se il colore specificato ha un valore diverso da zero. In altre parole,
la quantità di luce che è filtrata dall'atmosfera è
data dal valore che è stato assegnato al filtro (nello stesso modo
in cui si comporta la nebbia). Usando un colore rgbf
<1, 0, 0, 0.25> si otterrà
un'atmosfera rossastra perché il 25% della luce che passa attraverso
l'atmosfera sarà filtrato dal colore dell'atmosfera, cioè
rgb <1, 0, 0>
( rosso).
Il canale di trasmittanza del colore dell'atmosfera è utilizzato
per specificare una quantità minima di trasparenza. Se viene usato
un valore maggiore di zero sarà sempre possibile vedere una percentuale
di sfondo relativa al valore assegnato attraverso l'atmosfera, come per
la nebbia.
Poiché l'atmosfera è calcolata tramite un campionamento lungo
la visuale dell'osservatore e tenendo conto delle sorgenti luminose, è
soggetta ad aliasing (come ogni altra tecnica di campionamento). Ci sono
quattro parametri per minimizzare i difetti che si possono verificare :
samples,
jitter,
aa_level
e aa_threshold.
La parola chiave samples
determina quanti campioni sono calcolati in un intervallo lungo il raggio
visivo. La lunghezza dell'intervallo è, o la distanza specificata
dal valore del parametro distance
o la lunghezza della parte illuminata del raggio che è sempre minore.
Questa parte del raggio è la sezione che è più
probabilmente colpita dalla luce. Nel caso di uno spot è la
parte del raggio che giace nel cono di luce. Negli atri casi, la sua determinazione
diventa più difficile. L'unica cosa da ricordare è che la
lunghezza dell'intervallo di campionamento è variabile, ma non sarà
mai minore dei campioni specificati nella distanza specificata.
Una tecnica per ridurre gli errori dovuti al campionamento è di
applicare il jittering ai punti campionati. In altre parole, di aggiungere
un'interferenza casuale alla loro posizione. Si può fare questo
usando la parola chiave jitter.
Un'altra tecnica è il sovracampionamento (il metodo anti-aliasing) :
questo aiuta a eliminare i difetti dovuti al campionamento aggiungendo
campioni supplementari dove avvengono cambiamenti di grande entità
(ad esempio, ai contorni di un'ombra). L'anti-aliasing viene attivato dalla
parola chiave aa_level.
Se il valore assegnatole è maggiore di zero verrà usato il
sovracampionamento. I campioni aggiuntivi saranno posizionati ricorsivamente
tra due campioni che presentano valori molto diversi. Il livello a cui
cessa quest'iterazione viene specificato dalla parola chiave aa_level.
Un valore di 1 significa una suddivisione (un campione supplementare),
2 significa due suddivisioni (fino a tre campioni supplementari) ecc.
la soglia per la differenza tra due campioni adiacenti è data dalla
parola chiave aa_threshold.
Se la differenza di intensità è maggiore di questa soglia
verrà usato l'anti-aliasing per i due campioni.
Con gli spot si potranno ottenere i migliori risultati poiché il
loro cono di luce diventerà visibile. Le luci puntiformi possono
essere usate per creare effetti come lampioni nella nebbia. Si può
evitare che le luci interagiscano con l'atmosfera aggiungendo il comando
atmosphere off
alla sorgente luminosa. Le luci che non interagiscono con la scena possono
essere usate per aumentare il livello di luce complessivo per rendere il
risultato maggiormente realistico.
L'atmosfera non funzionerà se la macchina fotografica si trova all'interno
di un oggetto non vuoto, vedi il paragrafo "Oggetti
Vuoti e Oggetti Solidi".
![]() |
![]() |
![]() |