【发布时间】:2013-12-03 05:52:24
【问题描述】:
我有一个 3D 点云,我想对它们进行三角测量并保存为 .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。现在它看起来是正确的......但是有人提示我如何以二进制格式保存?