【问题标题】:Mesh generation from points with x, y and z coordinates从具有 x、y 和 z 坐标的点生成网格
【发布时间】:2011-06-20 11:01:12
【问题描述】:

问题:从 3D 点(使用 x、y 和 z 坐标)生成网格。

我所拥有的是 3D 空间中的点(具有 x、y 和 z 坐标),您可以在图像 1 中看到它。
输出是图像 2 或图像 3,或图像 4。简而言之,它将是网格。如果我有网格,可以提供上面的材料。

我看到很多人说 Delaunay 三角剖分或受约束的 Delaunay 三角剖分将帮助我生成网格,但我主要发现的是它在 2D 点中的实现(只有 x 和 Y 坐标)。

但我的问题是:从图 1 中可以看出,我有 3D 点。

Delaunay 三角剖分或约束 Delaunay 三角剖分是否适用于 3D 点?如果是,那么如何?还是我必须找到另一种从 3D 点生成网格的算法?

注意:关于二维点的 Delaunay 三角剖分的一个很好的解释可以找到 here

【问题讨论】:

  • 3D delaunay(我假设你想要四面体,而不是你试图拟合一个表面)非常非常非常非常病态,几乎不可能稳健地正确。实际上,问题不在于算法,而在于提供给它的典型数据。

标签: algorithm geometry 3d delaunay


【解决方案1】:

这里有一些其他关于网格生成及其相关工作的好链接。

TetGen : 优质的四面体网格生成器http://wias-berlin.de/software/tetgen/

CGal-计算几何算法库 http://www.cgal.org/http://www.cgal.org/Manual/latest/doc_html/cgal_manual/packages.html#Pkg:Triangulation3http://www.cgal.org/Manual/latest/doc_html/cgal_manual/contents.html#part_VI.
http://www.cgal.org/Manual/latest/doc_html/cgal_manual/Surface_reconstruction_points_3/Chapter_main.html.
3D 表面网格生成 - http://www.cgal.org/Manual/3.3/doc_html/cgal_manual/Surface_mesher/Chapter_main.html

GTSLibrary – GNU 三角曲面库。 http://gts.sourceforge.net/index.html

Jonathan Shewchuk - http://www.cs.berkeley.edu/~jrs/ http://www.cs.cmu.edu/~quake/robust.html

VTK: Visualization Toolkit (VTK) 是一个开源、免费提供的软件系统http://www.vtk.org/

体积和表面网格划分 – http://www.cse.ohio-state.edu/~tamaldey/mesh.htm

Poly2Tri: 一个开源 CDT 库http://code.google.com/p/poly2tri/

CM2Mesh 工具 – http://www.computing-objects.com/index.php.

自适应细分 – http://fluxionsdividebyzero.com/p1/math/geometry/g046.html#_3D

CUBIT – CUBIT 几何和网格生成工具包。 http://cubit.sandia.gov/index.html

几何在行动 - http://www.ics.uci.edu/~eppstein/geom.html

SlimDX - SlimDX 是一个免费的开源框架,使开发人员能够使用 C#、VB 等 .NET 技术轻松构建 DirectX 应用程序 http://slimdx.org/

【讨论】:

    【解决方案2】:

    ENigMA - 主要用于解决偏微分方程,它还有一个受约束的表面和体积网格生成器。仍然不确定是否会在未来将其作为开源版本发布。

    https://www.sites.google.com/site/billyaraujo/enigma/volume-mesh-generation

    【讨论】:

    • 如果可能的话,我建议包括更多细节,以及使用它的项目。是否有可用的开源分支?也尝试发布。
    【解决方案3】:

    3D Delauny 三角剖分将生成 (3D) 体积网格。我想你想要的是一个嵌入在 3D 中的(2D)表面网格,它近似于给定的点集。

    根据数据类型(小噪音或大噪音、异常值等),您可以采取不同的方法。请注意,您始终可以对数据进行预处理(例如,去除异常值、平滑数据或估计正常值)。

    • 对于噪声小且没有异常值的定向点集,您可以考虑泊松曲面重构(例如,Michael Kazhdan、M. Bolitho 和 Hugues Hoppe。泊松曲面重构. 在 Symp. on Geometry Processing,第 61-70 页,2005 年。)。
      请注意,您可以预处理数据以满足要求,例如参见Normal estimation。这是一个实现泊松曲面重构的 C++ 库(有很好的解释):CGAL Surface Reconstruction from Point Sets

    • 对于散点数据,请参见例如 Ohtake, Y.; Belyaev, A. & Seidel, H. P. A multi-scale approach to 3Dscatter data interpolation with compactly support basic functions Shape Modeling International, 2003, 2003, 153-161。它使用分层方法来创建多个插值级别。

    • 另一种处理高度不均匀或嘈杂的分散数据的方法是 Zhao, H.-K.; Osher, S. & Fedkiw, R. 在计算机视觉中使用水平集方法变分和水平集方法进行快速表面重建,2001 年。论文集。 IEEE 研讨会,2001,194-201。它使用变分方法和偏微分方程(尤其是水平集方法)。

    【讨论】:

    • 非常感谢您的回复,看到您提供的链接后,我希望我能找到解决方案。
    • 如果可能的话,请在这里放另一个好的链接,因为这个问题可能会成为很多人的最佳答案。谢谢...
    • 这个方法只有在点是有方向的时候才有效——即它们有一个法线。 OP没有指定是否是这种情况。如果这些点是无方向的,则引用论文中的参考文献可能会指向替代方法。
    • 是的。但是,您可以预处理数据并估计法线。我编辑了我的答案以澄清这一点。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    • 2014-12-02
    • 2012-09-23
    • 2013-09-20
    • 1970-01-01
    • 2016-11-30
    相关资源
    最近更新 更多