1

我有一个 3D 模型,它由 3D 三角形网格组成。我想将网格划分为不同的组。每组代表一个表面,例如平面、圆柱表面。这类似于表面识别/重建。

输入是一组 3D 三角形网格。输出是每个表面的网格分割。

有没有符合我要求的图书馆?

4

2 回答 2

1

如果你想进行大量的网格处理,那么点云库是一个好主意,但我也建议使用 CGAL:http ://www.cgal.org以获取更多针对网格的算法和结构负载。

最后,您描述的问题最容易自己解决:

  1. 枚举所有顶点
  2. 枚举所有多边形
  3. 创建一个整数数组,其大小与“大”网格中的顶点数相同,初始化为 0。
  4. 创建一个整数数组,其大小与“大”网格中的多边形数量相同,初始化为 0。
  5. 将计数器初始化为 0
  6. 对于网格中的每个多边形,查看它的顶点以及每个顶点在数组中的值。如果每个顶点的值为零,则增加计数器并相应地分配给顶点数组和多边形数组中的每个值。如果不是,则将所有具有较大数字的顶点和多边形重新标记为最小的非零数字。

使用查找表可以快速完成重新标记。这可能会为您节省很多将代码连接到您并不真正感兴趣的库的问题。

于 2013-03-12T19:59:53.260 回答
0

您应该看看 PCL 库,它具有所有这些功能以及更多功能:http: //pointclouds.org/

于 2012-06-10T12:32:12.410 回答