Рендер из командной строки
dannychirkov 2584
 В этом небольшом уроке я расскажу, как автоматизировать процесс визуализации, немного упростить себе жизнь и, может быть, даже спать по ночам чуть больше, чем обычно.​

   

    В последнее время я всё чаще сталкиваюсь с тем, что приходиться оставлять на ночь рендер не только нескольких камер (с чем успешно справляется Batch Render, работа которого недавно была описана в блогах), но и нескольких сцен.​

С учётом того, что не каждый располагает возможностью сидеть и наблюдать пока рендерится первая сцена и уже после этого ставить вторую, я решил найти подходящий для себя вариант решения этой ситуации, которым я сейчас и поделюсь.​

Сразу оговорюсь, опыты я проводил на 3ds Max 2020 в связке с Corona 4. Копаясь в доках Автодеска, я не нашел каких либо упоминаний об изменении этих команд, так что работать должно во всех актуальных версиях. ​

В качестве демонстрации я подготовил две сцены с двумя подопытными чайниками.

Для начала нужно подготовить сцену. Для этого нам нужно указать путь для сохранения рендера в настройках, или же настроить нужным нам образом уже известный ранее Batch Render.

Второе по списку, что нам нужно сделать, это ограничить рендер с помощью лимита. Выставляем любой нужный параметр, или же их комбинацию, рендер продолжится до тех пор, пока не достигнет одного из заданных параметров.

Итак, наши сцены готовы, что же дальше? Визуализация в командной строке происходит благодаря программе «3dsmaxcmd.exe», которая находится в корневой папке вашей программы. Насколько мне известно, её местоположение не менялось с 2010 года. Если Вы установили свой 3ds Max в дефолтную директорию, то путь к этому файлу будет выглядеть так:​

    C:\Program Files\Autodesk\3ds Max 2020\3dsmaxcmd.exe

Далее мы создаём простой текстовый файл в любой директории вашего компьютера и пишем в него строку:​

    "C:\Program Files\Autodesk\3ds Max 2020\3dsmaxcmd.exe" "D:\teapot_001\scenes\teapot_001.max"

Первая взятая в кавычки строка, ведёт нас к тому самому «3dsmaxcmd.exe», а вторая указывает путь к сцене. Кавычки нужны в том случае, если в пути к файлу есть пробелы, лично я их оставляю всегда, насколько я знаю, исполнению скрипта это не мешает, так, для верности. Вот что у нас должно получиться:

Далее сохраняем наш текстовый документ в .bat формате.

    Файл > Сохранить как... > Тип файла: Все файлы

    В имени файла в конце дописываем .bat

Запустив этот файл, у нас откроется сразу три окна, это прогресс бар нашего рендера, фреймбуфер и командная строка с информацией о рендере.

Важный момент, чтобы во время сохранения используемой сцены, было активно окно с камерой для рендера, иначе Вы рискуете получить красивый вид из перспективы, или сверху. Тут уже в зависимости от того, какое окно было активным на момент сохранения. Избежать этого можно двумя способами. Первый это выбрать окно для рендера в настройках, нажав на замок.

Или же дописав в нашем .bat файле ключ «-cam: cam_002». Выглядеть это будет вот так:

И тут мы подходим к самой интересной части этого урока. Благодаря ключам Вы можете выбирать какие кадры рендерить, в каком разрешении, куда их сохранять, запускать Batch Render и даже выбирать качество сохраняемого .jpg файла. Узнать все возможные ключи Вы можете просто запустив «3dsmaxcmd.exe» через командную строку, или же убрав путь к сцене из ранее созданного .bat файла, оставив только строку пути к «3dsmaxcmd.exe» и дописав на следующей строчке «Pause» без кавычек. Весь список достаточно большой и разбирать каждый ключ я смысла не вижу, просто советую пробежаться глазами по списку и понять какие именно Вам могут пригодиться. А я пока ограничусь парой примеров. Написав такую конструкцию, как на примере ниже, мы запустим сцену с первым чайником и начем рендер из камеры «cam_002» с помощью ключа «-cam:cam_002», в разрешении 1000х1000. А сохранится этот рендер в формате .jpg с наилучшим качеством в папке «D:\teapot_002\». Вторым на очереди, как ни странно, будет второй чайник в разрешении 800х800 в формате .bmp:

Таким образом, мы можем задавать определённые параметры для разных кадров и сцен. Мы можем еще улучшить эту конструкцию, записав путь к сцене и ключи в отдельный файл. Здесь мы уже обойдёмся простым .txt файлом. Вот как это будет выглядеть:

Ну а благодаря тому, что это всё же .bat файл, мы можем еще больше его кастомизировать и, к примеру, заархивировать полученные файлы, имитировать нажатия клавиш, выключить компьютер, запустить звук колокольчика после рендера, загрузить отрендеренные файлы на ftp. Вариантов использования .bat файлов невероятное количество, и каждый сможет найти для себя что-то полезное. Но, к сожалению, это не относится к тематике сайта, и всё это легко ищется в интернете. Я всего лишь приведу пример воспроизведения звука по окончанию рендера и отключения ПК через две минуты после этого, думаю, многим это будет полезно.

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

визуализация, bat, пакетная визуализация, 3dsmax, консоль, 3dsmaxcmd.exe, автоматизация

Комментарии (26)

+10
Bonmucho
Прикольно конечно, но не проще ли начать использовать Autodesk Backburner? Он как раз для этого и сделан, а еще для сетевого рендера.
+1
monotumba
bat файлы это, конечно, очень гибкое решение, но можно не заморачиваться и через бэкбурнер поставить задачи в просчет из самых разных файлов, даже если один компьютер в наличии только. Не все захотят бат файлы прописывать...
0
alenkey
Комментарий удален
0
зачем так усложнять когда есть бекбернер?
0
grdesigner
Это же была тема второго урока от автора )
+6
Sasha-GHOST
как из буханки черного хлеба сделать трамвай
+6
vladimir.drobzhev90
Братан, скрипт называется overnight batch render, держи, не мучай себя и народ))
https://www.scriptspot.com/3ds-max/scripts/overnight-batch-render 
+4
dannychirkov
Я же не заставляю этим пользоваться, просто описал метод который использую сам, не хочешь писать код — не мучайся)
0
Sasha-GHOST
Ффига ты красавчик! спасЕбо!
+14
kokoasfalt
Эволюция визуализатора:
- кнопка "Render"
- ковыряние в настройках графического интерфейса
- Backburner
- cmd
- powershell
- git bash
- Windows Subsystem for Linux
- скрипты на питоне
- c++
- ???
- собственный рендер-движок, торпедирующий корону/вирей и прочие поделки
+1
olegwer
Юзал этот метод в 2005 году, когда на компе не хватало оперативы, что бы загрузить интерфейс Макса+сцену+отрендерить.
Этот способ тащил.
0
Vizign
"В этом небольшом уроке я расскажу, как автоматизировать процесс визуализации, немного упростить себе жизнь...​"
А урок где?
+1
3dddland
Самое лучшее это использовать плагин (не реклама) https://pulze.io/products/scene-manager 
0
eldarik
Спасибо! про бакбернер знал, про этот метод нет, думаю в определенных ситуациях будет очень полезен, поэтому знать надо..
0
gleb_olden
Хорошая инструкция. Спасибо!
0
BS_me
многоядерныей интел, дофига оперативы, кидаю 3 сцены и в каждой запускаю батч рендер, если так случилось что рендерю сразу то и неважно кто из них первый выстрелит, без всяких скриптов, бэкбёрнер пора забыть...
+4
vladimir.drobzhev90
Amd лучше))))
0
BS_me
Потому что он стоит у вас?))
+1
vladimir.drobzhev90
это была шутка в стиле спора школьников))) но таки да у меня амд)) хотя я тоже за то, чтобы напрячься и приобрести мощный комп, однако даже на мощном компе лучше рендерить последовательно и я уже обозначил лучший скрипт для этого.
0
BS_me
Тотальный хэйтинг на форумах сего богоугодного ресурса общеизвестен, стоит только ответить кому-то по ничтожному поводу и гуано на тебя сыплется вагонами.
0
vladimir.drobzhev90
Это отдельные индивиды отличаются подобным, а так я не сталкивался с хейтом прямым, здесь такое банят. Да, бурные споры возникают, но это же просто споры.
+4
DowJones
Уверен у автора в запасе есть еще урок типа как управлять робот пылесосом через интерфейс 3ds max
0
waxcom
Автору, спасибо! Да, способ старый, но ситуации бывают разные. Автор добавил интересные ключи в скрипт, которые могут быть полезны! Благодарим.
0
PN93
Спасибо за обзор, вы профессионал своего дела. 5 баллов
0
Bestviz
А еще 3Ds MAX может делать принтскрин вьюпорта +/Create Preview/Capture Still Image
0
etransmit
Это уже мем про то "как на форуме анимешников пропатчить kde"