我希望能够在Python中绘制一个stl文件。我可以在Matlab中很容易地做到这一点与此代码:
phacon = stlread("Spine_PhaconModel.stl");
hold on
figure = trisurf(phacon,'FaceColor',[0.6 0.6 0.6], 'Edgecolor','none','FaceLighting','gouraud','AmbientStrength', 0.15, 'MarkerEdgeColor',"r")
view([180, -1])
camlight('headlight');
material('dull');
但是当我尝试将代码更改为Python时,输出不是我想要的。我正在寻找的输出图类似于下面的附件:Spine ouput from matlab
我尝试使用mesh.Mesh.from_file等函数来获取数据,作为Matlab函数stlread()的等效函数,并使用plot_trisurf作为Matlab函数trisurf()的等效函数。我尝试的代码是:
fig = plt.figure()
ax = fig.gca(projection='3d')
stl_data = mesh.Mesh.from_file('Spine_PhaconModel.stl')
points = stl_data.points.reshape([-1, 3])
x = points[:,0]
y = points[:,1]
z = points[:,2]
collec = ax.plot_trisurf(x,y,z,linewidth=0.2)
然而,我不知道如何使它在视觉上看起来与第一个附加的图像相同。我得到的是这个Spine Phacon output using Python
我真的很感激你的帮助,非常感谢!
2条答案
按热度按时间2ic8powd1#
从文档中似乎你需要将其绘制为3D多边形,下面的答案显示了如何绘制它,下面是一个修改后的例子,因为文档已经过时,matplotlib似乎已经改变了。
如果你想要的东西甚至比matlab绘制更好,那么你应该使用vtkplotlib,因为它使用GPU绘制,而不是matplotlib CPU光栅化,一个例子是在这个答案https://stackoverflow.com/a/57501486/15649230
编辑:我已经修改了上面的代码,删除了自动缩放,现在自己缩放,你用鼠标左键旋转,用鼠标中键移动,用鼠标右键缩放,这个答案指定了如何在代码https://stackoverflow.com/a/65017422/15649230中完成它
6l7fqoea2#
一个更好的方法是使用
open3d
包来3D可视化.stl文件。下面是如何做到这一点:输出:
您将看到一个完全可交互的3D stl文件。
查看open3d-documentation了解更多。