новости

рисунки

Кампании и задания

записи полетов

настройка

разное


игры


ссылки


гостевая книга

Создание фермы рендеринга для программы трёхмерного моделирования Blender.

Быстрых процессоров не бывает. Как бы ни старались инженеры, но программисты работают быстрей, и выдают на каждый новый процессор сотню новых программ, которые загружают процессор вычислениями. Поэтому приходиться искать обходные пути, позволяющие получить результат быстрее, чем позволяет компьютер. Один из таких путей — объединение нескольких машин в одну. Это не значит, что несколько компьютеров забиваются в один корпус, всё гораздо проще... и сложнее. Компьютеры соединяются сетью, а дальше уже зависит от поставленной задачи. Если программа поддерживает параллелизацию вычислений - строится кластер, в котором отдельные компьютеры выступают как процессоры одного компьютера. При этом скорость сети является ограничивающим фактором, и производительность кластера не растет пропорциональна числу его элементов. Но для рендеринга последовательности рисунков в программах трехмерного моделирования строить кластер не обязательно. Гораздо проще сделать ферму для рендеринга. Отличие фермы от кластера в том, что ферма состоит из самостоятельных компьютеров, которые могут даже работать под управлением разных операционных систем. Программа, управляющая фермой, делит задания между компьютерами в сети, и производительность фермы прямо пропорциональна производительности компьютеров, входящих в состав этой фермы.
Одной из простейших программ для создания рендер-фермы является распространяемая под GNU лицензией программа Farmerjoe. Программа эта очень проста в настройке, и может работать под Windows, Linux и MacOS X. В этой статье будет описан процесс настройки в ОС Windows. Пользователь Linux не встретит затруднений с настройкой фермера, а Макинтоши не слишком распространены. Есть у Farmerjoe один недостаток - он работает исключительно с Blender-ом, так что пользователи других программ дальше могут не читать. Так же для постройки фермы необходимо владеть основами работы в сети, уметь настраивать Windows штатными средствами, и уметь узнавать и менять IP-адрес. Также необходимо заранее настроить сеть.

Начать надо с простого, закачать архив с Farmerjoe
http://blender.formworks.co.nz/farmerjoe/0.1.3/Farmerjoe_0.1.3.zip
Это крайний на данное время релиз, но возможно автор выпустит новую версию, поэтому не забывайте заходить на страничку Farmerjoe, и закачивать свежую версию.
http://blender.formworks.co.nz
Сначала необходимо настроить компьютер, который будет главным в ферме. Его необходимо включить для начала. После этого надо создать папку, в которой будет размещаться программа. Лучше всего создать папку в корневой директории. Поэтому открываем диск С:, жмем на свободном месте правой кнопкой мыши (далее буду писать ПКМ), в меню выбираем подменю "Создать", и выбираем "Папку". Готово, на диске С: появилась новая папка. Она так и называется "Новая папка", для порядка ее надо переименовать в "Farmerjoe", и сделать папку доступной из сети. Для этого нажать ПКМ на папке "Farmerjoe", в меню выбрать пункт "Свойства", в появившемся окне выбрать вкладку "Доступ", и поставить галочки доступа.


Далее распаковываем в созданную папку архив с Farmerjoe и начинаем настройку конфига. Файл конфига называется "Farmerjoe.conf". (Если файлы Farmerjoe не имеют расширения .conf, значит в Windows отключен показ расширений, необходимо его включить.) Открывается Farmerjoe.conf программой "Блокнот" (Notepad) или любым текстовым редактором. Ниже следует текст конфига, с пояснениями:
#Литера "#" обозначает комментарии, которые игнорируются при работе программ.

# Master Server Configuration
port = 2006
master = 192.168.1.1
# В этой секции указан IP-адрес главного компьютера.
# Если он задается динамично, то перед запуском фермы необходимо его узнавать и менять.

jobs = jobs
logs = logs
# В этой секции указаны имена папок, в которые будут ложиться отрендеренные кадры (jobs), и логи работы (logs).
# Менять тут ничего необязательно, всё и так работатет.

linux_root = /render
linux_blender = /render/bin/linux/blender_2.42a/blender
linux_composite = /usr/bin/composite
# Это секция для Линукс-машин.

# Ниже секция для windows-машин.
windows_root = r:
# Эта строка задает букву диска, менять не надо, если только эта буква не занята.
windows_blender = r:\bin\windows\blender\Blender.exe
# В этой строке указан путь к исполнимому файлу Blender-а.
windows_composite = composite
# Не знаю для чего эта строка, но трогать не стал.


osx_root = /Volumes/farmerjoe
osx_blender = /Volumes/farmerjoe/bin/osx/blender/blender.app/Contents/MacOS/blender
osx_composite = /usr/local/bin/composite
# Это секция для MacOS X.

# Application server Configuration
appserver_port = 2007
# Эта секция задает порт, через который можно будет контролировать процесс работы фермы.
# Менять необязательно, если конечно этот порт не занят другой программой.
Как видите, конфиг весьма прост, если все машины работают под Windows, то править надо всего один параметр - IP-адрес главного компьютера. Еще рекомендую поправить путь к Blender-у. По умолчанию Blender помещается в одну папку с фермой, и с других компьютеров запускается через сеть. Но это повышает нагрузку на сеть, тратится некоторое время на перекачку, и соответственно производительность снижается. Лучше установит на каждый подчиненный компьютер по Blenderu, тем более диски сейчас большие, а весит Blender немного. Только главное - путь к папке с программой на всех компьютерах должен быть одинаковый, какой указан в конфиге. У меня это: c:\blender\Blender.exe
соответственно в конфиге поправлена строчка
windows_blender = c:\blender\Blender.exe
Если же по каким либо причинам нельзя переписать Blender-ы на каждый компьютер, то можно использовать запуск из сети, для этого надо переписать папку с Blender-ом в папку Farmerjoe, и указать в конфиге путь.
Необходимо уточнить, что должен быть выбран только один из этих двух способов. Или запуск из сети, или с самих компьютеров. ПМСМ — лучше чтоб на каждом компьютере было по Blender-у, главное не забыть, что на всех компьютерах путь должен быть одинаковый.

Теперь можно заняться настройкой запуска Farmerjoe. Проще всего сделать это создав ярлыки программы, и дав им ключи запуска. Жмем ПКМ на Farmerjoe.exe, и в меню выбираем "Создать ярлык". Появившийся ярлык сразу переименовываем в "Сервер". Создаем еще один ярлык и даем ему имя "Контроль". Затем жмем ПКМ на ярлыке "Сервер" и выбираем в меню пункт "Свойства" . В открывшемся окне, на вкладке "Ярлык", в строке "Объект" надо добавить ключ --master, и нажать кнопку "ОК".

Затем таким же способом надо добавить ярлыку "Контроль" ключ –appserver.
Теперь запускаем "Сервер" и "Контроль", и основа фермы готова. Откроются два окошка, в которых будет показываться некоторая информация. "Сервер" будет показывать подключение клиентов, а "Контроль" при запуске покажет подсказку, строчку, набрав которую в браузере можно получить контроль над процессом рендеринга.

У меня это http://polugut:2007. Необходимо открыть браузер (IE, Opera, Firefox), набрать в адресной строке текст подсказки и нажать Enter. Откроется страница

На странице имеется список клиентов (с их IP-адресами), подключенных к серверу, и список заданий. На скрине два клиента и никаких заданий пока.
Теперь необходимо переписать скрипты из папки bin (она лежит в папке Farmerjoe) в папку со скриптами Blender-а. Это два файла : farmerjoe_submit.py и farmerjoe_bucket.py.

Настройка сервера завершена, теперь можно переходить к клиентам.
Неоходимо на каждом компьютере, в том числе и на сервере, подключить папку "Farmerjoe" как сетевой диск, присвоив ему букву R: (или ту, которую указали в конфиге). Подключение производится из меню "Сервис" любой папки

После подключение необходимо зайти на диск и запустить Farmerjoe.exe (если надо, чтоб и главный компьютер просчитывал кадры, то Farmerjoe.exe надо запустить и на нем). Откроется окно клиента, в котором будет написано об успешном подключении

Точнее там написано, что вы раб, но это касается компьютера, а не пользователя. Если подключение не установится, то будет написано так
Программа пишет, что не может достучаться до IP-адреса, указанного в конфиге. Такое может быть если адрес сервера указан неправильно, или сменился. Необходимо на ведущем компьютере выключить сервер, узнать IP-адрес компьютера, поправить конфиг, и снова запустить сервер.

Готово, ферма работает. Можно рендерить.
Запускаем Blender, загружаем сцену с анимацией, и делаем Pack Data. Если не сделать запаковку, то ренедер будет без текстур. Затем выходим из Blender-а, переносим файл с анимацией в папку "Farmerjoe", и снова открываем. В программе открываем окно скриптов и выбираем "Render – Farmerjoe Submit Render"

Откроются настройки Фермера

Как видите, настроек немного. И важны только две: формат рисунков и Render Step. Формат можно выбрать какой нравится, а Render Step я ставлю равным 10-ти. Этот параметр указывает сколько кадров анимации отправится на клиентские машины за раз. Чем больше эта величина, тем меньше нагрузка на сеть, но слишком много давать не надо. Десять будет в самый раз. И если вы не примонтировали папку "Farmerjoe" как сетевой диск, то надо указать путь к Farmerjoe.exe. Это возле надписи "Path to Farmerjoe".
Теперь надо нажать кнопку "Submit Render" и cкрипт сделает всё остальное.
Прогресс рендеринга отображается в окне браузера. По умолчанию он ждет команды обновить страницу, но в меню Refresh можно выбрать периодичность самостоятельного обновления.
На скрине видна работа фермы. В списке рабов (ведомых компьютеров) указаны их адреса и статусы. Там можно поставить отдельные машины на паузу. Ниже, в секции Jobs показан список заданий. Farmerjoe может принять несколько заданий анимации и выполнить их поочередно. Задания можно поставить на паузу, перезапустить или удалить кнопками в колонке Aktions. В разделе Tasks (чтоб его открыть надо кликнуть на задании) показан процесс рендеринга отдельных кадров, и адреса компьютеров, на которых эти кадры обрабатываются.
Отрендеренные кадры складываются в папку Jobs, для каждого задания создается отдельная папка. Последовательность кадров нужно загрузить в программу, умеющую эти кадры превратить в видеролик. Например VirtualDub.
Основной недостаток Farmerjoe состоит в том, что он работает только с Internal Render. Yafrey (поддержка встроена в Blender) не находит текстуры, а остальные рендеры не поддерживаются. Но для учебных целей Farmerjoe подходит прекрасно, позволяя сократить время рендеринга анимации.


P.S. Напомню еще раз - не забывайте делать Pack Data для сцен, иначе рендеринг пройдёт без текстур.



Farmerjoe

Мой конфиг для Farmerjoe







Военная Африканда : Северное небо


Hosted by uCoz