Шалом, православные!
Я веду проект своего фильма с несколькими десятками единомышленников с конца 2015 года. У нас нет доступа к мощным серверам, фермам и пр. Но есть большие объёмы данных, которые надо предварительно подготовить к рендеру и затем - отрендерить. А также, передать людям в разных странах большой массив данных. Кэши, исправленные кадры и пр только для небольшого ролика из двух шотов будут занимать полсотни гигабайт, и сделать это в атомизирующемся мире ещё непросто. Я рассмотрю более 5 способов ускорения и решения подводных камней, которые ждут нас при рендере анимации на своём оборудовании. Два крайне полезных ролика от Егора Смирнова и BlenderGuru приведены в конце статьи, т.к. там много полезных приёмов. Но они работают на статичную картинку, что в принципе облегчает жизнь, но лишь частично.
В статье я рассмотрел множество подводных камней, скриптов, способов решения задач и проблем. А также - написание батника для нестабильного рендера, сам принцип работы легко переносится на любую другую платформу, будь то Блендер, Майя или др.
Примерный % ускорения работы в Циклах будет составлять от 40% до 80%. Мне нужны реальные световые лучи, поэтому я работаю только в циклах, а не в EEVEE.
Уровень вашей подготовки для реализации примеров в этой статье - от новичка до продвинутого. Для реализации батника под свою платформу вам потребуется программист.
Общая ситуация
Дано: 3 секвенции на 1000 кадров. Рендер 1 кадра занимает 2,14 часа на относительно дохлом, не-RTX железе. Итого 2333 часа или 3 месяца непрерывного рендера. Я давно живу на одном рюкзаке, много путешествую и единственный рабочий компьютер мощью в полтора пони не могу нагружать без перерывов. То есть, рендер будет занимать около 8 месяцев по ночам. Это если без ошибок. Плюс к этому, железо не предназначено для долгих нагрузок. Рендер на ферме будет стоить 400к рублей, что для волонтёрского проекта не резонно. Щито делать?
1. Перед самим рендером необходимо стабилизировать сцену. упростить то, что возможно.
2. Скрипты для стабилизации и решения подводных камней.
3. Хаки в настройках сцены. Делим сцену, складываем на композе.
4. Рендер толпой. Рассмотрим скрипты и разделение сцен, решения для группового рендера.
5. Разные приёмы упрощения работы.
6. Рендер из батника.
1. Стабилизация проекта.
Перед тем, как перейдём к настройкам сцены, нужно сделать её стабильной. Ибо никакого толка в скорости, если рендер запускается через пень-колоду.
А также, имейте ввиду, что оптимизация каждого из кадров сокращает время рендера общей секвенции. Облегчили 1 кадр на час из двух - сэкономили 400 часов из общих 800, например.
Итак, необходимо сделать файл максимально стабильным, т.к. Blender вылетает при рендере секвенций на GPU в разы чаще, чем на CPU. Поставив рендер в ночь, утром вы можете обнаружить 1 отрендеренный кадр и чистый рабочий стол, без следов запущенного редактора. И расстроитесь - и будете правы. Поэтому, если у вас текстуры больше 1-2к, а сцены грандиозные, то карты требуют память от 3-4гб для стабильности работы. Если такого нет - тестируйте и пусть вам повезёт. Во всех остальных случаях, см п. 1.3
Пока что не говорим о скорости, а только о стабильности.
1.1. Карта с маленькой памятью.
Данный момент решается очень просто. Если у вас карта ёмкостью памяти в 500мб и ещё напёрсток, достаточно будет уменьшить размер плитки.
Здесь используется встроенный в блендер скрипт autotile, по шестерёнке справа настраивается размер плитки. Крутые карты вывезут большие размеры. Пони от GPU справятся с помощью маленькой плитки.
Сравнительная таблица размер плитки и скорости её рендера прилагается.
Из таблицы понятно, что GPU быстрее на больших размерах плитки, а процессор на маленьких. Также, в настоящее время конец 2020г, только GPU поддерживает рендер OPTIX. Однако, если ваша GPU на это способна, статья вам скорее всего, не очень нужна.
1.2. Проверяем длительность рендера на CPU и GPU отдельно.
Внезапно, но когда я выяснил, что CPU в разы слабее GPU (на 10летие), то оказалось, что без CPU видеокарта рендерит быстрее на 30%. Вместо полутора часов на CPU+GPU, только на GTX 1050ti кадр занял 1 час. Напомню, всего кадров в нашей задаче 400.
На старом ноутбуке наоборот – процессор на 20% мощнее видеокарты и без неё справлялся быстрее. Поэтому сначала тестируем чёкаво, а потом ставим галочку... рендерить только на GPU или только на CPU.
Рендерить на процессоре.
Если у вас большие текстуры, кэш симуляции прочее - в версиях 280-281 устройство рендера для секвенций - CPU. Supported.
По причине того, то GPU вываливается после 1-4 кадров, т.к мы имеем тяжёлые текстуры в 4к, кэши и симуляцию, то памяти требуется овердохрена. 9,16, 30 гб... Современные GPU этого ещё иногда не вывозят. Кроме того, рендер этого кадра у нескольких коллег с мощными компьютерами на CPU и GPU занял одинаковое время. Поэтому процессор выигрывает по надёжности и простоте, но может сильно проиграть в скорости.
2.2. Делим сцену на планы и рендерим на GPU.
Поскольку дана слабая GPU, но она шустрее, т.е. не вывезет всю сцену, то придётся схитрить и разделить шот на планы. Дальний, средний и ближний планы разносятся в разные сцены и рендерятся по очереди. Дальний план скорее всего, можно рендерить в 1 кадр. Например, камера отдаляется от обьекта вдали, этот план не двигается и никто не заметит, если он будет статичен. Если нет параллакса, просто рендерим в 1 картинку, НО в размере в 2 раза большем, чем надо в сцене. На всякий пожарный, чтобы на композе не вылезли артефакты, т.к. камера будет отьезжать от этого плана. Рендерить нужно из самого последнего кадра, когда камера отьехала максимально далеко. Это сразу сокращает примерно 30% времени рендера все секвенции.
Способ не годится, фон подвижный. Тогда всё же надо делать секвенцию в оригинальном разрешении.
Если повезёт, то делим то же делаем со средним планом. Мне удалось сократить этой простой манипуляцией 50% общего времени рендера. Т.е. из 8 месяцев работы моему пони осталось всего 4.
2.4 Рендерить на 2х видеокартах.
Технически, ничего не помешает запустить КОПИЮ проекта, для рендера на 2х разных устройствах, выставив настройки, какую карту можно использовать, какую - нет.
Важное замечание - 1 секвенция, т.е. шот, должна быть отрендерена на 1 типе устройств. Если пол-шота рендерить на CPU, а потом прыгнуть на видеокарту - результат кадров будет несколько отличаться. Увидеть это вы сможете в самый неподходящий момент. Часть секвенции, например передний план считаем на одной карте, на второй карте считаем средний план.
Может быть так, что Blender не поймёт 2 карты и станет одновременно рендерить только на какой-то одной. Не беда, мы можем запустить его на 2х картах одновременно! Но придётся попотеть.
Для этого нам понадобится освоить
- рендер батником из конца статьи.
- запустить консоль и опросить блендер - какую видеокарту ты определяешь каким номером? Чтобы случайно не назначить процессор и видеокарту. Делаем это так. Скрипт https://pastebin.com/yQjPAVL2 сохраняем в текстовый документ, переименовываем расширение .py и кладём в ту папку, на которую указывает консоль нашей ОС. Например, C:/Users/CoolHackerVasya/. В папку кулцхакера Васи кладём скрипт, называем askvideo.bat
- В консоли пишем blender (или полный путь от корня диска до исполнительного файла) -b -P askvideo.py
Появится список девайсов, где карты и процессор будут пронумерованы. Далее нам надо взять этот скрипт https://pastebin.com/TNkvbf6u и записать свои значения в 2 копии этого скрипта. Каждый для отдельной видеокарты. В одну копию в квадратные скобки activated_gpu=[] пишем ранее узнанный номер первой карточки, во вторую копию - номер второй карточки. Сохраняем каждый файл отдельно, проименовав firstcard.py и secondcard.py
Теперь 1 сцену можно сохранить в 2 вариантах. Первую копию для кадров 1-100, вторую копию для кадров 101-200. Или если разделили по планам, то пишем весь хронометраж для каждой копии.
Батники будут выглядеть примерно так
E:\Downloads\blender-2.81a-windows64\blender.exe -b E:\YandexDisk\01_Myth\2_prod\Special_shot\special_shot_281_v012.blend -s 001 -e 200 -P fistcard.py -a
- и второй -
E:\Downloads\blender-2.81a-windows64\blender.exe -b E:\YandexDisk\01_Myth\2_prod\Special_shot\special_shot_281_v012.blend -s 001 -e 200 -P secondcard.py -a
!!! это схема использования простого батника !!! Сложный батник будет приведён в конце статьи.
Где E:\Downloads\blender-2.81a-windows64\blender.exe путь до блендера, в котором рендерим.
E:\YandexDisk\01_Myth\2_prod\Special_shot\special_shot_281_v012.blend путь до файла который рендерим.
s 001 -e 200 - диапазон кадров, с какого по какой.
В статье я не буду расписывать данные о формате данных, думаю что это вы уже прочтёте в др источниках. Скажу только, что рендерить tga или exr необходимо для сторонних проф. прог вроде NUKE, иначе нет смысла их использовать. Для тестов и пр. можно спокойно использовать jpg-png. Если вы будете разбивать сцену на планы, то png в RGBA потребуется для вставки фона.
2. Скрипты.
Имейте ввиду - сторонние скрипты делают работу блендера ещё более ненадёжной, чем она есть. Комбинация сторонних скриптов отрубает некоторые пассы, и рендер идёт по пентаграмме даже не успев начаться. Поэтому необходимо тестирование. Однако, они вносят ядерный функционал, без которого быстро становится не по себе.
Remington Atomic Data Manager https://remington.pro/software/blender/atomic/
Smart Select автоматически прочёсывает все виды данных в файле, и выделяет те, которым надо жамкнуть Clean, т.е. удалить потерянные и несостыкованные данные из файла. То, что надо было делать ручками в OrphanData. Кнопка Nuke уничтожает данные выбранного или всех дата-блоков в принципе.
Неиспользуемые материалы загрязняют проект, могут синхронизироваться, но не использоваться в рендере (например, в сценах с волюметрикой, где на все коллекции назначен holdout и материалы загружаются, чтобы их игнорировать) и отнимать кучу полезного времени.
Временно скрипт несовместим с CrowdRender! Включаем одно - выключаем другое.
Также при использовании скрипта замечено, что отключаются некоторые необходимые пассы. Поэтому скрипт лучше использовать при подготовке сцены и отключать при непосредственно рендере.
Render AutoSize Tile (встроен, но не включен в 2.8)
Исключает человека из процесса настройки плитки под девайс. Не надо ползать по таблицам, изучать, какой размер плитки более производителен. Скрипт особо полезен при рендере из батника, об этом я расскажу ниже. Минус скрипта - видеокарта может не вывезти выданное ей задание из-за большого размера плитки. Т.е. необходимо тестирование в больших сценах.
Remington AI D-Noiser https://remington.pro/software/blender/d-noise
Шумодав с нейронной сетью. Прямо космические технологии у вас дома! Но только в версии 279 =( Поддержка 28+ ожидается в 2020 году.
В отсутствие оной приходится пользоваться либо встроенным denoiser-ом, либо встроенным www.neatvideo.com, но neat выручит только если вы рендерите просто jpg-секвенцию для видео, без пассов. Встроенный в 2.8 шупомодавитель находится passes-denoising и работает со всеми видами файлов. Но он очень не идеален и не работает с отдельными пассами, а только с бюти.
Denoise
Нода, доступная на композитинге. Ниже приведена правильная схема её подключения. С ней количество сэмплов может быть снижено в 4-5 раз. И соответственно, в 4-5 раз ускорить рендер. В данный момент это самый мощный способ ускорить рендер и подавить шумы. Цеплять правильно - по картинке ниже, но можно и на отдельные каналы.
3. Хаки в настройках сцены.
3.1 Делим сцену на составляющие.
Стабилизация также достигается разделением сцены. В одном шоте у нас волюметрика, во втором - модификатор ocean, кэш анимации и 6 эмитерров снега. Снежная вечеринка на море отложится после первого же запуска блендера - он вылетит и запустится раза с 4-5. Чтобы этого не случалось, сцену с базовым мешем и светильниками (без сложностей - volumetric, ocean, particle) оставляем в main-сцене, остальное переносим в дубль сцены, называем его VFX. В VFX творим, что хотим - нужно только убить вместе с содержимым то, что не нужно в этой сцене. Правой клавишей по коллекции с содержимым, которое не должно маячить в этой сцене - View layer - set holdout. На рендере сцены "VFX" данной коллекции видно не будет. Оно будет видно в сцене main.
! При использовании holdout в сцене, все текстуры в слоях holdout нужно будет удалять руками. Atomic Data Manager - Nuke убьёт текстуры во всём файле, а не только в сцене.
Например, есть лес, заснеженный берег, снегопад, персонажи ходят по побережью моря и матерно ругаются. Уже звучит так, что хочется это облечить) Лес, персонажей, землю со снегом на ней - оставляем в main scene, воду по возможности переносим в другую сцену Ocean, эмиттеры снега - в третью сцену VFX 1. Возможно, даже в 2-3 сцены, т.к. так меньше вероятность вылета из-за большого количества единовременно считаемых частиц. В каждой сцене оставляем только то, что требуется для неё. Только океан, только снег или только матершинников.
После этого Blender будет рендерить каждую из сцен отдельно и последовательно, складывать на композе и сохранять.
На композе соединяем сцены следующим образом или рендерим их отдельно в разные open multiexr файлы. Мы можем задать каждой из сцен в разные настройки рендера, что существенно облегчает процесс. Здесь столько отскоков света, здесь столько.
3.2. Настройки сцены.
3.2.1. Sampling.
Branched path Tracing
Позволяет легко настроить сцену в зависимости от нужд. Если в сцене есть Volume, то соответствующий пасс лучше его повысить до получения нужного результата. Чаще всего нужен пасс с Transmission.
Смысл бранча - иметь небольшое количество общих сэмплов, но высокое для отдельных каналов. Таким образом вы скорее увеличите скорость рендера в несколько раз, чем качество. Я рендерил сцену с Volume-светом 4 часа и 12 часов с разницей этого subsample в 1 и 4 соответственно.
Раньше приемлемое качество было на 512 сэмплах всего и subsamples 1 all, теперь будет ~100 сэмплов (64-128 в зависимости от подбора), а все сабсемплы также 1, кроме Volume, ради которого сцена и создавалась. Его значение будет 4-6. Таким образом, время рендера сократится в несколько порядков.
Если samples 256, all subsampls 1 - 24 часа,
samples 128 - all subs 1, Volume subs 4 - 12 часов
samples 64, all subs 1, duffise 2, Volume subs 4 - 4 часа.
Крайне удачно использовать ноду Denoise в композиторе и из пункта выше. Она ещё сократит время в несколько раз.
3.2.2. Adaptive Sampling
Рекомендую зажигать эту галочку, оставляя значения noise treshhold 0 (т.е. автоматическое значение) или опытным путём подбирать минимальное. Также min sapmles 1, адаптивный сэмплинг примерно на четверть может сократить время рендера и серьёзно снизить уровень шума. Детали см. в мануалах на сайте.
3.3. Light Path
В общем их стоит держать максимально низко, до тех пор, пока результат не начнёт отличаться от более высоких значений.
Многое зависит от требований композера, т.к. изменения могут быть не видны глазу, а на каком-нибудь пассе glossy color будет мигание и придётся переделывать рендер целиком. Возможности замазать мерцание может не быть.
Total - практически всегда 4-5.
Diffuse 1-2
Glossy - не меньше 2, иногда до 6. Глюки с глянцем будут видны на отдельном канале, которые нужно тестировать. Рекомендую не опускать ниже 4. Крайне рекомендую использовать на этом канале ноду Denoise при выводе из композитора.
Transparency 4
Transmission 4, иначе темнеют стёкла. Редко нужно больше 4.
Volume может быть полностью отключен, т.е. 0, если нет объектов с объёмом, например Volume light. При использованнии также полезна нода Denoise. В целом, использование вольюма - отдельная наука, а фейковать научимся чуть ниже в статье.
3.3. Clamping.
Direct Light не меньше 0,75, желательно 4.
Indirect Light не меньше 3, желательно 8.
Эта настройка отсекает незначительные лучи света, а также бликование там, где его не должно быть. Для более правильных значений рендерите сначала DirL ~5 и IndirL 10, затем с шагом в 1- 0,5 понижаем, рендеря каждое изменение в готовую картинку. Сравниваем, понижая значения до тех пор, пока изменения не станут заметны глазу. Как только изменения заметны визуально - этот вариант не годится, отказываемся к последнему незаметному.
3.4. Simplify
Главная настройка, ускоряющая процесс рендера после отключения Adaptive Subdivision, это AO Bounces.
При использовании SSS, Volumetric эта настройка 90% случаев будет стоять на 3.
На 1 она здорово экономит время (процентов на 50%), но снижает яркость. В сцене с Volume Light она может уничтожить свет витража, падающий на пол, который является художественной задачей. Запекание текстуры не поможет, т.к. светильник и свет в воздухе сами по себе становятся тусклыми.
В остальных случаях AO 1-2 отлично справляется. Но - в мировых настройках стоит включить Ambient Occlusion. Factor 0.1, Distance 0.5 или подогнать по своему усмотрению. Так мы фейкуем отключенный отскок света.
Max Subdivision почти наверняка пригодится для Viewport, чтобы не вешать его намертво, в значении редко больше 3.
Последняя настройка сцены в world, которая может иногда снизить время - Settings - Surface - none.
Последняя настройка в Simplify - Texture Limit. Результат ниже, я заключаю, что лучше её не ставить ниже 4к. Увеличить время без искажения картинки не получилось. Любое уменьшение (1к, 2к) шакалит качество и яркость текстур. См на корни, где баг проявляется сильнее всего. Там отдельная текстура emission.
В сцене применён clamp 0.75. 3, мало отличающийся визуально от нулевых значений. В целом, настройка лимита текстур на 2-4к может стабилизировать проектъ, если у вас не текстуры, а ТЕКСТУРИЩИ на 8к каждая. Видеокартам это может не понравиться, рендер-фермы поэтому считают только на процессорах. Поэтому для GPU оптимально ставить лимит текстуры в 4к, если повезёт не зашакалить результат - 2к.
4. Рендерим толпой
Современные проблемы требуют современных решений!
Разумеется, бесплатных.
В самом начале рекомендую не мучить ноутбуки рендером, если там не стоят зверские решения, вроде RTX. Мобильные устройства не предназначены для длительных нагрузок, вы просто убьёте рабочую лошадку. Мучайте ПК или игровой бук с RTX ) Такие, как MSI Creator и прочие исчадия Ада.
4.1. Sheep IT https://www.sheepit-renderfarm.com
Этот вариант годится для предпросмотра в небольшом разрешении и обеднёнными текстурами.
Рендер-торрент с кучей ограничений. Для моего проекта критическими являются ограничения на размер проекта со всеми текстурами и кэшем (не более 500мб, мои файлы - более 1 гб) и время рендера - ограничено. Кадр нашего проекта занимает минимум час на карте GTX 1050ti и 6 минут на RTX2080ti.
Плюсы - торрент подойдёт для просчёта простых секвенций, чтобы не загружать свой компьютер. Работает по накоплению некоторого количества очков, которые вы зарабатываете, рендеря сначала чужие проекты. Затем, в короткий срок, будет отрендерен ваш.
Минусы - не будут работать подцепленные через модификатор алембики и кэши. Поэтому серьёзная работа отменяется. Переподготавливать для этого файлы, засовывать алембики, переставлять ключи и регулировать их никто не будет. (Alembic, работающий через модификатор mesh sequence значительно удобнее. Но запаковать его в бленд-файл программа не умеет, он всегда будет внешним файлом) Не будут работать скрипты в сцене, если они есть.
Рендерить расистское, жестокое и сиськи - нельзя, прилетит бан. Толерантный и малорабочий вариант.
4.2. CrowdRender. https://www.crowd-render.com
Тоже торрент, но уже без ограничений. Сеть зависит от количества присоединившихся к вам участников. На рендере нашего проекта задействовано 5-7 машин, ещё 4 доступны потенциально. В данный момент КраудРендер работает только через локальную сеть и находится в альфа-тестировании. В течении 2020 года разработчики обещают создать версию, работающую через интернет. Сейчас это возможно, если подсоединить всех через VPN, включая частично изолированные от Интернета области - Крым, Украину. Ведущий компьютер может тоже участвовать в рендере.
Плюсы - никаких ограничений по содержимому контента. Ни техническому, ни художественному. Хотите снять ретро-кибер-порно-триллер - никто не забанит. Навесить кучу скриптов в ретрокибертриллер - никто не запретит их использовать.
Мастер сам определяет какому из компьютеров раздать задачу, может делить картинку на части и отправлять на разные slave-компьютеры.
Относительно простая техническая настройка, но требуется хотя бы 1 программист для настройки.
Минусы - Альфа-версия в данный момент, лишние телодвижения с VPN.
Вероятно, что потребуется контроль над некоторыми багами - может отвалиться рандомный пасс на компьютере коллеги. Также неизвестно, как он будет себя вести при наличии-отсутствии скриптов на другом ПК. Т.е. опять доп. настройка перед рендером.
В данный момент ещё не удобно.
4.3. Рендерить руками в облако.
Мы используем Яндекс-диск как самый дешёвый, демократичный и без идиотских ограничений по правам на групповое редактирование. 1 терабайт обошёлся полторы тысячи рублей в год. (По сравнению с Гуглом или ДропБоксом это ни о чём.) Пользователей - 30 человек. Все пути в файлах подчиняются строгой иерархии, всегда относительны и потому каждый артист, берущий в работу сцену, подхватывает внешние файлы автоматически, а рендерятся они также в правильные места.
Плюсы - скорость, относительная простота, надёжность, дешевизна.
Минусы - требуется ручной контроль при постановке на рендер, т.к. могут отвалиться пассы или заглючить сложные шейдеры. Необходимо словами договариваться с артистами. "Я рендерю с 1 по 25 кадры, ты с 26 по 50, а ты с 51 по 75." И контролировать этот процесс, чтобы рендер прошёл без глюков. Каждый пасс в каждом кадре. Крайне высокая вероятность отрендерить не то или не туда.
Пока что мы пользуемся последним вариантом, будем переходить на второй с его релизом. Компьютеры слабее i7 и GTX1050 в рендере не участвуют, т.к. превращают его в систему нецентрального отопления.
Суммируя вышесказанное в этом пункте, пока надёжнее всего купить мощную лошадку в кредит и отрабатывать на ней её стоимость. При потоке заказов, она отобьётся за несколько месяцев. Самый перспективный способ, кроме рендера в одну каску - crowdrender.
5. Разные приёмы упрощения работы.
5.1 Использовать последнюю версию Blender.
Часто используют также последнюю ежедневную сборку. Вы можете найти её по адресу https://builder.blender.org/download/
Отдельные сборки позволяют решить проблемы, например, с непониманием нескольких видеокарт. При мне Блендер 281а не понял наличие 2х карт Tesla, но смог параллельно запустить 1 проект на каждой отдельно. Для этого надо было дважды открыть сцену и задать на одну карту 1-100 кадры, на другую 101-200.
5.2. Порталы.
О порталах подробно рассказано в ролике от BlenderGuru
5.3 Фейковый свет
World Background помогает осветить объекты на улице при значениях в 0,01-0,5.
Объекты внутри помещений будут выдавать внешние светильники, поэтому лучше использовать не World BackGround, а дополнительные светильники, расставленные в нужных местах. На сцене ниже 4 фейковых светильника + World Background на 0,2.
Действовать напрямую мировым освещением нельзя - на примере ниже в свечах появляются артефакты и видно что там есть свет непонятно откуда. + к этому витраж становится слишком яркий, чего быть не должно. Тёмные области же становятся достаточно освещёнными, чтобы предметы отлипли друг от друга. Пол под витражами становится будто освещён естественным, физическим светом. Для финального рендера его нужно будет запечь в текстуру (урок от Глеба Александрова ниже), а сами светильники удалить, если от них больше ничего не зависит. Больше источников света - больше шума.
5.4 Scale-Up Scale-Down
Рендер итогового файла не обязан быть именно того разрешения, который просит заказчик. Никто не заметит разницы, если немного зашакалить разрешение поставить dimensions на 5-10% меньше, а в видеоредакторе растянуть отрендеренные кадры и выпустить в полном разрешении.
Просто. Топорно. Действует, если всё горит.
5.5. Деление сцены для фейковых светильников.
Второй ролик от заочных коллег. Они приведены в конце статьи, т.к. приводят способы облегчения, в основном, статичной картинки.
5.6 Запекание света для статичных сцен.
Слово отдам Глебу Александрову, автору замечательного ролика.
А теперь, когда вы дочитали до этого места и если ваш моск ещё функционирует, давайте это поправим! Батником.
6 Батник
6.1 Батник. Просто, как топор.
Батники бывают простые и сложные. Простые можно сделать, не будучи знакомым с программированием. Они подходят только для одной картинки. Сложный батник я дарю вам, он написан моим коллегой программистом и подходит для рендера анимации.
Понадобятся - скачанный и распакованный Blender, файл блендера с относительными путями (file-external data-make all path relative, save) немного прямых рук.
Простой батник имеет вид
E:\Downloads\blender-2.81a-windows64\blender.exe -b E:\YandexDisk\01_Myth\2_prod\Special_shot\special_shot_281_v011_ID.blend -s 001 -e 200 -a
E:\Downloads\blender-2.81a-windows64\blender.exe - путь до распакованного настроенного блендера.
-b - без интерфейса, ускоряет работу
E:\YandexDisk\01_Myth\2_prod\Special_shot\special_shot_281_v011_ID.blend - путь до файла с расширением. Не должно быть никакого пробела и кириллицы.
-s 001 -e 200 -a - начало и конец секвенции, какие кадры должны быть отрендерены.
Сохраняем текстовый файл с расширением .bat и запускаем, оставляем компьютер в покое. Если сцены разделены, то консоль почти наверняка не вылетит. Она может это сделать, но крайне редко.
Все настройки будут считаны из файла, который рендерится. И тут особо помогает addon render autosize tile.
Также, т.к. я сохраняю файлы из композитора, Blender будет сохранять 2 файла минимум 1 из композитора, второй - туда, где указано scene-output. Его я оставляю с зажжёной галочкой metadata- burn to image - render time и использую для предпросмотра секвенции.
При рендере из батника вылететь Blender может только при очень жёстких косяках настройки. При рендере из интерфейса - легко, быстро и потомушто нечего рендерить на пони-компьютере.
Первый файл будет на несколько минут дольше, второй тоже, 3-5 файлы сократятся до возможного минимума. На видео ниже подробный разбор рендера из батника. Вылететь он ещё по-прежнему способен, но уже меньше шансов т.к. для каждого следующего кадра блендер будет открываться заново и, если что-то пойдёт по пентаграмме, вы узнаете об этом на первых 2-3 кадрах или сразу же.
Отдельное внимание на галочку Overwrite - если её снять, то после перерыва рендера можно не заморачиваться и просто заново ввести все те же данные рендера. с 1 по 20 000 кадр например. Блендер сам пропустит уже отрендеренные кадры. Если не снять - понятно, начнёт рендер с начала.
Текст сложного батника, автор Роман Козак, физик-программист из нашей команды.
set /P name="Set blender_file "
set /P begin="Set begin frame "
set /P end="Set end frame "
--log-level 2 -d
for /l %%i in (1,1,100) do (
echo %%i
%~dp04_OTHER_MATERIALS\Scripts\Blender\2.83\blender.exe -b %~dp0%name% -s %begin% -e %end% -a )
timeout 10
где set blender file - путь к рендерящемуся файлу относительно батника. Батник в корне проекта, от корня считаются все пути.
Begin и end file - начальный и конечный кадры.
04_OTHER_MATERIALS\Scripts\Blender\2.83\blender.exe - путь до блендера.
Структура проекта - 01_myth - корень проекта, где живут все батники п папки, с которыми они работают. На втором скрине ниже - вводится путь до рендеримого файла, первый и последний кадр. А потом - поехали!
6. Cryptomatte
И теперь самое больное место экспорта данных и рендера - Криптомат, пришедший на свену ID материалов и обьектов. Кошмар с назначением ID ручками на три сотни ассетов и матов остался в прошлом.. Автоматические маски для композитинга. С ним мы боролись полгода. Криптомат можно вывести в рабочеом состоянии для Нюка и для чего угодно - но сделать это можно только через дефолтный способ рендера, а не через композитор. Компзитор просто не работает. при этом - ВАЖНО - рендерить только OpenMultiEXR и БЕЗ сжатия вообще.
Соответственно, вы получите секвенцию exr файлов с чудовищным весом. Но вес компенсируется просто-напросто сжатием в архив.
На этом всё. Надеюсь, это было полезно и информативно!
В итоге всех преобразований мне удалось снизить в одной из секвенций время рендера с 2 часов 14 минут до 1 часа 4 минут. При рендере нескольких кадров прирост уже около 80%. Рендер секвенции в 1000 кадров в итоге выльется не в три месяца, в полтора, если работать одному. И в неделю рендера по ночам - если работать толпой.
Дать обратную связь можно в нашем паблике в ВК или на почту wizardsemyon@ya.ru либо тут в комментариях.
Благодарю за помощь в материалах и советах
BlednerGuru
Егора Смирнова
Виктора Мукаева
Романа Козака
Виктора Лощилова