Splattering 3D di Gaussiane

L'idea dello splattering 3D di Gaussiane è quella di rappresentare la scena mediante un insieme di primitive gaussiane tridimensionali. Le gaussiane 3D si basano sull'estensione tridimensionale delle gaussiane monodimensionali. Le gaussiane tridimensionali sono definite da una matrice di covarianza $\Sigma$ (in coordinate mondo) e centrate nel punto (media) $\mu$:

\begin{displaymath}
G(\mathbf{x}) = e^{-\frac{1}{2} \left( \mathbf{x} - \mu \right)^{\top} \Sigma^{-1} \left( \mathbf{x} - \mu \right) }
\end{displaymath} (10.119)

(il fattore di normalizzazione è omesso poiché la funzione viene utilizzata come profilo della primitiva durante il rendering).

Per essere renderizzata, questa gaussiana deve essere prima trasformata nel sistema di riferimento della camera e quindi proiettata sul piano immagine. Poiché la proiezione prospettica è non lineare, si introduce una approssimazione locale ottenuta linearizzando la proiezione mediante il suo Jacobiano $\mathbf{J}$. La covarianza tridimensionale viene così proiettata in una covarianza bidimensionale $\Sigma'$:

\begin{displaymath}
\Sigma' = \mathbf{J} \mathbf{W} \Sigma \mathbf{W}^{\top} \mathbf{J}^{\top}
\end{displaymath} (10.120)

dove $\mathbf{W}$ rappresenta la sola componente rotazionale della trasformazione camera-mondo. La traslazione non influenza direttamente la covarianza, ma determina il punto della scena $(x,y,z)$ in coordinate camera nel quale viene valutato il Jacobiano $\mathbf{J}$ della proiezione prospettica. Per esempio nel caso di proiezione camera pinhole:
\begin{displaymath}
\mathbf{J} = \begin{bmatrix}
k_u / z & 0 & - \frac{k_u x}{ z^2 } \\
0 & k_v / z & - \frac{k_v y}{ z^2 } \\
\end{bmatrix}\end{displaymath} (10.121)

La matrice $\Sigma'$ è quindi una matrice $2 \times 2$ (ZPvBG01) che descrive la covarianza dell'ellisse gaussiana proiettata nel piano immagine.

In (KKLD23) si fa un passo ulteriore: siccome risulta difficile parametrizzare una matrice di covarianza (semidefinita positiva) si parte dal fatto che la matrice $\Sigma$ definisce una famiglia di ellissoidi di livello. È pertanto possibile utilizzare una parametrizzazione minimale basata sulle dimensioni e sull'orientazione di tale ellissoide, invece di trattare separatamente tutti gli elementi della matrice. L'idea infatti è quella di usare una matrice di scala $\mathbf{S}$ (3 DOF) e una matrice di rotazione $\mathbf{R}$ (altri 3 DOF ma normalmente rappresentata da un quaternione, vedi sezione A.3):

\begin{displaymath}
\Sigma = \mathbf{R} \mathbf{S} \mathbf{S}^{\top} \mathbf{R}^{\top}
\end{displaymath} (10.122)

parametrizzando pertanto la covarianza di ogni gaussiana con 6 DOF 10.7. Da notare che $\mathbf{S} \mathbf{S}^{\top} = \diag \left( s_x^2, s_y^2, s_z^2\right)$.

Associato infine a ciascuna gaussiana può essere presente un colore RGB oppure una rappresentazione della radiance dipendente dalla direzione mediante armoniche sferiche (Spherical Harmonics, SH), oltre ovviamente al parametro di opacità $\alpha$ simile a quello di NeRF. Dal punto di vista pratico le gaussiane vengono renderizzate in ordine di profondità, dalle più vicine alle più lontane, componendone progressivamente i contributi radiometrici10.8.



Footnotes

... DOF10.7
La primitiva completa è normalmente descritta da posizione tridimensionale, opacità, parametri della covarianza e coefficienti cromatici.
... radiometrici10.8
Il processo può essere arrestato anticipatamente quando la trasmittanza residua diventa sufficientemente piccola.
Paolo medici
2026-10-06