Удаленное построение, используя Mayavi и Python

У меня есть массивный файл, который мне нужно проанализировать и визуализировать на удаленной машине, у меня уже есть сценарии, написанные с использованием Mayavi, чтобы сделать именно это. Что я хотел бы сделать, это сохранить изображение в формате PNG, а затем скопировать изображение и просмотреть его локально. Это довольно просто сделать с помощью matplotlib, установив для бэкэнда значение "Agg", однако у меня возникли серьезные проблемы с этим в Mayavi. Я следовал за гидом здесь

http://docs.enthought.com/mayavi/mayavi/tips.html

но проблема в том, что для импорта только одного mlab требуется доступ к xdisplay, поэтому я даже не могу включить виртуальное окно, как было предложено.

Чтобы воспроизвести это, зайдите на компьютер через ssh и запустите простой скрипт на python, например:

#!/usr/bin/python
from mayavi import mlab

и это будет ошибка со стандартом;

Не удается получить доступ к дисплею X, правильно ли установлен $DISPLAY?

Если у кого-то есть исправление или альтернативный способ удаленного рендеринга 3D-изображения, я был бы признателен. 3D-рендеринг, предоставляемый matplotlib, недостаточен для того, что мне нужно, поэтому любые предложения по рабочим альтернативам mayavi также будут оценены.

1 ответ

Решение

Если вы работаете на платформе *nix с X-сервером, используйте решение в документации по рендерингу с использованием виртуального кадрового буфера, как описано выше в dpinte. Я успешно использовал этот метод, прежде чем запускать сценарии Mayavi без головы.

Основная идея состоит в том, чтобы запустить виртуальный X-сервер, такой как Xvfb, а затем вызвать mayavi в контексте отображения виртуального X-сервера (и да, это объяснение не совсем верно, но этого будет достаточно).

Другие вопросы по тегам