粒子の軌跡のビデオを作ろうとしています。しかし、どういうわけか私のシーンは更新されません。非常に簡単な例を次に示します。
from __future__ import absolute_import, division, print_function
from mayavi import mlab
import numpy as np
import math
alpha = np.linspace(0, 2*math.pi, 100)
xs = np.cos(alpha)
ys = np.sin(alpha)
zs = np.zeros_like(xs)
mlab.points3d(0,0,0)
plt = mlab.points3d(xs[:1], ys[:1], zs[:1])
@mlab.animate(delay=100)
def anim():
f = mlab.gcf()
while True:
for (x, y, z) in zip(xs, ys, zs):
print('Updating scene...')
plt.mlab_source.x[0] = x
plt.mlab_source.y[0] = y
plt.mlab_source.z[0] = z
f.scene.render()
yield
anim()
mlab.show()
このスクリプトを実行すると、2つのポイントとアニメーションGUIを備えたウィンドウが表示されます。また、端末に「UpdatingScene...」メッセージの連続ストリームを出力します。ただし、シーンにはまったく動きが見られません。
私は何が間違っているのですか?
Python 2.7、Mayavi 4.1、VTK 5.8