OpenSubdiv 修改器

OpenSubdiv 修改器对网格对象执行细分和平滑处理。它还可以读取基本堆栈条目中的折缝值,并将其应用到修改的对象。

“常规控件”卷展栏

迭代次数
细分网格的次数。范围从 0 到 6。
渲染迭代次数
渲染时细分网格的次数。必须选中复选框,该设置才能生效。范围从 0 到 10。
等值线显示
启用并且边可见时(例如,“边面”显示处于活动状态),仅显示原始对象的边。禁用时,将显示所有边,包括细分生成的边。
运行模式
确定如何在明暗处理视口中显示已修改对象。不会影响渲染输出。
  • 网格输出:将视口中的细分对象显示为标准网格,仅使用 CPU 处理细分。
  • GPU 显示:使用显示卡上的图形处理单元在视口中显示细分的对象(如果兼容)。如果细分模型的分辨率非常高并减慢了视口的反馈速度,则使用“GPU 显示”。

    此“GPU 显示”选项的速度通常远远高于“网格输出”模式。特别是,使用此模式可利用“自适应细分”选项以交互方式建模高度细分的网格(请参见以下内容)。一些潜在的限制如下所示:

    使用“GPU 显示”模式的限制:

    • 不支持显示已修改对象的阴影和纹理贴图。
    • 已修改对象使用 OpenSubdiv 修改器的堆栈级网格进行显示。更改对象几何体的任何修改器输出(例如,位于堆栈中 OpenSubdiv 修改器上方的“混合”或“扭曲”)不会显示在视口中。
    • 显示卡必须支持 DirectX 11,并应具备相应的强大功能。如果 GPU 速度非常慢,使用“GPU 显示”模式可能无法提供预期的速度。此外,如果场景共享 GPU 资源(例如,针对显示位图),性能可能会受到影响。

OpenSubdiv 控件卷展栏

顶点
控制如何插补边界边和角顶点。
  • 插补边边在平滑后保持为锐边。所有角已进行平滑。
  • 插补边和角边和双边角在平滑后保持为锐边。

左侧:插补边;右侧:插补边和角

UV 边界
控制如何将平滑应用于边界 UV。下图显示前面的网格已在“UVW 展开”修改器编辑器中进行平滑。
  • 双线性(无) UV 未平滑。
  • 平滑(仅边) UV 和角已平滑。在平滑后保持为锐边。
  • 平滑(边和角) UV 已平滑。边和双边角在平滑后保持为锐边。
  • 平滑(始终锐化) 启用时,将平滑不连续边界上的顶点附近的面变化数据(UV 和颜色集)。不连续边界上的顶点将使用锐化规则细分(全部插补)。
传播角
启用时,原始网格中的面变化数据(UV 和颜色集)将应用到“平滑网格”预览的角。
平滑三角形
启用时(默认),则会将细分规则应用于网格,从而使三角形细分更加平滑。
折缝
控制如何在细分过程中平滑折缝。
  • 法线不对折缝应用平滑。
  • Chaikin 插补关联边的锐度,从而生成半尖锐折缝。在细分折缝边后,将使用 Chaikin 算法确定生成边的锐度。

    此方法可改善具有不同边权重的多边折缝的外观。

在下图中,六个边的折缝值从左侧的 0.1 增加到右侧的 1.0。上图通过将“折缝”设置为“法线”进行渲染,下面的图通过将“折缝”设置为“Chaikin”进行渲染。后一个选项可显著平滑锯齿效果。

“自适应细分”组

自适应细分是一种建模工具,可在视口中基于查看距离或缩放级别以交互方式细分网格。它仅适用于“GPU 显示”运行模式,在近距离查看网格时基本上可以提供更高的细分,距离越远细分越低。因此,如果您正在建模一个大型复杂网格,则对当前正在处理的部分可进行更高程度的定义,而其他部分也不会那么减缓计算机速度。

由于自适应细分使用 GPU,所以速度比使用常规细分要快得多。因此,可以将主“迭代次数”值设置为 1,使用自适应细分闭合建模以获得实时反馈。然后,在需要渲染时,可以增加主“迭代次数”设置以与使用自适应细分的视口中获得的结果匹配。

以下视频显示了一个使用自适应细分的示例。在第一部分,视口在“自适应细分”禁用的情况下会缩小和放大,因此 OpenSubdiv 修改器应用的细分是恒定的。在后面部分,“自适应细分”处于启用状态,您可以看到细分级别如何随缩放级别变化而以交互方式改变。此原理同样适用于更改查看距离。

自适应
启用此选项后,网格将基于查看距离和“最大迭代次数”值在活动的视口中细分。仅当“常规控件”卷展栏中的“GPU 显示”处于活动状态时,此选项才可用。
最大迭代次数
自适应细分可获得的最大细分级别。实际的细分级别取决于多个其他因素,包括原始网格细分、“常规控件”卷展栏中的“迭代次数”值和查看距离或缩放级别。

“网格控件”卷展栏

更新选项
更改设置后(如迭代次数)指定更新细分网格的时间:
  • 始终更改设置后将立即更新网格。
  • 渲染时当您渲染场景时更新网格。
  • 手动仅在单击“更新”按钮后更新网格。
更新
更新网格以反映上次更新后所做的更改。渲染和手动设置时应用(请参见上文)。