在三维计算机图形学中,多边形造型是用多边形表示或者近似表示物体曲面的物体造型方法。多边形造型非常适合于扫描线渲染,因此实时计算机图形处理中的一项可以使用的方法。其它表示三维物体的方法有 NURBS 曲面、细分曲面以及光线跟踪中所用的基于方程的表示方法。
但计算渲染表面的底层场景参数仍然是一个涉及图形、视觉和机器学习的难题。
在许多行业中,三角形网格是主要的形状表示形式,但基于网格的导数在某些情况下或在更改拓扑时未定义,因此,体积表示法(volumetric representation)在计算机视觉应用中日益突出,尤其是神经辐射场(Neural Radiance Fields, NeRF)。
到目前为止,这些体积形状表示已使用体积渲染(volume rendering)进行渲染,但这种方法的渲染成本高昂,如果底层形状可以由曲面很好地表示,则体积渲染则是不必要的。
针对这个问题,Google Research 和 MIT 的研究人员提出了一种方法来渲染显式(如网格 mesh )和隐式(如等值面 isosurface)表示,能够在边界处生成精确、平滑的导数。
这种方法使用不可微分光栅化步骤对曲面进行采样并解决遮挡,然后使用深度感知、可微分的喷溅(splatting)操作对样本进行喷溅。由于采样操作不需要微分,任何传统的表面提取和光栅化方法(如Marching Cubes)都可以使用。
与遮挡边界处的曲面相比,splats 可以提供平滑的图像导数。喷溅是在固定大小的像素网格上执行的,并且很容易使用自动微分来表示,不需要自定义梯度,因此能够支持正向和反向模式微分。
文中把提出的方法称为Rasterize-then-splat(RtS)。
文章的作者是Zhoutong Zhang,他的个人主页显示他目前是MIT CSAIL 的博士生,导师是William T. Freeman,主要研究领域是理解和设计视觉和听觉感知问题的计算模块。在清华大学获得电子工程学士学位。
表面样本可以通过使用延迟着色的光栅化图像缓冲区(而非原始表面)上评估的任何可微函数在光栅化和飞溅步骤之间着色。由于着色和飞溅计算的复杂性受像素数量的限制,而不是曲面的复杂性,因此RtS能够扩展到特别复杂的场景。
可微着色函数的一个例子是神经辐射场NeRF网络:给定空间中的位置和观察方向,它输出相应的辐射。当使用体渲染对NeRF进行训练时,提出的方法可以将预训练的NeRF转换为表面光场,而无需成本较高的光线推进(raymarching)。
Rts 主要分为三个部分,其中所有导数都使用自动微分生成,因此实现者只需编写正向渲染计算即可:
1、表面的光栅化Resterization via Non-Differentiable Sampling
光栅化可以表示为一个函数,该函数采用场景参数θ(包含几何属性,如位置、法线或纹理坐标)以及相机参数,并生成屏幕空间几何缓冲区(G-buffers),缓冲区包含距离摄影机最近的K个光线交点处的插值属性。
为了使这个过程既可微又有效,研究人员将光栅化分为两个阶段:采样函数生成不可微曲面参数,以及求值函产生缓冲区的,并且参数随表面类型而变化。
给定曲面参数的曲面属性评估通常是一种简单的插值操作,因此可以在自动微分框架中轻松表示。困难且计算密集的操作是采样函数,该函数用于查找曲面与摄影机光线之间的相互作用。
2、Shading the surface samples
G-buffers 包含各种表面属性,而这些属性取决于所需的shading,任何着色函数都可以表示为一个deferred shading操作。
对于纹理映射网格,G-buffers 中的每个像素包含3D位置、3D曲面法线和2D纹理坐标。对于参数化曲面渲染和使用NeRF着色器的隐式曲面渲染,G-buffers 仅包含3D世界空间位置。着色步骤的输出是一组RGBA缓冲区。
3、多层喷溅Depth-Aware Splatting
着色颜色具有与曲面属性相关的导数,但由于它们是使用点采样生成的,因此它们在遮挡边界没有导数。为了在遮挡处生成平滑导数,splatting函数将每个光栅化曲面点转换为splat,以相应像素为中心,并用相应着色颜色着色。
为了处理遮挡边界处的splat重叠,研究人员引入了基于深度的splat多层累积策略,该策略为遮挡和不遮挡提供了更高的精度。
尽管splat始终以像素为中心,但必须使用曲面定义计算splat的位置,以便导数从图像流回到曲面。splat位置由附加的G缓冲区定义,其中包含每个表面样本的屏幕空间xyz位置。Pk可以通过渲染来计算,然后在每个像素处应用摄影机视图和投影变换。研究人员将表面表示为从预训练NeRF中提取的密度场的等值面,使用NeRF颜色预测分支对其进行着色,并联合微调NeRF网络和密度场。得到的优化表面和表面光场在渲染质量上与原始NeRF网络相差不多(在0.3 PSNR范围内),但每像素只需要一次网络评估,从而达到128倍的加速效果。
研究人员还进一步证明RtS能够为网格和参数化曲面的反向渲染提供了高质量的衍生工具,并且实现的方法也相对更简单。