三维模型

三维模型

三维模型由形状(shape)外观(appearance)组成,外观大致可分为材质(material)光照(lighting)。在得到这些信息后,只需要经过一定的算法,就能得到图像。像这样从模型到图像的正向过程,称之为渲染(rendering);而从图像得到模型的这个逆向过程,称为反渲染(inverse rendering)

渲染过程是通过一个渲染方程来完成的,也即将一系列的参数输入这个渲染方程,最终渲染出来的图像就是这个方程的解。

但是否可以根据这个方程的解来反向推导出初始参数呢?这就是NeRF要解决的问题,即从图像中得到模型的信息。

形状表征

主流的形状表征方式有以下四种: - 网格(Mesh):用多个多边形表征物体; - 点云(Point Cloud):某个坐标系下的点的数据的集合,数据可以是三维坐标(x, y, z)、颜色、强度值、时间等等; - 占据场(Occupancy Field):物体占据的空间点的值为 1,未占据的空间点的值为 0; - 有向距离场(Signed distance Field):从物体表面射出向量,往物体内部为正,外部为负。

此外还有一些表示,如体素(Voxel)多视图(Multi-view)等等。

外观表征

最常见是材质纹理贴图(Material Texture Map)+环境光照。将三维物体 unwrap 成二维的图片,并在图片中各点存储对应三维物体的材质的性质。同时使用环境光照获取图片各点对应的光照。

这种方法易于编辑修改,用途十分广泛。但缺点是非常理想且十分繁琐,因为需要将材质和光照分开,且不仅要对贴图进行映射,还分不同的表面对不同的光线进行求交。

此外还有辐射场(Radiance Field)或者表面光场(Surface light filed),这种方法将材质与光照打包,给出每个表面点 \((x,y,z)\) 处不同的观察角度 \((\theta,\phi)\) 的颜色 \((r,b,g)\)。用这种方式可以很方便的描述物体表面的颜色,反射,和阴影等效果。但缺点是不易于修改和编辑。

参考资料