Calcolo numerico per la generazione di immagini fotorealistiche
Maurizio Tomasi maurizio.tomasi@unimi.it
Lezioni di teoria del lunedì videoregistrate e caricate su Ariel
Richiesta la presenza alle esercitazioni (firma)
Domande al di fuori delle lezioni:
Se su argomenti di teoria o comunque di interesse generale, sul forum di Ariel
Se specifiche sul proprio codice, contattate il docente (maurizio.tomasi@unimi.it)
A meno di sorprese, dovremmo terminare la settimana del 3–7 giugno, ma potremmo dover essere creativi, facendo qualche lezione di teoria il mercoledì
È un corso multidisciplinare: non riservato a cosmologi e astrofisici!
È un corso multidisciplinare: non riservato a cosmologi e astrofisici!
Planck: missione spaziale ESA (2009–2013)
Assemblaggio della sonda nei laboratori ESA
Vivian Maier (1926–2009), Autoritratto
Oceania (R. Clements, J. Musker, D. Hall, C. Williams, 2016)
(v. Dutré, Bala, Bekaert)
Flusso \Phi normalizzato sulla superficie: I, E = \frac{\mathrm{d}\Phi}{\mathrm{d}A}, \qquad [I] = \mathrm{W}/\mathrm{m}^2.
Irradianza I: ciò che cade su \mathrm{d}A; emettenza E: ciò che abbandona \mathrm{d}A
Useremo spesso la notazione L(\mathbf{x} \rightarrow \Theta) per indicare la radianza che abbandona una superficie nel punto \mathbf{x} verso la direzione \Theta, a cui è associato un angolo solido \mathrm{d}\Omega.
Analogamente, L(\mathbf{x} \leftarrow \Theta) è la radianza proveniente dalla direzione \Theta che incide sulla superficie in \mathbf{x}.
Ciascuna delle quantità viste finora può essere riferita a un intervallo di lunghezze d’onda. Diverse sorgenti luminose hanno infatti spettri differenti:
Dalla radianza L(\mathbf{x} \leftrightarrow \Theta) si può definire la radianza spettrale L_\lambda(\mathbf{x} \leftrightarrow \Theta), che fa riferimento all’intervallo di lunghezze d’onda [\lambda, \lambda + \mathrm{d}\lambda] e indichiamo con la stessa lettera L per comodità. È definita tramite l’equazione L(\mathbf{x} \leftrightarrow \Theta) = \int_0^\infty L_\lambda(\mathbf{x} \leftrightarrow \Theta)\,\mathrm{d}\lambda, \quad [L_\lambda(\mathbf{x} \leftrightarrow \Theta, \lambda)] = \mathrm{W}/\mathrm{m}^2/\mathrm{sr}/\mathrm{m}.
Da L si possono ricavare \Phi, I, E. Ad esempio:
\Phi = \iint_{A, \Omega} L(\mathbf{x} \rightarrow \Theta)\, \cos\theta\,\mathrm{d}\Omega\,\mathrm{d}A_\mathbf{x},
In assenza di attenuazione vale che L(\mathbf{x} \rightarrow \mathbf{y}) = L(\mathbf{x} \rightarrow \mathbf{z}), se \mathbf{x}, \mathbf{y}, \mathbf{z} sono sulla stessa retta; vale lo stesso per L_\lambda, ovviamente.
Il fatto che L e L_\lambda non dipendano dalla distanza implica che il colore percepito di un oggetto alla distanza d non cambia al variare di d (se non c’è attenuazione).
L è ciò che viene misurato da qualsiasi sensore (telecamera, occhio umano) sensibile alla luce.
Il comportamento di L_\lambda al variare di \lambda permette di stimare il colore (hue):
(Esiste anche un terzo parametro, la saturazione, che tratteremo a breve.)
Stimare L e L_\lambda insieme consente di produrre un’immagine a colori:
Consideriamo un emettitore diffuso, un oggetto che emette luce uniformemente in tutte le direzioni:
In questo caso, L(\mathbf{x} \rightarrow \Theta) = L_e\qquad\text{(costante)}.
\begin{aligned} \Phi &= \iint_{A, \Omega} L(\mathbf{x} \rightarrow \Theta)\,\cos\theta\,\mathrm{d}\Omega\,\mathrm{d}A =\\ &= \iint_{A, \Omega} L_e\,\cos\theta\,\mathrm{d}\Omega\,\mathrm{d}A =\\ &= L_e \int_A \mathrm{d}A \int_\Omega \cos\theta\,\mathrm{d}\Omega =\\ &= L_e \int_A \mathrm{d}A \int_0^{2\pi}\mathrm{d}\phi \int_0^{\pi/2}\mathrm{d}\theta \cos\theta\,\sin\theta =\\ &= \pi A L_e.\\ \end{aligned}
La Bidirectional Reflectance Distribution Function (BRDF) è il rapporto f_r(x, \Psi \rightarrow \Theta) tra la radianza che abbandona una superficie lungo \Theta e l’irradianza (flusso normalizzato su A, \mathrm{W}/\mathrm{m}^2) ricevuta da una direzione \Psi:
\begin{aligned} f_r(x, \Psi \rightarrow \Theta) &= \frac{\mathrm{d}L (x \rightarrow \Theta)}{\mathrm{d}I(x \leftarrow \Psi)} = \\ &= \frac{\mathrm{d}L (x \rightarrow \Theta)}{ L(x \leftarrow \Psi) \cos(N_x, \Psi)\,\mathrm{d}\omega_\Psi }, \end{aligned} dove \cos(N_x, \Psi) è l’angolo tra la normale a \mathrm{d}A e la direzione incidente \Psi.
Si usa l’irradianza perché qui non ci interessano solo le caratteristiche intrinseche dei raggi luminosi, ma anche il modo in cui la superficie “reagisce” ad essi.
Per la BRDF vale la reprocità di Helmholtz: f_r(x, \Psi\rightarrow\Theta) = f_r(x, \Theta\rightarrow\Psi), ossia, la BRDF non cambia se si scambiano la direzione entrante con quella uscente.
Si può dimostrare questa proprietà usando le equazioni di Maxwell, ma la dimostrazione è lunga e non particolarmente interessante per i nostri scopi.
Grazie al principio di sovrapposizione dei campi e.m., se si hanno più sorgenti luminose i=1\ldots N che insistono su una superficie, è sufficiente sommare le componenti:
\begin{aligned} \mathrm{d}L_i(x \rightarrow \Theta) &= f_r(x, \Psi_i \rightarrow \Theta) \mathrm{d}E(x \leftarrow \Psi_i) =\\ &= f_r(x, \Psi_i \rightarrow \Theta) L(x \leftarrow \Psi_i)\,\cos(N_x, \Psi_i)\,\mathrm{d}\omega_{\Psi_i},\\ L_\text{tot}(x \rightarrow \Theta) &= \int_{\Omega_x} f_r(x, \Psi \rightarrow \Theta) L(x \leftarrow \Psi)\,\cos(N_x, \Psi)\,\mathrm{d}\omega_\Psi. \end{aligned}
Tutta la radiazione incidente viene distribuita sulla semisfera 2\pi, così la BRDF è costante: f_r(x, \Psi \rightarrow \Theta) = \frac{\rho_d}\pi, dove 0 \leq \rho_d \leq 1 è la frazione di energia incidente che viene riflessa.
Una superficie perfettamente riflettente è modellata da una Delta di Dirac, ossia identicamente nulla tranne nella direzione uscente R data dalla legge di riflessione: R = 2(N \cdot \Psi) N - \Psi, dove N è il vettore normale (tangente) alla superficie.
Esistono online librerie di BRDF, solitamente ricavate da misure in laboratorio, quasi tutte a pagamento.
L’equazione che studieremo durante il corso è la seguente: \begin{aligned} L(x \rightarrow \Theta) = &L_e(x \rightarrow \Theta) +\\ &\int_{\Omega_x} f_r(x, \Psi \rightarrow \Theta)\,L(x \leftarrow \Psi)\,\cos(N_x, \Psi)\,\mathrm{d}\omega_\Psi, \end{aligned} dove L_e è la radianza emessa dalla superficie nel punto x lungo la direzione \Theta.