mayavi points3d情节动画不会更新下一帧

时间:2014-07-24 16:23:14

标签: python python-2.7 animation numpy mayavi

我正在编写一个代码,可以看到四个字形在空间中移动。此时mayavi窗口显示初始位置,但不会更新到下一个位置。

    #Library decleration 
import numpy as np
from mayavi.mlab import *

....

#Inputting the intital positions into the storage vector
storage_position[0].append(v_1.theta)
storage_position[1].append(v_1.phi)
#Calculating the rest of the positions using the symmetry given
storage_position = Sym(storage_position)

#Plotting the intitial positions 

x_coord = x_trans( storage_position)
y_coord = y_trans(storage_position)
z_coord = z_trans( storage_position)


plt = points3d(x_coord, y_coord, z_coord)

msplt = plt.mlab_source
@mlab.animate(delay=100)
def anim(storage_position, storage_vort, no_vort ,x_coord, y_coord, z_coord):
    f = mlab.gcf()
    while True:
    #for i in range(10):      
        #Working out the hamiltonian
        #Hami(storage_position, storage_vort, 1 - 1, no_vort-1)

        transfer_vector = method(storage_position, storage_vort, 1 - 1, no_vort-1)
        storage_position[0].append(transfer_vector[0])
        storage_position[1].append(transfer_vector[1])
        storage_position = Sym(storage_position)


        x_coord = x_trans( storage_position)
        y_coord = y_trans(storage_position)
        z_coord = z_trans( storage_position)

        msplt.set(x_coord = x_coord, y_coord = y_coord, z_coord = z_coord)

        yield


anim(storage_position, storage_vort, no_vort - 1,x_coord, y_coord, z_coord)
mlab.show()

x_coord等是numpy向量,用于存储四个字形的x坐标。 x_trans等是使用动画的每个步骤的新坐标更新每个向量的函数。

1 个答案:

答案 0 :(得分:3)

尝试更换此行:

msplt.set(x_coord = x_coord, y_coord = y_coord, z_coord = z_coord)

用这个:

msplt.set(x=x_coord, y=y_coord, z=z_coord)

点集数据源(应该是MGlyphSource类型的对象)知道xyz,但是x_coord,{ {1}}和y_coord不支持作为关键字参数。

这是一个完整的工作示例,可以帮助您入门:

z_coord

请注意,运行此操作时,您可能会在控制台上看到很多警告。忽略它们:它们无害并且known issue