Conference

SpaceMesh: A Continuous Representation for Learning Manifold Surface Meshes

Tianchang Shen, Zhaoshuo Li, Marc T. Law, Matan Atzmon, Sanja Fidler, James Lucas, Jun Gao, Nicholas Sharp

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 生成器,可摆脱对网格数据集监督的依赖,这对缺乏干净流形网格数据的领域尤其有价值。