我有一个三维点云,想要将它们三角化并保存为 .stl 文件。 我使用 Delaunay 进行三角化:
points = np.array([[x[i], y[i], z[i]] for i in range(len(x))])
tri = Delaunay(points)
但我找不到一个能将这个对象保存为 .stl 文件的库。有人知道好的解决方案吗?
我的 3D 点云描述:它只描述一个表面,所以对于每个 (x,y) 只有一个单一的 z 值。
也许我可以尝试编写自己的 STL 保存器,但是我必须知道 tri.simplices 到底返回了什么:根据文档所说,我得到的是形成三角形的点的索引 - 但是 tri.simplices 返回了一个包含4个索引的集合;我预期应该是3个(因为一个三角形有3个顶点)?!
编辑: 哦,该死,我刚刚发现为什么我会得到4个索引:这是一个四面体。但我不想从我的点云中得到四面体 - 正如我所说,我的点云是一个表面,我只想得到一个“表面”网格,而不是“实体”网格。这怎么可能呢?
顺便说一下:我刚刚完成了自己的 STL 写入程序,并且它按预期工作 - 但它只是 ascii 格式... 有人知道如何保存为二进制格式吗?
points = np.array([[x[i], y[i]] for i in range(len(x))])
-> 消除z。现在看起来正确了...但是有没有人能给我一个提示,如何以二进制格式保存? - Munchkin