7.7.3        Nebbia



La nebbia è definita dalle seguenti frasi :

fog {
fog_type TIPO_DI_NEBBIA
distance DISTANZA
colour <COLORE>
[ turbulence <TURBOLENZA> ]
[ turb_depth PROFONDITA'_DELLA_TURBOLENZA ]
[ omega OMEGA ]
[ lambda LAMBDA ]
[ octaves OTTAVE ]
[ fog_offset FOG_OFFSET ]
[ fog_alt FOG_ALT ]
[ up <FOG_UP> ]
[ TRASFORMAZIONI ]
}

Il vettore up facoltativo, definisce l' "alto" e generalmente si usa lo stesso che si è usato per la camera. Tutti i calcoli fatti per la nebbia raso terra saranno dipendenti da questo vettore, in altre parole le altezze relative saranno calcolate lungo questo vettore.

Questo vettore può essere modificato usando tutte le trasformazioni descritte nel paragrafo "Trasformazioni". Anche se potrebbe non essere una buona idea scalare il vettore
up (è assai difficile riuscire a prevedere il risultato), è piuttosto utile al contrario saperlo ruotare. Le traslazioni invece non lo influenzano e quindi non muteranno neanche la posizione della nebbia.
Allo stato attuale sono disponibili due tipi di nebbia : la nebbia costante e la nebbia raso terra. La nebbia costante ha una densità costante ovunque, a tutte le altezze minori di un determinato punto che giace sull'asse dell'altezza. L'altezza sotto alla quale la nebbia risulterà costante è specificata dalla parola chiave
fog_offset. La parola chiave fog_alt specifica la velocità alla quale la nebbia si dilegua. All'altezza fog_offset+fog_alt la nebbia ha una densità del 25%. La densità della nebbia ad una determinata altezza è data dalla seguente formula :

La densità totale lungo un raggio è calcolata dall'integrale che varia tra l'altezza del punto iniziale e l'altezza del punto finale.
Nel file const.ini sono definite due costanti riguardanti la nebbia :

// FOG TYPE CONSTANTS
#declare Constant_Fog = 1
#declare Ground_Fog = 2

Il colore di un pixel con una certa profondità di intersezione è calcolato con la seguente formula :

C_pixel = exp(-d/D) * C_oggetto + (1-exp(-d/D)) * C_nebbia

dove D è la distanza della nebbia. A profondità zero il colore risultante sarà quello dell'oggetto. Se la profondità dell'intersezione uguaglia la distanza della nebbia il colore finale sarà costituito per il 64% dal colore dell'oggetto e per il 36% dal colore della nebbia.
Il colore della nebbia impostato tramite la parola chiave
color ha tre funzioni. Primo, definisce il colore da usare nel passaggio dalla nebbia allo sfondo. Secondo, viene usato per specificare la soglia di trasparenza. Usando una trasparenza maggiore di 0, si può infatti essere sicuri che al limite sarà possibile vedere quella quantità di luce attraverso la nebbia. Con una trasparenza di 0.3 si vedrà come minimo il 30% dello sfondo. Terzo, può essere usata per creare una nebbia filtrante. Con una quantità di filtro maggiore di zero la luce dello sfondo sarà determinata moltiplicando il valore del filtro per il colore dello sfondo. Un filtro di 0.7 produrrà una nebbia che filtrerà il 70% dello sfondo.
La nebbia può essere stratificata. Si possono usare tanti strati quanti se ne desiderano. Generalmente l'effetto migliore si ha quando ogni strato è uno strato di nebbia raso terra di un colore diverso, con altezza e turbolenza diversa. Per usare molti strati di nebbia, basta aggiungerli alla scena.
È possibile anche creare una nebbia più "mossa" aggiungendole della turbolenza. La parola chiave
turbulence deve essere seguita da un decimale o da un vettore per specificare la quantità di turbolenza da usare. Si possono specificare anche i parametri omega, lambda e le ottave. Vedere il paragrafo "Modificatori di Pattern" per maggiori informazioni su questi parametri relativi alla turbolenza.
In più la turbolenza della nebbia può essere scalata lungo la direzione del raggio visivo usando la parola chiave
turb_depth. Valori ottimali possono variare tra 0.0 e 1.0. Il valore predefinito è 0.5 ma è possibile usare qualunque valore decimale.
La nebbia non funzionerà se la camera è dentro ad un oggetto non vuoto. (Vedere il paragrafo "Oggetti Vuoti ed Oggetti Solidi" per spiegazioni più approfondite).