有符号距离场(Signed Distance Field,SDF)

https://zhuanlan.zhihu.com/p/89701518

SDF的用途很多,可以用来做large scale AO, 软阴影等。UE4就用SDF来做AO和软阴影,SDF Ray-traced shaow 比PCSS软,而且和CSM相比,因为没有那么大的几何填充负担,所以反而要便宜很多,和静态的Shadow map相比,又可以支持物体级别的移动(虽然不支持顶点动画),所以是一个相当不错的阴影解决方案。堡垒之夜就用了这项技术,堡垒之夜的近处是级联阴影,远处是SDF Ray-traced shadow.

SDF 可以用一个标量场函数或者一张体贴图来表示,简单地来说就是一种空间的表达,里面存的是空间中一个点到最近的三角面的距离,如果在物体内部则是负值。如图所示:
在这里插入图片描述
在这里插入图片描述

因为是“距离”的标量场,所以用“距离”保留了空间信息,结合硬件插值可以更好地保留表面信息,不像体素一旦被体素化,所有几何信息就全部丢失了,原来的边界在哪里就不知道了,所以SDF的有效分辨率其实比体素要高的多。

SDF追踪的时候能加速,可以跳过空闲的空间。

既然标题写的是建场,那么这次主要分享的就是建场的内容。实际上虚幻用的是最简单的暴力建场,在每个位置发一堆光线求离附近所有三角面的距离,找出最近的那个作为距离场的值。

实际上这个过程相当慢,为了降低烘焙的开销,像在虚幻里一般我们用32x32x32分辨率就相当够了,如果要非常高的精度最大可以用128128128大小。然后一般可以考虑用8位的定点数来存储,最大范围scale到距离场的大小。

加速结构
kd树:建树
因为涉及到大量求交,所以我们这时候就需要用到空间划分了,UE用的是KDop树,这里我直接抄了pbrt上的kd树来用,下面简单描述下KD树。

kd树就是用xyz三个轴,每次取一个轴,用某个策略找一个最佳的划分点,在这个划分点分割,如此往复,直到把所有三角形都划分到叶子节点里。

划分过程如下图:
在这里插入图片描述
kd树遍历
树构建好了之后,遍历就比较简单了,简单来说就是判断一下光线是否会与父亲节点相交,如果相交,再去判断子节点,与父节点相交的光线不一定会和每个子节点相交,遍历的时候不相交的部分,就可以全部跳过。

建场
暴力建场的方法,就是直接迭代323232个点,然后在每个点上向周围发射一大堆光线,然后保存交到的最小距离,作为距离场在这个点上的值。

值得一提的几个细节是,一般距离场的范围是比物体的AABB大一圈,我这里取的是扩大40%大小。

然后,在物体内部的点,距离存的是负值,然而不是所有曲面都是闭合的,有的时候我们没法区分内和外,虚幻用的是一个heuristic,如果50%以上的光线和三角形的正面相交,那么我们认为这个点在物体外面,如果50%以上的光线与三角形的背面相交,我们认为这个点在曲面内部,再借用一张虚幻的图:

Ray March
Sphere Tracing
https://www.cnblogs.com/murongxiaopifu/p/9175936.html
http://jamie-wong.com/2016/07/15/ray-marching-signed-distance-functions/
http://advances.realtimerendering.com/s2015/DynamicOcclusionWithSignedDistanceFields.pdf

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 签名距离Signed Distance Field)是一种用于描述二维或三维空间中物体形状的技术。它通过计算每个像素或顶点到最近物体表面的距离,并将其正负号表示为该像素或顶点的值,从而生成一个包含物体形状信息的图像或数据结构。签名距离可以用于实现高质量的渲染、碰撞检测、形状变形等应用。 ### 回答2: Signed distance field是一种用于描述2D或3D图形的技术。它可以用来实现许多计算机图形学中的应用,如字体渲染、图形变形、遮挡剪除、违背处理等等。 Signed distance field的主要思想是通过计算每个点到形状(如字形)之间的距离来表示形状。这个距离可以是正数、负数或0,区别在于点与形状的相对位置。如果点在形状内部,距离为负;如果在外部,距离为正;如果在形状上,距离为0。这些距离值被组织成一个网格或纹理,称为signed distance field。 利用signed distance field可以高效地进行图形渲染,实现高质量的字体渲染效果。由于有了距离信息,字体边缘、倾斜等细节均能够得到表现。此外,signed distance field还可以用于形状的物理变形和遮挡剪除处理。在游戏中,它也可以用来处理着色、阴影和碰撞检测。 Signed distance field技术在最近几年被大量应用于2D和3D图形领域中,得到了广泛的关注和研究。它被认为是一个非常有前途的技术,在未来可能会应用于更广泛的领域中。 ### 回答3: Signed Distance FieldSDF,有时称为Distance Field)是一种用于存储和处理图形形状的技术,它被广泛应用于计算机图形学、游戏开发以及工业设计等领域。SDF的主要特点是在图形形状表现中同时提供了距离和方向的信息,这种信息支持一系列的图形操作,例如放缩、旋转和截取等视觉特效。 SDF最初被用于字形渲染,它可以使用比横向向量清晰(sharp)得多的向量控制轮廓;SDF可以被用于对象投影,在三维空间中处理物体形状的透明度;SDF也可以被用于创建特效,在动态创建的形状中保存形状和距离的注意力值。SDF匹配的方法可以构建出多边形并存储键值对——key-value pairs,该密钥可以用于拾取和过滤。 简而言之,SDF是一种能让你在计算图形边界距离的同时,还能获取专业的视觉效果的推算算法,使用它可以更高效地渲染图形,实现更加复杂的视觉效果。随着技术的进步和应用的广泛,SDF已成为计算机图形学领域中被广泛应用的技术之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值