2. 数学基础

说实话,做自由曲面优化,数学基础是绕不开的坎。我见过不少同学一上来就调参数,结果曲面不光顺、连续性不对,折腾半天才发现是底层曲线没选对。这一章,咱们就把参数曲线与曲面的几个核心概念捋清楚。

2.1 参数曲线:从 Bezier 到 NURBS

先说说 Bezier 曲线。它的核心思想很简单:用一组控制点来定义曲线形状。你拖动控制点,曲线跟着变。我最早接触它是在做汽车 A 级曲面时,那时候觉得这东西真直观。

Bezier 曲线的数学形式:

C(t) = Σᵢ₌₀ⁿ Bᵢₙ(t) · Pᵢ,  t ∈ [0,1]

其中 Bᵢₙ(t) 是 Bernstein 基函数。n 是次数,Pᵢ 是控制点。

Bezier 有个明显的缺点:移动一个控制点,整条曲线都会变。这在局部调整时很麻烦。后来有了 B 样条,它引入了“节点向量”的概念,让曲线有了局部支撑性。

曲线类型 局部控制 连续性 适用场景
Bezier 全局 Cⁿ(内部) 简单形状、字体设计
B 样条 局部 Cᵏ⁻¹(k 阶) 复杂曲线、工业造型
NURBS 局部 + 权重 Cᵏ⁻¹ 精确圆锥曲线、汽车车身

NURBS 是 B 样条的升级版。它给每个控制点加了一个权重 wᵢ,能精确表示圆、椭圆这些圆锥曲线。我在做车身曲面时,NURBS 几乎是标配。

我的经验: 选曲线类型时,先问自己两个问题:需不需要局部调整?需不需要精确表示圆锥曲线?如果两个都是“是”,直接上 NURBS。

2.2 曲面连续性:G0、G1、G2

曲面拼接时,连续性是个关键指标。说白了,就是两块曲面在边界上“接得有多顺”。

  • G0(位置连续): 两块曲面在边界上重合。但方向可能突变,看起来有折痕。
  • G1(切向连续): 边界处的切平面方向一致。看起来光滑了,但高光反射可能有“断带”。
  • G2(曲率连续): 边界处的曲率也一致。高光反射连续,视觉上最顺眼。

我记得有一次做汽车尾灯曲面,供应商给的模型只保证了 G1。结果在光照下,高光带明显断了一截。后来我强制要求 G2,问题才解决。

避坑指南: 我曾经在消费电子产品上用了 G1 连续,结果模具抛光后,分模线处出现肉眼可见的“台阶”。后来才明白,G1 在数学上光滑,但实际加工时,曲率突变会导致刀具路径抖动。所以,能上 G2 就别省。

2.3 法向量与曲率计算

法向量和曲率是曲面分析的“眼睛”。法向量决定了光照反射的方向,曲率则告诉你曲面“弯得有多厉害”。

对于参数曲面 S(u,v),法向量 N 的计算公式是:

N = (∂S/∂u) × (∂S/∂v) / ||(∂S/∂u) × (∂S/∂v)||

曲率稍微复杂一点。我们通常用高斯曲率 K 和平均曲率 H 来评估曲面质量:

  • 高斯曲率 K > 0: 曲面局部像球面(凸或凹)。
  • 高斯曲率 K = 0: 曲面局部像圆柱面(可展开)。
  • 高斯曲率 K < 0: 曲面局部像马鞍面(双曲点)。

你想想看,如果一块自由曲面上同时出现正曲率和负曲率区域,那高光反射就会扭曲。这在汽车外饰件上是绝对不允许的。

实用技巧: 调试时,我习惯用曲率梳(Curvature Comb)来检查曲线。如果曲率梳的线条突然抖动或断裂,那大概率是连续性出了问题。

2.4 知识体系总览

下面这张图把本章的核心概念串起来了。你可以把它当作一个快速索引。

参数曲线与曲面知识体系 自由曲面数学基础 参数曲线 曲面连续性 法向量与曲率 Bezier B 样条 NURBS G0 G1 G2 法向量 N 高斯曲率 K 平均曲率 H 核心逻辑 曲线是曲面的基础 → 连续性决定拼接质量 → 法向量与曲率是质量评估工具

2.5 本章小结

这一章的内容,说白了就是三件事:

  1. 选对曲线类型: Bezier 适合简单形状,B 样条适合局部控制,NURBS 是工业级选择。
  2. 保证连续性: G0 是底线,G1 是基本要求,G2 是品质追求。
  3. 用好曲率分析: 曲率梳和高斯曲率图是调试时的“照妖镜”。

嗯,这些概念后面会反复用到。尤其是调参数时,你一定会回来翻这一章。