用于从 3D 文件格式(例如 STL)获取规则网格的 C++ 库

C++ library to obtain regular meshes from a 3D file format such as STL

似乎有一些库(包括 CGAL)可以从 2D 或 3D 模型生成网格。

问题:在C++环境下,获得一组规则节点来表示一个3d文件格式(如STL)给出的对象的最佳方法是什么?

为了说明问题,我举个例子。在 2D 情况下,正方形可以由“1”的集合表示,空 space 可以由“0”的集合表示。

是否有任何 C++ 库可以处理此任务?

00000000000000
00000111000000
00000111000000
00000111000000
00000000000000

提前致谢。

CGAL it self is already a very good option, if you can match the licenses (many modules are GPL or must pay a fee for proprietary use). This answer 显示了一个使用示例。

另一个完整的库是 Point Clouds Library (PCL) (license compatible with commercial). If your input data is ordered (like the one shown in the question) you can use the pcl::OrganizedFastMesh class。 如果您的数据未排序, 那么 pcl::GreedyProjectionTriangulation 可能会更好。

最后,如果使用 PCL,您可以使用 [pcl::io::savePolygonFileSTL](http://docs.pointclouds.org/1.7.0/group__io.html#ga3223bdca3003262efbd8c475d4ab7cc6].

将三角形网格保存到 STL

作为最后一点,最好不要试图找到一个与您的输入格式完全匹配的库,而是找到一个可以生成您想要的结果的库,然后通过转换器将您的输入和输出提供给它。当然,如果您的输入没有提供所需的数据,例如法线,那么您必须先计算它或搜索其他方法;)。