我有点卡住了。
我有一个 3D 点云(一个 (n,3) 顶点数组),我试图从中生成一个 3D 三角形网格。到目前为止,我没有运气。
我的数据格式:
- (x,y) 值以规则间隔 (z) 间隔。将数据视为在 z 方向逐层存储的闭环平面轮廓。
- 我的数据中的顶点必须是网格三角形的绝对位置(即我不希望它们被平滑以使体积开始改变形状,但层之间的线性插值很好)。
插图:
Z=2. : ..x-------x... <- Contour 2
Z=1.5: ...\......|... <- Join the two contours into a mesh.
Z=1. : .....x----x... <- Contour 1
Repeat for n slices, end up with an enclosed 3D triangular mesh.
我尝试过的事情:
- 使用Open3D:
- CGAL:
- 我不能让它为我的生活工作。SWIG 不是很好,使用 SWIG 实现 CGAL 也不是很好。
- CGAL 有两个 PyBind 实现,但是它们没有合并 CGAL 的 3D 三角测量库。
- 探索了其他模块,如 PyMesh、TriMesh、TetGen、Scikit-Geometry、Shapely 等。我可能在某个地方错过了答案。
鉴于我的数据是闭环平面轮廓的列表,似乎必须有一些简单的解决方案来将相邻的切片轮廓“加入”到一个大的 3d 网格中。有点像你在搅拌机里做的。有非 python 解决方案(如 MeshLab)可以很好地解决这些问题,但我需要 python 解决方案。有没有人有任何想法?我对 VTK 和 ITK 进行了一些研究,但到目前为止还没有找到我想要的东西。
我也开始考虑也许我可以在切片之间插入中间轮廓,并用顶点填充顶部和底部的轮廓,以使数据对“枢轴球”方法更加友好。
提前感谢您的任何帮助,不胜感激。如果有一种尚未编码的好方法,我承诺会对其进行编码并提供给处于我这种情况的人:)