【问题标题】:What is the difference between marching cube and octree?行进立方体和八叉树有什么区别?
【发布时间】:2013-04-05 06:34:44
【问题描述】:

八叉树是行进立方体的特例吗?我的意思是八叉树是否使用相同的三角立方体行进立方体。我知道八叉树是四叉树的 3d 形式。我只想知道我的方向是否正确。 树形成后,八叉树形成三角形的步骤(用于创建表面)如何与行进立方体的步骤相同?

【问题讨论】:

    标签: c++ opengl octree marching-cubes


    【解决方案1】:

    Marching cubes 是一种对函数的等值面进行三角剖分的方法,通过细分为大小相等的小立方体并以保持连续性的方式对每个立方体进行三角剖分。

    一个八叉树基础等值面方法,而不是切成大小不均匀的立方体。与等效“视觉质量”的行进立方体算法相比,这可以生成较少数量的三角形。然而,额外的成本是在对每个立方体的表面进行三角测量时需要处理许多特殊情况以避免孔洞。您还必须确定每个多维数据集何时“足够小”的指标(与多维数据集的值变化和多维数据集的视觉重要性等相比)。通常为了帮助减少特殊情况的数量,相邻多维数据集的差异最多只能相差一个八叉树级别 - 这意味着不可能仅对度量进行简单的细化。

    总而言之:行进立方体是一种快速等值面三角测量方法。八叉树方法更复杂,但可以提供更好的结果。它们不一样,八叉树也不是行进立方体的特例。

    【讨论】:

    • 我真的很感激和喜欢,你解释得多么好:)。我正计划开始做八叉树项目,我一直在阅读八叉树的论文,它令人困惑,但仍在重新阅读......但你仍然建议我从迈克尔开始。
    • 我想我应该先开始制作简单的八叉树。
    【解决方案2】:

    这是一个完全不同的理论。八叉树是一种用于 3d 空间的三次细分方法,用于查找事物在空间中的分布,有效地处理大空间并将其缩小到可以查找的区域。

    Marching cubes 是一个生成网格的系统,不使用像八叉树这样的渐进式细分。

    但是一个好的行进立方体系统会使用八叉树来找到需要处理的区域,然后扔掉没有网格的东西。 https://www.youtube.com/watch?v=gNZtx3ijjpo

    【讨论】:

    • 是的,我认为你是对的 uformorace .. 问题是我有一个用 c++ 编写的正在运行的行进立方体算法。到目前为止,我已经发现我需要做的不是填充每个 3d 网格(如在行进立方体中),而是创建网格的树结构并将三角形形成为等曲面切割(在 min 之间)的那些子(网格)和最大等值)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 2013-07-02
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多