Mayavi: 动画三角形网格面颜色

创建于 2017-01-26  ·  2评论  ·  资料来源: enthought/mayavi

嗨,我有一个三角形网格,其中包含与面部颜色对应的数据,我可以使用 #253 中的解决方案进行绘制,例如

mesh = mlab.triangular_mesh(self.vertices[:,0], self.vertices[:,1], self.vertices[:,2], self.triangles,representation='wireframe',opacity=0)
mesh.mlab_source.dataset.cell_data.scalars = color
mesh.mlab_source.dataset.cell_data.scalars.name = 'Cell data' 
mesh.mlab_source.update() 
mesh2 = mlab.pipeline.set_active_attribute(mesh,cell_scalars='Cell data') 
surf = mlab.pipeline.surface(mesh2)  

但是,我不确定如何为颜色的变化设置动画。 例如,

@mlab.animate(delay=100)
def anim():
    f = mlab.gcf()
    for i in range(0,data.shape[0]):
        mesh.mlab_source.dataset.cell_data.scalars = data[i,:]
        mesh.mlab_source.dataset.cell_data.scalars.name = 'Cell data' 
        mesh.mlab_source.update()
        mesh2 = mlab.pipeline.set_active_attribute(mesh,cell_scalars='Cell data') 
        mlab.pipeline.surface(mesh2) 
        yield
anim()
mlab.show()

做我想做的事,但随着动画的进展它会迅速变慢,最终无法使用。 我尝试的大多数更改(例如删除管道命令)导致图像根本不更新。 还有其他选项可以更新面部颜色吗?

最有用的评论

@RomeshA

花一两天时间尝试解决此问题,并遵循相同的示例。 非常感谢你!

所有2条评论

我通过手动创建tvtk.PolyData清理代码。 然而,另一个重大变化是文档表明PolyData.modified()方法应该用于更新图形。 但是,这对我不起作用 - 相反,我必须使用VTKDataSource.update()方法,其中VTKDataSource包装PolyData ,因此需要通过遍历表面父母

所以最终的工作代码是

from mayavi import mlab 
from tvtk.api import tvtk

polydata = tvtk.PolyData(points=self.vertices, polys=self.triangles)
polydata.cell_data.scalars = np.ravel(data[:,0].copy())
polydata.cell_data.scalars.name = 'celldata'
mesh = mlab.pipeline.surface(polydata)

@mlab.animate(delay=10)
def anim():
    for i in range(0,data.shape[0]):
        polydata.cell_data.scalars = np.ravel(data[:,i].copy())
        polydata.cell_data.scalars.name = "celldata" 
        # polydata.modified()  # does not work
        mesh.parent.parent.update() # works
        yield

anim()
mlab.show()

@RomeshA

花一两天时间尝试解决此问题,并遵循相同的示例。 非常感谢你!

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

relyativist picture relyativist  ·  16评论

rpep picture rpep  ·  7评论

dnacombo picture dnacombo  ·  7评论

thoth291 picture thoth291  ·  10评论

GaelVaroquaux picture GaelVaroquaux  ·  13评论