第3章:微分几何与拓扑
本章从微分几何和拓扑学的角度深入探讨3D mesh的数学性质。我们将学习如何在离散网格上计算曲率、测地线等连续几何概念,理解网格的拓扑不变量,并掌握基于微分算子的网格处理技术。这些理论工具是现代几何处理算法的基础,在网格优化、特征提取、形状分析等任务中发挥着关键作用。
3.1 离散微分几何基础
3.1.1 从连续到离散
微分几何研究光滑曲面的局部和全局性质,而3D mesh是分片线性的离散结构。离散微分几何的核心挑战是如何在网格上定义和计算传统的微分量。
基本概念映射:
- 连续曲面 → 三角网格
- 光滑函数 → 顶点上的标量场
- 切空间 → 顶点的1-ring邻域
- 微分算子 → 有限差分近似
3.1.2 顶点的1-ring邻域
顶点 $v_i$ 的1-ring邻域是理解局部几何的基础:
v_j
/\
/ \
/ \
/ \
v_k -------- v_i -------- v_l
\ /
\ /
\ /
\/
v_m
关键量的定义:
- Voronoi区域面积 $A_i$:顶点 $v_i$ 的"控制区域"
- 边权重 $w_{ij}$:边 $(v_i, v_j)$ 的几何权重
- 角度和 $\theta_i = \sum_{j \in N(i)} \theta_{ij}$
3.1.3 离散外微分
在网格上,我们使用离散外微分(DEC)框架来推广微分形式:
0-形式(标量场):定义在顶点上 $$f: V \rightarrow \mathbb{R}$$ 1-形式(向量场):定义在边上 $$\omega: E \rightarrow \mathbb{R}$$ 2-形式(流量):定义在面上 $$\Omega: F \rightarrow \mathbb{R}$$ 外微分算子: $$d^0: \Omega^0 \rightarrow \Omega^1, \quad d^1: \Omega^1 \rightarrow \Omega^2$$
3.1.4 离散梯度
对于顶点函数 $f$,其在三角形 $T=(v_i, v_j, v_k)$ 上的梯度为: $$\nabla f|_T = \frac{1}{2A_T} \sum_{i} f_i (v_{i+1} - v_{i-1})^{\perp}$$ 其中 $(v)^{\perp}$ 表示将向量 $v$ 在三角形平面内逆时针旋转90度。
3.1.5 离散散度
向量场 $X$ 的散度在顶点 $v_i$ 处定义为: $$(\text{div} X)_i = \frac{1}{2A_i} \sum_{j \in N(i)} (\cot \alpha_{ij} + \cot \beta_{ij}) \langle X, v_j - v_i \rangle$$ 其中 $\alpha_{ij}$ 和 $\beta_{ij}$ 是边 $(v_i, v_j)$ 对面的两个角。
3.2 高斯曲率与平均曲率计算
3.2.1 曲率的直观理解
曲率描述曲面偏离平面的程度:
- 高斯曲率 $K$:内蕴曲率,描述曲面的局部"弯曲程度"
- 平均曲率 $H$:外在曲率,描述曲面的"平均弯曲方向"
主曲率 $\kappa_1, \kappa_2$ 与高斯、平均曲率的关系: $$K = \kappa_1 \cdot \kappa_2, \quad H = \frac{\kappa_1 + \kappa_2}{2}$$
3.2.2 离散高斯曲率
角度缺陷法(Angle Deficit):
对于内部顶点 $v_i$: $$K_i = \frac{2\pi - \sum_{j} \theta_{ij}}{A_i}$$ 其中 $\theta_{ij}$ 是顶点 $v_i$ 处相邻面的夹角,$A_i$ 是混合Voronoi面积。
Gauss-Bonnet定理的离散版本: $$\sum_{i \in V_{\text{int}}} K_i A_i + \sum_{i \in V_{\text{bnd}}} \kappa_g^i l_i = 2\pi \chi(M)$$
3.2.3 离散平均曲率
Cotangent公式:
平均曲率法向量(mean curvature normal): $$H_i \mathbf{n}_i = \frac{1}{2A_i} \sum_{j \in N(i)} (\cot \alpha_{ij} + \cot \beta_{ij})(v_j - v_i)$$ 平均曲率标量: $$H_i = \frac{1}{4A_i} \sum_{j \in N(i)} (\cot \alpha_{ij} + \cot \beta_{ij}) ||v_j - v_i|| \cos \phi_{ij}$$ 其中 $\phi_{ij}$ 是边向量 $(v_j - v_i)$ 与法向量 $\mathbf{n}_i$ 的夹角。
3.2.4 主曲率和主方向
通过构造形状算子矩阵 $S$,可以计算主曲率和主方向:
- 投影到切平面
- 构造 $2 \times 2$ 形状算子矩阵
- 特征值为主曲率 $\kappa_1, \kappa_2$
- 特征向量为主方向
3.2.5 曲率的应用
- 特征线提取:沿主曲率方向追踪
- 网格分割:基于曲率的区域生长
- 简化指导:保持高曲率区域的细节
- 形状描述子:曲率直方图、形状指数
3.3 测地线与最短路径算法
3.3.1 测地线的定义
测地线是曲面上两点间的局部最短路径,满足测地曲率为零: $$\kappa_g = 0$$ 在离散网格上,精确测地线可能穿过三角形内部,需要特殊算法处理。
3.3.2 Dijkstra算法(图上最短路)
最简单的近似:将网格视为图,计算边权重和:
# 伪代码
def dijkstra(mesh, source):
dist = {v: inf for v in mesh.vertices}
dist[source] = 0
heap = [(0, source)]
while heap:
d, u = heappop(heap)
for v in neighbors(u):
new_dist = d + edge_length(u, v)
if new_dist < dist[v]:
dist[v] = new_dist
heappush(heap, (new_dist, v))
return dist
优点:简单快速 缺点:路径被限制在边上,误差可达 $O(h)$
3.3.3 MMP算法(精确测地线)
Mitchell-Mount-Papadimitriou算法计算精确的测地距离:
- 窗口传播:维护每条边上的"窗口"结构
- 窗口合并:处理窗口相交和遮挡
- 复杂度:$O(n^2 \log n)$
关键数据结构:
Window = {
source: 起始点
interval: 边上的区间 [a, b]
distance_function: 到source的测地距离函数
}
3.3.4 Fast Marching算法
基于Eikonal方程的数值解法: $$||\nabla u|| = 1$$ 在三角形 $T$ 上的局部更新规则: $$u_C = \min_{P \in AB} (||P - C|| + u_P)$$ 算法步骤:
- 初始化:源点距离为0,其他为∞
- 传播:按距离递增顺序更新顶点
- 局部求解:在每个三角形内求解Eikonal方程
3.3.5 热方法(Heat Method)
Crane等人提出的基于热扩散的测地距离计算:
Step 1:求解热方程 $$(\Delta - \frac{1}{t}\text{Id})u = \frac{1}{t}\delta_s$$ Step 2:计算归一化梯度场 $$X = -\frac{\nabla u}{||\nabla u||}$$ Step 3:求解Poisson方程 $$\Delta \phi = \nabla \cdot X$$ 优势:预计算分解后可实时查询,适合多源点场景
3.3.6 测地线的应用
- 网格参数化:测地极坐标
- 形状对应:测地距离作为形状描述子
- 路径规划:机器人导航、游戏AI
- 纹理映射:沿测地线展开
3.4 网格上的拉普拉斯算子
3.4.1 拉普拉斯算子的重要性
拉普拉斯算子 $\Delta$ 是微分几何中最重要的算子之一,它连接了几何、分析和物理:
- 几何意义:测量函数偏离局部平均值的程度
- 物理意义:描述扩散、传导等过程
- 谱分析:特征值和特征函数揭示形状的内在性质
连续拉普拉斯-贝尔特拉米算子: $$\Delta f = \text{div}(\nabla f)$$
3.4.2 Cotangent拉普拉斯
最常用的离散拉普拉斯算子,具有良好的收敛性: $$(\Delta f)_i = \frac{1}{2A_i} \sum_{j \in N(i)} (\cot \alpha_{ij} + \cot \beta_{ij})(f_j - f_i)$$ 矩阵形式: $$L = D^{-1}W$$ 其中:
- $W_{ij} = -(\cot \alpha_{ij} + \cot \beta_{ij})$ (非对角元素)
- $W_{ii} = -\sum_{j \neq i} W_{ij}$ (对角元素)
- $D_{ii} = 2A_i$ (质量矩阵)
3.4.3 其他离散化方案
组合拉普拉斯(Graph Laplacian): $$(\Delta_G f)_i = \sum_{j \in N(i)} (f_j - f_i)$$ 归一化拉普拉斯: $$(\Delta_N f)_i = \frac{1}{|N(i)|} \sum_{j \in N(i)} (f_j - f_i)$$ 各向异性拉普拉斯: 考虑边的方向性权重,用于特征保持的处理。
3.4.4 拉普拉斯的性质
对称性: $$\langle Lf, g \rangle = \langle f, Lg \rangle$$ 半正定性: $$\langle Lf, f \rangle \geq 0$$ 零空间: 常函数在零空间中,连通网格的零空间维度为1。
与曲率的关系: $$\Delta \mathbf{x} = 2H\mathbf{n}$$
3.4.5 谱分解
拉普拉斯的特征值问题: $$L\phi_k = \lambda_k M\phi_k$$ 其中 $M$ 是质量矩阵。
特征值性质:
- $0 = \lambda_0 < \lambda_1 \leq \lambda_2 \leq ...$
- $\lambda_1$ (Fiedler值)反映网格的连通性
- 特征值增长率与维度相关
特征函数的意义:
- $\phi_0$:常函数
- $\phi_1, \phi_2, \phi_3$:近似线性坐标函数
- 高阶特征函数:捕捉高频细节
3.4.6 拉普拉斯的应用
网格平滑: $$\mathbf{x}^{(t+1)} = \mathbf{x}^{(t)} + \lambda \Delta \mathbf{x}^{(t)}$$ 参数化: 最小化Dirichlet能量: $$E(u) = \frac{1}{2}\langle u, Lu \rangle$$ 形状描述子:
- Heat Kernel Signature (HKS)
- Wave Kernel Signature (WKS)
- Global Point Signature (GPS)
网格编辑: 保持拉普拉斯坐标的变形: $$\min_{\mathbf{x}'} ||L\mathbf{x}' - \delta||^2$$
3.5 拓扑不变量与欧拉特征数
3.5.1 网格的拓扑性质
拓扑研究在连续变形下保持不变的性质:
- 连通性:网格是否为一个整体
- 亏格(genus):网格中"洞"的数量
- 边界:开放vs封闭网格
- 可定向性:是否有一致的法向量定义
3.5.2 欧拉特征数
欧拉特征数是最基本的拓扑不变量: $$\chi = V - E + F$$ 其中 $V, E, F$ 分别是顶点、边、面的数量。
与亏格的关系:
- 封闭可定向曲面:$\chi = 2 - 2g$
- 有边界曲面:$\chi = 2 - 2g - b$
其中 $g$ 是亏格,$b$ 是边界环数。
3.5.3 亏格计算
算法步骤:
- 计算欧拉特征数 $\chi = V - E + F$
- 计算连通分量数 $c$
- 计算边界环数 $b$
- 亏格 $g = \frac{2c - \chi - b}{2}$
实际考虑:
def compute_genus(mesh):
V, E, F = len(mesh.vertices), len(mesh.edges), len(mesh.faces)
chi = V - E + F
# 计算连通分量
components = compute_connected_components(mesh)
c = len(components)
# 计算边界
boundary_loops = find_boundary_loops(mesh)
b = len(boundary_loops)
genus = (2*c - chi - b) / 2
return genus
3.5.4 同调群
同调理论提供了更精细的拓扑描述:
0-同调 $H_0$:连通分量
- $\beta_0 = \dim(H_0)$ = 连通分量数
1-同调 $H_1$:独立环路
- $\beta_1 = \dim(H_1) = 2g + b - 1$(连通情况)
2-同调 $H_2$:空腔
- $\beta_2 = \dim(H_2)$(通常为0或1)
贝蒂数(Betti numbers): $$\chi = \beta_0 - \beta_1 + \beta_2$$
3.5.5 持续同调
持续同调追踪拓扑特征在不同尺度下的演化:
滤流(Filtration): $$K_0 \subseteq K_1 \subseteq ... \subseteq K_n = K$$ 持续图(Persistence Diagram): 记录拓扑特征的"出生"和"死亡"时间。
应用:
- 形状简化:去除短寿命的拓扑特征
- 特征检测:识别显著的拓扑结构
- 形状匹配:比较持续图的相似性
3.5.6 Reeb图
Reeb图是基于标量函数的拓扑骨架:
构造过程:
- 选择标量函数 $f: M \rightarrow \mathbb{R}$(如高度函数)
- 等值线 $f^{-1}(c)$ 的连通分量定义等价关系
- Reeb图是商空间 $M/\sim$
关键点类型:
- 极小值:Reeb图的叶子节点
- 极大值:Reeb图的叶子节点
- 鞍点:Reeb图的分叉点
应用:
- 形状骨架提取
- 拓扑简化
- 形状检索和匹配
3.6 高级话题:Reeb图与Morse理论、谱网格处理
3.6.1 Morse理论
Morse理论研究流形上光滑函数的临界点与拓扑的关系。
Morse函数: 函数 $f: M \rightarrow \mathbb{R}$ 是Morse函数,如果所有临界点都是非退化的(Hessian矩阵非奇异)。
临界点分类(2D情况):
- 极小值:Hessian特征值均为正,指标为0
- 鞍点:Hessian特征值一正一负,指标为1
- 极大值:Hessian特征值均为负,指标为2
Morse不等式: $$\beta_k \leq c_k$$ 其中 $\beta_k$ 是第 $k$ 个贝蒂数,$c_k$ 是指标为 $k$ 的临界点数。
离散Morse理论: 在网格上定义离散Morse函数,通过组合方法分析拓扑。
3.6.2 Morse-Smale复形
Morse-Smale复形将流形分解为具有均匀梯度流行为的区域。
构造步骤:
- 计算临界点(极值点和鞍点)
- 追踪积分线(梯度上升/下降路径)
- 构建稳定/不稳定流形
- 求交得到Morse-Smale复形
应用:
- 地形分析:分水岭算法
- 形状分割:基于梯度流的自然分割
- 特征提取:脊线和谷线
3.6.3 谱几何处理
利用拉普拉斯特征函数进行几何处理。
谱嵌入: 将网格映射到特征空间: $$\mathbf{x} \mapsto (\phi_1(\mathbf{x}), \phi_2(\mathbf{x}), ..., \phi_k(\mathbf{x}))$$ 谱距离: $$d_{\text{spec}}(x, y) = ||\Phi(x) - \Phi(y)||$$ 其中 $\Phi = (\sqrt{\lambda_1}\phi_1, ..., \sqrt{\lambda_k}\phi_k)$
谱滤波: 在频域进行滤波操作: $$f_{\text{filtered}} = \sum_{k} h(\lambda_k)\langle f, \phi_k \rangle \phi_k$$ 其中 $h$ 是滤波器传递函数。
3.6.4 形状DNA
使用拉普拉斯谱作为形状的"指纹"。
定义: 形状DNA = 归一化的特征值序列 $$\text{DNA} = (\lambda_1/\lambda_1, \lambda_2/\lambda_1, ..., \lambda_k/\lambda_1)$$ 性质:
- 等距不变性
- 对网格分辨率鲁棒
- 包含多尺度信息
改进版本:
- Heat Kernel Signature (HKS):$k_t(x, x) = \sum_k e^{-\lambda_k t}\phi_k^2(x)$
- Wave Kernel Signature (WKS):考虑量子粒子的能量分布
3.6.5 函数映射框架
函数映射(Functional Maps)提供了一种在函数空间中表示形状对应的方法。
核心思想: 不直接寻找点对应 $T: M \rightarrow N$,而是寻找函数对应: $$C: L^2(M) \rightarrow L^2(N)$$ 谱表示: 在拉普拉斯基下,函数映射是矩阵: $$C_{ij} = \langle T\phi_i^M, \phi_j^N \rangle$$ 优势:
- 紧凑表示($k \times k$ 矩阵)
- 线性约束
- 易于正则化
3.6.6 最优传输与Wasserstein距离
最优传输理论在形状分析中的应用。
Kantorovich问题: $$W_2^2(\mu, \nu) = \min_{\pi} \int_{M \times N} d^2(x, y) d\pi(x, y)$$
离散化: 在网格顶点上定义概率分布,使用线性规划求解。
应用:
- 形状插值:Wasserstein重心
- 纹理传输:最优传输映射
- 形状匹配:基于传输距离的相似性
本章小结
本章深入探讨了3D mesh的微分几何和拓扑性质,主要内容包括:
-
离散微分几何基础:学习了如何在离散网格上定义和计算微分算子,包括梯度、散度和外微分。
-
曲率计算:掌握了离散高斯曲率(角度缺陷法)和平均曲率(cotangent公式)的计算方法,理解了曲率在形状分析中的应用。
-
测地线算法:比较了Dijkstra、MMP、Fast Marching和Heat Method等算法,理解了精度与效率的权衡。
-
拉普拉斯算子:深入理解了cotangent拉普拉斯的构造和性质,掌握了谱分解及其在形状分析中的应用。
-
拓扑不变量:学习了欧拉特征数、亏格、同调群等拓扑概念,理解了持续同调和Reeb图的构造。
-
高级话题:了解了Morse理论、谱几何处理、函数映射等前沿技术。
关键公式汇总:
- 离散高斯曲率:$K_i = (2\pi - \sum_j \theta_{ij})/A_i$
- 离散平均曲率:$H_i\mathbf{n}_i = \frac{1}{2A_i}\sum_j (\cot\alpha_{ij} + \cot\beta_{ij})(v_j - v_i)$
- Cotangent拉普拉斯:$(\Delta f)_i = \frac{1}{2A_i}\sum_j (\cot\alpha_{ij} + \cot\beta_{ij})(f_j - f_i)$
- 欧拉特征数:$\chi = V - E + F = 2 - 2g - b$
练习题
基础题
练习3.1 给定一个顶点 $v$ 的1-ring邻域,其相邻顶点按逆时针顺序为 $v_1, v_2, ..., v_6$,对应的对角 $\alpha_1, ..., \alpha_6$。证明角度和 $\sum_{i=1}^6 \alpha_i = 2\pi$ 当且仅当顶点 $v$ 位于平面上。
提示
考虑高斯曲率的角度缺陷定义。
答案
根据角度缺陷公式,高斯曲率 $K = 2\pi - \sum \alpha_i$。当 $\sum \alpha_i = 2\pi$ 时,$K = 0$,意味着该点处曲面是平坦的。反之,平面上任意点的高斯曲率为0,因此角度和必为 $2\pi$。
练习3.2 计算一个正四面体网格的欧拉特征数,并确定其亏格。
提示
正四面体有4个顶点、6条边、4个面。
答案
$\chi = V - E + F = 4 - 6 + 4 = 2$。由于正四面体是封闭的可定向曲面,根据 $\chi = 2 - 2g$,得 $g = 0$,即拓扑等价于球面。
练习3.3 解释为什么cotangent权重可能为负,这在几何上意味着什么?
提示
考虑钝角三角形的情况。
答案
当角度 $\alpha > 90°$ 时,$\cot \alpha < 0$。这发生在钝角三角形中。负权重意味着该边对拉普拉斯的贡献是"反向"的,几何上对应于非Delaunay的边,可能导致数值不稳定。
练习3.4 对于一个平面三角网格,证明其拉普拉斯坐标 $\Delta \mathbf{x} = 0$。
提示
利用平均曲率与拉普拉斯的关系。
答案
平面的平均曲率 $H = 0$。根据 $\Delta \mathbf{x} = 2H\mathbf{n}$,当 $H = 0$ 时,$\Delta \mathbf{x} = 0$。这意味着每个顶点位于其邻居的加权重心处。
挑战题
练习3.5 设计一个算法来检测网格中的"特征线",定义为主曲率方向场的积分曲线。讨论如何处理脐点(两个主曲率相等的点)。
提示
考虑使用四阶张量场来表示主方向,并使用流线追踪技术。
答案
算法步骤:1) 计算每个顶点的形状算子和主方向;2) 在非脐点处,使用Runge-Kutta方法追踪主方向场;3) 在脐点附近,使用高阶方法或启发式规则确定追踪方向;4) 实施停止准则(到达边界、回到起点、达到最大长度)。脐点处理:可以使用主方向的高阶近似,或基于周围非脐点的方向进行插值。
练习3.6 实现一个基于持续同调的网格简化算法,保留"重要"的拓扑特征。
提示
使用边收缩操作,但根据持续图中特征的"寿命"来决定优先级。
答案
算法框架:1) 计算基于某个滤流函数(如高度函数)的持续图;2) 识别短寿命的拓扑特征(持续值小的点对);3) 对每个边收缩操作,评估其对持续图的影响;4) 优先移除只影响短寿命特征的边;5) 保持长寿命特征对应的拓扑结构。关键是定义合适的阈值来区分"重要"和"噪声"特征。
练习3.7 推导离散测地曲率的计算公式,并讨论其在网格边界处理中的应用。
提示
测地曲率描述曲线在曲面切平面内的弯曲程度。
答案
对于网格边界上的折线,离散测地曲率 $\kappa_g = \pi - \theta$,其中 $\theta$ 是相邻边的夹角。总测地曲率 $\int \kappa_g ds = \sum_i (\pi - \theta_i)$。应用:1) 边界平滑:最小化测地曲率能量;2) 参数化边界条件:保持测地曲率分布;3) 形状匹配:使用测地曲率作为边界描述子。根据Gauss-Bonnet定理,封闭边界的总测地曲率为 $2\pi$。
练习3.8 探讨如何将谱方法扩展到点云数据(没有显式的网格连接)。
提示
考虑基于k近邻或径向基函数的图构造方法。
答案
方法:1) 图构造:k-NN图或ε-球图,边权重使用高斯核 $w_{ij} = \exp(-||x_i - x_j||^2/\sigma^2)$;2) 点云拉普拉斯:使用图拉普拉斯或移动最小二乘法构造;3) 谱分析:计算特征值和特征函数,注意处理不均匀采样;4) 应用:点云分割、特征提取、去噪。关键挑战是选择合适的邻域大小和权重函数,以及处理边界和噪声。
常见陷阱与错误 (Gotchas)
-
数值不稳定性 - 问题:Cotangent权重在接近退化三角形时会趋于无穷 - 解决:添加小的正则化项或使用截断
-
边界处理 - 问题:边界顶点的1-ring不完整,导致曲率计算错误 - 解决:使用特殊的边界公式或虚拟闭合技术
-
拓扑噪声 - 问题:小的拓扑缺陷(如微小的手柄)会影响全局拓扑分析 - 解决:使用持续同调过滤噪声特征
-
测地线算法选择 - 问题:Dijkstra快但不准确,MMP准确但慢 - 解决:根据应用需求权衡,考虑Fast Marching或Heat Method
-
谱计算规模 - 问题:大规模网格的完整特征分解计算代价高昂 - 解决:使用迭代方法(如Arnoldi)计算前k个特征值
-
非流形结构 - 问题:T型接头、非流形边会破坏微分算子的定义 - 解决:预处理修复非流形结构或使用鲁棒的算子定义
-
各向异性采样 - 问题:不均匀的三角形大小影响离散算子的精度 - 解决:使用加权的算子或重新网格化
-
法向量不一致 - 问题:法向量方向不一致导致曲率符号错误 - 解决:执行法向量定向算法确保一致性
最佳实践检查清单
曲率计算前的准备
- [ ] 检查网格质量(无退化三角形)
- [ ] 确保法向量方向一致
- [ ] 识别并标记边界顶点
- [ ] 选择合适的Voronoi区域定义(mixed或barycentric)
拉普拉斯算子使用
- [ ] 验证网格的流形性质
- [ ] 选择合适的离散化方案(cotangent vs. combinatorial)
- [ ] 考虑质量矩阵的归一化
- [ ] 对大规模问题使用稀疏矩阵表示
测地线计算
- [ ] 评估精度需求 vs. 性能需求
- [ ] 对多查询场景考虑预计算方法
- [ ] 处理边界和孔洞
- [ ] 验证结果的对称性和三角不等式
拓扑分析
- [ ] 验证网格的水密性
- [ ] 检查并修复自相交
- [ ] 使用持续同调识别显著特征
- [ ] 记录拓扑变化的历史
谱方法应用
- [ ] 选择合适的特征函数数量
- [ ] 验证特征值的数值精度
- [ ] 考虑多分辨率方法
- [ ] 使用合适的内积定义
性能优化
- [ ] 利用对称性减少计算
- [ ] 使用空间数据结构加速邻域查询
- [ ] 考虑并行化(特征分解、测地线计算)
- [ ] 缓存重复使用的中间结果
下一章预告:第4章:Mesh生成算法 - 深入学习从隐式函数、点云和体素数据生成高质量网格的各种算法。