SpaceMesh: A Continuous Representation for Learning Manifold Surface Meshes
NVIDIA
一句话总结
SpaceMesh 用每个顶点上的低维连续嵌入来编码半边网格(halfedge)的邻接与 next 关系,从构造上保证输出是流形、可定向的多边形网格,让神经网络能够直接生成高质量网格连接性。
研究背景
多边形网格在图形与仿真中无处不在,但它高质量与否严重依赖连接性:非流形连接或过多面片会破坏依赖局部结构的操作,或让处理代价高到不可行。
现有的学习式网格生成大致分两类,各有短板:
- 隐式函数 + 等值面提取(如 DMTet、OccNet 系列):优化容易、有效性有保证,但只能产出 marching-cubes 类的受限连接性,无法控制网格的具体离散结构。
- 直接生成面(顶点三元组序列)(如 PolyGen、MeshGPT、PolyDiff):从离散优先视角出发,难以保证局部流形约束,多数产出的是”三角汤”(triangle soup)。
作者希望兼得三者之长:连续参数化带来的易优化性、构造上保证的流形性、以及表达任意多边形网格的通用性。
方法
整体思路是:不直接预测离散的面,而是为每个顶点学习一组连续嵌入,这些嵌入隐式地定义出半边网格的连接性。半边数据结构本身就只表达流形、可定向的网格,因此只要能连续参数化半边的 twin 与 next 关系,就能获得”天生流形”的保证。
flowchart LR
A[输入点云条件] --> B[PVCNN 编码器<br/>多分辨率特征体]
B --> C[顶点扩散模型<br/>Point-E 生成 3D 顶点]
C --> D[连接性预测网络<br/>Transformer]
D --> E[每顶点嵌入<br/>x, y_root, y_prev, y_next]
E --> F[提取半边网格<br/>流形多边形网格]
关键设计 1:用邻接嵌入 + 时空距离表达边
给每个顶点配一个邻接嵌入 \(x_v \in \mathbb{R}^k\),当两顶点距离小于阈值时连边:
\[E := \{\, \{i,j\} \text{ s.t. } d(x_i, x_j) < \tau \,\}\]关键在于距离函数的选择。作者发现欧氏距离收敛很差,改用时空距离(spacetime distance),把嵌入拆成”空间”分量和”时间”分量:
\[d_{st}(x_i, x_j) := \lVert x_i^{s} - x_j^{s} \rVert_2^2 - \lVert x_i^{t} - x_j^{t} \rVert_2^2\]它不是度量、可以为负,但只需用阈值 \(\tau\) 分割即可恢复边。消融显示时空距离的收敛速度远超欧氏距离和点积。训练用交叉熵损失监督距离:
\[\sum_{i,j \in E_{gt}} \log \sigma\big(d(x_i,x_j) - \tau\big) + \lambda \sum_{i,j \notin E_{gt}} \log \sigma\big(\tau - d(x_i,x_j)\big)\]关键设计 2:用置换特征表达 next 关系恢复面
给定顶点与边,把每条边拆成两条反向半边,twin 关系天然确定为 \(\text{twin}(h_{ij}) = h_{ji}\),只剩 next 关系待定。next 在每个顶点的出半边上定义一个单轨道的循环置换,因此问题归结为为每个顶点学习一个局部循环排序。
作者为每个顶点定义三元置换特征 \(y^{root}, y^{prev}, y^{next} \in \mathbb{R}^{k_p}\),通过标量函数组合成非负矩阵:
\[\Phi_{jk}^{i} := e^{F(y_i^{root},\, y_j^{prev},\, y_k^{next})}\]再用 Sinkhorn 归一化得到近似置换矩阵 \(\bar{\Phi}^i\),并用二元交叉熵监督:
\[\sum_{\{i,j,k\} \in N_{gt}} -\log(\bar{\Phi}_{jk}^{i})\]消融表明特征约简函数用逐元素相乘再求和(即 \(F = \text{trace}\big(\text{diag}(y^{prev})\,\text{diag}(y^{root})\,\text{diag}(y^{next})\big)\))最有效。
关键设计 3:推理时的单轨道匹配提取网格
推理时对每个顶点邻域,在代价矩阵 \(-\bar{\Phi}^i\) 下求最低代价匹配,但约束匹配必须形成单一轨道。先用无约束最优匹配,若不构成单轨道则退回贪心算法逐步取次低代价项。匹配结果给出 \(\text{next}(h_{ij}) := h_{ki}\),面即为 next 算子的轨道,可为任意多边形度数。
大规模学习管线
在表示之上接一个 3D 生成模型:PVCNN 编码条件点云得到多分辨率特征体;改造 Point-E 扩散 Transformer 生成稀疏顶点(用二值掩码处理可变顶点数);再用 Transformer 从顶点位置预测每顶点连接性嵌入。整套网络联合训练,可直接迁移到网格修复任务而无需微调。
实验结果
在 ABC 数据集(1 万个 512 顶点 CAD 网格)上做重建质量对比,SpaceMesh 在所有指标上优于经典与学习式基线,尤其在锐利特征恢复上:
| 方法 | CD (10⁻³)↓ | F1↑ | ECD (10⁻²)↓ | EF1↑ | #V | #F | IN↓ |
|---|---|---|---|---|---|---|---|
| PSR | 46.35 | 0.44 | 56.81 | 0.03 | 2406 | 4736 | 63.31 |
| PSR* | 46.72 | 0.42 | 51.86 | 0.03 | 494 | 968 | 61.61 |
| OccNet | 11.31 | 0.47 | 33.08 | 0.08 | 7344 | 14688 | 48.53 |
| Pixel2Mesh | 6.37 | 0.48 | 29.52 | 0.09 | 2466 | 4928 | 52.03 |
| Ours | 1.39 | 0.66 | 3.21 | 0.42 | 512 | 1818 | 34.54 |
其它结果:在 Thingi10k 的 200 个形状上用 auto-decoder 拟合,达到 L2 损失 0.00062、邻接 F1 0.99、置换预测精度 0.98。网格修复任务上在 ABC 验证集 100 例上取得 CD 0.77(10⁻³)、F1 0.76,而基线 SeMIGCN / MeshFix 的 CD 分别为 39.50 / 31.59(10⁻³)。运行时方面,编码 1 万顶点网格约 600 次迭代(约 2 分钟)收敛,生成单个网格 <2 秒,远快于 MeshGPT 的 30–90 秒(均在 NVIDIA A6000 上测量)。
亮点与局限
亮点:
- 从构造上保证流形、可定向连接性,无需额外约束,且能表达任意多边形(含 n-gon、四边形主导)网格。
- 连续、低维(实验中 \(k<10\) 已足够)的每顶点嵌入天然适合神经网络输出与随机优化,收敛快。
- 时空距离相比欧氏距离带来显著更快的收敛,是可训练性的关键。
- 同一条件点云下能生成不同风格的网格(各向同性三角、极简 n-gon、QEM 简化、四边形主导),且扩散模型带来输出多样性(如椅腿不同拓扑)。
- 训练好的条件模型可零样本迁移到网格修复(视作网格 inpainting)。
局限:
- 保证流形连接性,但不保证无几何自交、无高度不共面的面或异常高度数多边形;极端情况下会产生”缠结”网格(大错误面 + 过多自交)导致几何精度严重下降。
- 当前实现不处理开放曲面(可通过预测边界边标志扩展)。
- 学习规模受 Transformer 显存限制,auto-decoder 演示到约 2000 顶点,仍属中小规模网格。
- 作为扩散式生成模型,对困难或分布外输入可能产生无意义结果。
延伸思考
- 把连续连接性嵌入直接纳入扩散过程一起生成(而非当前分阶段的先顶点后连接性),可能进一步统一顶点与拓扑的联合建模,也是作者点明的近期方向。
- 表达全部离散结构所需嵌入维度的下界仍是图论开放问题;实践中 \(k<10\) 够用,但缺乏理论保证,这对可扩展到更大网格的可靠性是潜在风险点。
- 自交问题可用正则项惩罚缓解,但艺术家网格常有意保留自交,如何区分”有意”与”错误”的自交是值得设计的取舍。
- 长期看,用能量函数以无监督方式拟合 SpaceMesh 生成器,可摆脱对网格数据集监督的依赖,这对缺乏干净流形网格数据的领域尤其有价值。