Marching Cubes 如何处理无符号距离?
Posted
技术标签:
【中文标题】Marching Cubes 如何处理无符号距离?【英文标题】:How does Marching Cubes work with unsigned distances? 【发布时间】:2021-07-08 13:27:44 【问题描述】:我正在使用有符号/无符号距离场 (SDF/UDF)。我可以使用 Marching Cubes 在 signed 距离之外渲染一个网格。但是在 unsigned 距离之外渲染网格也可以使用 Marching Cubes,我想知道为什么?
我知道,例如这篇论文 (DUDE: Deep Unsigned Distance Embeddings),它说无符号距离场可以在 Marching Cubes 环境中工作,但据我了解,该算法通过查找来发现形状的边界如果立方体的点在形状的 inside 或 outside,则 out。当使用仅存在正距离值的无符号距离场时,这是如何实现的?
我将非常感谢您解释行进立方体算法如何根据无符号距离工作。
关于 Marching Cubes 的实现,我使用了来自 DeepSDF (DeepSDF Marching Cubes Implementation) 的那个,它本身使用了skimage.measure.marching_cubes_lewiner
提前致谢!
【问题讨论】:
【参考方案1】:行进立方体通过零交叉确定形状的边界,并通过符号确定内部/外部状态。如果您翻转标志,则外部变为内部,反之亦然 - 这不会改变边界,因为过零没有改变。
因此,对于无符号距离场,如果您不关心内部/外部关系或者如果您事先知道外部在哪里(例如,相机在 外部)。我没有详细阅读这篇论文,但似乎他们从相机开始球体追踪——这意味着相机应该在外面,从而解决了距离模糊问题。
【讨论】:
嗨@hkchengrex,感谢您的回答!我知道 Marching Cubes 通过零交叉找到具有正距离的点和具有负距离的点之间的表面。但同样的算法也适用于 UDF,我们没有过零。立方体中有两个或多个正距离,算法如何知道表面必须位于此处?据我了解,DeepSDF的Marching Cube中没有使用球体追踪。 @Saipy UDF 可以有过零——参见你引用的论文的图 3。【参考方案2】:在这里找到一些令人兴奋的新工作:https://github.com/cvlab-epfl/MeshUDF
【讨论】:
以上是关于Marching Cubes 如何处理无符号距离?的主要内容,如果未能解决你的问题,请参考以下文章