是否有任何库可以从3D数据阵列生成3D网格?

时间:2010-09-19 21:06:37

标签: c++ 3d

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

5 个答案:

答案 0 :(得分:2)

你想要Delaunay triangulation。维基百科条目末尾有一些链接。我已经使用了CGAL一次,但这非常痛苦。请注意,问题特别严重,并且你需要一个库:CGAL使用一些精确的算术技巧,因此它很麻烦。

不要自己这样做。

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

答案 1 :(得分:1)

目前还不清楚3D数据阵列究竟是什么意思,但我猜你正在寻找行进立方体算法。这很容易实现,但可能你可以找到一个开源实现。

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

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

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

有关理论的更多详情,请查看

上的文章

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

答案 4 :(得分:0)

本文是关于地图和图表中具有相同价值的线条。有关“轮廓”一词的更多含义,请参阅轮廓(消除歧义)。您可以看到:http://en.wikipedia.org/wiki/Contour_line