Как добавить/удалить 3D-бокс в визуализацию анимации Python Mayavi?

Вот минимальный код для визуализации трехмерной анимации с использованием mayavi и 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()

внезапное изменение угла обзора


person YW P Kwon    schedule 20.08.2018    source источник
comment
Может ли это вам помочь: stackoverflow.com/a/29632326/7919597   -  person Joe    schedule 20.08.2018