photon mapping daniele marini. global illumination necessità di simulare effetti di illuminazione...
TRANSCRIPT
Photon Mapping
Daniele Marini
Global Illumination
• Necessità di simulare effetti di illuminazione globali per ottenere un maggior grado di realismo
• Principali approcci:– Elementi finiti (es. radiosity)– Campionamento puntiforme (es. ray tracing)
Photon Mapping
• Ideato da Henrik Wann Jensen
• Sviluppato sui modelli statistici Montecarlo
• Algoritmo in due passi– Emissione fotoni dalle sorgenti– Rendering
Algoritmo
• Passo 1:– Emissione di fotoni dalle sorgenti di luce e
tracciamento all’interno della scena– Creazione della mappa 3D di fotoni
• Passo 2:– Rendering della scena utilizzando le
informazioni contenute nella mappa di fotoni per la stima della radianza riflessa sulle superfici
Algoritmo
• Passo 1:photon tracing
• Passo 2:rendering
Algoritmo: Passo 1
• Emissione– Emissione dei fotoni dalla sorgenti di luce
– Solitamente bisogna emettere più di 10.000 fotoni
• Scattering– Determinare come i fotoni vengono dispersi,
all’interno della scena
• Storing– Salvataggio delle informazioni sui fotoni assorbiti dalle
superfici diffusive
Passo 1: Emissione
• L’energia associata alla sorgente viene divisa sui fotoni emessi
• Possono essere simulate diverse tipologie di luci
Puntiforme Sferica Quadrata Forma generica
Passo 1: Scattering
• Quando un fotone colpisce una superficie può essere:– Riflesso
– Trasmesso
– Assorbito
Passo 1: Scattering
• Il tipo di scattering può essere deciso tramite il metodo della Roulette russa:
toassorbimen ]1,[
speculare eriflession ],[
diffusa eriflession ],0[
:regolala secondo Scelgo
1
speculare eriflession di probabiltà ]1,0[
diffusa eriflession di probabiltà ]1,0[
casuale e variabil]1,0[
sd
sdd
d
sd
s
d
pp
ppp
p
pp
p
p
+∈+∈
∈
≤+∈∈
∈
ξξξ
ξ
Passo 1: Storage
• I fotoni assorbiti vengono salvati nella Photon map– Energia– Posizione – Direzione incidente
• Serve una struttura dati adeguata
Passo 1: Storage
• Per memorizzare la mappa dei fotoni si utilizza un kd-tree (suddivisione spaziale 3D della scena)
• A ogni nodo corrisponde un piano di suddivisione ortogonale agli assi
• il sottoalbero sinistro contiene fotoni nel semispazio negativo rispetto al piano, il destro conteine fotoni nel ssemispazio positivo
• Il kd-tree può essere bilanciato, considerata la coerenza della luce nella scena
• Il kd-tree può essere esplorato in O(logN)
Passo 1: Storage
• Vengono utilizzate diverse mappe– Global map
• Riflessioni diffuse
– Caustics map• Generate lanciando fotoni direttamente su superfici
lucide e riflettenti
• Molti campioni in una piccola area
– Mezzi partecipanti
Caustiche
Caustiche
• Inviluppo di una famiglia di raggi di luce
QuickTime™ e undecompressore
sono necessari per visualizzare quest'immagine.
Passo 1: Storage
Scena Photon Map
Passo 2: Rendering
• L’informazione contenuta nella mappa viene usata per stimare la radianza riflessa
• Un numero N di fotoni viene considerato per la stima nel punto x
Passo 2: Rendering
• L’integrale dell’equazione del rendering viene diviso in 4 componenti– Illuminazione diretta– Speculare– Indiretta– Caustiche
Photon Mapping
• Equazione del rendering
∫Ω
′⋅′′′+= wdnwwxLwwxfwxLwxL irer
rrrrrrrr))(,(),,(),(),(
x
w
w’
Equazione del rendering
• Suddivido le componenti speculare e diffusiva della BRDF
• Suddivido il termine di radianza incidente tenendo conto dei contributi di:– Luce diretta
– Caustiche
– Luce indiretta
),,(),,(),,( ,, wwxfwwxfwwxf DrSrr
rrrrrr ′+′=′
),(),(),(),( ,,, wxLwxLwxLwxL dicilii ′+′+′=′ rrrr
Equazione del rendering
=′⋅′′′+= ∫Ω
wdnwwxLwwxfwxLwxL irerrrrrrrrr
))(,(),,(),(),(
∫
∫
∫
∫
Ω
Ω
Ω
Ω
′⋅′′′
+′⋅′′′
+′⋅′′+′′
+′⋅′′′+
wdnwwxLwwxf
wdnwwxLwwxf
wdnwwxLwxLwwxf
wdnwwxLwwxfwxL
diDr
ciDr
diciSr
lire
rrrrrr
rrrrrr
rrrrrrr
rrrrrrr
))(,(),,(
))(,(),,(
)))(,(),()(,,(
))(,(),,(),(
,,
,,
,,,
,Illuminazionediretta
Riflessionispeculari
Caustiche
Illuminazioneindiretta
Calcolo della radianza
Illuminazione diretta
Riflessioni speculari
Illuminazione indiretta
Caustiche
Ray tracing
Monte Carlo Ray tracingcon importance samplingbasato su fr,S
Caustics Photon Map
Global Photon Map
Stima della radianza
• Ad ogni fotone viene associato un flusso
• La stima della radianza in un punto avviene considerando N campioni selezionati nell’intorno di raggio r del punto x
),(),,(1
),(1
2p
N
p
pprr wxwwxfr
wxL ∑=
ΔΦ=π
)( pp wΔΦ
Stima della radianza
Esempi Rendering
Ray tracing
Esempi Rendering
Ray tracing + ombre sfumate
Esempi Rendering
+ caustiche
Esempi Rendering
+ global illumination