matplotlib仅显示stl文件中的部分网格

时间:2018-06-22 08:12:23

标签: python-3.x matplotlib mesh numpy-stl

所以我在我的stl文件中存储了吉普车的这个可爱的小模型:

enter image description here

要在jupyter笔记本中显示其3D网格,我使用了以下代码段:

from stl import mesh
from mpl_toolkits import mplot3d
from matplotlib import pyplot

tgtMesh = mesh.Mesh.from_file(r'./miljeep.stl')

figure = pyplot.figure()
axes = mplot3d.Axes3D(figure)
axes.add_collection3d(mplot3d.art3d.Poly3DCollection(tgtMesh.vectors))
scale = tgtMesh.points.flatten(-1)
axes.auto_scale_xyz(scale,scale,scale)
pyplot.show()

不幸的是,出现的是这样的:

enter image description here

通过简单的打印,我看到网格中仅存储了(376,3,3)的向量数组,而正确地,当使用在线软件完全显示时,它应该是(53184,3,3)

所以这似乎是matplotlib或更可能是numpy-stl的问题?知道吗,有人吗?

1 个答案:

答案 0 :(得分:0)

经过一个无聊的周末之后,事实证明问题出在stl文件上。

它本身并没有损坏,但是由于它先前已使用另一个应用程序从实体模型转换为表面模型,因此生成的stl文件未正确格式化,无法numpy-stl完全解析。

然后的解决方案是简单地使用另一个应用程序打开stl文件(例如MeshLab),然后再次将其导出为stl文件。此后正确显示了,万岁!