Это продолжение начатого ранее поста
Приручаем Modo, делаем альтернативный сетевой рендер доступными средствами.
Нам доступно:
Для того, чтобы 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
____________________________
Созданному файлу, при запуске, в командной строке, мы сможем передавать параметры:
Если что-то пойдет не так - см. логи или попробуйте запустить через консоль modo_cl.exe вручную и повторить набор команд, которые генерируют bat-файл и сохраняют в tmp_ИМЯ_МАШИНЫ.txt.
Продолжение следует...
Хочется добавить возможность управлять камерами при создании задания.
Пока для пытливых даю наводку:
List.txt сейчас содержит 3 колонки, а может содержать сколько угодно, это значит, что возможно передавать любые дополнительные параметры, например имя камеры, которая участвует в рендере. Таким образом, можно уже в задании указать, что например с 1-200 кадр считает одна камера, 300-400 другая. Получится что-то вроде монтажа на лету )))
Ну а в моем случае цель иная. Нам нужно 6 камер прогнать с одной и той же анимацией, чтобы сформировать трехмерное, радиальное изображение.
Приручаем 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
____________________________
Созданному файлу, при запуске, в командной строке, мы сможем передавать параметры:
- Путь к сцене
- Стартовый кадр
- Конечный кадр
- Путь для сохранения картинок
Запускать файл с указанными параметрами будет 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-файлах соответствие путей к программам, исправьте на свои, если они отличаются.
Ну и разумеется нужно соблюдать банальные правила подготовки сцены:
- на всех машинах должны стоять одинаковые библиотеки.
- ссылки на текстуры или объекты сцены, должны быть только сетевыми и читаться для всех машин одинаково.
Всё вышеперечисленное, включая 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 кадров, так как с единицей скрипты работать не смогут, это пока не дописано...
P.S.
Шаг лучше указывать не менее 2 кадров, так как с единицей скрипты работать не смогут, это пока не дописано...
Продолжение следует...
Хочется добавить возможность управлять камерами при создании задания.
Пока для пытливых даю наводку:
List.txt сейчас содержит 3 колонки, а может содержать сколько угодно, это значит, что возможно передавать любые дополнительные параметры, например имя камеры, которая участвует в рендере. Таким образом, можно уже в задании указать, что например с 1-200 кадр считает одна камера, 300-400 другая. Получится что-то вроде монтажа на лету )))
Ну а в моем случае цель иная. Нам нужно 6 камер прогнать с одной и той же анимацией, чтобы сформировать трехмерное, радиальное изображение.
Все работает кроме переменных %%tp2 %%tp3.
ОтветитьУдалитьВ файл tmp_%COMPUTERNAME%.txt записывается строка @ChangeRenderFrameRange.pl %tp2 %tp3 вместо конкретных значений переменных из tasklist.
Попробуйте заменить %% на %
УдалитьВ первом батнике использовать приходится двойные процентики, а во втором одинарные.
Либо еще какая-то проблема ((( сложно сказать.
Что-то я сам запутался )))
УдалитьПосмотрите в архиве, это все рабочее
http://files.mail.ru/8B40ABF343C5471D9B19EDF7B9BAD2BC
с одинарными % записывается просто tp2 tp3.:(
УдалитьЕще можно попробовать во втором файле убрать ^
ОтветитьУдалитьи всё записать в одну строчку, была проблема - этот файл на разных машинах отрабатывает по разному, какие-то странности Windows
Вроде все получилось!) Поставил %tp2 %tp3
ОтветитьУдалить