новости
рисунки
Кампании
и задания
записи полетов
настройка
разное
игры
ссылки
гостевая
книга
|
Создание
фермы рендеринга для программы трёхмерного моделирования 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
|
|
|
|