4.2.1        Usare la Messa a Fuoco



Costruiamo una semplice scena per mostrare l'impiego della messa a fuoco. Per questo esempio useremo una sfera rosa, un parallelepipedo verde ed un cilindro blu, con la sfera davanti, il parallelepipedo in mezzo ed il cilindro dietro. Un pavimento a scacchiera per evidenziare la prospettiva ed un paio di sorgenti luminose completeranno la scena.
Creiamo un nuovo file chiamato focaldem.pov e vi inseriamo il seguente testo.

#include "colors.inc"
#include "shapes.inc"
#include "textures.inc"
#version 3.0
#global_settings {
assumed_gamma 2.2
max_trace_level 5
}
sphere { <1, 0, -6>, 0.5
finish {
ambient 0.1
diffuse 0.6
}
pigment { NeonPink }
}
box { <-1, -1, -1>, < 1, 1, 1>
rotate <0, -20, 0>
finish {
ambient 0.1
diffuse 0.6
}
pigment { Green }
}
cylinder { <-6, 6, 30>, <-6, -1, 30>, 3
finish {
ambient 0.1
diffuse 0.6
}
pigment {NeonBlue}
}
plane { y, -1.0
pigment {
checker color Gray65 color Gray30
}
}
light_source { <5, 30, -30> color White }
light_source { <-5, 30, -30> color White }

Ora possiamo procedere a piazzare la nostra macchina fotografica in una posizione appropriata. Mettendola dietro i nostri tre oggetti darà un buon risultato. Aggiustare il punto focale, lo muoverà in un qualunque punto della scena. Aggiungiamo solo le righe seguenti al file :

camera {
location <0.0, 1.0, -10.0>
look_at <0.0, 1.0, 0.0>
// focal_point <-6, 1, 30> // cilindro blu a fuoco
// focal_point < 0, 1, 0> // parallelepipedo verde a fuoco
focal_point < 1, 1, -6> // sfera rosa a fuoco

aperture 0.4 // un buon compromesso
// aperture 0.05 // quasi tutto è a fuoco
// aperture 1.5 // molto sfuocato

// blur_samples 4 // pochi campioni, più veloce
blur_samples 20 // più campioni, immagine di alta qualità
}

Fig.4-Messa a fuoco

Il punto focale è semplicemente il punto dove il fuoco della macchina fotografica è massimo e l'immagine risulta più nitida. Posizioniamo questo punto nella nostra scena ed assegnamo un valore all'apertura per determinare quanto vicino o quanto lontano dal punto di massimo fuoco vogliamo che appaia la sfocatura. Aumentare l'apertura ha l'effetto di rendere minore l'area a fuoco, mentre diminuirla rende maggiore l'area dell'immagine a fuoco. Questo è il modo in cui controlliamo come la sfocatura comincia ad avvenire attorno al punto focale. Il valore blur_samples determina quanti raggi sono usati per campionare ogni singolo punto dell'immagine (pixel). In maniera semplificata, quanti più raggi si usano, tanto migliore è la qualità dell'immagine risultante, ma conseguentemente aumenta anche il tempo necessario per il rendering. Ogni scena è diversa dalle altre e così dovremo sperimentare. Questo tutorial ha due esempi da 4 e 20 campioni, ma ne possiamo utilizzare di più per immagini ad alta risoluzione. Non si dovrebbero usare più campioni di quanti siano necessari per ottenere la qualità desiderata, dato che maggiore è il numero dei campioni, maggiore è il tempo di rendering. I valori di confidence e variance sono trattati nella sezione "Messa a Fuoco" della guida al linguaggio.
Conviene sperimentare con le regolazioni dei valori
focal_point, aperture, blur_sample . La scena ha linee con altri valori che possiamo provare commentando la linea di default con un doppio slash (//) e de-commentando la linea che vogliamo provare. Facciamo solo un cambiamento per volta, per vedere gli effetti sulla scena.
Due cose finali da sapere quando si usa la messa a fuoco : primo, non abbiamo bisogno di specificare l'anti-aliasing (con il comando
+a) dato che il metodo di messa fuoco si occupa automaticamente dell'antialiasing ; secondo, la messa a fuoco può venire usata solo per 'macchine fotografiche' di tipo prospettico.