3D模型生成之有向距离场(SDF)和光线行进(Ray Marching)

在阅读与3D模型生成相关的论文时,SDF是非常常见的关键词,因此笔者在此向大家介绍有向距离场(Signed Distance Field)

推荐阅读:3D Gaussian Splatting高斯泼溅技术简单介绍

在计算机图形学中,3D物体表面的表示有显式隐式 两种方式。显式表示法如我们常见的网格、点云这些直接呈现几何信息的方式。而隐式表示法则是一种间接表示法,例如我们可以用以下数学式表示一个单位球:

而SDF(有向距离场则可用于对3D物体表面进行隐式表示。

SDF 是一种空间描述方法,用于定义空间中每个点到距离该点最近的3D物体表面的有向距离 :在物体表面之外正值 ,在表面之内负值。下图以二维轮廓为例进行图示:

从上述例子可以看出,即使我们并未直接给定轮廓线的具体信息,仅凭整个空间的SDF信息,就足以间接表达该二维轮廓。而3D物体表面的表示正是这一概念在三维空间中的延伸。

推荐阅读:对占用网络(Occupancy Networks)的简单介绍

应用场景

SDF的应用非常广泛,例如在下图所示游戏引擎的粒子系统中,我们可以基于SDF构建方向贴图,使运动中的粒子能够感知到自身正在接近建筑物表面,从而防止其穿透进入。

光线行进(Ray Marching) 可作为判断光线与3D表面相交情况的一种算法。其原理主要基于SDF的应用。以下图为例,假设一束射线从左下方向右上方移动,而右下角的绿色球体是通过SDF信息隐式表示的球面。利用SDF信息,我们可以在每个步进之后,计算出下一步可安全前进的距离。

这是因为SDF提供的有向距离值 本质上是一个保守的安全步长

在下图的例子中,左上相机向各方向发射射线时,SDF能告诉我们当前位置到最近物体表面的最短距离 。这个距离值保证:以当前位置为球心、该距离为半径的球体空间内不存在任何物体表面。

因此,射线每一步都推进不超过该距离的长度,就能确保不会因步长过大而穿透或错过表面。这种"步步为营"的方式,既安全又高效,是Ray Marching算法的核心基础。

跨出第一步后,在每个新位置仍可通过SDF获取到球面的最短距离(青色箭头所示),因此可以安全地继续沿射线方向推进与青色箭头等长的步距(如下图所示)。

继续前述步骤,接下来会出现两种情况。第一种情况如下图所示,红色射线迟早会与球面相交或相切。

第二种情况如下图所示,若射线在后续每一步进中与球面的距离持续增大,则可推断该射线与球面永不相交。

判定射线与球面是否相交存在多种计算方法,例如可直接通过向量运算结合线性代数进行求解。当然,Ray Marching 的应用远不止于此,其在渲染领域的应用或许更为人们所熟知。但通过这个示例,可以帮助大家更直观地理解 Ray Marching 算法的核心原理。

推荐阅读:3D高斯泼溅(3D Gaussian Splatting)介绍--论文解析及使用以及在自定义数据集上的训练

相关推荐
charlee445 天前
3D Gaussian Splatting可视化渲染原理详解
计算机图形学·三维重建·实时渲染·球谐函数·3d gaussian splatting
杀生丸学AI5 天前
【三维重建】ArtiFixer:自回归扩散增强与扩展3DGS(NVIDIA)
人工智能·3d·数据挖掘·aigc·三维重建·扩散模型·视觉大模型
梦想的初衷~11 天前
【完整教程】基于Python的无人机多光谱-点云融合生态三维建模:从Metashape重建到碳储量/生物量/LULC预测
python·无人机·三维重建·多光谱·无人机遥感·碳储量·生态建模
辰尘_星启16 天前
【三维重建】概述
计算机视觉·机器人·slam·控制·三维重建·sfm
搬砖者(视觉算法工程师)1 个月前
计算机视觉与计算摄影测量学第五讲二值图像处理:连通分量、距离变换与形态学算子深度解析
图像处理·三维重建
杀生丸学AI2 个月前
【三维重建】RT-Splatting:基于3DGS的联合反射-透射建模(CVPR 2026)
人工智能·深度学习·3d·三维重建·高斯泼溅·动态重建·镜面反射
搬砖者(视觉算法工程师)2 个月前
计算机视觉与计算摄影测量学第二讲:相机基础与光的传播
数码相机·三维重建
charlee442 个月前
最小二乘问题详解:目录
最小二乘法·三维重建·sfm·ceres solver·bundle adjustment