Hai, Saya memiliki jaring segitiga dengan data yang sesuai dengan warna wajah, yang dapat saya plot menggunakan solusi dari #253 misalnya
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)
Namun, saya tidak yakin bagaimana cara menganimasikan perubahan warna. Misalnya,
@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()
melakukan apa yang saya inginkan, tetapi melambat dengan cepat saat animasi berlangsung dan akhirnya tidak dapat digunakan. Sebagian besar perubahan yang saya coba (misalnya menghapus perintah pipeline) menghasilkan gambar yang tidak diperbarui sama sekali. Apakah ada opsi lain untuk memperbarui warna wajah?
Saya sering membersihkan kode dengan membuat tvtk.PolyData
secara manual. Namun, perubahan besar lainnya adalah bahwa dokumentasi menyarankan bahwa metode PolyData.modified()
adalah yang harus digunakan untuk memperbarui gambar. Namun, ini tidak bekerja untuk saya - sebagai gantinya, saya harus menggunakan metode VTKDataSource.update()
, di mana VTKDataSource
membungkus PolyData
dan dengan demikian perlu ditemukan dengan melintasi orang tua permukaan
Jadi kode kerja terakhir adalah
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
Luangkan satu atau dua hari untuk mencoba memperbaikinya dan mengikuti contoh yang sama. Terima kasih banyak untuk Anda!
Komentar yang paling membantu
@RomeshA
Luangkan satu atau dua hari untuk mencoba memperbaikinya dan mengikuti contoh yang sama. Terima kasih banyak untuk Anda!