1.1 表面定义与性质
来源:Mario Botsch 等人的 Polygon Mesh Processing,第 1 章 Surface Representations,1.1 小节 Surface Definition and Properties。
这一节回答一个基础问题:在几何处理里,我们到底把“表面”当成什么数学对象?
书中的核心定义是:
在计算机图形学语境中,表面通常被看作嵌入在 中的、可定向的、连续二维流形。
这句话看起来抽象,但它背后其实是在给后续算法规定“输入网格应该长什么样”。
本节核心
几何处理关注的是三维实体的二维边界。
也就是说,算法通常不是直接处理整个实体体积,而是处理它的外表面:
一个“好”的表面通常需要满足:
- 它是二维的:局部看起来像一张平面小片。
- 它是连续的:没有无意义的断裂。
- 它是 manifold:每个局部邻域的拓扑结构正常。
- 它是 orientable:可以一致地区分内侧和外侧。
- 它最好是 smooth 或 fair:没有不必要的噪声和弯曲振荡。
表面是三维实体的边界
直观上,可以把表面理解为一个非退化三维实体的边界。
“非退化”这里很重要。它意味着实体不能有无限薄的部分,也不能有奇怪的粘连结构,否则表面就不能稳定地区分:
inside / outside
内部 / 外部
一个正常的球体、盒子、杯子外壁,都可以看成三维实体的边界。
但如果模型里出现:
- 两块表面只在一个点相连。
- 多个面片沿一条边异常粘连。
- 某些局部区域无法判断内外。
那它就可能是 non-manifold,不适合很多标准网格算法。
很多网格算法默认输入是 2-manifold。如果模型包含 non-manifold vertex 或 non-manifold edge,法向、曲率、参数化、平滑、修补等算法都可能出问题。
什么是二维流形
二维流形的直观定义是:
表面上每个足够小的局部区域,都应该和二维圆盘拓扑等价。
也就是说,对于表面上的任意正常点 ,在它附近取一个足够小的区域,这个区域应该像一张小圆盘:
local patch around p ~ disk
这保证了局部邻域结构是清楚的。
对于三角网格来说,可以粗略理解为:
- 普通内部点附近是一圈面片。
- 边界点附近像半圆盘。
- 非流形点附近则可能像多个面片团粘在一起,无法摊平成一个圆盘。
有边界的表面
书中也提到 surface with boundaries。
有边界的表面不是完全封闭的实体边界,但只要它能通过“补洞”扩展成正常流形表面,也可以接受。
例如:
- 一块布片。
- 一个开口曲面。
- 扫描数据中缺失了一部分的模型。
这类表面在几何处理中很常见。它们不是封闭 solid 的完整边界,但仍然可以作为 surface mesh 处理。
从离散采样到连续表面
真实输入通常不是一开始就有完美的连续表面,而是来自离散采样。
例如:
- 3D 扫描点云。
- 深度相机采样。
- 医学影像重建。
- 已有数字模型的离散顶点。
因此,生成数学表面的第一步是建立一致的邻域关系。
换句话说,不只是知道点在哪里,还要知道:
哪些点在表面上彼此相邻?
这一步决定了后续能否形成一个合理的连续曲面。
spatial neighborhood vs geodesic neighborhood
这一节特别区分了两种“近”。
spatial neighborhood
空间邻近指的是欧氏空间中的距离近:
如果两个点在三维空间里离得很近,它们就是 spatially close。
但这不一定说明它们在表面上相邻。
例如一张折起来的纸,折叠后的两层可能在空间中非常接近,但沿着纸面走过去其实很远。
geodesic neighborhood
测地邻近指的是沿着表面本身的邻近关系。
两个点如果在表面参数域或表面路径上相邻,才是 geodesically close。
这对网格处理更重要,因为算法通常沿着表面传播信息:
- 平滑沿表面传播。
- 曲率由表面邻域估计。
- 参数化依赖拓扑邻接。
- 测地距离沿表面计算。
空间上很近不等于表面上相邻。几何处理更关心的是 geodesic neighborhood,而不是单纯的欧氏距离。
参数化视角下的局部流形性
如果表面由参数化函数定义:
其中:
那么判断邻域关系会比较直观。
表面上的两个点:
如果它们在参数域中的 pre-image 很近,那么它们在表面上就是测地邻近。
用这一点可以理解局部流形条件:
如果表面点 附近一个足够小的三维球邻域,其在参数域中的 pre-image 仍然落在一个小圆盘邻域内,那么这个局部表面就是正常的。
更直观地说:
表面局部能摊平成一小块二维区域
这就是局部 manifold 的含义。
插值与逼近
从离散样本生成连续表面时,有两种目标。
interpolation
插值要求生成的表面精确穿过所有样本点:
优点是忠实于输入点。
缺点是如果采样有噪声,表面也会把噪声当成真实形状保留下来。
approximation
逼近只要求表面在给定误差范围内接近样本:
这在实际中更常用,因为扫描数据通常有噪声,而样本之间的真实表面本来也只能估计。
实际几何处理中,approximation 往往比 interpolation 更合理。因为输入样本通常不是绝对准确的真值,而是带噪观测。
smoothness:光滑性
表面除了可以有明确的 sharp feature-curves 和 corners 外,通常希望整体是光滑的。
数学上,光滑性可以用函数的连续可导阶数来描述。
如果参数化函数 或隐式函数 有连续的 阶导数,就可以说它具有某种 光滑性。
例如:
- :位置连续,没有裂缝。
- :切向连续,法向变化连续。
- :曲率相关量更稳定。
但书中提醒:分析上的 光滑性要和几何直觉一致,还需要 regularity。
对于参数曲面,通常要求偏导不退化;对于隐式曲面,通常要求梯度不消失:
否则函数虽然形式上可导,但几何上可能出现奇点或退化。
fairness:公平性 / 顺滑性
fairness 比 smoothness 更严格。
smoothness 关注导数是否连续,而 fairness 还关注曲率的大小和变化是否自然。
一个表面可能是光滑的,但仍然有不自然的波动;这种表面不一定 fair。
书中没有给出一个唯一的形式化定义,但常见理解是:
- 曲率整体较小。
- 曲率变化较平缓。
- 没有不必要的振荡。
- 形状看起来自然、干净。
几何处理中常用能量最小化来表达 fairness,例如最小化面积、总曲率或平均曲率变化。
和多边形网格的关系
本节虽然讲的是连续表面定义,但它是在为 polygon mesh processing 打基础。
多边形网格是连续表面的离散表示。
后续算法会尝试把连续表面的概念离散化到网格上:
- 邻域关系 -> 顶点、边、面的连接关系。
- 光滑性 -> 法向、曲率、离散微分算子。
- fairness -> 网格平滑和 fairing。
- manifoldness -> 网格拓扑合法性。
- surface approximation -> 网格重建、简化、重采样。
所以 1.1 的重点不是“背定义”,而是理解:为什么后续算法总是在乎 manifold、邻域、光滑和逼近误差。
本节记忆点
- 图形学中的表面通常指嵌入在 中的可定向连续二维流形。
- 表面应能区分 inside / outside,因此 non-manifold 结构会破坏很多算法假设。
- 二维流形的局部区域应该和二维圆盘拓扑等价。
- 离散样本生成表面时,关键是建立一致的 geodesic neighborhood。
- spatially close 不一定 geodesically close。
- 实际扫描数据通常更适合 approximation,而不是严格 interpolation。
- smoothness 关注导数连续性,fairness 进一步关注曲率及其变化是否自然。
- 后续的网格数据结构、微分几何、平滑、修补,都依赖本节这些表面性质。
后续问题
进入 1.2 时可以重点关注:
- 为什么真实物体通常只能被数字表面近似?
- 多项式 patch 的逼近误差和分片大小有什么关系?
- 为什么几何处理中更常选择 -refinement,而不是 -refinement?
- 为什么 piecewise linear surface,也就是 polygon mesh,会成为几何处理中的主流表示?