click to edit title

Finska pappret

Receiver point

Punkter x på scenens ytor

Vi beräknar radiance i \(\mathbf{x}\) genom #

Probe

Captures the radiance field at the probe location \(\mathbf{p}_i\)

but it is too expensive to capture all directions \(\omega\), so we approximate with SH like this:

\(L(\mathbf{p}_{i},\omega)=\color{DodgerBlue}{\sum_{j}\lambda_{ij}Y_{j}(\omega)}\)

\(\boldsymbol{\lambda}\) = the probe radiance vector

\(Y_j\) = jth SH basis function #

Radiance field

The radiance field defines the radiance (color/intensity of light rays) in every direction at every point in space

\(L(\mathbf{x},\omega)\)

Spherical Harmonics

Local transport operator \(\mathcal{P}_{x}\){\(\boldsymbol{\lambda}\)}\((\omega)\)

Transformerar # till interpolerad incident radiance i \(\mathbf{x}\) som en funktion av den kontinuerliga riktningen \(\omega\)

\(L(\mathbf{x},\omega)\approx\mathcal{P}_{x}\){\(\boldsymbol{\lambda}\)}\((\omega)\)
#

Precomputed transport

\(\mathcal{P}_{x}\){\(\boldsymbol{\lambda}\)}\((\omega)\) ger oss alltså en approximation av vårt radiance field \(L(\mathbf{x},\omega)\). Från detta kan vi få ut irradiance:


\(I(\mathbf{x})\approx\int\mathcal{P}_{x}\){\(\boldsymbol{\lambda}\)}\((\omega)\cos\,\theta\,d\omega=\sum_{ij}\color{DodgerBlue}{\lambda_{ij}}\alpha_{ij}\)


där \(\alpha_{ij}=\left\langle K_{ij}(\mathbf{x},\cdot),\cos\,\theta\right\rangle \)

Precomputation-algoritmen

  1. Voxelisera scenen (med floodfilled interiors)
  1. Generera kandidater \(\mathbf{p}_i\): 1 per voxel som angränsar till yta
  1. Ta bort de kandidater \(\mathbf{p}_i\) som har högst värde på \(\textrm{density}(\mathbf{p}_i)\) definierad som\[\textrm{density}(\mathbf{p}_{i})=\sum_{k}w_{k}(\mathbf{p}_{i};\rho_{\textrm{probes}})\] där \[w_{i}(\mathbf{x};\,r)=\color{gold}{w(}||\mathbf{x}-\mathbf{p}_{i}||_{2}/r\color{gold}{)}\]tills vi nått önskat antal # prober.
  1. Skapa en funktion n_overlap(r, i) som hittar antalet prober som bidrar till den i:te receivern och en funktion n_overlap_avg(r) = sum(n_overlap(r, i)) och sök över möjliga radier r för att hitta den radie som bäst matchar det önskade n_overlap_avg(r) (t.ex. 10). # #
  1. Beräkna local transport coefficients \(\boldsymbol{\alpha_x}\) och \(\mathbf{B_x}\) för alla receivers
  1. Komprimera \(\boldsymbol{\alpha_x}\) och \(\mathbf{B_x}\) med Clustered Principal Component Analysis [Sloan et al. 2003]