IIC3912 - Tópicos Avanzados de Gráfica Computacional
Francisca T. Gil-Ureta ⋅ 04/05/2026

Hoy vamos a discutir el paper **NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis** de Ben Mildenhall et. al.. Este paper propone una forma de sintetizar nuevas vistas de una escena modelando la función volumétrica de la escena usando una red neuronal.
Pensemos primero en el caso 2D. Podemos entrenar una red neuronal que prediga el color de cada pixel de una imagen? Es decir, que dado el pixel $(i,j)$ la red neuronal predica su color $\mathbf{c}$. Esta network podría memorizar la imagen, encoding los valores de cada pixel en los pesos de la red neuronal.

Qué pasa cuando queremos extender esta idea a una escena 3D? Podríamos usar voxels (cubos) en vez de pixeles, y que el network memorize el valor de cada voxel. Si bien esto es teóricamente posible, necesitaríamos voxels muy pequeños para poder reconstruir una escena fotorealista.
En vez de usar voxels, el paper propone usar una red neuronal capaz de aprender una función volumétrica continua. La función mapea cada punto $(x,y,z)$ y dirección de vista $(\theta, \phi)$ con una densidad $\sigma$ del punto, y una radiancia emitida en ese dirección $\mathbf{c} = (r,g,b)$.
La escena es representada como una función continua de 5 dimensiones. El input es una posición 3D $\mathbf{x} = (x, y, z)$ y una dirección en la que se mira $\mathbf{d} = (\theta, \sigma)$. El output de la función es el color emitido $\mathbf{c} = (r,g,b)$ y la densidad volumetrica $\sigma$.
La función es aproximada por una red neuronal (MLP), $F_\Theta : (\mathbf{x}, \mathbf{d}) \rightarrow (\mathbf{c},\sigma)$, donde los pesos $\Theta$ son optimizados para mapear cada input a su output correspondiente.
En particular, la densidad $\sigma$ solo depende de la posición $x$ , y no de la dirección de la vista $d$. Esto ayuda a que la representación tienda a ser consistente entre multiples vistas; el color de un punto puede variar entre vistas para modelar materiales especulares, pero la densidad es constante entre vistas.

Las imágenes son sintetizadas haciendo un muestreo de las coordenadas (x, y, z) a lo largo de los rayos de la cámara. Esto muestra el diagrama en la izquierda (a), donde tenemos dos imágenes y en cada una se ha dibujado un rayo y las respectivas muestras tomadas (puntos negros). Para cada punto negro, su posición y dirección del rayo es pasada como input al MLP ($F_\Theta$) para producir un color (RGB) y una densidad volumétrica ($\sigma$). Luego de calcular estos valores para varios puntos del rayo, se usan técnicas de volume rendering (c) para componer el color del pixel. La función de rendering volumetrico es diferenciable. Esto permite optimizar la escena (parametros $\Theta$) minimizando el residuo entre las imágenes sintetizadas y las imágenes originales (ground truth).

El color del pixel es calculado integrando las contribuciones a lo largo del rayo que va hacia la escena. Para un rayo parametrizado como $\mathbf{r}(t)=\mathbf{o} + t \mathbf{d}$, el color $C(r)$ del pixel es calculado usando la siguiente ecuación:
