15 окт. 2012 г.

Modo 601 + backburner

Это продолжение начатого ранее поста
Приручаем Modo, делаем альтернативный сетевой рендер доступными средствами.

Нам доступно:

  • набор утилит из поставки Modo
  • командная строка Windows
  • Backburner


Для того, чтобы Backburner начал управлять рендером Modo, нам потребуется создать два *.bat файла и список заданий List.txt

Первый файл управляет запуском modo_cl.exe
назовем его render.bat
___________________________

@echo off
::У каждой машины в сети будет свой уникальный лог и файл настроек
::это позволит избежать коллизий и даст больше контроля
set temp_setting=tmp_%COMPUTERNAME%.txt

::Надо проверить ввод переменных, но мне это лениво, и я это пропускаю

::Создаем временный файл настроек

echo log.toConsole true>%temp_setting%
echo log.toConsoleRolling true>>%temp_setting%

::Здесь задаем путь к файлу сцены
echo scene.open "%1" normal>>%temp_setting%

echo pref.value render.threads auto>>%temp_setting%

::Задаем диапазон кадров
echo @ChangeRenderFrameRange.pl %2 %3>>%temp_setting%

::Назначаем вывод
echo @ChangeRenderOutputPaths.pl %4>>%temp_setting%
echo render.animation {*}>>%temp_setting%
echo app.quit>>%temp_setting%

::Запускаем рендер
"C:\Program Files\Luxology\modo\601_sp3\modo_cl.exe"<tmp_%COMPUTERNAME%.txt>log_%COMPUTERNAME%.txt
____________________________

Созданному файлу, при запуске, в командной строке, мы сможем передавать параметры:

  1. Путь к сцене
  2. Стартовый кадр
  3. Конечный кадр
  4. Путь для сохранения картинок
Запускать файл с указанными параметрами будет Buckburner, но для того чтобы это произошло, ему надо создать список заданий и для этого нужен еще один батник,
назовем его - modo.bat
___________________________
"C:\Program Files (x86)\Autodesk\Backburner\cmdjob.exe" ^
-jobName: "HJ_test" ^
-description: "Rendering of Modo scene: scene.lxo" ^
-taskList: "Z:\net_folder\batch\List.txt" ^
-taskName:1 ^
-timeout: 620 ^
-workPath: "Z:\net_folder\batch\test" "render.bat" ^
z:\net_folder\models\scene.lxo  %%tp2 %%tp3 Z:\net_folder\render_out\

pause
___________________________

В коде есть ссылка на файл List.txt, этот файл содержит список параметров, разделенных табуляцией, например:
List.txt
___________________________
Task-1 (1-10)          1 10
Task-2 (11-20) 11      20
Task-3 (21-30) 21 30
Task-4 (31-40) 31      40
Task-5 (41-50) 41 50
___________________________


Для создания файла List.txt, я использую JS-скрипт и обычную html форму.
Не знаю как вам, а мне приходится засылать по 17-18 тысяч кадров за раз и без простых таких форм - сложно.

Складываем все 3 файла в одну сетевую директорию (в примере "Z:\net_folder\batch\"), запускаем modo.bat на той машине, где запущен Backburnder Manager, если все настроено и запущенно правильно, то увидите отчет о созданном задании, и далее можете мониторить процесс через привычный Backburner Monitor

Всё вышеперечисленное, включая JS-скрипт для генерации листа, можно взять в архиве.
Backburner можно взять с оффициального сайта Autodesk
Документация для него здесь.
Перечень доступных параметров можно получить в консоле cmd.exe так:
"C:\Program Files (x86)\Autodesk\Backburner\cmdjob.exe"
ну или вывести всё в файл:"C:\Program Files (x86)\Autodesk\Backburner\cmdjob.exe">c:\command.txt
...и почитать спокойно ;-)
Во время работы, в директории, куда вы поместили батники, будут появляться временные файлы настроек и логи. В их именах будут присутствовать имена машин, запустивших скрипт. Логи содержат подробную информацию о состоянии рендера. По завершению рендера временные файлы можно удалить.

Внимательно просмотрите во всех bat-файлах соответствие путей к программам, исправьте на свои, если они отличаются.

Ну и разумеется нужно соблюдать банальные правила подготовки сцены:
- на всех машинах должны стоять одинаковые библиотеки.
- ссылки на текстуры или объекты сцены, должны быть только сетевыми и читаться для всех машин одинаково.

Если что-то пойдет не так - см. логи или попробуйте запустить через консоль modo_cl.exe вручную и повторить набор команд, которые генерируют bat-файл и сохраняют в tmp_ИМЯ_МАШИНЫ.txt.

Будут вопросы - пишите коменты.

P.S.
Шаг лучше указывать не менее 2 кадров, так как с единицей скрипты работать не смогут, это пока не дописано...

Продолжение следует...
Хочется добавить возможность управлять камерами при создании задания.
Пока для пытливых даю наводку:
List.txt сейчас содержит 3 колонки, а может содержать сколько угодно, это значит, что возможно передавать любые дополнительные параметры, например имя камеры, которая участвует в рендере. Таким образом, можно уже в задании указать, что например с 1-200 кадр считает одна камера, 300-400 другая. Получится что-то вроде монтажа на лету )))
Ну а в моем случае цель иная. Нам нужно 6 камер прогнать с одной и той же анимацией, чтобы сформировать трехмерное, радиальное изображение.

6 комментариев:

  1. Все работает кроме переменных %%tp2 %%tp3.
    В файл tmp_%COMPUTERNAME%.txt записывается строка @ChangeRenderFrameRange.pl %tp2 %tp3 вместо конкретных значений переменных из tasklist.

    ОтветитьУдалить
    Ответы
    1. Попробуйте заменить %% на %
      В первом батнике использовать приходится двойные процентики, а во втором одинарные.
      Либо еще какая-то проблема ((( сложно сказать.

      Удалить
    2. Что-то я сам запутался )))
      Посмотрите в архиве, это все рабочее
      http://files.mail.ru/8B40ABF343C5471D9B19EDF7B9BAD2BC

      Удалить
    3. с одинарными % записывается просто tp2 tp3.:(

      Удалить
  2. Еще можно попробовать во втором файле убрать ^
    и всё записать в одну строчку, была проблема - этот файл на разных машинах отрабатывает по разному, какие-то странности Windows

    ОтветитьУдалить
  3. Вроде все получилось!) Поставил %tp2 %tp3

    ОтветитьУдалить