Enthought Mayavi 动画空白显示

1 投票
2 回答
2264 浏览
提问于 2025-04-17 13:37

我一直在尝试运行以下的Python代码(来自Enthought的网站),目的是测试Enthought的Mayavi模块的动画功能。

from mayavi import mlab
import numpy
n_mer, n_long = 6, 11
pi = numpy.pi
dphi = pi/1000.0
phi = numpy.arange(0.0, 2*pi + 0.5*dphi, dphi, 'd')
mu = phi*n_mer
x = numpy.cos(mu)*(1+numpy.cos(n_long*mu/n_mer)*0.5)
y = numpy.sin(mu)*(1+numpy.cos(n_long*mu/n_mer)*0.5)
z = numpy.sin(n_long*mu/n_mer)*0.5

# View it.
l = mlab.plot3d(x, y, z, numpy.sin(mu), tube_radius=0.025, colormap='Spectral')

# Now animate the data.
ms = l.mlab_source
for i in range(10):
    x = numpy.cos(mu)*(1+numpy.cos(n_long*mu/n_mer +
                                  numpy.pi*(i+1)/5.)*0.5)
    scalars = numpy.sin(mu + numpy.pi*(i+1)/5.)
    ms.set(x=x, scalars=scalars)

但是,当我执行代码时,什么也没有发生。代码运行没有错误,但只弹出了一个空白的TVTK场景窗口——没有图像,也没有动画。问题可能出在Mayavi模块的导入上吗?网站上的示例是这样开始的: from enthought.mayavi import mlab 而我用的是: from mayavi import mlab 这个'enthought.mayavi'的导入方式对我来说不管用。我使用的Mayavi是通过pip安装的。
我该怎么做才能解决这个问题呢?我使用的是Mac OSX 10.8.2。提前谢谢你。

2 个回答

0

在Windows 7 64位系统上使用Canopy时,我遇到了类似的问题。它只显示了最后一帧,没有动画效果。我通过把pylab的后端从qt改成wx来解决了这个问题。

2

这个演示在我的电脑上运行得很好(刚升级到OS 10.8.2)。

不过,首先要回答你关于导入的问题。大约一年半前,我们对软件包进行了重构,去掉了导入时的enthought名称。因此,导入mayavi的mlab的标准方式从

from enthought.mayavi import mlab

变成了

from mayavi import mlab

这个设置是为了确保之前的方式仍然可以使用,但我们在示例代码中尝试将导入改成第二种方式。所以,我们可以比较确定这不是导入语句的问题。

你在Mayavi中运行过什么吗?试试这个:

from mayavi import mlab
mlab.test_plot3d()

另外,你的mayavi版本是什么?你使用的是哪个EPD(32位还是64位)?在终端中运行以下命令的结果是什么?

$ echo $ETS_TOOLKIT

撰写回答