行进立方体歧义与行进四面体

我已经成功实现了进行立方体算法。 我使用标准材料作为参考,但我从头开始重写了它。 它的工作原理,但我正在观察导致网孔洞的模糊性。

我正在考虑推进的四面体算法,该算法据说不会有模糊之处。 我不明白这是如何可能的。

游行四面体算法使用六个四面体代替立方体,每个四面体使用三角形。 但是,假设我要实施行军立方体算法,但对于256个三角形中的每一个,只需选择立方体的四面体三角形的“总和”(联合)即可。 据我所知,这就是行进中的四面体所做的 - 为什么这会奇迹般地解决模糊问题?

我认为有16个独特的例子,而其他240个仅仅是这16个的反射/旋转。我记得在某处为了解决歧义而在某些论文中读到,你需要33个案例。 这可能与为什么游行四面体不会遇到问题有关吗?

所以,问题:

  • 为什么游行四面体不会有模糊之处?
  • 如果没有,为什么人们不使用行进立方体算法,而是使用四面体的三角形算法?
  • 我觉得我在这里错过了一些东西。 谢谢。


    好吧,我刚刚完成了我的版本的行军四面体,而我很容易看到歧义导致行军立方体的网格问题,行进四面体的网格似乎一贯拓扑正确。 沿着非常薄的点有一些恼人的特征,其中某些顶点不能完全决定他们想要在哪一侧划分,但网格总是水密的。

    回答我的问题:

  • 为了解决游行立方体算法中的歧义,据我所知,人们在细胞中更仔细地评估函数。 在四面体算法中,明确地采样单元格的中心并对其进行多边形化。 我怀疑是因为四面体网格特别包含了这个顶点,所以隐含地处理了歧义。 侧面的其他额外顶点也可能与它有关。 作为一个关键点,该功能实际上是在更多的地方进行抽样,当你去完善它。
  • 我很确定他们这样做。 我的行进四面体算法就是这样做的,我认为在内部它和经典的四面体算法一样。 在我的实现中,四面体的三角形都列在每个可能的立方体中,我猜想它比单独为每个单独的四面体找出一个或两个三角形更快。
  • 如果我有时间和注意力的问题(我都没有这么做),重新规划每个立方体的内部使用最少的三角形可能是有益的,我认为这并不会伤害它。


    回答“为什么行军四面体算法有歧义?” 需要理解为什么模糊行为首先出现在Marching Cubes中。


    当立方体中存在两个对角相对的“正”顶点和两个对角相反的“负”顶点时可能会出现歧义。 我花费了一些时间来思考它,但含糊不清的问题是,他们理论上允许为彼此不兼容的相邻立方体创建等值面贴片。 这是显而易见的部分。 有趣的部分是,如果( 且仅当 )其中一个分离“负”顶点并且另一个分离“正”顶点时,来自两个不明确配置的两个相邻等值面补丁不相容。

    下面是来自Rephael Wenger的伟大着作“等值面几何,拓扑和算法”的相关引用(不能张贴更多的2个链接,所以我将这本书中的所有相关图像合并为一个):

    立方体的三维等值面贴片的边界在每个立方体的正方形面上定义了一个等高线。 如果某个配置的等值面贴片将面上的负顶点分开,而相邻配置的等值面贴片将正面贴片分离,则公共面上的等值面边缘将不会对齐。 图2.16中的等值面片不会分离任何面上的正面顶点。 此外,在任何旋转或反射配置中得到的等值面曲面片也不会区分任何面上的正面顶点。 因此,任何两个相邻立方体中的等值面贴片在其边界上正确对齐。 同样有效的,但组合不同的等值面表可以通过使用等值面贴片来生成,所述等值面贴片不分离任何正方形面上的负面顶点。

    这意味着如果所有使用的模糊配置遵循相同的模式(即总是分离“负”顶点),则不可能产生拓扑不正确的表面。 如果您将“来自两个世界”的配置用于单个等值面,则会出现问题。

    使用相同歧义分辨率模式构建的表面仍可能包含像这样的不想要的错误(摘自Thomas Lewiner Helio Lopes,Antonio Wilson Vieira和Geovan Tavares的文章“有效实施Marching Cubes案例的拓扑保证”),但它就像你说的那样,水密。

    为了达到这个目的,你需要使用基于图2.16所示的22种独特配置(不是标准14或15)的查找表。


    现在,回到最初的问题 - 为什么行进四面体不会有模糊之处? 出于同样的原因,如果按照上述步骤进行,Marching Cubes中将不会出现含糊不清的情况 - 因为您可以任意选择使用两种可能的模糊配置分辨率变体之一。 在Marching Cubes中,根本不明显(至少对我来说,不得不做很多挖掘),这甚至是一种选择,但是在Marching Tetrahedrons中, 它是由算法本身为您完成的 。 这里是来自Rephael Wenger的书的另一个引用:

    常规网格立方体具有不明确的配置,而四面体分解则不具备。 发生了什么模糊的配置? 这些配置通过选择三角测量来解决。 例如,在图2.31中,第一个三角形给出了一个等值面贴图,其中两个分量对应于图2.22中的2B-II,而第二个三角形给出了一个等值面贴图,其中一个分量对应于2B-I。

    注意在图2.31中,立方体是如何以两种不同的方式切成四面体的。 这种切片或其他切片的选择是解决模糊问题的秘诀。

    有人可能会问自己 - 如果仅仅通过对所有立方体使用相同的模式就可以解决模糊性问题,那么为什么会有那么多关于更复杂解决方案的书籍和论文? 为什么我需要渐近式决策者和所有这些东西? 据我所知,这一切都归结于你需要达到的目标。 如果拓扑正确性(如在,没有洞)对你来说是足够的,那么你不需要所有先进的东西。 如果您想解决像上面显示的“有效实施行进多维数据集”文章中显示的问题,那么您需要深入了解。

    我强烈推荐阅读Rephael Wenger的书“等值面几何,拓扑和算法”的相关章节,以更好地理解这些算法的性质,有哪些问题,问题从哪里来,以及如何解决。

    正如李小生指出的那样,通过仔细研究行军广场算法,可以更好地理解基础知识。 事实上,整个答案是由李小生决定的,我刚刚解释了一下。


    以下的二维示例(引入歧义):

    01

    10

    如果我们将这个正方形分成两个三角形,我们将在我们选择分割平方的对角线上得到不同的结果。 沿0-0对角线,我们得到三角形(010,010),而对于1-1对角线,我们得到三角形(101,101)。 显然,正方形的不同分解会导致不同的结果。 要么是正确的,这对3D立方体来说是一样的。

    MT没有真正解决歧义,但是它可以通过为所有立方体选择相同的分解策略而产生拓扑结构。 这种方式摆脱了模棱两可的痛苦。

    链接地址: http://www.djcxy.com/p/6343.html

    上一篇: Marching Cube Ambiguities Versus Marching Tetrahedron

    下一篇: Marching Cubes, voxels, need a bit of suggestions