SDF Field

SDF全称为Signed Distance Field,即标识距离场,是一种体积类型。

三维几何数据中,常用的体积数据类型主要有ScalarVector两种,也就是单个标量以及二维或三维的向量,而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节点进行转换:

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

· 本文完 ·