Rendering

Il rendering basato su punti con $\alpha$-blending, il rendering volumetrico di tipo NeRF e il Gaussian Splatting condividono diversi aspetti del processo di compositing dell'immagine. In tutti questi casi il colore di un pixel può essere ottenuto combinando i contributi delle primitive attraversate dal raggio associato al pixel. Il colore finale è ottenuto come somma ponderata dei contributi lungo il raggio, con pesi determinati dall'opacità locale e dalla trasmittanza accumulata.

Il colore $C$ di un pixel può essere ottenuto integrando lungo il raggio ottico $\mathbf{r} = \mathbf{o} + t\mathbf{d}$ i contributi radiometrici ponderati dalla densità e dalla trasmittanza, nell'intervallo $[t_n,t_f]$:

\begin{displaymath}
C = \int_{t_n}^{t_f} T(t) \sigma \left( \mathbf{r}(t) \right) \mathbf{c} \left( \mathbf{r}(t), \mathbf{d} \right) dt
\end{displaymath} (10.114)

dove
\begin{displaymath}
T(t) = \exp \left( - \int_{t_n}^{t} \sigma \left( \mathbf{r}(s) \right) ds \right)
\end{displaymath} (10.115)

La funzione $T(t)$ denota la trasmittanza accumulata lungo il raggio da $t_n$ a $t$, ovvero la frazione di radiazione che non è stata attenuata dalla scena prima della posizione $t$.

L'integrale può essere approssimato mediante una discretizzazione del raggio, ottenendo la seguente sommatoria:

\begin{displaymath}
C = \sum_{i=1}^{N} T_i \left( 1 - \exp( - \sigma_i \delta_i) \right) \mathbf{c}_i
\end{displaymath} (10.116)

dove $T_i = \exp \left( - \sum_{j=1}^{i-1} \sigma_j \delta_j \right)$ e $\delta_i = t_{i+1} - t_{i}$.

Questa rappresentazione si riduce al classico $\alpha$-blending usando $\alpha_i = 1 - \exp \left( - \sigma_i \delta_i \right)$. In questo modo anche la trasmittanza si può scrivere come $T_i = \prod_{j=1}^{i-1} (1 - \alpha_j)$.

Nei tipici approcci basati sui punti neurali, il colore $C$ di un pixel si ricava fondendo gli $\mathcal{N}$ punti ordinati che sottendono il pixel stesso:

\begin{displaymath}
C = \sum_{i \in \mathcal{N} } c_i \alpha_i \prod_{j=1}^{i-1} \left( 1 - \alpha_j \right)
\end{displaymath} (10.117)

Paolo medici
2026-10-06