Я пытаюсь оживить эволюцию колец вершин в жидкости.Данные - это просто массив с информацией x, y, z для частиц, которые затем создают кольца.Для их визуализации я использую Mayavi, и просто отрисовка текущей позиции на каждом временном шаге работает отлично.Проблемы возникают при попытке анимировать все позиции в «кино».Для простой прорисовки я использую mlab.point3D и циклически перебираю массив, давая каждому кольцу свой цвет, как в примере ниже:
N = 0
for i in range(0,N_rings):
fig = mlab.points3d(res_alpha[0,N:N + ring[i].N_p - 1,0,0], res_alpha[0,N:N + ring[i].N_p - 1,1,0], res_alpha[0,N:N + ring[i].N_p - 1,2,0], scale_factor=0.1, color = ring[i].color)
N = N + ring[i].N_p
Как мне сделать то же самое в функции анимации?Я пытался использовать fig.mlab_source.set, но мне это не помогло.Я думаю, что он хочет получить всю информацию одновременно, но как мне сохранить цвета?Любые предложения?
Редактировать: Слишком проясните, вот рабочий пример того, что я имею в виду
import numpy as np
from mayavi import mlab
pointsx = [5,5,5]
pointsy = [0,5,10]
z = np.linspace(0, 10, 3)
y = np.linspace(0, 10, 100)
xv, pointsz = np.meshgrid(z, y)
colors = [(1,0,0),(0,1,0),(0,0,1)]
N = 0
"""
N = 0
for i in range(0,3):
mlab.points3d(pointsx[N], pointsy[N], pointsz[0], scale_factor=0.1, color = colors[i])
N = N + 1"""
fig = mlab.points3d(pointsx, pointsy, pointsz[0], scale_factor=0.1, color = (1,0,0))
mlab.axes(extent=[0,10,0,10,0,10])
@mlab.animate(delay=1000, ui=True)
def anim():
for i in range(0,100):
fig.mlab_source.set(x=pointsx, y=pointsy, z=pointsz[i])
yield
anim()
mlab.show()
Он оживляет три точки, движущиеся в одном направлении.Как я могу сделать их разными цветами?Закомментированный блок кода - это то, что я использую для создания отдельных графиков, чтобы они имели разные цвета, но это не работает в анимации.