【问题标题】:Are there any libraries that can generate a 3D mesh from a 3D array of data?是否有任何库可以从 3D 数据数组生成 3D 网格?
【发布时间】:2019-02-06 21:21:26
【问题描述】:

我正在尝试编写一些代码来获取一些数据,将其放入 3 维数组中,然后生成 3D 网格进行渲染。数据是包含用于定义图块类型等字段的图块列表。我现在正在使用 Irrlicht 进行图形处理,它有方法来操作网格的顶点/索引,但我无法想出一个快速、高效的方法方法来做到这一点。是否有任何人都知道的有关如何执行此操作的库或示例?

【问题讨论】:

  • 我看到了一些关于如何实现这一点的问题。您可以尝试使用短语“convex hull”进行一些搜索。

标签: c++ 3d


【解决方案1】:

你想要Delaunay triangulation。维基百科条目的末尾有一些链接。我曾经为此使用过 CGAL,但非常痛苦。请注意,这个问题特别病态,您确实需要一个库:CGAL 使用一些精确的算术技巧,因此很麻烦。

不要自己做。

如果您想要生成凸包的网格,CGAL 也提供了它(也很麻烦)。

【讨论】:

    【解决方案2】:

    不清楚您所说的 3D 数据数组究竟是什么意思,但我猜您正在寻找行进立方体算法。自己实现很容易,但也许你可以找到一个开源实现。

    【讨论】:

      【解决方案3】:

      如果是完全 3D(具有内部体积和相交面),那么您需要 marching cubes 或行进四面体

      但如果它是 2.5D(即 xy 和深度/高度),那么在 XY 上进行 2D delaunay 三角剖分要快得多 - 最好和最快的实现是 triangle,但它不是免费用于商业用途

      【讨论】:

        【解决方案4】:

        同意上面的其他海报——Marching Cubes 算法是要走的路。就个人而言,我对绘制隐式定义的曲面很感兴趣。我写了一个介绍性的 Marching Cubes 示例(使用 Three.js 作为图形)并将其发布在:

        http://stemkoski.github.com/Three.js/Marching-Cubes.html

        有关该理论的更多详细信息,您应该查看文章在

        http://paulbourke.net/geometry/polygonise/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-05-29
          • 2012-10-19
          • 2023-01-08
          • 2019-10-17
          • 2017-06-10
          • 1970-01-01
          相关资源
          最近更新 更多