【问题标题】:Triangulation 3D algorithm三角测量 3D 算法
【发布时间】:2014-07-30 12:22:53
【问题描述】:

我在 3D 空间中有数千个多边形,其中包含超过 3 个顶点。我想将每个多边形划分为一组三角形。我一直在寻找整个互联网,但我找不到任何可以做到这一点的 3D 算法。我发现了许多在 2D 上工作的算法,例如 ear clippingDelaunay triangulation。但我找不到任何 3D 算法。

我在这个网站上看到了许多相同的问题,这些问题的答案都是“使用 Delaunay 三角测量算法”。但我已经看到这个算法适用于 2D: http://www.geom.uiuc.edu/~samuelp/del_project.html

实现一种算法,以找到二维给定点集的约束 Delaunay 三角剖分。

我可以使用什么 3D 三角测量算法? 我正在使用带有 C++ 的 OpenGL。

【问题讨论】:

  • Delaunay 用于点集三角剖分,您需要为耳剪设计的多边形三角剖分。您可以通过将多边形投影到任何不退化的平面上来将耳朵剪裁应用于 3D。
  • 受约束的 Delaunay 三角剖分适用于多边形。
  • 只是为了确保您不会让这种方式变得过于复杂:多边形可以是凹的吗?只要它们是凸的,这当然是一个微不足道的问题。此外,还有一些方法可以直接使用 OpenGL 渲染任意多边形,使用模板缓冲区。根据您的用例,这可能是另一种选择。
  • Reto Koradi - 是的,模型可以是凹的。而且我需要将数据存储在变量中,而不是直接渲染它。在你的路上有可能吗?如果有,怎么做?
  • 我假设每个多边形相对于由它的面法线和其中一个点定义的平面是平的?在这种情况下,为什么不在该平面上将其减少到 2d,而只使用您已经知道的常规三角测量方法之一?

标签: c++ algorithm opengl 3d


【解决方案1】:

您可以使用 GLUTesselator:

http://www.glprogramming.com/red/chapter11.html

另请注意,3D 多边形将有许多面,这些面可以转换到轴对齐的 2D 平面上,进行三角剖分,然后将结果转换回由面定义的平面。

【讨论】:

    【解决方案2】:

    您可以使用 delaunay 三角剖分,但可以使用四面体。基本上使用 Bowyer Watson 和外接球:http://blog.mmacklin.com/tag/meshing/.

    【讨论】:

      猜你喜欢
      • 2011-03-09
      • 1970-01-01
      • 2014-03-18
      • 2019-11-14
      • 2017-06-30
      • 1970-01-01
      • 2014-04-09
      • 2017-02-09
      • 1970-01-01
      相关资源
      最近更新 更多