Python / Mayavi:对不断变化的水平曲面进行动画处理

时间:2020-06-08 14:05:11

标签: python animation mayavi mayavi.mlab

我已经使用Mayavi软件包编写了Python代码,以可视化某个电位函数的水平面。我可以绘制Phi(x)= c形式的各个表面的3D图像,但我想制作一个动画,显示当c处于一组值范围内时发生的情况。

我使用了Marching Cubes算法为每个单独的曲面生成顶点和面,然后将它们放在列表中。请注意,每个顶点和面阵列的大小都不同。这是我用来尝试创建动画的代码:

s = mlab.triangular_mesh(verts[0][:,0], verts[0][:,1], verts[0][:,2], faces[0], colormap='spring' )


@mlab.animate
def anim():
    for i in range(10):
        s.mlab_source.reset(x=verts[i][:,0], y=verts[i][:,1], z=verts[i][:,2], triangles=faces[i])
        yield

anim()
mlab.show()

但是当我运行代码时,第一个表面出现了,然后Python内核崩溃了。

以下是一些我想用来制作动画的示例文本文件数据,以用换行符分隔的numpy数组形式编写。它比我想用来制作真实动画的数据集小得多。如果成功创建了动画,则曲面看起来会很乱,但是我只是想使动画起作用。我希望制作动画的正确数据集需要花费更长的时间。

Vertices

Faces

0 个答案:

没有答案