这是使用mayavi
和可视化 3d 盒子动画的最小代码tvtk
。
当时t==20
,我尝试添加一个新的绿色框。然而,visual.box
自动跑reset_zoom
进去,突然摄像机的视角发生了变化。
如何在不影响相机的情况下随时添加/删除盒子?有没有比使用更好的方法tvtk
?
from mayavi import mlab
from tvtk.tools import visual
fig = mlab.figure(size=(500,500))
visual.set_viewer(fig)
b1 = visual.box()
b2 = visual.box(x=4)
b3 = visual.box(x=-4)
b1.v = 5.0
mlab.view(azimuth=45, elevation=70, focalpoint=[0, 0, 0], distance=62.0, figure=fig)
@mlab.show
@mlab.animate(delay=100)
def anim():
for i in range(30):
b1.x = b1.x + b1.v*0.1
if b1.x > 2.5 or b1.x < -2.5:
b1.v = -b1.v
if i==20:
""" HERE adding a box automatically reset zooming """
newbox = visual.box(x=2, y=2, z=2, color=(0,1,0))
yield
anim()