Conference

Occupancy-Based Dual Contouring

Jisung Hwang, Minhyuk Sung

KAIST

一句话总结

提出一种无需训练、面向占据(occupancy)函数的对偶轮廓(Dual Contouring)网格提取方法 ODC,通过引入二分搜索与辅助 2D 点来在不依赖距离信息的前提下恢复表面法向,从而从神经隐式占据函数中提取出高保真、带尖锐特征且流形无自交的网格,并可在数秒内完成。

研究背景

神经隐式表示(尤其是占据函数)在 3D 重建与生成中日益普及,但把占据函数转成网格一直是瓶颈。占据函数 \(\phi: \mathbb{R}^3 \to \{0,1\}\) 只输出内外二值标签,即便是神经网络给出的连续 \([0,1]\) 值也不代表距离。

  • Marching Cubes 直接应用于占据函数时,因为表面交点总取网格边中点,会产生明显的阶梯状(staircase)伪影。
  • 过去几十年提升保真度的工作(Extended Marching Cubes、Dual Contouring、Manifold Dual Contouring 等)大多假设输入是有符号距离函数(SDF),利用其梯度作为表面法向并用二次误差函数(QEF)定位尖角。这些方法用在占据函数上要么不可行,要么效果欠佳——因为占据函数不满足线性假设,梯度也只描述无穷小邻域、无法代表体素内部较大的表面区域。

因此,作者的目标是在保留 Manifold Dual Contouring(MDC)捕捉尖锐特征、保证流形性优点的同时,去掉它对距离与梯度的依赖,让方法真正适配占据函数,揭示神经函数中编码的真实形状。

方法

整体框架建立在 MDC 的三步流程上(1D 点搜索 → 3D 点定位 → 多边形化),核心是把其中两处依赖距离/梯度的环节替换为迭代搜索,并充分利用 GPU 对所有网格边、面、单元并行处理。

flowchart LR
    A[占据函数 phi] --> B[1D 点搜索<br/>沿零交叉边二分搜索]
    B --> C[2D 点搜索<br/>网格面内 line-binary 搜索]
    C --> D[3D 点定位<br/>由 1D+2D 点求法向后 QEF]
    D --> E[多边形化<br/>IC 四边形分割去自交]
    E --> F[输出高保真流形网格]

关键设计:

1. 1D 点二分搜索(去线性假设)。 MDC 用线性插值定位边上的表面交点

\[p_e = \frac{\psi(p_{v_{in}}) p_{v_{out}} - \psi(p_{v_{out}}) p_{v_{in}}}{\psi(p_{v_{in}}) - \psi(p_{v_{out}})}\]

依赖 SDF 线性。ODC 改为在零交叉边上做二分搜索:不断二分区间并保证两端保持不同的内/外标签,直到区间小于阈值(\(128^3\) 分辨率下迭代 15 次)。这充分利用了占据函数在连续空间的可查询性,而不仅限于网格点。

2. 2D 点搜索(去梯度,替代法向估计)。 这是核心贡献。QEF 定位 3D 点时假设局部平面在网格单元内延续,需要能代表体素内局部几何的法向。ODC 不用梯度,而是在网格面上搜索”2D 点”来估计法向:对同一网格面上的一对 1D 点 \(p_{e_1}, p_{e_2}\),令 \(l\) 为连接两点的直线、\(m\) 为中点,沿垂直于 \(l\) 的方向发射射线找到最近表面交点 \(q\);再从 \(q\) 沿平行 \(l\) 的两个反方向发射射线得到 \(q_1, q_2\);最终 2D 点 \(p_f\) 取直线 \(\overline{p_{e_1}q_1}\) 与 \(\overline{p_{e_2}q_2}\) 的交点。作者用 Lemma 5.1 证明在局部平坦假设下该过程能给出唯一正确的 2D 点。由于要找”离射线起点最近”的交点,无法用纯二分,故用 line-binary 搜索(先均匀采样定位区间,再二分精化)。

3. 3D 点定位。 每个 1D 点从相邻两个网格面各得到一个 2D 点;这三点共面(局部代表表面 S),由此计算平面法向,替换掉 MDC 中 QEF 里的 SDF 梯度 \(\nabla\psi(p_e)\):

\[p_{c,i} = \arg\min_{p} \sum_{e \in E^S_{c,i}} \left[ n(p_e) \cdot (p - p_e) \right]^2\]

随后与 MDC 一样按单元内分区求 3D 点作为网格顶点。

4. 多边形化去自交。 MDC 常产生自交面。ODC 借鉴 Intersection-free Contouring(IC)的四边形分割技术,并将其从”每单元单一 3D 点”扩展到”每单元多个 3D 点”的情形,从而显著减少输出网格的自交面。

整个流程在 GPU 上高度并行:\(128^3\) 分辨率下约 16k 条交叉边、33k 个交叉面可同时处理,1D 搜索约 0.2 秒、2D 搜索约 1.3 秒,总体数秒内完成。

实验结果

在 SALAD 与 3DShape2VecSet 两个生成模型的无条件生成占据函数上评测(分辨率 \(128^3\)),指标含拟合误差 $$ \phi-0.5 $$、自交比例 SI、流形比例 Man. 与耗时。
方法 SALAD $$ \phi-0.5 \downarrow$$ SALAD SI(%)↓ SALAD Man.(%)↑ S2VS $$ \phi-0.5 \downarrow$$ S2VS SI(%)↓ S2VS Man.(%)↑
MC 0.324 0.00 100. 2.330 0.00 100.        
IC 0.329 0.00 21.8 2.292 0.00 53.2        
MDC 0.305 100. 100. 2.245 100. 100.        
LMC 0.484 0.00 56.8 8.824 0.00 72.8        
NDC 0.324 33.8 37.1 3.552 21.2 53.2        
CDIF 0.234 0.00 100. 1.961 0.00 100.        
MISE 0.237 23.1 74.2 1.733 22.3 82.0        
ODC 0.037 0.00 100. 0.112 0.06 100.        

ODC 的拟合误差比其他方法平均小约 6 倍(SALAD)与 15 倍(3DShape2VecSet),1500 个 SALAD 网格全部无自交且流形,1650 个 3DShape2VecSet 网格仅 1 个自交、全部流形。耗时上 ODC 比 MC 慢约 1.8~4 倍,但仍在 2~3.5 秒内。

在 Myles 数据集(由绕数计算得到占据函数、有真实网格作参照)上,ODC 在网格距离 MD2、法向不一致 NIC、豪斯多夫距离 HDD、自交、流形所有指标上均取得最优(如 MD2 为 \(0.113\times10^{-6}\),显著优于次优 CDIF 的 0.562)。消融实验表明:1D 二分搜索缓解裂面、2D 点搜索显著提升细节、IC 分割进一步消除自交,逐步叠加均带来改善。

亮点与局限

亮点:

  • 无需训练、无需梯度、无需距离信息,直接适配占据函数,泛化性强(学习类方法如 NDC 在跨数据集时明显退化)。
  • 首创的 2D 点搜索在局部平坦假设下有理论保证(Lemma 5.1),能给出比梯度法向更贴合体素内表面的局部平面。
  • 全流程 GPU 并行,\(128^3\) 分辨率数秒完成,同时保证流形性并大幅减少自交。
  • 能”揭示”生成模型编码的真实形状,纠正此前因网格提取伪影造成的误判。

局限:

  • 依赖局部平坦假设,对极薄/极细结构(论文中排除了部分 skinny shape)可能不够稳健。
  • 相比 MC 有额外的多轮搜索开销,耗时更高(尤其 2D 点搜索需数十次函数评估)。
  • 方法性能高度依赖占据函数在连续空间的可查询性,主要面向神经隐式函数场景。

延伸思考

  • 2D 点搜索的思想本质是”用射线求交近似局部几何”,是否可推广到无符号距离函数或点云等其他输入表示,作为一种通用的法向估计手段?
  • 该方法把网格提取质量瓶颈从”算法”转移回”函数本身”,这意味着生成模型的评测可能需要重新校准——过去被认为是模型缺陷的伪影可能只是提取误差。
  • line-binary 搜索的采样次数与迭代次数是精度/速度的关键超参,能否用自适应策略(如根据局部曲率动态分配评估预算)进一步提速?
  • 局部平坦假设在高曲率或多表面交汇处会失效,结合分辨率自适应或多尺度策略或许能兼顾尖锐特征与复杂拓扑。