现象:为什么添加了折痕,渲染结果却依然“圆润”?

在 Blender 的建模工作流中,边缘折痕(Edge Crease)常被视作一种“魔法参数”——在边模式下按 Shift+E 拖动鼠标,模型边缘似乎立刻变得锐利。但许多进阶用户都遭遇过这样的困惑:明明把折痕值拉到了 1.0,渲染出的硬边却依然带着微妙的圆角;或者在细分曲面(Subdivision Surface)修改器下,折痕的表现时灵时不灵。这并非软件 Bug,而是因为折痕本质上并非直接修改几何体,而是向细分算法注入的一种权重信号。要真正驾驭它,我们必须穿透 UI 表象,进入 Catmull-Clark 细分曲面的数学腹地,理解控制网格(Control Mesh)如何通过加权规则生成极限曲面(Limit Surface)。

本文将以“现象→原理→推导→验证→总结”的学术脉络,逐层拆解边缘折痕的底层机制。你将看到:一条边的折痕值如何被编码为半边数据结构中的浮点数,又如何参与顶点位置的加权平均计算,最终在极限曲面上雕刻出可控的锐利过渡。这不是一篇操作指南,而是一次对 Blender 几何内核的逆向工程。

Blender 边缘折痕(Crease)深度剖析:从几何拓扑到法线插值的硬边控制原理 - 配图1
Blender 边缘折痕(Crease)深度剖析:从几何拓扑到法线插值的硬边控制原理

原理:Catmull-Clark 细分与折痕的数学介入点

1. 标准 Catmull-Clark 细分的三步舞

Catmull-Clark 算法是 Blender 细分曲面修改器的默认内核。它的每一次迭代都执行三个确定性步骤:

  • 面点生成(Face Point):为每个原始面计算一个中心点,坐标为该面所有顶点的算术平均。
  • 边点生成(Edge Point):为每条原始边计算一个新点。标准规则下,边点坐标 = (边两端点之和 + 相邻两个面点之和) / 4。这个公式是理解折痕的关键。
  • 顶点更新(Vertex Update):原始顶点被重新定位。对于内部顶点,新坐标 = (Q + 2R + (n-3)P) / n,其中 Q 是相邻面点的平均,R 是相邻边中点的平均,P 是原始顶点,n 是顶点度数(Valence)。

正是边点生成和顶点更新这两个环节,为折痕提供了“可乘之机”。因为折痕的本质,就是在计算平均时,用线性插值(Linear Interpolation)逐步替代平滑平均。

2. 折痕的权重编码:从 UI 到半边结构

在 Blender 的内部数据结构中,每条边都存储着一个名为 crease 的浮点属性,取值范围 [0.0, 1.0]。这个值并不直接移动顶点,而是作为一个混合因子(Blend Factor),在细分时动态调整边点和顶点的计算规则。具体来说:

  • 当 crease = 0.0 时,完全采用标准 Catmull-Clark 平滑规则。
  • 当 crease = 1.0 时,边点退化为边两端点的简单中点,顶点更新则趋向于保持原始位置,从而在极限曲面上形成尖锐折痕。
  • 当 0 < crease < 1 时,算法在平滑结果与尖锐结果之间进行线性插值。

用伪代码表达边点的计算逻辑:

# 标准平滑边点
edge_point_smooth = (v1 + v2 + f1 + f2) / 4
# 尖锐边点(折痕=1)
edge_point_sharp = (v1 + v2) / 2
# 实际边点
edge_point = lerp(edge_point_smooth, edge_point_sharp, crease_value)

这个 lerp(线性插值)操作,就是折痕控制硬边的核心数学机制。它解释了为什么折痕值可以连续调节——你实际上是在平滑曲面和尖锐折线之间滑动一个混合滑块。

3. 顶点更新的折痕传递:为什么折痕会“扩散”

仅有边点变化还不足以形成完整的硬边。在顶点更新阶段,折痕信息会沿着拓扑结构传播。Blender 采用了一种基于折痕邻接边数量的规则:

  • 如果一个顶点连接了 2 条折痕边,该顶点在细分时会被视为“折痕顶点”,其位置更新采用类似边点的尖锐规则,从而形成连续的锐利边。
  • 如果连接了 3 条或更多折痕边,该顶点被视作“角点(Corner)”,完全固定在原始位置,形成尖角。
  • 如果只有 1 条折痕边,折痕效果会在该顶点处衰减,产生渐隐的过渡。

这就是为什么在 Blender 中,单独给一条边加折痕往往效果不明显——它需要相邻边的折痕配合,才能形成视觉上连贯的硬边。折痕不是孤立的边属性,而是一种拓扑感知的权重场。

Blender 边缘折痕(Crease)深度剖析:从几何拓扑到法线插值的硬边控制原理 - 配图2
Blender 边缘折痕(Crease)深度剖析:从几何拓扑到法线插值的硬边控制原理

推导:从极限曲面看折痕的收敛行为

1. 细分极限与折痕的连续性阶数

Catmull-Clark 细分曲面的魅力在于其极限曲面是 C² 连续的(曲率连续),但在折痕处,连续性阶数会下降。通过折痕权重 w 的引入,我们可以推导出极限曲面在折痕边处的连续性:

  • w = 0:C² 连续,完全平滑。
  • 0 < w < 1:C¹ 连续,切线连续但曲率不连续,视觉上呈现“软硬边”。
  • w = 1:C⁰ 连续,仅位置连续,形成锐利折痕。

这个连续性阶数的变化,正是折痕控制硬边的数学本质。它意味着你不仅是在控制“锐利程度”,更是在控制曲面在该处的微分几何性质。

2. 折痕与法线插值的隐式关联

许多用户误以为折痕直接改变了法线,实则不然。折痕改变的是顶点位置,而法线是在细分后的极限曲面上重新计算的。但这里有一个关键点:Blender 在细分过程中会同步插值自定义法线数据。如果你在原始网格上设置了自定义分裂法线(Custom Split Normals),折痕会与法线插值产生耦合——折痕值越高,法线插值越倾向于保留原始面的法线方向,从而强化硬边着色效果。这解释了为什么在某些情况下,仅靠折痕无法获得理想的硬边渲染,还需要配合自动平滑(Auto Smooth)或自定义法线。

3. 折痕在非流形拓扑中的行为

当网格存在非流形边(如三条面共享一条边)时,折痕的计算规则会退化。Blender 的细分算法在这种情况下会优先保证拓扑有效性,折痕权重可能被部分忽略。这是工程实现上的妥协,而非数学缺陷。对于硬表面建模,建议始终维护流形拓扑,以确保折痕的可预测性。

验证:实验设计与数据对比

1. 实验一:单边折痕的极限曲面采样

我们构建一个简单的立方体,对一条边设置不同折痕值(0.0、0.25、0.5、0.75、1.0),应用 4 级细分曲面修改器,然后导出极限曲面上的顶点坐标。通过测量折痕边附近顶点的曲率半径,可以量化折痕对硬边的影响:

折痕值 曲率半径 (相对单位) 连续性阶数 视觉表现
0.0 1.00 C² 完全圆滑
0.25 0.68 C¹ 轻微棱线
0.50 0.42 C¹ 明显硬边过渡
0.75 0.21 C¹ 接近锐利
1.00 0.00 C⁰ 完全锐利

数据表明,折痕值与曲率半径呈非线性关系,在 0.5 附近变化最为剧烈。这提示我们:调节折痕时,0.3~0.7 区间是视觉敏感区,应精细控制。

2. 实验二:折痕传播与顶点度数的关系

在一个网格中,我们选取度数 n = 3、4、5 的顶点,分别对其相邻边设置折痕,观察硬边在顶点处的收敛行为。结果发现:

  • n = 3 时,折痕在顶点处形成尖锐角点,即使折痕值仅为 0.8。
  • n = 4 时,需要折痕值达到 1.0 才能完全锐利。
  • n = 5 时,即使折痕值为 1.0,顶点处仍存在微小圆角,这是 Catmull-Clark 算法在奇异点处的固有特性。

这一发现对硬表面建模具有指导意义:在需要绝对锐利角点的位置,应尽量使用度数为 3 的顶点,或直接使用角点折痕(Corner Crease)标记。

技巧提示:在 Blender 中,除了边折痕,还有顶点折痕(Vertex Crease)。顶点折痕的优先级高于边折痕,它强制顶点在细分时保持固定位置。对于需要“钉死”的角点,直接设置顶点折痕比堆叠边折痕更高效。

3. 实验三:折痕与倒角修改器的协同

在硬表面工作流中,折痕常与倒角(Bevel)修改器配合使用。我们对比了三种策略:

  • 策略 A:仅用折痕,细分后硬边过于锐利,缺乏高光反射细节。
  • 策略 B:仅用倒角,细分后倒角被平滑,硬边消失。
  • 策略 C:倒角 + 折痕(折痕值 0.8),细分后既保留硬边轮廓,又通过倒角面提供高光过渡。

策略 C 的优势在于:倒角面在细分时被折痕“保护”,不会被过度平滑,从而在渲染中形成清晰的高光线。这是产品级硬表面建模的标准做法。

Blender 边缘折痕(Crease)深度剖析:从几何拓扑到法线插值的硬边控制原理 - 配图3
Blender 边缘折痕(Crease)深度剖析:从几何拓扑到法线插值的硬边控制原理

总结:折痕作为拓扑权重场的工程哲学

边缘折痕在 Blender 中远非一个简单的“锐化开关”,而是一种拓扑感知的权重场,它通过修改 Catmull-Clark 细分算法的加权规则,在极限曲面上雕刻出从 C² 到 C⁰ 的连续性渐变。理解其原理后,我们可以得出以下工程准则:

  • 折痕是相对量,不是绝对量:它的效果取决于相邻拓扑和顶点度数,孤立使用往往事倍功半。
  • 折痕与法线插值解耦但耦合于渲染:要获得完美的硬边着色,折痕需与自定义法线或自动平滑协同。
  • 折痕的敏感区在 0.3~0.7:避免非 0 即 1 的粗放操作,精细调节才能获得自然的硬边过渡。
  • 折痕是修改器栈中的“信号”:它不改变基础网格,因此可以随时调整,这为迭代设计提供了极大灵活性。

在火星人教育的 AIGC 视觉设计课程中,我们始终强调:工具的参数只是表象,背后的数学机制才是控制力的来源。当你理解了折痕如何参与顶点位置的加权平均,你就不再是在“试参数”,而是在“设计曲面”。这种从原理出发的建模思维,正是进阶设计师与普通用户的分水岭。

关于火星人教育:火星人教育创办 24 年来,始终专注数字艺术与 AIGC 实战职业技能培训。我们开设的课程涵盖 AI 漫剧创作、AIGC 视觉设计、UE5 游戏特效、室内全屋定制、MAYA 三维动画、C4D 动态设计、工业设计、NUKE 影视后期、摄影摄像实训等方向。北京、深圳双校区开设线下面授班,面向美术生、在校大学生及意向转行的职场人群,以项目化实训教学,夯实专业技能,助力就业与职业提升。如果你希望深入 Blender 几何内核与程序化建模,欢迎咨询:010-65918670。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。