Случайно заглянул в блендер супруги. pic.twitter.com/EB29a0Po5W
— Mikhail Mezyakov (@aluminiumgeek) December 5, 2015
Блендер из коробки не поддерживает распределенный сетевой рендеринг. Поэтому я написал свою реализацию этого функционала. Встречайте eager-rendering.
В пакете имеются два файла: шелл-скрипт и питон-скрипт. Шелл-скрипт, собственно, занимается управлением процессами и распределяет задачи по хостам. Питоновый используется внутренним интерпретатором блендера во время рендеринга.
Сам рендеринг производится частями. Скрипт разбивает сцену на 64 тайла. Серия тайлов рендерится на первой свободной локальной или удаленной машине. Принцип работы следующий:
- eager.sh после запуска создает на локальной и удаленных машинах временные директории, куда будут складываться отрендеренные тайлы.
- Монтирует по sshfs временную директорию удаленного сервера.
- Генерирует номера начального и конечного тайлов с определенным шагом и запускает рендеринг на первой машине из списка хостов, который включает и локальную машину.
- Ждет, пока локальная или удаленная машина отрендерит серию тайлов, отсылает следующую серию тайлов первой освободившейся машине, повторяет пока не опустошит массив тайлов.
- Перекидывает отрендеренные тайлы с удаленных машин на локальную.
- Склеивает все тайлы в финальное изображение с помощью магии ImageMagick.
Как это выглядит в жизни:
↓
поддержка более одного удаленного хоста;- определение наличия GPU, патчинг blend-файла и запуск дополнительного процесса рендеринга на GPU;
- приоритеты машин (более мощные / менее мощные);
- определение сложности тайла для отправки его соответствующей машине;
- автоматическая подстройка количества тайлов в серии в зависимости от приоритета.
Явообще похоже еще не родилась чтоб понять, о чем ты тут пишешь))
ОтветитьУдалить