Обзор Blender 3.6 LTS

Приветствую всех, кто решил сюда заглянуть!

Новая версия блендера под номером 3.6 очень даже порадовала. Например, долгожданными симуляционными нодами, новым движком паковки, и при этом 3.6 - еще и LTS версия.

А теперь к небольшим новостям. Blender Studio начала документирование своего пайплайна. Вплоть до установленных ОС. Работа на данный момент пока что не закончена


Анимация и Риггинг

Были увеличены силы команды разработки инструментов анимации и риггинга. Глава команды был убран с работы над импортом/экспортом, и теперь может практически все свое время уделять анимации. Также фонд нанял по вакансии одного разработчика на фулл ставку, и по гранту одного дизайнера

Начнем со скиннинга. Продолжили добавление операторов по управлению выделением меша прямо в режиме рисования веса. Добавили расширение/сужение выделения

На момент 4.0 работа почти закончена

В статус баре появилась опция Scene Duration, которая добавляет в него информацию о времени в сцене в секундах и кадрах

scene duration.png

Появилась новая ориентация осей под названием Parent. Как понятно из названия, оно берет оси для трансформации с родителя выделения. Фича попала сюда, потому что запрашивали ее в основном аниматоры

Самые внимательные могли увидеть, что в настройках отображения арматуры появился переключатель Relations. При помощи него можно указывать, между какими частями костей будет прочерчена линия отношений. Режим Tail чертит линию от головы родителя до хвоста кости, а режим Head только между головами костей

head tail.png

У IK-солвера iTaSC появилась опция translate Roots. При ней солвер не будет перемещать рут-кость IK-цепи в центр объекта-арматуры, если у нее нету родителя. Для обратной совместимости опция будет включена только у новосозданных арматур, у старых ничего не изменится

Было сделано немало изменений в редакторе графов, которые улучшают его юзабилити:

  • Добавлено новое сглаживание, основанное на фильтре Гаусса. По видео сразу видно отличие от старого алгоритма
  • А также добавлен хоткей D, чтобы получить доступ ко всем операторам, которые используют слайдер
  • Вместе с этим было переработано меню Key. Часть контента была перенесена в меню Channel

animation key menu.png

  • Добавлен оператор Frame Channels, который настраивает вид редактора таким образом, чтобы там уместились все выделенные кривые
  • А чтобы вам было удобно выделять эти самые кривые, в оутлайнере каналов изменено поведение выделения: теперь выделение с зажатым shift выделяет диапазон из кривых, а с ctrl просто добавляет кривую в выделение
  • Для инсерта ключей появилась опция only Active F-Curve, которая позволяет добавить ключ только на активную кривую
  • У оператора вставки скопированных ключей появились опции смещения вставленного результата
  • Два небольших твика для функции Normalize: при ее активации вид фреймируется, и затемняется пространство, которое находится за кривыми

autonormalize.png

  • И на последок, настройки F-Curve High Quality Drawing и слава тебе господи Only Show Selected F-Curve Keyframes перенесли в общие настройки (а точнее в Preferences->Animation), и теперь они не привязаны к конкретному экземпляру редактора. Меня довольно сильно раздражало, что приходилось в каждом новом окне снова включать вторую опцию

Screenshot_20230614_064034.png

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

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

В моем примере драйвер берет значение с пользовательского свойства активного мира под названием X location, и передает это в положение куба по оси Х. если нужен пример по сложнее - то прошу, наслаждайтесь

NLA получил небольшие твики:

  • Кнопку изоляции трека перенесли к остальным кнопкам

nla ui.png

  • Улучшили взаимодействие с полосами: теперь при перемещении полосы она может пересекаться с другими. Если отпустить полосу в таком состоянии, то она сама выберет для себя оптимальную позицию. Распространяется увы только на горизонтальное перемещение, патч с вертикальным перемещением не успели сделать к 3.6 (зато он уже есть в 4.0 :D)

Это далеко не все, чем занималась команда разработки. В основном это планирование больших изменений, например драфт новой модели анимационных данных, или прототип риг нод


Ядро

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

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

Вдобавок к этому закончился рефакторинг структуры данных меша, который также вносит свою лепту, и в большей степени сокращает использование ОЗУ. Тест на сплэш-скрине 2.78: блендер 3.6 тратит на 200 мб оперативы меньше, чем 3.5

memory.png

Результаты тестирования "приблизительны". На каких-то сценах обновление может показать больший профит, на каких-то его вообще не будет заметно, все сильно ситуативно, так как сама система - не панацея от всех болезней, в прочем как и остальное

Была ускорена привязка/отвязка объектов к коллекциями. В тесте с линкованием 100 тысяч объектов показывается огромное ускорение

collaction link.png

Для пользовательских свойств типа Float было добавлено множество подтипов: слайдер, время, градусы и т.п....

float subtype.png


EEVEE и вьюпорт

У EEVEE появился новый рендер-пасс Transparent, который содержит все поверхности, которые имеют прозрачность и режим Alpha Blend в настройках материала

eevee transparent.png

Разработчики упомянули, что пасс хорошо работает только с монохромными поверхностями, цветные поверхности будут отображаться иначе, чем если бы они были частью Combined пасса

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

И в добавок нода Viewer теперь имеет приоритет над нодой Composite (т.е. нодой вывода), и будет использоваться для вывода результата


Grease pencil

Для скиннинга штрихов гриз пенсила появилось пару дополнительных инструментов. Патч приняли из-за того, что 3.6 будет LTS версией. Изначально его хотели принять потом, когда будет закончена переработка системы гриз пенсила, которая может попасть в 4.0


Моделирование

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

Появился новый оверлей для ретопологии

retopology.png

В отличии от метода с настройкой видимости объекта управляется одной галочкой, действует только в режиме редактирования, имеет слайдер для регулировки того, насколько оверлей будет вылезать за остальные объекты

А теперь самое сладкое - UV паковка

Как оказалось, в блендере было 2 движка UV паковки. Один предназначался для UV редактора, второй для ноды Pack UV. Разработчику сначала предстояло "убрать за другими". После того, как база была готова, наступила очередь реализации самого движка

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

Во вторых, движок был наделен новым алгоритмом паковки, основанным на алгоритме xatlas. В отличие от старого алгоритма, который работал с боунд боксами островов, новый полностью обрабатывает форму острова, в том числе и дырки внутри него!

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


Если все таки модель тяжелая, и паковщик думает медленно, можно использовать режим Boundary Shape - в нем это все тот же мощный алгоритм, но вместо полноценных островов он работает с Convex Hull формами островов, что будет побыстрее. Кстати о режимах, их всего 3 - собственно старый Bounding Box, который очень быстрый, новый Exact Shape, который полноценный обрабатывает форму островов, и Boundary shape, который я описал выше

юв режимы.png

Не одним методом обработки формы островов ограничивается обновление. Жизненно важная для геймдева фича - поддержка оверлапов, и она тоже тут есть. При активации галочки Merge Overlapped паковщик будет склеивать оверлапы в один остров

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

Для контроля вращения появились 3 опции. Axis-Aligned будет вращать остров так, чтобы его боунд бокс был как можно меньше, Cardinal разрешает вращать острова только на 90 градусов, а Any разрешает паковщику как-угодно вращать остров

uv rotation.png

Ну и обновления по малому, улучшение операторов UV Sphere Projection, UV Cylinder Projection и UV Select Similar


Ноды и Физика

Собственно, встречайте - симуляционные ноды!

Планировались они для 3.5, но не успели, поэтому фича была перенесена на 3.6. В отличии от специальной отдельной ветки, тут появилось кэширование и запечка, но обо всем по порядку

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

Сама симуляция происходит в зоне симуляции. Она выделена таким темно-розоватым цветом. Образуют ее две ноды - ввод и вывод симуляции

simulation zone.png

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

Для сохранения состояния симуляции на следующий кадр используется нода вывода. Также она позволяет выводить данные за зону симуляции

Чтобы детально работать с состоянием симуляции, есть специальная панелька в N-панелях

simulation state.png

У симуляционных нод есть система кэширования. Как и у остальных симуляций, закэшированные кадры отображаются на таймлайне. Для симуляции с геонод выделен отдельный цвет, который взят с цвета зоны симуляции

simulation timeline.png

Сам кэш может сохраняться на диск, но в своем особом формате (другой софт не прочитает)

simulation cache.png

Свой путь к кэшу можно указать во вкладке Internal Dependencies в модификаторе

bake dir.png

Пока что есть несколько операторов по управлению симуляцией. Все они расположены в специальной панели во вкладке Physics

simulation panel.png

Симуляционные ноды имеют пару ограничений, которые вносят некоторые неудобства, но в целом не стопят процесс

  • Плохо поддерживаются анонимные атрибуты (это к которым мы обращаемся не по имени, а через сокет. Например булевы выходы у ноды Cylinder или Normal и Rotation у Distribute Points). Симуляционные ноды могут их не видеть, просто будет получаться 0. Лечится использованием именованных атрибутов (т.е. через store named attribute), либо добавлением атрибута в состояние симуляции
  • Вместе с анонимными атрибутами нету поддержки кэширования волюмов (в 4.0 на момент выхода статьи может быть доделано)
  • Все, что выводится из симуляции, должно пройти через ноду вывода

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

Добавили ноду Index of Nearest, которая выдает индекс ближайшего элемента к указанной в Position позиции. Данная нода например используется в логике коллизий в новом демо файле симуляционных нод

index of nearest.png

У некоторых типов сокетов появился такой параметр как подтип. Эта опция делает аналогичное опции для пользовательских свойств, т.е. позволяет придать вводу сокета в UI модификатора определенный вид, например в виде слайдера

socket subtype.png

Ну и остальное по мелочи - где-то сделали результат ноды более правильным, где-то оптимизировали и т.п.


Пайплайн, Ассеты и I/O

У библиотек ассетов появилась опция, которая позволяет использовать относительные пути при линковании ассетов

asset relative paths.png

Переписывание различных экспортеров/импортеров с питона на С++ продолжается, и на этот раз счастливчиком стал импорт/экспорт .ply формата. Как обычно, огромный буст в скорости работы, а также некоторые улучшения и исправления

USD уделили немного внимания. Добавили возможность экспортировать новую систему волос, а в остальном маленькие улучшения. Демонстрация экспорта Hair Curves от разработчика:

usd hair curves.png


Python API

Расширили функционал настройки под названием Script Directory. Теперь там можно указать несколько папок со скриптами (например, одна с собственной библиотекой, вторая со скриптами для конкретного проекта и т.д.)

script directories.png

Рефакторинг структуры данных меша был полностью завершен. Суть его в том, что практически полностью меш переезжает на систему атрибутов, даже выделение! (увидеть их можно, если в списке атрибутов переключить поиск на скрытое)

new mesh struct.png

Поэтому стоит начать переписывать свои аддоны на новое API, ибо с 4.0 старое API будет удалено

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


Рендеринг и Cycles

Была добавлена поддержка хардварного рейтрейсинга на AMD и Intel, что увеличит производительность рендера

AMD видеокарты будут использовать HIP RT. Это имеет ряд ограничений:

  • Поддерживается только Windows
  • Вырожденные треугольники могут привести к вылетам и дропам производительности
  • Тени от волос рендерятся очень грубо
  • Размытие в движении работает не совсем корректно

Интеловские же будут использовать библиотеку Embree для этого. И как с AMD, имеется ограничение, к счастью одно: при самом первом использовании, если в вашем шейдере есть ноды Bevel или AO, то это спровоцирует перекомпиляцию ядра, на которое потребуется 9 ГБ оперативы и несколько минут, зависит от процессора

Яблочные устройства также не обошли стороной, и добавили поддержку NanoVDB, которое сокращает использование памяти при рендеринге волюмов

В этом релизе была затронута производительность самого сайклза:

  • Обновили light tree, теперь оно будет строится быстрее, тратить меньше памяти. Особенно это касается инстансов с материалом-эмиссией

light tree.png

  • Была сильно ускорена загрузка различной геометрии (меши, кривые, облака точек). Теперь это происходит быстрее примерно в 6-10 раз

Для OSL добавили поддержку клозуров dielectric_bsdf, conductor_bsdf и generalized_schlick_bsdf для облегчения интеграции MaterialX, если разработчики все таки захотят над ней работать

И на последок, добавлена поддержка байтового формата цветовых атрибутов для облаков точек и кривых, а также улучшили Glass BSDF, сделав его немного более реалистичным


Скульпт, рисование, текстуринг

У фильтров из режима скульпта появились редо-панели

sculpt filters.png

В целом в этом релизе скульпт получил только мелкие улучшения. Еще улучшили UI, добавили возможность добавлять фильтры в меню Quick favorites, инструменту Box Trim добавили опции ориентации


UI

Фонд взял по гранту заинтересованного разработчика, который активно вносит улучшения в функциональную часть интерфейса. Улучшений немало, пройдусь лишь по некоторым

У ассетов при наведении курсора появилась всплывашка с полным названием и описанием ассета

ui assets.png

В контекстном меню файлового браузера появился раздел External, в котором расположены различные операции, делающиеся силой ОС (например, открытие файла в проводнике системы). На данный момент содержание менюшки варьируется в зависимости от системы

ui file external.png

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

ui enum operator.png

Остальной список можно прочитать тут


На этом все. И как обычно, дата релиза следующего релиза. Блендер 4.0 выйдет 7 ноября, и будет разрабатываться дольше, чем 3.6

Спасибо за прочтение!

809 0 850 20
5
2023-06-28
Огонь!
2023-06-28
Хорошая статья!
2023-06-28
Очень подробная и крутая статья, автор красавчик.
2023-06-28
Хорошо!) Но ждём и мощного кеша в композитинге:)
2023-06-29
Спасибо, почитал с интресом.
RENDER.RU