1
Computer Graphics
Marco Tarini Università dell’Insubria
Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2012/13
Lezione 14:
Lezione 14:
Lezione 14:
Lezione 14:
Tecniche di illuminazione
globale
(cenni)
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Radiosity
• Classe di algoritmi di illuminazione globale
• Gestisce bene riflessioni multiple diffusive
• Assunzioni:
– materiali tutti Lambertiani (puramente diffusivi)
» (no effetti view-dependent) – scena statica (luci ed oggetti fermi)
– molto tempo per computare (offline rendering)
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Radiosity: concetto
1. Dividere la scena in “pezzetti di superficie” (patches) – circa stessa area
– (non necessariamente sono i nostri triangoli...) – LUCI: alcuni patch sono “fonti di luce” (emanano fotoni)
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Radiosity: Concetto
1. Dividere la scena in N pezzetti (patches)
2. Trovare la “matrice di Form Factor”
– cioè: per ogni coppia di patches i e j a i,j = quanta % della luce ...
• che parte dal patch i
• e si diffonde in tutte le direzioni (diffusive reflection!) ... raggiunge j
– a i,j dipende da:
• distanza e orientamento reciproco dei patch i e j
• eventuali occlusiori fra i due patch (es trovati con ray tracing)
• albedo (un po’ di luce è trattenuta dal patch)
• etc…
Purtroppo, è molto grande!
NxN
Radiosity: Concetto 3. Risolvere sistema:
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
+
=
n n
n x
x x F e e e
x x x
M M
M
1 0 1
0 1 0
Luce finale che raggiunge (e si irradia da) ogni patch i (le (le
(le (le incognite incognite incognite!) incognite !) !) !)
Fonti di luce:
luce emessa dal patch i (tutti 0 meno le fonti di luce)
Matriciona “Form Factor”
(calcolato prima)
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Radiosity: Come
• La soluz mostra cosa succede dopo
“infiniti” rimbalzi di luce (diffusivi)
• Risoluzione corretta del sistema: O(n O(n O(n O(n 3 33 3 ) ) ) ) – troppo pesante persino per un preprocessing – e trovare il form factor è ancora più oneroso
• Come si fa davvero:
– approx con metodi randomizzati
stocastici (Monte Carlo)
2
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Radiosity: Costo
• Troppo caro da calcolare in tempo reale – e sarà così a lungo
• Ma... il risultato di questa computazione
(un float per patch)
NON dipende dal punto di vista!
(è "view independent")
– può essere salvato nella scena (“baked” lighting)
• es come attributo per vertice
– e acceduto in real-time tramite rasterizzazione:
• almeno finché cambia solo il punto di vista – (né l'illuminazione, né la forma scena)
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Radiosity: esempi di risultati
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a