Обзор Blender 4.4. Часть 2. EEVEE & Viewport, Modeling & UV, Sculpt, Paint, Texture, Grease Pencil, Geometry Nodes
- Обзор Blender 4.4. Часть I. Core, Pipeline и UI
- Обзор Blender 4.4. Часть 2. EEVEE & Viewport, Modeling & UV, Sculpt, Paint, Texture, Grease Pencil, Geometry Nodes
- Обзор Blender 4.4. Часть 3. Animation & Rigging, Cycles Renderer, Compositor, Sequencer
Приглашаю вас также заглянуть на мои страницы в Telegram и VK, чтобы быть в курсе моих публикаций и изысканий.
Уважаемый @username, я продолжаю свой цикл обзоров последней версии Blender 4.4. В представленной вниманию читателя второй части, рассмотрены изменения и нововведения в ядре визуализации EEVEE, графическом ядре Blender, моделировании, создании UV-разверток, скульптинге, инструментах рисования, текстурных картах, Grease Pencil и в Geometry Nodes.
Для удобства навигации, воспользуйтесь содержанием, кликнув по нужной ссылке.
Содержание
- Графическое ядро и ядро EEVEE
- Моделирование и UV-развертки
- Скульптинг, Рисование, Текстурирование
- Grease Pencil
- Geometry Nodes
Аналогично таким пакетам, как Autodesk Maya и SideFX Houdini, Blender является мультиплатформенным решением, поддерживающим развертывание на всех трех ключевых платформах - Microsoft Windows, GNU\Linux, Apple macOS. Все платформы обладают поддержкой как общепринятых стандартов и графических API, так и уникальных, присущих для конкретной из них. В Windows - DirectX, OpenGL и Vulkan, в GNU\Linux - OpenGL и Vulkan, в Apple macOS - Metal, OpenGL. Новая версия Blender 4.4 предоставляет ряд улучшений и изменений в графическом ядре, а также в аппаратном ядре визуализации EEVEE.
Blender 4.4: Графическое ядро и ядро EEVEE
В релизе 4.4 разработчики в первую очередь уделили внимание работе оверлеев в пространстве окон проекций. Оверлеи были переписаны для лучшей согласованности и лучшей расширяемости. Это является причиной небольших изменений в способе отрисовки оверлеев [1]:
Теперь objects origins всегда отображаются поверх оверлея режима редактирования.
Отображение в режиме Xray теперь корректно спадает на фронтальных оверлеях. Параметр Wire Color определенный во всплывающем окне Viewport Shading теперь учитывается всеми объектами с геометрией как в режиме Solid, так и в режиме Wireframe.
Геометрическая сетка теперь отображается в режиме редактирования, даже если оверлеи отключены.
Пример отображения объектов в сцене при заданном цвете Wire Color в Blender 4.2 и Blender 4.4.
Пример отображения сетки геометрии в режиме редактирования с включенными Overlays и отключенными Overlays в Blender 4.2 и Blender 4.4.
Пользовательский интерфейс [2]
Согласно Pull Request #122185 включена блокировка вращения вида на боковой панели View. Добавлен параметр Lock Rotation на боковой панели. Это удобно для предотвращения случайного вращения в пространстве окон проекций Top, Front, Right, Left и т.п., также действует и в режиме перспективы.
Новый параметр View Lock в панели View окна проекции, выполняющее блокировку операции вращения в окне проекции. Когда активно, панель с инструментами навигации изменяется, остается только инструмент панорамирования и масштабирования вида.
Vulkan API
В экспериментальной поддержке, бэкенд Vulkan получил большое обновление производительности, стабильности и совместимости. Бэкенд все еще считается экспериментальным из-за отсутствующих функций, таких как OpenXR, OpenSubdiv, Hydra viewport и производительность в анимации.
Производительность. Время запуска программы.
Тест: запуск Blender, загрузка сцены barbershop_interior.blend (3000 объектов, 550 материалов, 200 изображений), дождитесь финального отображения в окне проекции.
На следующих диаграммах показано время компиляции в секундах с использованием NVIDIA Quadro RTX 6000 на AMD Ryzen 9 7950X (16 ядер/32 потока) с добавленным вариантом системы с NVIDIA GeForce RTX 3090 Founders Edition на Intel Core i9-10900KF (10 ядер/20 потоков) и еще одной системы с Intel Xeon E2-1240v2 (4 ядра/8 потоков) с NVIDIA GeForce RTX 2080 SUPER [48]
Сцена barbershop_interior открытая в Blender 4.4 с применением API Vulkan для визуализации окон проекций.
Результаты тестов проведенных разработчиками и мною на нескольких системах с различными конфигурациями и ОС.
Для OpenGL поведением по умолчанию является отсутствие подпроцессов.
Помимо проведенных разработчиками тестов, я провел собственные, согласно рекомендациям представленных в Release Notes, и сопоставил свои результаты с результатами полученными в ходе разработки нового релиза. Но отмечу, что не было указано точно, в каком режиме сцена должна была отобразиться, я использовал стандартную конфигурацию сцены, без режима визуализации материалов с текстурами, только цвет.
В тестах с холодным стартом, когда сначала запускается приложение, а затем сразу же открывается сцена, наиболее оптимальный и быстрый результат продемонстрировала система с NVIDIA GeForce RTX 3090. При выборе API Vulkan, обновленная версия Blender показала наилучший результат, опередив систему с Quadro RTX 6000 и legacy-систему с GeForce RTX 2080 SUPER. В тестах с API OpenGL наоборот, наиболее быстро запуск и загрузка сцены выполнялась на системе с GeForce RTX 2080 SUPER. Но все же уступила в тесте с 8 подпроцессами.
При открытии сцены в уже запущенной программе, производительность в тесте с API Vulkan выше у систем с Quadro RTX 6000 и GeForce RTX 3090. А legacy-система продемонстрировала меньшую производительность, уступив более производительным системам. Системам с Quadro RTX 6000 и GeForce RTX 3090 потребовалось 3 секунды на открытие сцены и визуализацию ее в окне проекции, а GeForce RTX 2080 SUPER потребовалось 8 секунд. Вообще тесты с Legacy-системой хорошо показали как устарело оборудование, выпущенное 7 - 12 лет назад, времени на открытие сцен требуется уже больше, на подготовку к отображению в окнах проекций геометрии и базовых материалов, также требуется больше времени. Но профессиональные GPU все-же лучше демонстрируют возможности в работе с массивными сценами даже в современном ПО, а также с API OpenGL и API Vulkan. А на Vulkan сейчас многие вендоры ПО делают ставку и активно внедряют в свои решения возможности данного API.
Но что интересно, система с Quadro RTX 6000 показала меньшую производительность в тесте с запуском Blender 4.4 и открытие сцены в варианте с OpenGL без подпроцессов, и варианте с OpenGL и 8 подпроцессами. Но более современная модель GeForce RTX 3090 показывает отличную производительность в открытии сцены при запуске программы.
На самом деле, все это очень индивидуально, и зависит от уровня сложности сцены и детализации. Комплексные модели с множеством материалов, текстур и комплексным освещением, могут потребовать значительного времени на подготовку сцены и ее отображение. И здесь, новейший API Vulkan может дать хороший прирост в производительности, особенно на современных GPU, например GeForce RTX 30, 40 и 50 серии, с учетом их оптимизации под возможности нового API и оптимизации драйверов.
Cycles Render
API Vulkan используется для отображения результата рендеринга в Cycles. Процесс был переработан с использованием новой потоковой модели, что привело к той же производительности в сравнении с OpenGL.
Совместимость
Vulkan API был протестирован для работы на следующих платформах и драйверах.
Известные проблемы
Windows + NVIDIA: Двойное открытие диалога Preferences приводит к сбою [3].
Платформа: на системах с Windows-10 (сборка 10.0.19045-SP0 64 Bits) с GPU NVIDIA GeForce RTX 3060 Ti (драйвер NVIDIA 560.94 с Vulkan Backend).
Обнаружено в: Blender 4.4.0 Beta, ветвь blender-v4.4-release и начиная с версии 4.3.
Пользователь Невил Тан (Nevil Tan) обнаружил, что при использовании Vulkan API, при открытии второго экземпляра окна Preferences, Blender выполняет преждевременное завершение работы в версии 4.4 и “фризится” UI приложения в версии 4.3.
На операционных системах Linux открытие второго экземпляра окна Preferences работает корректно.
Blender 4.4: Modeling & UV
Оператор Select Linked Pick ([L] и [Shift+L]) теперь поддерживается в режиме редактирования кривых.[4]
Это отражает существующий оператор в устаревшем режиме редактирования кривой и режиме редактирования геометрии. Реализация довольно проста: мы просто находим кривую, ближайшую к мыши, и меняем выбор точек на этой кривой.
Пример выделения ближайших кривых и точек на них с помощью Select Linked Pick.
Оптимизация расчета нормалей углов граней может обеспечить до 15% более быстрое воспроизведение в файлах содержащих резкие ребра или пользовательскими нормалями.[5]
Алгоритм расчета нормалей углов граней имел входные данные нормалей вершин с намерением предварительно заполнить нормали углов для вершин без острых соединенных ребер. Однако нормали углов вычисляются отдельно для этих полностью острых вершин в любом случае, поэтому весь этот шаг был полностью излишним. Удаление расчета нормалей вершин сокращает использование памяти и повышает производительность. В тестовом файле с персонажем с пользовательскими нормалями это изменение улучшило воспроизведение на 15%, с 41 до 47 FPS. Влияние обычно будет ниже, но оно должно быть заметно и в других сценах.
Нормализация в N-panel теперь поддерживает блокировку любого количества групп вершин.[6]
В разделе Vertex Weights боковой панели в 3D Viewport делает доступной нормализацию групп вершин, когда заблокировано любое количество групп вершин.
Как и в случае с другими операторами обработки нормалей, которые обрабатывают заблокированные группы вершин, заблокированные веса суммируются, и любой пробел, оставшийся между этой суммой и 1.0, используется для нормализации разблокированных весов.
Select Poles
Добавляет новую опцию Select by Trait для выбора всех 3-poles, 5-poles и т. д. Учитывая влияние 3- и 5-poles вариантов на топологию, оператор по умолчанию выбирает все полюса, которые не имеют 4 ребер, чтобы обеспечить легкую проверку.[7]
Пример действия обновленного инструмента Select by Trait при выборе режима Select Poles.
- Когда активен режим выбора вершин, выбираются сами вершины.
- Когда активен режим выбора ребер или граней, выбираются ребра/грани, окружающие полюса.
- Когда активны комбинированные режимы выбора (вершина+грань), поведение отдает предпочтение режиму выбора с самой высокой степенью детализации.
Добавлена поддержка объединения треугольников с учетом топологии
Добавлен новый параметр, topology influence, который заставляет оператор join_triangles отдавать приоритет соединениям ребер, создающим четырехугольники с разумной геометрией относительно существующих четырехугольников, вместо выбора «самой плоской» и «самой квадратной» следующей пары, а затем оставлять оставшиеся треугольники без партнеров для слияния.
Это дает наилучшие результаты при пороговых значениях граней и форм, установленных на 180 градусов (без жестких ограничений в качестве ограничения на слияние), и влиянии топологии где-то между 100–130% в зависимости от геометрии.
Слишком низко — и остается много параллелограммов и треугольников, слишком высоко — и алгоритм слишком старается и начинает совершать ошибки.
Обратите внимание, что четырехугольники, уже присутствующие в выделении, так и четырехугольники, которые генерируются во время выполнения оператора, будут влиять на топологию вокруг них. Это позволяет моделлеру вручную объединить несколько четырехугольники в ключевых областях геометрии, как подсказку алгоритму, указывающую, какой результат они хотят видеть, и алгоритм затем примет эти четырехугольники во внимание и попытается построить вокруг них в соответствии с указаниями моделлера.
Также был добавлен новый флажок, позволяющий оставить только оставшиеся треугольники выбранными. Это помогает пользователям выявлять и визуализировать то, что еще нужно исправить.
- Improved Vertex & Edge Dissolve. Функция скрытия ребер может скрывать дополнительные, невыбранные ребра, чтобы гарантировать, что геометрия останется валидной. Ранее вершины, соединенные с этими невыбранными ребрами, также скрывались. Новое поведение обрабатывает только вершины, которые принадлежали выбранным, теперь скрытым ребрам.[8]
Пример действия обновленного инструментария Vertex & Edge Dissolve в Blender 4.4.
- New Topology Influence for Join Triangles. Объединение треугольников с четырехугольниками теперь может отдавать приоритет топологии, доминирующей в четырехугольниках, поэтому объединение треугольников способствует созданию четырехугольников, которые образуют «сетку». Это можно контролировать с помощью фактора влияния топологии (topology influence factor).[9]
Пример действия нового Topology Influence for Join Triangles.
Blender 4.4: Скульптинг, Рисование, Текстурирование
В патче реализованном в Blender 4.4, представлена кисть Plane [10] — обобщение существующих кистей Flatten, Fill и Scrape, призванное обеспечить большую гибкость при скульптинге.
Выбор типа кисти в свойствах кистей в Blender 4.4 и отличие интерфейсов в сравнении с Blender 4.2.X LTS.
Эта кисть имеет следующие основные характеристики:
- Параметры Height и Depth для управления диапазоном кисти по локальной оси z.
- Стабилизаторы для нормали и центра плоскости кисти.
При инвертировании пользователь может выбрать один из двух вариантов:
- Invert Displacement: идентично существующему поведению, смещает вершины от плоскости.
- Swap Height and Depth: меняет роли Height и Depth. Например, кисть с Height = 0,7 и Depth = 0,3 ведет себя так, как если бы у нее были Height = 0,3 и Depth = 0,7. В частности, это гарантирует, что Scrape brush (Height = 1, Depth = 0) становится эквивалентной Fill brush (Height = 0, Depth = 1) при инвертировании, и наоборот.
В существующих планарных кистях влияние на вершину определяется трехмерным евклидовым расстоянием между вершиной и позицией курсора, умноженным на расстояние вершины от плоскости кисти (и другие факторы, общие для всех кистей).
В кисти «Plane» 3D-расстояние определяется между вершиной и центром плоскости, а не положением курсора.
Кисть Plane вводит два параметра — Stabilize Normal и Stabilize Plane. Их можно рассматривать как небинарную версию параметров Original Normal и Original Plane, имеющихся в существующих кистях. Эти значения представляют собой взвешенное скользящее среднее по окну предыдущих шагов штриха.
У кистей Cloth теперь по умолчанию отключена опция Persistent [11]. Данное изменение касается следующих кистей:
- Drag Cloth
- Expand / Contract Cloth
- Grab Cloth
- Grab Planar Cloth
- Grab Random Cloth
- Inflate Cloth
- Pinch Folds Cloth
- Pinch Points Cloth
- Push Cloth
Опция Persistent отключена по умолчанию, поскольку она может привести к сложным артефактам, если пользователь задает базу, а затем делает большие деформации. Кроме того, общее значение, которое предоставляет эта опция, в настоящее время неоднозначно, поэтому ее включение — это скорее риск, чем польза.
Команды Grab Random Cloth и Grab Cloth теперь по умолчанию используют Local Simulation Area. [12]
При скульптинге с включенной симметрией кисти, в предыдущих версиях Blender, Bend Boundary Cloth, Twist Boundary Cloth, Grab Cloth и Grab Random Cloth работали неправильно, они влияли только на одну сторону геометрии, это происходило как со всеми осями, так и при выборе нескольких осей.
Операторы
Вход в Sculpt Mode через оператор sculpture.sculptmode_toggle запрещен для невидимых объектов.[13] Это уже предотвращено в пользовательском интерфейсе как в верхнем левом селекторе режимов, так и в pie menu; это изменение добавляет фактическую проверку, чтобы избежать перевода в недопустимое состояние другим оператором или скриптом.
Оператор Rebuild BVH (sculpt.optimize) больше не добавляет запись историю отмены действия.[14]
Наличие этого оператора в истории отмен не нужно и вводит в заблуждение; мы не сохраняем предыдущее состояние BVH во время этого оператора, и все данные сохраняются во время выполнения, поэтому отмена memfile здесь не имеет никакого эффекта. Отмена оператора не даст никакого фактического эффекта, а повторное выполнение оператора будет тратить время пользователя на перестроение связанных данных.
Frame Selected переименован в Frame Last Stroke.[15] Это изменение лучше согласует наименование этого оператора с тем, что он делает в Sculpt, Vertex Paint, Weight Paint и Texture Paint.
Операторы sculpture.brush_stroke, paint.vertex_paint и paint.weight_paint теперь имеют свойство override_location, чтобы заставить операторы рассчитывать позиции штрихов на основе предоставленных значений mouse_event.[16]
В Sculpt, Vertex Paint и Weight Paint оператор, используемый при рисовании (SCULPT_OT_brush_stroke, PAINT_OT_vertex_paint и PAINT_OT_weight_paint), в настоящее время может быть выполнен в Python, поскольку они определяют методы exec. Однако каждый из них имеет неявную зависимость от структуры OperatorStrokeElement, содержащей location, соответствующую местоположению мазка мазка в пространстве объекта.
Это ограничивает полезность оператора в неинтерактивных ситуациях, поскольку для определения фактического местоположения штриха на трехмерном объекте требуется доступ к Paint BVH для выполнения raycast и проецирования мыши из пространства двухмерной области в пространство объекта.
Чтобы позволить пользователям определять штрих в координатах пространства региона, реализованный в Blender 4.4 коммит добавляет новый параметр к связанным операторам, reproject_stroke, который указывает, следует ли отбрасывать текущие данные location и заменять их новыми рассчитанными позициями.
Клавиатурные комбинации
Оператор paint.sample_color имеет новую привязку клавиш по умолчанию ([Shift]+[Ctrl]+[X]) в Texture Paint для взятия образца объединенного цвета.[17]
Удаление флага UNDO для предотвращения добавления шагов отмены при использовании оператора paint.sample_color приводит к тому, что опция Sample Merged становится недоступной для пользователей, которые не добавили собственную раскладку клавиатуры.
Это исправление вносит следующие изменения:
- Для Texture Paint, использующего стандартную раскладку клавиш Blender, этому оператору назначается сочетание клавиш [Shift]+[Ctrl]+[X] с параметром merged, установленным в значение true.
- Для Texture Paint, использующего совместимую со стандартом индустрии раскладку клавиш, этому оператору назначается сочетание клавиш [Shift]+[I] с параметром merged, установленным на true.
Этот параметр актуален только для 3D Texture Painting, поэтому он не добавляется к другим режимам.
Для всех остальных записей paint.sample_color как в раскладке, так и в некоторых меню параметр merge явно установлен в значение false.
Blender 4.4: Grease Pencil
В инструментах Grease Pencil в новой версии Blender 4.4 не было включено совсем новых инструментов, но разработчики уделили внимание возможностям инструментов и оптимизации в работе.
Режим рисования (Draw Mode)
В данном режиме возвращена функция Stroke placements (из 4.2 LTS), а также уменьшен размер линейного примитивного гизмо.[18]&[19]
Режим скульптинга (Sculpt Mode)
Добавлены параметры автоматического создания масок (из 4.2 LTS).[20] Это реализует все параметры автоматического маскирования в режиме скульптинга.
- Stroke: влияет только на штрихи, которые изначально находятся под курсором.
- Layer: влияет только на штрихи в том же слое, что и начальные штрихи под курсором.
- Material: влияет только на штрихи с тем же материалом, что и начальные штрихи под курсором.
- Active Layer: влияет только на штрихи в активном слое.
- Active Material: влияет только на штрихи, которые используют активный материал.
Переключатель Active Layer на панели инструментов был перемещен на эту панель.
Операторы
Восстановлены операторы, отсутствовавшие в Blender 4.3.[21], [22], [23], [24], [25]. [26]&[27] Восстановлены режимы Fixed, Sample и Merge в операторе Simplify. Восстановлен оператор Set Start Point. Восстановлен оператор ластика Lasso/Box, добавлено преобразование из Curve в Grease Pencil, добавлено преобразование из Mesh в Grease Pencil, в dopesheet добавлен оператор Delete Breakdown Frames, возвращена опция Paste by Layer. Ранее эти операторы были доступны в Blender 4.2 LTS и удалены в Blender 4.3, в релизе 4.4 было принято решение их вернуть.
Модификаторы
Раньше невидимые слои были частью оцененных данных, но это не было преднамеренным решением.[28] Теперь невидимые слои удаляются из оцененных данных. Это означает, например, что они больше не перечислены в контексте узлов геометрии. Технически это критическое изменение. В маловероятном случае, когда скрытые слои должны были оцениваться в модификаторах, их видимость необходимо переключить.
UI
Значок предварительного просмотра заблокированных материалов больше не затенен.[29]
Отображение заблокированных материалов в предыдущих версиях Blender, и в релизе 4.4.
Свойства заблокированных материалов можно редактировать (аналогично свойствам заблокированных слоев).[30]
Свойства заблокированных материалов в предыдущих версиях и Blender 4.4.
В Dopesheet слои и группы слоев имеют цвет канала.[31]
Другие изменения
Операторы Lock all и Unlock all работали только для слоев. Теперь это также влияет на группы слоев.[32]
Оператор Hide Others теперь также учитывает группы слоев.[33]
Цвета вершин и тонировка слоев отображаются в режиме затенения Solid.
Blender 4.4: Geometry Nodes
Параметр Limit Surface из модификатора доступна в узле Subdivision Surface.[34]&[35]
В предыдущих версиях Blender, узел Subdivision Surfaces в Geometry Nodes, вёл себя иначе, чем модификатор, поскольку у него отсутствовала возможность использовать предельную поверхность (Limit Surface). Это в основном упущение, поскольку эта опция дает лучшие результаты и лучшую производительность.
В новом релизе 4.4 параметр Limit Surface добавлена в узел Subdivision Surfaces и включена по умолчанию, также есть поддержка версионирования, чтобы отключить ее для существующих файлов.
Различия в интерфейсе узла Subdivision Surface в Geometry Nodes в Blender 4.2.5 LTS и 4.4.0, влияние опции Limit Surface на тесселяцию геометрии.
Узел ввода Normal теперь выводит правильные нормали углов граней, а не только нормали граней.[36]
Ранее, при оценке в области угла грани, узел ввода Normal просто возвращал нормали грани, как если бы геометрия была затенена плоско. Это игнорирует гладкость грани и ребра, а также пользовательские нормали угла грани. За последние пару лет ожидаемое поведение доступа к нормалям стало намного яснее, и это поведение явно является ошибкой в ретроспективе.
Коммит исправления раскрывает те же самые нормали угла грани, которые используются везде в Blender, когда узел оценивается в домене угла. Старое поведение доступно с помощью свойства узла на боковой панели. Существует версионирование, поэтому старые файлы имеют установленное свойство и получают те же результаты.
Для существующих файлов старое поведение включалось автоматически с помощью логического свойства на боковой панели.[37]&[38]
Добавлены узлы ввода Collection и Object.[39]&[40]
В предыдущих версиях, было слегка странное несоответствие, что существуют входные узлы для блоков данных Image и Material, но не эти два. В новой версии они добавлены в качестве вводных узлов.
Новые узлы «Collection» и «Object» в Blender 4.4.
Поскольку существуют определенные настройки, где более одного узла имеют сокет collection/object, и вы хотите сохранить значения для них синхронизированными.
Реализация узлов в значительной степени является клоном node_geo_input_material.cc.
Добавлен узел Find in String.[41]
Этот узел позволяет найти определенное количество элементов, когда подстрока встречается в строке, и позицию начала первого совпадения.
В узле вы вводите строку и вы хотите получить цель поиска, вывод first found и count.
Конечная цель этого запроса на функцию — «упростить для пользователей разделение строк с использованием узлов геометрии».
Пример действия нового узла Find In String.
Раньше сравнение строк могло соответствовать только одному логическому значению, а переключение меню могло соответствовать только одному ключевому слову.
Теперь вам просто нужно ввести One String, чтобы управлять two switches или three switches.
Узлы Join Geometry и Realize Instances теперь сохраняют статус группы вершин входных атрибутов.[42]
В настоящее время код реализации инстансов (который также используется узлом Join Geometry) всегда создает общие атрибуты вместо групп вершин.
Ожидалось, что группы вершин будут заменены некоторой формой общего атрибута скорее раньше, чем позже. Однако ясно, что этого не произойдет в течение некоторого времени, и эта проблема доставляет пользователям много хлопот. Коммит исправления реализованного в Blender 4.4 сохраняет группы вершин в ходе операции. Любое имя атрибута, которое было группой вершин в любой геометрии подающейся на вход, станет группой вершин в результате.
В коде это простое изменение, поскольку абстракция записи атрибутов позволяет записывать в группы вершин, как если бы они были такими же, как и другие смежные массивы. В будущем мы могли бы оптимизировать код специально для групп вершин.
Это устраняет часть «ошибки» #99197, где узлы удаляют группы вершин. Однако это не меняет того факта, что генерация примитивной геометрии в Geometry Nodes не создаст группы вершин.
В целом настройки редактора свойств исходной геометрии не влияют на геометрию, созданную с нуля в Geometry Nodes.
Наложение текста в 3D-виде теперь работает для атрибутов матрицы.[43]
Это обновление реализует базовое текстовое наложение для атрибутов матрицы. Матрица разделена на положение, поворот и масштаб, чтобы сделать значения более удобными в понимании. Вероятно, есть способы представить это более красивым способом, но на данный момент это уже гораздо лучше, чем без отображения. Кроме того, ранее это приводило к утверждению в отладочной сборке.
Производительность
Перенос узла триангуляции из BMesh в Mesh дал улучшение производительности более чем в 30-100 раз.[44]
Добавлена реализация триангуляции геометрии, которая в настоящее время реализована только для BMesh. Главным преимуществом этого является производительность и снижение использования памяти. Преимущество особенно велико, поскольку узел в настоящее время преобразует геометрию в BMesh, триангулирует, а затем преобразует ее обратно.
Но реализация BMesh полностью однопоточная, поэтому она всегда будет намного медленнее.
Новая реализация использует принцип «никогда не обрабатывать только один элемент за раз», но также пытается избежать обработки очень большого количества элементов одновременно, чтобы уменьшить размер временных буферов.
На практике это означает, что работа организована в виде фрагментов выбранных граней, но внутри каждого фрагмента каждая задача выполняется в отдельном цикле.
В отличие от некоторых других портов Mesh, таких как узел Extrude или код разделения ребер, это создает новую геометрию. Я все еще возвращаюсь к этому аспекту, но повторное использование той же сетки в любом случае потребовало бы перераспределения атрибутов граней с нуля. Однако неявное совместное использование используется для избегания копирования атрибутов вершин.
Результирующая геометрия немного реорганизована. Сначала идут невыбранные данные граней, затем выбранные треугольники, затем триангулированные NGons, затем триангулированные четырехугольники. Это делает интерполяцию атрибутов и внутренние вычисления более эффективными.
Сокет "Minimum Vertices" заменен на версионирование. В новой реализации это повлияло бы на сложность кода, а для встроенного "атомарного" узла это имеет больше смысла как часть выбора.
Разница в производительности зависит от количества потоков CPU, количества атрибутов и размера выборки. По мере увеличения всех этих чисел преимущество будет расти. "Режимы" также, очевидно, влияют на производительность.
Была протестирована производительность на системе с Ryzen 7950x в нескольких ситуациях (в мс):
В других коммитах автор исправления перенес другие области на использование триангуляции геометрии вместо BMesh. Это последний узел Mesh, использующий BMesh, помимо примитива Ico Sphere.
Узел сортировки элементов работает на 50% быстрее в обычных сценариях.[45]
Неявный обмен данными значительно снижает стоимость процесса копирования геометрии, что чрезвычайно полезно в режиме работы только для чтения и незначительной модификации.
Но случай узла Sort Elements подразумевает полную перезапись всего домена, поэтому неявный обмен данными только добавляет избыточные затраты для доступа на запись. Это исправление использует API ядра для создания доменов без атрибутов, вручную принудительно заставляя неявный обмен данными для индексов смещения и использует функции копирования атрибутов ядра для принудительного обмена данными для всех атрибутов, когда это возможно. Во всех остальных случаях новые атрибуты создаются с нуля и копируются как переупорядоченные только один раз.
В примере показана разница в зависимости от количества атрибутов на геометрии, и результаты теста:
Node Editor
Узел Warning теперь имеет динамическую метку в зависимости от выбранного типа.[46]
Реализация автоматической метки для узла предупреждения на основе типа (аналогично узлу Math).
Посмотрите на изображение до и после (слева — до, метка всегда «предупреждение» независимо от выбора в раскрывающемся списке — справа — после, где метка отражает выбор в раскрывающемся списке).
Новые типы в узле Warning.
Привязка поддерживается при изменении размеров узлов по горизонтали.[47]
Когда привязка активна, изменение размера узлов теперь привязывает край узла к сетке. Удерживание клавиши [CTRL] инвертирует привязку.
В предыдущих версиях, вертикальная привязка была не реализована, поскольку вертикальное изменение размера вообще не работает. Это кажется преднамеренным, поэтому вертикальное изменение размера удалено в отдельном патче.
В третьей части обзора
В следующей части обзора мы рассмотрим изменения в инструментах анимации, риггинга, ядре визуализации Cycles, инструментах композитинга и видеомонтажа. Не забывайте подписаться на мой Telegram-канал и стать участником группы в VK, чтобы оставаться в курсе моих публикаций и различных исследований.
Сноски и ссылки:
Щелкнув по ссылке вы перейдете на оригинальный текст коммитов и изменений на Git-портале Blender.
[1] - Fix #78484: Overlay: No Wireframes in Edit Mode when Overlays are off
[2] - UI: Expose view rotation lock in the 3D Viewport
[3] - Vulkan - Reopen the Preferences window when it is minimized crash the Blender
[4] - Curves: Select linked pick operator
[5] - Mesh: Avoid computing vertex normals for corner normals
[6] - Modeling: Support normalization with locked vertex groups in N-panel
[7] - Edit Mesh: add an operator to select by pole count.
[8] - Modeling: add support for merging triangles with reference to topology.
[9] - Modeling: add support for merging triangles with reference to topology.
[10] - Sculpt: Add 'Plane' brush type
[11] - Assets: Update sculpt essential library hash
[12] - Assets: Update submodule hash | Bend Boundary Cloth, Twist Boundary Cloth, Grab Cloth and Grab Random Cloth brushs don't work with symmetry #131122 | Assets: Update submodule hash #133219
[13] - Sculpt: Prevent entering mode when object is invisible
[14] - Sculpt: Remove undo push for SCULPT_OT_optimize
[15] - Paint: Rename 'Frame Selected' Menu operator to 'Frame Last Stroke'
[16] - Paint: Allow executing 3D paint operators without location
[17] - Texture Paint: Add keybind for "merged" option when sampling colors
[18] - Fix #129145: Grease Pencil: Stroke depth detection and interpolation for drawing and primitives
[19] - Grease Pencil: Reduce size of primary gizmo on line primitives
[20] - Grease Pencil: Sculpt Mode Auto-Masking option
[21] - Grease Pencil: Add all supported modes to simplify operator
[22] - Grease Pencil: "Set Start Point" operator
[23] - Grease Pencil: Add lasso/box erase operators in draw mode
[24] - Object: Conversion of Font/Legacy curves to Curves and Grease Pencil
[25] - Grease Pencil: Convert from mesh to Grease Pencil
[26] - Fix: Grease Pencil: Missing operator to delete breakdown keyframes
[27] - Fix #132826: Grease Pencil: Missing "Paste by Layer" option
[28] - Fix: Grease Pencil: Remove invisible layers from evaluated data
[29] - Grease Pencil: Don't show material preview as "disabled"
[30] - Grease Pencil: Allow editing locked material properties
[31] - Grease Pencil: Add layer channel color property
[32] - Grease Pencil: Make layer locking operator also affect layer groups
[33] - Grease Pencil: Make "Hide Others" layer operator take layer groups into account
[34] - Geometry Nodes: Add "Limit Surface" option in subdivision surface node
[35] - Geometry Nodes: Add "Limit Surface" option in subdivision surface node
[36] - Geometry Nodes: Output proper face corner normals
[37] - Geometry Nodes: Add "Collection" and "Object" input nodes
[38] - Geometry Nodes: Add "Collection" and "Object" input nodes
[39] - Geometry Nodes: Find in String node
[40] - Geometry Nodes: new Find in String node #129270
[41] - Geometry Nodes: Find in String node
[42] - Geometry Nodes: Propagate vertex groups in join / realize instances nodes
[43] - Geometry Nodes: support text overlay when viewing matrix attributes
[44] - Geometry Nodes: Port triangulate node from BMesh to Mesh
[45] - Geometry Nodes: Avoid extra attribute copy in Sort Elements node
[46] - Geometry Nodes: Add dynamic label to warning node
[47] - UI: Implement snapping for node resizing
[48] - Характеристики систем применявшихся в тесте:
- System 1. CPU AMD Ryzen 9 7950X (16-Cores/32-Threads), GPU NVIDIA Quadro RTX 6000 на основе данных представленных на странице
- System 2. DigitalRazor Performance Pro Workstation; CPU: Intel Core i9-10900KF, RAM: 64 Gb DDR4-2933 MHz, GPU: NVIDIA GeForce RTX 3090 Founders Edition 24 Gb (driver 550.144.03_Linux-x86_64), OS: Rocky Linux 8.10 (Linux W6-DR 4.18.0-553.34.1.el8_10.x86_64 #1 SMP Wed Jan 8 14:44:18 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux).
- System 3. FORSITE 350D Workstation; CPU: Intel Xeon E3-1240v2, RAM 32 Gb DDR3-1600 MHz, GPU: NVIDIA GeForce RTX 2080 SUPER 8Gb (driver 572.16 Studio Driver), OS: Microsoft Windows 10 Professional x64 (Version 22H2, build 19045.5737).