matplotlib показывает только частичную сетку из файла stl
Итак, у меня есть эта милая маленькая модель джипа, хранящаяся в моем файле stl:
Чтобы отобразить его трехмерную сетку в блокноте Jupyter, я использовал следующий сегмент кода:
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? Любая идея, кто-нибудь?
1 ответ
Оказывается, что после непродуктивных выходных проблема в файле stl.
Он не поврежден сам по себе, но поскольку ранее он был преобразован из твердотельной модели в модель поверхности с использованием другого приложения, сгенерированный файл STL был каким-то образом неправильно отформатирован для numpy-stl
разобрать полностью.
Тогда решением было просто использовать другое приложение, чтобы открыть файл stl (например, MeshLab), а затем снова экспортировать его как файл stl. Впоследствии это было правильно отображено, ура!