SDF Field
SDF全称为Signed Distance Field,即标识距离场,是一种体积类型。
三维几何数据中,常用的体积数据类型主要有Scalar和Vector两种,也就是单个标量以及二维或三维的向量,而SDF则一般通过单维的标量值来描述。
Signed Distance Field
Signed Distance Field即标识距离场,顾名思义:场的体素值描述的是体素位置与目标表面的距离,本质上是用于构建三维形状表面的三维像素,具体原则如下:
如果体素位置在Surface的外部,则其距离为正值;如果体素位置在Surface的内部,则其距离为负值。
如果Voxel值为0,则意味着其位置刚好处在表面的位置上。
在Houdini VOP级别下,可以通过Volume Sample VOP节点,对体积对象的指定SDF体素进行采样,获取距离值。
SDF体积有时是中空的(如下图),其形态是一个有厚度的包裹形封闭体积。
![]()
节点关系
SDF Volume具有Surface——表面性质。
表面一般处于 SDF体积的最外一层Voxel与相邻内部Voxel之间的相接位置:
![]()
中空体积
针对某些大型形状,默认的优化方案往往会舍弃较大的中空空间,而这些中空区域实际上就是体积的无效区域,所以需要区分清楚:
那些是SDF体积描述的表面内部(
即有值但是小于0
,那些是SDF体积的无效区域(
即没有有效值)。
对于这种内部中空的SDF Volume,一般会有两个互不衔接的表面,也就是说该体积的形状是一个中空的具有一定厚度的体积。
一般可以通过VDB Visualize Tree SOP节点对SDF Volume进行可视化。
Gradient Field
Gradient Field(梯度场)是一种向量体积,它的体素值描述的是体素位置与附近表面最近的点形成的向量(其方向即该点对应的表面位置的法线方向)。
该向量始终朝向表面的法线方向:

所以该体积的值相当于是体积几何的法线。可以在渲染体积形态的白水粒子时,用于计算光照,从而可以在渲染体积时,呈现类似于高光反射之类的效果。
长度
关于Gradient的长度,一般描述的是原始标量场的变化率,或者称为“斜率”。
比如对于SDF体积来说,Gradient的方向描述了形状表面的法线,而长度则描述了形状表面的坡度变化率。
![]()
VOP中采样Gradient
Gradient Field可以通过对标量体积的采样而获取。
如在VOP中,即可以根据已有的SDF体积几何,通过Volume Gradient VOP节点采样并计算体素的Gradient向量。
SOP中转换Gradient
VDB Analysis SOP节点可用于将SDF转换为Gradient体积。而对于Density体积,则可以先将其转换为SDF,再用VDB Analysis SOP节点进行转换。
更为快速的方式,则可以使用VDB Combine SOP节点先将Density Field进行反转,也就是使其大于0的体素值 低于0,从而得到一个体素值分布情况类似于SDF的体积——即为0的体素表示表面,小于0的体素表示表面内部。
然后即可直接用VDB Analysis SOP节点进行转换:
![]()
![]()
![]()
· 本文完 ·
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.