所以我在我的stl文件中存储了吉普车的这个可爱的小模型:
要在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()
不幸的是,出现的是这样的:
通过简单的打印,我看到网格中仅存储了(376,3,3)的向量数组,而正确地,当使用在线软件完全显示时,它应该是(53184,3,3)
所以这似乎是matplotlib或更可能是numpy-stl的问题?知道吗,有人吗?
答案 0 :(得分:0)
经过一个无聊的周末之后,事实证明问题出在stl文件上。
它本身并没有损坏,但是由于它先前已使用另一个应用程序从实体模型转换为表面模型,因此生成的stl文件未正确格式化,无法numpy-stl
完全解析。
然后的解决方案是简单地使用另一个应用程序打开stl文件(例如MeshLab),然后再次将其导出为stl文件。此后正确显示了,万岁!