【发布时间】:2014-02-04 20:42:19
【问题描述】:
我想要的是使用我创建的体素模型重新对网格进行三角剖分。
通过谷歌搜索,我发现 Marching Cubes 应该是一个合适的算法。我已经阅读了很多教程,但是等值面部分让我感到困惑。
我按照本教程http://paulbourke.net/geometry/polygonise/ 进行操作,但无法理解我的情况下的等值面究竟是什么以及如何提取它。
这是我的初始物体表面吗?
编辑1:
到目前为止,我已经完成了重新三角测量:
似乎我在等值面和体素之间找到了正确的 itnersection 点,因为似乎有一个正确的体素模型:
但是为什么他们在重新三角剖分时遗漏了这么多三角形呢?
编辑2:
调试我的代码,我注意到以下内容: 我使用的 Marching Cube 表具有指向等值面切割我的体素的顶点的指针。这些三元组构成了新的三角形。但我注意到很多时候表格说用顶点(例如)intersection_point(0)-intersection_point(3)-intersection_point(5) 构造三角形,但我的交点在不同的位置。
-> 交点的位置取决于它们所在的边。
【问题讨论】:
-
您的输入是来自体素模型的网格,对吧?重新三角剖分这个网格到底是什么意思(与输入网格相比,你的输出网格应该如何改进)?
-
输出网格与原始网格相比没有改进。我只是在我的学校有一个项目,使用体素数据重新对网格进行三角剖分,然后将新的三角剖分与初始三角剖分进行比较。
-
你可以尝试一个更简单的对象,例如一个球体——这样你会很容易看到一个没有任何三角形的典型立方体。我使用了相同的方法,它对我帮助很大。如果您向我们展示一些在您的代码中呈现的球体屏幕,我可以告诉您更多有关您的问题的信息。
-
已编辑。希望它有所帮助:/
-
根据您上次的编辑,似乎 MCs 算法本身就有这个问题。在某些组合中,MC 无法创建正确的网格。你可以用谷歌搜索“模棱两可的情况”,有很多解决方案,但它们非常复杂,更简单的方法是用额外的三角形盖住潜在的洞,但这样你就打破了网格的拓扑结构。我仍在研究我自己的解决方案。