如何提高Poly3DCollection动画的速度?

时间:2019-05-02 12:32:00

标签: python matplotlib animation

我想为3D对象(poly3Dcollection)设置动画。该对象包含32个(三角形)面片。随着时间的流逝,对象的坐标会发生变化。在此示例中,补丁的坐标的z值在动画中每帧增加0.1,从而使对象向上移动。 问题:动画真的很慢。对于此示例,是否可以提高动画的速度?

我已经检查了动画速度降低的地方。它不在函数内部,因为a和b紧接彼此打印(请参见代码)。 我认为问题在于用新框架更新图形。 leg1p是包含1000个元素的列表。每个元素由32个列表(补丁)组成,每个列表包含3个坐标(x,y,z),形成一个补丁。

def animate(i):
print('a') 
plt.gcf()
ax = p3A.Axes3D(fig)
ax.set_aspect('equal')
ax.set_xlim3d([-10, 140])
ax.set_xlabel('X')
ax.set_ylim3d([-75, 75])
ax.set_ylabel('Y')
ax.set_zlim3d([-75, 75])
ax.set_zlabel('Z')
ax.elev = 30
ax.azim = -230
ax.dist = 8 
ax.add_collection3d(a3.art3d.Poly3DCollection(leg1p[i]))
print('b')
anim = animation.FuncAnimation(fig, animate, frames=1000, interval=40, repeat=False)
plt.show()

最后,我希望动画速度更快,因为我需要添加更多对象。我还试图保护动画的安全,但这会花费更多(很多)时间。

0 个答案:

没有答案