Works Manager Script

Всем привет ! )

Works Manager - скрипт для оптимизаций памяти больших статичных сцен, и не только.

Небольшое вступление

Месяца 2 назад встала задача в оптимизации одной большой сцены, где использовался RedShift render.

Ни для кого не секрет, что время от времени сцена может выйти за рамки вашей оперативной памяти, а в

случае с GPU рендером ещё и за рамки видео памяти )

В общем оптимизация сцены шла ходом, делалось всё что можно в пределах доступных инструментов 3d max Но всего этого было мало (рабочая лошадка была с весьма скромными ресурсами), и по факту помочь могло только одно - спрятать некую часть геометрии для ракурсов где её не видно.

Но всё это дело мне нужно было выставить на 30-40 ракурсов, и конечно же я не мог сидеть у компа и ждать каждый кадр, чтоб потом вернуть спрятанную геометрию обратно и поменять её с другой )

С этого всё и началось, теперь о самом скрипте.

Возможности скрипта:

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

Возьмём для примера эту картинку:

На данном примере в каждом рендере кадров, не нужные(не попадающие в ракурс) нам объекты будут скрыты.. они так же не будут загружаться в оперативную память. 

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

2. Быстрое и удобное сохранение ваших картинок, включая сохранение рендер элементов (если используете)

сохраняться будет буфер который используется рендером.

поддерживаются следующие рендер движки и их буферы:

Vray (VrayFrameBuffer) , Corona (CoronaFrameBuffer) , RedShift (VFB+).

p.s. Если используете RedShift - будет сохраняться оригинальный буфер 3d max.

поэтому настоятельно рекомендую использовать для RS бесплатный VFB+ с возможностью сохранения его буфера.

3. Выбор любого разрешения картинки к каждой задаче(кадру). 

Интерфейс:

Запустив скрипт появится вот такое окно:

Все панели не доступны - пока вы не создадите первую задачу для работы.

Сделать это можно и нужно, нажав на кнопку "+" =)

После нажатия на "+" появится первая задача - по умолчанию задачи будут иметь имя: "Work_" где 1 - номер задачи.

Мы можем в любой момент переименовать задачу, но об этом чуть позже.

После создания задачи видим, что все свойства стали доступными, тут всё просто - пробежимся по настройкам

"Your Tasks" (Ваши задачи) 

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

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

За эти действия отвечают кнопки:

Все остальные панели - динамические свойства и настройки конкретно выбранной задачи. По порядку:

Work Name:

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

Frame: 

Кадр для выбранной задачи, как только вы создаёте новую задачу кнопкой "+", она автоматически считывает какой кадр был текущим и назначает его для новой задачи. Там же вы можете его заменить на другой - просто вписав туда номер нужного вам кадра. 

Ниже видим красную надпись - Camera not selected, говорит нам о том - что для выбранной задачи не выбрана камера - сделать это довольно просто:

выберите вид нужной вам камеры и нажмите на кнопку "Get From Viewport" (Взять с вьюпорта), если ничего не выбрать - вид останется неизменным от предыдущей задачи, если предыдущей задачи ещё не было - вид будет взят из последнего активного видового окна вьюпорта.

Работает со всеми возможными камерами, включая CoronaCamera.

"Get Presset"

Мы можем выставить настройки рендера для каждой задачи, нажав на кнопку "Get" и выбрав нужный прессет для задачи в открывшемся окне. Это стандартные максовские прессеты, функция редко мной используется - но всё же может потребуется вам.

Если не нужны прессеты для задач, просто оставьте поле пустым. Если вы уже выбрали прессет - то его можно удалить, кнопкой "Del".

"Renders Presset Path" - отображает путь к прессету.

"Get New Output Size"

Установить новый размер для сохраняемого изображения выбранной задачи.

Когда вы создаёте задачу - она так же по мимо текущего кадра, считывает текущее разрешение которое у вас в настройках и устанавливает его для этой задачи.

Вы можете его легко поменять, просто установите в Render Setup нужное вам разрешение, и нажмите кнопку "Get New Output Size", и разрешение будет выставлено для задачи.

"Set Save Path" 

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

Никакого хаоса в папке не будет, хранение будет весьма понятным и удобным

Например задача: Work_1 и Work_2 - будут иметь следующие файлы в папке + рендер элементы:

Если вы используете Render элементы, то не нужно больше париться о надписях "Error Output File" при рендере... если парились ) в общем все картинки и - все render elements будут автоматически сохранены, с названием задачи + имя элемента без всяких ошибок.

Так же не нужно самому нажимать какие-либо галочки для сохранения элементов и прочего - включая галочку "Save File"

Скрипт сам распознает какой рендер движок - и исходя от этого , сам установит нужные галочки.

У вас будет 3 типа формата сохранения картинок на выбор:

JPEG (100% Quality), TIF(16 bit + Alpha), EXR(32 bit + Alpha)

Теперь перейдём к панели "Objects for Hide"

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

Объекты, если это не группы - можно добавлять сразу выделив несколько штук, группы добавлять можно только по одной.. Поэтому если вам нужно спрятать много объектов и групп в том числе - то лучший и самый быстрый способ - это сделать из них одну группу и добавить её туда..  это будет более удобным, если вы потом  захотите удалить их из этой задачи.

Когда все нужные вам задачи будут созданы - нажмите кнопку "Start Render Tasks".

ВАЖНО !!!

Рендер задач запускать только кнопкой "Start Render Tasks" 

Скрипт работает на внутренних функциях. Обычная кнопка Render - никакого отношения не будет иметь к функциям и логике скрипта.

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

Это так же даёт удобную навигацию по уже созданным задачам и их редактированию.

Предлагаю посмотреть не большой видео урок по использованию для укрепления понимания - но в целом работа со скриптом быстра проста и понятна. )

Скрипт отправился на модерацию - и уже в ближайшие дни будет доступен в разделескриптов .

Так же не забывайте про другие мои скрипты - которые облегчат вашу работу !

P.S.   Всем спасибо, работаю чтоб не только вы могли отдыхать больше.. но и ваш компьютер smiley-wink.gif

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

+2
bisow
Нужная штука! Ждемс!
+2
-NiK-
State Sets ;)

Настройки для сцены сохраняются если макс перезапустить?
+4
StunBreaker
я с утра туплю.. можно подробней ? =) Настройки для задач имеете ввиду?
+1
-NiK-
В 3дмаксе есть глюковатые но навороченные state sets. В чем отличие?

Настройки для задач, да.
+2
maksut
по функционалу это и есть state sets автор просто не знал про него
+5
StunBreaker
причём тут state sets вообще.. вы где-то видели что я делаю макрос действий??
Я же вроде специально по каждому слову и букве уже разжевал с картинками даже..
зачем я вообще это вам объясняю..
0
-NiK-
Стейты не записывают буквально все действия. У них есть набор параметров изменения которых они поддерживают. Скрытие объектов входит в их число.
Чем нажатие на кнопку записи отличается от нажатия на кнопку добавления объектов в ваш список?
+3
-NiK-
Вернее было бы сказать, что это по функционалу, как небольшой кусочек от state sets ;)

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

Т.е. преимущества state sets над скриптом очевидны, а преимущества скрипта над state sets под вопросом...
0
StunBreaker
Хорошо что так..
Ребята давайте вы тогда создадите ветку на форуме - и будете там обсуждать "State Sets"..
Вы же находитесь в Блоге а не в "болталке", честно я бы хотел здесь слышать мнения касающиеся только скрипта.. ведь Блог собственно по нему и создан..
Учту все пожелания в любую сторону - За и Против . А обсуждать "State Sets" здесь мне честно не хотелось бы.
+1
eugene132003
Согласен. вопрос о соперничестве скрипта и State Sets (сюда еще добавил бы менеджер сцен) остался открытым. скрипт получился собранием основных возможностей sets.
+2
cifra
А можно png добавить в тип формата сохранения картинок?
0
StunBreaker
можно конечно, мне показалось TIF будет более приоритетным. )
+1
ddd-max
Я бы тоже был несказанно рад png!!! Как-то по привычке его юзаю :)
+1
StunBreaker
всё понял - сделаю, png + tga
+1
alenkey
png самое то, спасибо за скрипт!
0
OlegNazarciuc
Огромное спасибо за то что png добавите да и вообщем за скрипт ждем, мне показалось он удобней бэтч рендера да и просчет быстрее будет!
0
corstm
хотелось бы больше гибкости по форматам или дать возможность в ручную устанавливать настройки в Render Output, режим manual например.
0
StunBreaker
по форматам - не проблема, я исходил из самых нужных и ходовых. А в Render Output - какие настройки нужны ?
+1
corstm
к уже имеющимся хотелось бы "*.png" и "*.tga". по настройкам, это то самое "окно" с характерными параметрами битности цвета, качества, сжатия, альфы и т.д. для каждого формата, которое открывается после выбора формата. вот хотелось бы иметь возможность настроить выбранный формат.
0
Delper_ID
С нетерпением жду этот скрипт!
+6
searsh
Велосипед изобретаете?
Все уже давно сделано и работает. Бесплатно. Называется - Prism. Можно настроить рендер как угодно гибко.
Дружит с backburner. Сохраняет все все форматы, доступные в 3Ds max. Хоть сразу в несколько сохраняйте.
0
StunBreaker
специально для вас я посмотрел на этот Prism (ранее не видел его)..
я может криво еду? Объясните какую вообще связь между этими скриптами вы увидели ?

Давайте я без воды сразу - я исходил из простоты, удобства работы, и стабильной работы..
Посмотрев лишь визуально на интерфейс "Prism" - мне сразу же захотелось закрыть его..
Проще уж пойти и разобраться с State Sets.. как советовал -NiK-

Так же я посмотрел последние комменты на скриптспоте - и посследний коммент звучал о багах и ошибках связанных с RedShift.. сильно дальше не вникал даже этого мне хватило, но в целом может он и достойный скрипт(нет сомнений раз его разрабатывал не один человек и тестила целая группа людей на баги)..
+1
-NiK-
"Проще уж пойти и разобраться с State Sets.. как советовал -NiK- "
Разобраться там не сложно. Включаешь запись и делаешь что хочешь в сцене, назначаешь материалы, скрываешь объекты и т.д. Потом останавливаешь запись и состояние сцены запоминается в том сете.

Хорошо если в 3дмаксе нет бага с аутпутом. В моем 2016 есть. В 2018 точно исправлен.
Там вобщем система должна сама аутпуты именовать исходя из паттерна имени (например, .jpg) но в моем случае нет нужной кнопки в интерфейсе, это баг. Я на форуме выкладывал скрипт-костыль который эту кнопку заменяет.
Можно вручную задавать аутпуты на каждый сет, но это скучно.

И кстати повторюсь, хранение настроек задач в сцене это ключевой момент. А то настраивал настраивал, а после перезапуска макса давай заново настраивай :)
0
StunBreaker
Понял про "State Sets" работает как макрос я так понял ) Ну в любом случае там тоже надо будет сотни тестов проводить по этим основным движкам. Прежде чем доверить серьезную работу )

Насчёт сохранения мысль вполне здравая. сделаю на днях. обновлю )
0
-NiK-
"Ну в любом случае там тоже надо будет сотни тестов проводить по этим основным движкам"
У нативной фичи 3дмакса шансов сфейлить с разными рендер движками меньше, чем у скрипта.

Какая вообще связь между скрытием объекта и рендер движком?
0
StunBreaker
да у автодеска, как раз шанс вылететь без основания куда выше чем у скрипта =)) Причём у них прогресс на моём опыте идёт в обратную сторону - работал на 2015ом максе.. раз в 100 лет вылет был..
тут пришлось на 2017ый залезть по необходимости.. и о чудо - вылетов 10-20 за день в зависимости от сцен.. частые вылеты заметил связаны с привязками.. какая тут стабильность о чём вы ) если AutoSave не стоял - то эпичного фэйла не избежать.

со скрытием нет проблем я думаю.. я имел ввиду проводить тесты по всему функционалу.. связи нет со скрытием )
+3
searsh
Стабильный. Простой и гибкий инструмент (скрипт).
"Посмотрев лишь визуально на интерфейс "Prism" - мне сразу же захотелось закрыть его.." - вы серьезно? Может быть вы и книжки по обложке выбираете?
Никто не запрещает вам делать свое, на здоровье.
А тем кому надо настроить сложную сцену для рендера есть уже готовое решение. Настройки всего этого добра хранятся в сцене. Даже если открыть файл там где нет этого скрипта - ничего не пропадет.

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

Вам удачи. Может что-то годное выйдет.
0
StunBreaker
вы меня между строк читаете.. и вам удачи.
+3
Oleg.budeanu
Prism это одна из лучших вещей, которая случалась со мной в 3dsmax.
А скрипт да, урезанный State Set, с Prism сравнивать вообще не нужно.
Не в обиду автору, но по сути таких скриптов довольно много. Для чего вам нужно создавать очередной и тратить на это силы? Сделайте что-то действительно уникальное - вот это будет достойно уважения.
0
MastaMan
Насколько я понял под каждую камеру нужно создавать список объектов которые будут спрятаны?
А нельзя как то автоматически определять что не попадает в камеру?
0
StunBreaker
это весьма серьёзный ход - но конечно был бы самый мощный тогда функционал.. пока не представляю это возможным по написанию.. там ещё всплывёт много всяческих комбинаций, таких как объект за полупрозрачным объектом, те же отражения от объектов за камерой.. и т.д. )
0
MastaMan
Или к примеру камера определяет что вокруг нее попадает в камеру, но это уже было бы очень круто
0
viktor-erfurt94
Действительно было бы очень круто если бы камера "обрезала" ту геометрию которая не попадает в кадр.
Видел, что есть что то подобное в Forest Pack в этом видео (14:10-14:28): https://www.ronenbekerman.com/making-snow-forest-pack-pro/ 
Но даже без такой фичи скрипт будет очень полезен и нужен! :)
0
StunBreaker
форест пак это совершенно отдельная история ) Particle Flow например тоже так умеет.. но тут всё иначе выглядит с объектами ) будем думать на будущее
0
eugene132003
в мультискейтере тоже такое есть. camera clipping называется. но будем откровенны: обрезать геометрию, если она в кадр не попадает - гиблое дело. а если отражения есть? проще во врейке ограничить количество лучей и отскоков
0
StunBreaker
EXR - вообще нужен кому? может убрать его?
+1
MastaMan
EXR нужен. Рендер елементы сохраняются в один файл exr, или плодятся куча файлов?
+1
Cade_Foster
Охота протестить! Ожидал что он сам будет вычислять объекты, которые нужно скрыть. Потому как если сцена очень большая, то сильно заморочно в каждую задачу добавлять много объектов, Даже если сделать группы, то тогда может быть так что объекты из групп будут пересекаться для разных задач, надеюсь я понятно выразился))
0
Cade_Foster
Кстати, для более простых сцен его можно использовать как бач рендер)))
+2
MastaMan
Пока это похоже что то на бач рендер + сцен стейты
+1
Cade_Foster
Именно это я и имел ввиду)
0
StunBreaker
может и так )
+1
Evilis
Хорошая идея. Думаю когда допилите, будет отличный скрипт. Пока что только замечания по интерфейсу ) Думаю что лучше сделать светлый интерфейс + сделать более компактной среднюю часть и лучше расширить боковые списки. Я так полагаю при позиционировании элементов вы используете акросы?
0
StunBreaker
спасибо за отзыв.. да я уже решил в общем допилить сразу несколько вещей, которые уже выше советовали.. так же ваши замечания учту..

Макросов нет там, функции только - при поступлении в рендер, по каждой задаче идёт перебор свойств которые были заданы для них. )
0
Evilis
А, нет ) Я имел ввиду позиционирование элементов интерфейса (кнопки, списки), pos или across ) Просто для ui лучше pos. И можно еще думаю сократить обозначения кнопок. Мне кажется слишком много Get, Set. Get туда, Get сюда, Set то, Set это. Может немного лаконичнее, типа - Save Patch, New Output Size, Presets и т.д.
+1
cgfactory
Интересный скрипт! ;)

Использовали бы его, если бы он мог сохранить corona .cxr, а не .exr! Есть ли шанс добавить вывод на corona .cxr?
+1
StunBreaker
я посмотрю что там можно сделать )
+2
Jähman'
"Ребята давайте вы тогда создадите ветку на форуме - и будете там обсуждать "State Sets"..
Вы же находитесь в Блоге а не в "болталке", честно я бы хотел здесь слышать мнения касающиеся только скрипта"

Жаль, а могли бы обсудить кучу альтернатив с их плюсами минусами. Кому будет любопытно вот список для вдохновления: Scene State, LPM, Prism, Raindeer, Vexus
0
StunBreaker
На форуме ещё полно места для таких обсуждений.. Зачем сорить в самом блоге - ведь некоторые высказывания уже давно перешли тупо в ОФФТОП, сравнили например со "State Sets" - я ещё в первом таком сообщении дал объяснения.. Зачем дальше лить воду о "State Sets".. бесконечно перечисляя его возможности..

Я не против сравнения с какими-то скриптами (может даже плагинами) - но тупо читать про возможности "State Sets" - сообщения длинной больше чем уже сам Блог - реально уже накаляет )
+1
nikdruid
Хороший скрипт! Автор - молодец, так держать!
0
StunBreaker
В общем я принял решение... Попросил модераторов удалить Блог.. скрипт удалил с модерации..
Всем спасибо кто принимал участия в обсуждениях.
+1
Delper_ID
Печально это слышать...
+2
eugene132003
не переживай! открытий и на тебя хватит. главное - не останавливаться, как бы обидно не было!
+1
skyland_studios
State sets полная лажа в серёзных сценах после перезапуска макса она по всей видимости проделывает все операции прежде чем загрузить сцену.. в итоге сцена с 30 камерами грузилась порядка 40-50 минут.
+1
rapid_jet
Жаль, что автор этого скрипта оказался обидчивым человеком, который не в состоянии закрыть глаза на лишнюю (иногда откровенно глупую) критику от людей, которым он ничего не должен. Типичное русское комьюнити, что сказать. Паб в доте и то добрее бывает))
Автор, Не тупи)) Не бросай начатое, мы верим в тебя))
0
StunBreaker
никаких обид не было, я уже отписался людям кто интересовался дальнейшей судьбой.. я пообщался с каждым из них - и в целом мы пришли к мнению что это годный скрипт в целом.. Пришлось взять небольшую паузу - совершенно нет свободного времени..

Так же я уже решил однозначно перед релизом - допилить некие плюшки для больших удобств..
спасибо и вам за отзыв - прислушался и к вам )
0
Aeltan
А можно залить куда то помимо 3ддд? На скриптспот например? Или вам так же важна финансовая составляющая?