4. 曲面连续性:G0/G1/G2/G3 定义、曲率梳与检测方法
曲面连续性,说白了就是两张曲面在边界上怎么「接」在一起。接得不好,加工出来就是一道坎,或者高光一照就露馅。我刚开始做自由曲面那会儿,总觉得只要位置对上就行,结果被光学工程师追着改了好几版……嗯,从那以后我再也不敢小看连续性了。
4.1 连续性等级:从 G0 到 G3
我们通常用 G0、G1、G2、G3 来标定曲面拼接的质量。数字越大,过渡越平滑,但计算量也越大。你想想看,汽车 A 柱和引擎盖的接缝,跟飞机机翼表面的拼接,要求能一样吗?
| 等级 | 名称 | 数学含义 | 视觉表现 | 典型应用 |
|---|---|---|---|---|
| G0 | 位置连续 | 边界点重合 | 明显接缝、折痕 | 非外观面、内部结构 |
| G1 | 相切连续 | 切向量方向一致 | 肉眼无折痕,高光有转折 | 一般工业外壳 |
| G2 | 曲率连续 | 曲率值相等 | 高光平滑过渡 | 汽车外饰、消费电子 |
| G3 | 曲率变化率连续 | 曲率导数相等 | 高光流动无抖动 | 高级车灯、航空叶片 |
核心记忆点:G0 是「碰到」,G1 是「方向一致」,G2 是「弯的一样」,G3 是「弯的变化率也一样」。
4.2 曲率梳:连续性的「照妖镜」
曲率梳(Curvature Comb)是我个人最依赖的诊断工具。它把曲面上某条曲线各点的曲率大小,用梳齿一样的长短线画出来。齿长代表曲率值,齿的方向代表曲率法向。
为什么说它是照妖镜?因为肉眼看不出的微小波动,曲率梳上一目了然。
- G0 不连续:曲率梳在边界处断开,齿长突变。
- G1 不连续:曲率梳连续,但齿的方向突然拐弯。
- G2 不连续:曲率梳连续且方向一致,但齿长有跳变。
- G3 不连续:曲率梳看起来平滑,但齿长的变化率不均匀。
我的习惯:调曲面时,我会把曲率梳的显示比例调到 1:1 或 2:1。比例太小看不出问题,太大又容易过度敏感。调到刚好能看清齿长变化就行。
4.3 连续性检测方法
检测连续性,不能光靠眼睛看。我建议你至少用下面三种方法交叉验证:
4.3.1 几何检测法
- 斑马纹分析:在曲面上投射黑白条纹,观察条纹在边界处的走势。G0 会错位,G1 会拐弯,G2 会平滑通过。
- 高光流检测:模拟环境光反射,看高光带是否在边界处出现「断流」或「抖动」。
- 曲率云图:用颜色映射曲率值,G2 不连续处会出现色带突变。
4.3.2 数值检测法
在 CAD 软件里,我们可以直接读取边界两侧的曲率值。举个例子:
// 伪代码:检测 G2 连续性
// 在曲面 A 和 B 的公共边界上采样 10 个点
for i = 1 to 10:
kA = getCurvature(surfaceA, u=0.5, v=i/10)
kB = getCurvature(surfaceB, u=0.5, v=i/10)
if abs(kA - kB) > tolerance:
print("G2 不连续,位置:", i/10)
注意:数值检测的容差(tolerance)要根据模型尺寸和加工精度来定。我曾经在一个 2 米长的汽车翼子板上设了 0.001 的容差,结果怎么调都过不了——后来发现这个精度对注塑模具来说根本没必要。一般取模型对角长度的 0.01% 作为起始值。
4.3.3 曲率梳检测法
这是最直观的方法。在公共边界两侧各取一条等参线,画出曲率梳。如果两侧梳齿在边界处能「无缝对接」,说明连续性达标。
避坑指南:我曾经遇到一个案例,曲率梳看起来完美对接,但实际加工出来高光还是断的。后来发现是曲率梳采样点太少,漏掉了局部尖点。现在我至少会在边界两侧各取 50 个采样点,并且把曲率梳的「梳齿密度」调到最高。
4.4 知识结构图:连续性检测体系
下面这张图帮你理清连续性检测的整体脉络:
4.5 实战中的选择策略
不是所有地方都需要 G2 或 G3。我见过不少新手,一上来就把所有曲面都设成 G2,结果模型又大又慢,加工还容易出问题。我的建议是:
- 结构内部、不可见面:G0 就够了,别浪费计算资源。
- 一般外观面:G1 可以应付,但要注意高光转折处。
- 高光敏感区域(汽车外饰、手机壳):至少 G2。
- 光学面、航空叶片:G3 起步,有时候甚至要 G4。
一个小技巧:如果你不确定该用哪个等级,先全部设成 G1,然后对高光敏感区域单独升级到 G2。这样既保证了质量,又控制了计算量。
好了,连续性这部分就聊到这儿。记住:曲率梳是你的好朋友,斑马纹是你的照妖镜,数值检测是你的最后防线。三者结合,曲面拼接的质量就能稳稳拿捏。