Как визуализировать прозрачное пространство с помощью mlab.pipeline.volume() с помощью поля mlab.pipeline.scalar()?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как визуализировать прозрачное пространство с помощью mlab.pipeline.volume() с помощью поля mlab.pipeline.scalar()?

Сообщение Anonymous »


Может ли кто-нибудь помочь мне создать видео, описывающее скалярное поле с объемной визуализацией, которое сжимается?

Я моделирую задачу динамики материала. На каждом этапе моделирования я получал вектор, который позже преобразуется в трехмерный массив скалярных полей, чьи максимальные и минимальные значения равны 1,0 и любому меньшему значению соответственно. В моей задаче координаты, возвращающие минимальное значение, игнорируются на следующем этапе моделирования. Итак, я хочу визуализировать этот процесс как анимацию, например, постепенно уменьшающееся объемное пространство.

Ниже приведен упрощенный код. Я предоставляю mlab.pipeline.volume() с объектом mlab.pipeline.scarlar_field, сгенерированным из массива данных. Я думал, что если я установлю 0,0 для игнорируемых координат в массиве данных, область, соответствующая координатам, станет прозрачной, и я смогу сделать нужное видео. Но по мере выполнения цикла for пространство становится темнее красного цвета и, наконец, становится черной ссылкой на полученное видео на моем Google Диске.

Итак, мне интересно
[*]Как я могу представить игнорируемую область как прозрачное пространство? [*]Почему все пространство отображается красным ИЛИ черным? На самом деле, это происходит и с моим исходным кодом. Я ожидал чего-то более красочного, поскольку массив данных хранит значения от 0,0 до 1,0.
из mayavi import mlab из редактора импорта Moviepy из tqdm импортировать tqdm импортировать ОС импортировать numpy как np mlab.options.offscreen = Истина # Создайте каталог для журналов log_root = os.getcwd() log_dir = os.path.join(log_root, «тест») os.madeirs(log_dir,exist_ok=True) # Первоначальный рендеринг массового распространения fig = mlab.figure(bgcolor=(0, 0, 0), size=(960, 960)) разрешение = 3 num_coord_ax = 2**разрешение init_scalars = np.ones((num_coord_ax, num_coord_ax, num_coord_ax)) скалярное_поле = mlab.pipeline.scalar_field(init_scalars) объем = mlab.pipeline.volume(scalar_field,figure=fig) mlab.colorbar(orientation="вертикальный") # Вектор логического индекса (bidx), который управляет активными vx в пространстве рендеринга объема active_bidx = init_scalars.astype(int).reshape(-1) # Цикл моделирования Psudoe #for i in tqdm(range(128), desc="Имитация..."): для меня в диапазоне (512): # Вектор выборки как имитация интересующей меня проблемы new_data = np.random.rand(active_bidx.sum()) new_data /= new_data.max() # ~ (num_active_vxs, ) # Усекаем минимальные значения bidx = новые_данные == новые_данные.мин() новые_данные[bidx] = 0,0 # Создать Усечение минимальных значений new_src = np.zeros_like(init_scalars) # ~ (num_coord_ax, num_coord_ax, num_coord_ax) new_src.reshape(-1)[active_bidx.astype(bool)] = new_data # Обновляем логический вектор active_bidx[active_bidx.astype(bool)] &= ~bidx print(f"{active_bidx.sum()=}") # проверяем, сокращается или нет оцениваемая область # на самом деле возвращаемое значение уменьшается, что # подразумевает, что площадь уменьшается # Объемный рендеринг новых данных Volume.mlab_source.scalars = новый_источник mlab.savefig(os.path.join(log_dir, f"{i:04}.png"), рисунок=fig) # Установите разные переменные для создания видео из файлов .png. input_ext = ".png" имя_вывода = "test.mp4" кадры в секунду = 60 кодек = "libx264" # Получить список путей к изображениям imgs = отсортировано (os.listdir (log_dir)) images = [img для img в imgs, если img.endswith(input_ext)] image_paths = [os.path.join(log_dir, img) для img в изображениях] # Создайте видео и сохраните его на локальном компьютере. имя_видео = os.path.join(каталог_журнала, имя_выхода) клип = редактор.ImageSequenceClip(image_paths, fps=fps) clip.write_videofile(имя_видео, кодек=кодек, fps=fps) Заранее спасибо!
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Ошибка подпроцесса Python FILE NOT FOUND при выполнении файла, сгенерированного PyInstaller в Linux, из общего VOLUME в
    Anonymous » » в форуме Python
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous
  • Mayavi: 3D data volume rendering
    Anonymous » » в форуме Python
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • "Symbol Self.volume [0] .value_or не найден" При доступе к данным тома
    Anonymous » » в форуме Python
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Как сгруппировать контроллер с помощью документации OpenAPI и Scalar API
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Как сгруппировать контроллер с помощью документации OpenAPI и Scalar API
    Anonymous » » в форуме C#
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»