4.6.5 Luci
Diffuse
Fino ad ora tutte le nostre luci hanno
una cosa in comune. Producono ombre nette. Questo avviene perché
l'effettiva sorgente luminosa è un punto infinitamente piccolo.
Gli oggetti si trovano direttamente nella luce, nel qual caso sono pienamente
illuminati, oppure no, nel qual caso sono in ombra. Nella vita reale, questo
tipo di illuminazione e di omreggiatura esiste solo nello spazio, dove
la luce diretta del sole squarcia la totale oscurità dello spazio.
Ma qui sulla Terra, la luce si piega attorno agli oggetti, rimbalza e normalmente
la sorgente luminosa ha una qualche dimensione e può essere parzialmente
nascosta alla vista (le ombre non sono più così nette). Esiste
quella che viene chiamata penombra, un'area in cui non c'è la totale
luce, né la penombra. Per simulare queste ombre leggere, un raytracer
deve fornire una dimensione alla sorgente luminosa. POV-Ray esegue questo
compito con una funzione chiamata area_light.
Le dimensioni dell' area_light
si estendono su due assi. Queste vengono specificate dai primi due vettori
nella sintassi della luce. Dobbiamo anche specificare quante luci ci devono
essere. Un alto numero di luci ci fornirà ombre sfumate, ma impiegherà
più tempo per il rendering. Normalmente un insieme di 3*3 o 5*5
luci sarà sufficiente. Abbiamo anche la possibilità di specificare
un valore di adattamento. La parola chiave adaptive
dice al programma che può adattarsi alla situazione e tracciare
solo i raggi necessari a determinare il valore del pixel. Se non viene
usata la parola adaptive
verrà calcolato un raggio per ogni luce dell'area_light.
Questo può veramente rallentare le cose. Maggiore sarà il
valore di adattamento, più 'pulita' risulterà l'ombra, ma
ciò risulterà in un aumentare del tempo di rendering. Normalmente
un valore di 1 è sufficiente. Infine, dovremmo probabilmente usare
la parola chiave jitter.
Questa dice a POV-Ray di spostare leggermente la posizione di ogni luce
in modo da ottenere ombre veramente sfumate invece che fornirci un'ombra
consistente di bande ravvicinate.
Bene, proviamone una. Commentiamo le luci cilindriche e aggiungiamo :
light_source {
10, -3>
White
area_light <5, 0, 0>, <0, 0, 5>, 5, 5
adaptive 1
jitter
}
Questa è una luce centrata in
<2,10,-3>. E'larga 5 unità lungo l'asse x e 5 lungo l'asse
z e contiene 25 (5*5) luci. Abbiamo specificato adaptive
1 e jitter.
Renderizziamo la scena a 200x150 -A.
![]() |
Fig. 79-Luci diffuse
Immediatamente, notiamo due cose. Il rendering
è discretamente più lungo di quanto non fosse con una luce
spot o puntiforme e le ombre non sono più nette ! Hanno una
bella zona di penombra sfumata attorno. Aspetta, può migliorare.
Anche gli spot e le luci cilindriche possono essere area lights. Hai presente
quelle ombre nette che avevamo nella scena con gli spot ? Non sarebbe
molto ragionevole usare un insieme di 5*5 luci per ottenere uno spot, ma
un insieme più piccolo potrebbe fare un ottimo lavoro, dandoci una
penombra giusta per uno spot. Proviamo. Commentiamo l'area light e cambiamo
le luci cilindriche in modo che risultino :
light_source { <2, 10, -3>
color White
spotlight
radius 15
falloff 18
tightness 10
area_light <1, 0, 0>, <0, 0, 1>, 2, 2
adaptive 1 jitter point_at <0, 0, 0> }
light_source { <10, 10, -1>
color Red
spotlight
radius 12
falloff 14
tightness 10
area_light <1, 0, 0>, <0, 0, 1>, 2, 2
adaptive 1 jitter point_at <2, 0, 0> }
light_source { <-12, 10, -1> color Blue
spotlight
radius 12
falloff 14
tightness 10
area_light <1, 0, 0>, <0, 0, 1>,
2, 2 adaptive 1 jitter point_at <-2, 0, 0> }
Abbiamo così tre spot 'allargati', quadrati di un'unità di lato, contenenti ciascuno una matrice di 2*2 luci, con tre colori diversi, che risplendono sulla nostra scena. Renderizziamo questa scena a 200x150 -A.
![]() |
Fig. 80-Luci diffuse colorate
Sembra funzionare perfettamente. Tutte le nostre ombre hanno zone di penombra piccole e strette, proprio del genere che ci aspetteremmo di trovare su un oggetto illuminato da un vero spot.
![]() |
![]() |
![]() |