1. 3d场景的表达方式分为显式和隐式,显式的mesh网格等;隐式的有SDF,nerf,点云等
  2. 2d图片的表达方式也分为显式和隐式,显示为图片jpg格式、矢量图svg格式,隐式的为RGB,HSV等参数来表示图片,但是这种用参数来表示图片的方法,在放大后会出现锯齿,SDF就是解决这个问题的。

SDF(Signed Distance Field)在3d和2d中都有对应的应用。在3d中光线追踪对于性能的消耗过大,所以sdf常常被用来作为物体的隐式表达,配合ray tracing达到接近光线追踪的效果.

<aside> 💡

SDF本质就是存储每个点到图形的最近距离,SDF就是将隐式表达转化为显式表达的工具。

</aside>

函数定义

给定一个三维物体(如球体、立方体),SDF 能够告诉你 **空间中任意一点到该物体表面的最短距离,**并且通过符号区分内外:

image.png

image.png

举个例子,对于一个立方体,他的SDF函数表达式为:

image.png

2D符号距离场

符号距离函数可视化:

image.png

圆心$p_0$坐标为(0,0),圆的半径为1,那么p0点的SD函数值为-1,通过映射为RGB转换为青蓝色,

圆边缘处$p_1$点的SD函数值为0,转为RGB=0,就是黑色

外面的点$p_n$,越原理圆心,值越大,RGB越接近黄色。