Plenoxel用带有密度受视角影响的颜色的三维网格来表征场景,网格的顶点上存储了不透明度 α 和Spherical Harmonics (SH)。每个Color Channel都对应一组SH系数,因此可以通过SH系数来求得指定视角下的颜色。

假设使用 二阶球谐(l=0..2),每个通道需要 ( (l+1)^2 = 9 ) 个系数。对某一体素:

  • R 通道系数:(a_0^R, a_1^R, \dots, a_8^R)
  • G 通道系数:(a_0^G, a_1^G, \dots, a_8^G)
  • B 通道系数:(a_0^B, a_1^B, \dots, a_8^B)

给定视角方向(单位向量):

计算该方向上的 9 个球谐基:

各颜色通道在方向 (\omega) 下的值:

最终颜色:

由于网格的表征是离散的,因此对任意位置采样点求密度和颜色时,Plenoxel中使用了Trilinear Interpolation。随后,将射线上所有采样点传入体渲染方程,得到射线(也就是像素)的颜色。

Plenoxel没有使用神经网络,而是直接使用一个三维网格来存储空间信息,并且直接优化顶点上的参数,这实质上是一种体数据。对于离散体素连续化的问题,采用三线性插值解决。对于视角相关的颜色,采用SH系数来表征。然后,利用体渲染方程,将这个三维网格中的数据渲染成指定视角下的图片。