Атрибуты (attributes)¶
Атрибут – это общий термин для описания данных, хранящихся для каждого элемента в блоке данных геометрии. Например, каждая вершина может иметь связанное с ней число или вектор. Атрибуты можно изменять, подключая значение к ноде Group Output, но также и многие ноды могут изменять значения определённых атрибутов.
Примечание
Типы данных атрибутов и домены преобразуются неявно, где это возможно, точно так же, как сокеты нод.
Названные атрибуты (named attributes)¶
Названные атрибуты создаются и используются в других областях Blender’а, таких как шейдеры, рисование и UV-развёртка. На панели модификатора Geometry Nodes названный атрибут можно использовать для ввода, щёлкнув значок справа от кнопки значения. Строковый ввод позволяет искать и выбирать существующие атрибуты из входной геометрии модификатора.
Поиск по атрибуту даёт немного контекста о каждом атрибуте. Слева от меню отображается домен атрибута, за которым следует имя атрибута. Справа от меню отображается тип данных атрибута.
Анонимные атрибуты¶
Анонимный атрибут – это набор общих данных, хранящихся в геометрии, у которой нет имени. Обычно атрибуты, отображаемые в интерфейсе Blender’а, имеют имена. Однако в геометрических нодах атрибуты можно передавать с помощью сокетов узла. В этих случаях создаётся поле вывода Attribute Field, которое используется нодами для поиска данных атрибута во входной геометрии.
Анонимные атрибуты по-прежнему хранятся в геометрии, как и другие атрибуты, и даже автоматически интерполируются, когда геометрия изменяется другими нодами, за исключением нескольких случаев. Таким образом, если ссылка ноды всё ещё доступна – атрибут, на который она ссылается, также будет доступен. Однако анонимные атрибуты не могут быть подключены к полностью отделённой геометрии, созданной из другого источника. Для передачи атрибутов между отдельными геометриями можно использовать ноду Sample Index или другие подобные узлы, такие как нода Sample Nearest Surface.
Типы данных атрибута¶
Тип атрибута – это тип данных, хранящихся в каждом элементе.
- Логический (boolean):
Истинное или ложное значение.
- Целое число (integer):
32-битное целое число.
- 8-битное целое число (8-bit Integer):
Меньшее целое число в диапазоне от -128 до 127.
- Нецелое (float):
Значение с плавающей запятой.
- Вектор (vector):
3D вектор со значениями с плавающей запятой.
- 2D-вектор (2D vector):
2D-вектор со значениями с плавающей запятой.
- Цвет (color):
Цвет RGBA с 32-битными значениями с плавающей запятой.
- Байтовый цвет (byte color):
Цвет RGBA с 8-битными положительными целочисленными значениями.
- Кватернион (quaternion):
Вращение в кватернионах, число с плавающей запятой.
Вышеприведённый список составлен в порядке от менее к более «сложному» (целое число может содержать больше данных, чем логическое, поэтому оно более сложное). При объединении отдельных геометрий – предпочтительнее использовать более сложный тип данных, если есть совпадение по именам. Это особенно важно при объединении геометрии с названными атрибутами с помощью ноды Join Geometry.
Для хранения 2D-векторов (UV-карт) и байтовых цветов – необходимо использовать ноду Store Named Attribute, поскольку для этих типов – сокетов нет.
Преобразование данных¶
С помощью геометрических нод можно преобразовывать данные между их типами.
Допустимые преобразования:
Между цветом и вектором – сопоставление цветовых каналов и векторных компонентов.
Между цветом и нецелым числом – данные цвета преобразуются в эквивалент оттенков серого.
Между числами с плавающей запятой и целыми числами – целые числа просто становятся числами с плавающей запятой, а числа с плавающей запятой сокращаются.
Между числом с плавающей запятой и вектором – когда число с плавающей запятой становится вектором, значение используется для каждого компонента. Когда вектор становится числом с плавающей запятой, берётся среднее значение компонентов.
Между числами с плавающей запятой и логическими значениями – значения больше 0 являются истинными, истинные соответствуют 1, а ложные соответствуют 0.
Домены атрибутов (attribute domains)¶
Домен атрибута относится к типу элемента геометрии, которому соответствует атрибут. Знание домена атрибута важно, потому что оно определяет, как его можно интерполировать и использовать в нодах и шейдинге. Для определения доменов атрибутов – вы можете использовать табличный редактор.
- Атрибуты домена Point связаны с отдельными местоположениями в пространстве с позицией:
Вершины меша
Точки облака точек
Контрольные точки кривой
Атрибуты домена Edge связаны с рёбрами меша.
Атрибуты домена Face связаны с гранями меша.
Атрибуты домена Face Corner связаны с углами граней меша. Примером может служить атрибут UV-карты.
Атрибуты домена Spline связаны с группой связанных контрольных точек кривой.
Атрибуты домена Instance существуют в экземплярах геометрии. Их можно использовать для хранения различных значений копий геометрических данных. Атрибуты домена Instance поддерживаются только в геометрических нодах.
Атрибуты домена Layer связаны со слоем Grease Pencil.
Атрибуты автоматически интерполируются в другие домены. Например, когда нода Position подключена ко входу Selection ноды Set Material – значения интерполируются из домена Point в домен Face. Обычно преобразования доменов используют простые усреднения для значений, но атрибуты типа данных Boolean имеют специальные правила для интерполяции:
Интерполяция домена Boolean¶
Из |
В |
Преобразование (conversion) |
---|---|---|
Точка (point) |
Ребро (edge) |
Ребро выделено, если были выделены обе его вершины. |
Точка (point) |
Грань (face) |
Грань выделена, если все её вершины также были выделены. |
Точка (point) |
Угол (corner) |
Значение каждого угла – это просто копия значения в его вершине. |
Точка (point) |
Cплайн (spline) |
Сплайн считается выделенным, если были выделены все его контрольные точки. |
Ребро (edge) |
Точка (point) |
Вершина выделена, если было выделено любое соединённое ребро. |
Ребро (edge) |
Грань (face) |
Грань выделена, если выделены все её рёбра. |
Ребро (edge) |
Угол (corner) |
Угол выделен, если были выделены два его примыкающих ребра. |
Грань (face) |
Точка (point) |
Вершина выделена, если была выделена любая из соединённых граней. |
Грань (face) |
Ребро (edge) |
Ребро выделено, если была выделена какая-либо соединённая грань. |
Грань (face) |
Угол (corner) |
Значение каждого угла – это просто копия значения его грани. |
Угол (corner) |
Точка (point) |
Вершина выделена, если были выделены все соединённые углы граней и при этом она не является свободной вершиной. |
Угол (corner) |
Ребро (edge) |
Ребро выделено, если были выделены все углы примыкающих граней. |
Угол (corner) |
Грань (face) |
Грань выделена, если были выделены все её углы. |
Cплайн (spline) |
Точка (point) |
Значение каждой точки является просто копией соответствующего значения сплайна. |
Встроенные атрибуты¶
Встроенные атрибуты существуют всегда, они не могут быть удалены. Их тип данных и домен не могут быть изменены.
Имя (name) |
Тип (type) |
Домен (domain) |
Примечания |
---|---|---|---|
|
Vector |
Point |
Встроенный атрибут, описывающий местоположение вершин или точек в локальном пространстве геометрии. Любая нода, которая изменяет положение точек, будет корректировать этот атрибут, как нода Transform Geometry </modeling/geometry_nodes/geometry/operations/transform_geometry и нода Set Position. |
|
Float |
Point |
Встроенный атрибут облака точек, используемый для установки размера точек во вьюпорте. Также встроен для кривых, где он управляет размером каждой контрольной точки кривой при конвертации в меш или для других операций. |
|
Integer |
Point |
Создаётся нодой Distribute Points on Faces для обеспечения стабильности при изменении формы входного меша и используется в экземплярах для создания размытия движения. Ожидается, что значения будут большими, без какого-либо порядка. Этот атрибут используется нодами, которые генерируют случайность, например нода Random Value. В отличие от других встроенных атрибутов, этот атрибут не является обязательным и может быть удалён. |
|
Integer |
Face |
Используется для указания слота материала для каждой грани в меше. |
|
Boolean |
Edge |
Атрибут, определяющий, должно ли ребро иметь плоский (а не плавный) шейдинг во вьюпорте или рендере. |
|
Boolean |
Face |
Атрибут, определяющий, должна ли грань иметь плоский (а не плавный) шейдинг во вьюпорте или рендере. |
|
Integer |
Spline |
Определяет количество оцениваемых точек между двумя контрольными точками сплайна. Только сплайны NURBS и Безье имеют этот атрибут, для полисплайнов значение всегда равно единице. |
|
Boolean |
Spline |
Определяет, есть ли у сплайна сегмент, соединяющий его первую и последнюю контрольные точки. |
|
Vector |
Point |
Описывает положение левой ручки контрольной точки кривой со стороны начала кривой. Существует только тогда, когда кривая содержит сплайн Безье. |
|
Vector |
Point |
Описывает положение правой ручки контрольной точки кривой со стороны конца кривой. Существует только тогда, когда кривая содержит сплайн Безье. |
Соглашения об именовании¶
Эти атрибуты не существуют «по умолчанию», но неявно используются некоторыми частями Blender’а. Тип данных этих атрибутов можно изменять, как и любой другой атрибут, кроме встроенного. Однако Blender ожидает, что атрибуты будут иметь определённый тип.
Имя (name) |
Тип (type) |
Домен (domain) |
Примечания |
---|---|---|---|
|
Vector |
Point |
Используется для создания размытия движения при рендеринге анимаций. |
|
Vector |
Point |
Содержит положение точек или вершин до того, как геометрия была деформирована процедурно. Атрибут может быть создан автоматически до того, как ключи формы и модификаторы будут оценены с опцией «Add Rest Position». |
|
2D Vector |
Curve |
Используется для описания мест прикрепления кривых на поверхности меша, обычно применяется для системы волос. |
|
Float |
Point |
Атрибут вершины, используемый модификатором Subdivision Surface. Ожидается, что значения будут в диапазоне от 0 до 1. |
|
Float |
Edge |
Атрибут ребра, используемый модификатором Subdivision Surface. Ожидается, что значения будут в диапазоне от 0 до 1. |
|
Boolean |
Edge |
Истинно, если при развёртывании ребро считается границей между UV-островами. |
|
Float |
Point |
Используется в качестве элемента управления вершиной для модификатора Bevel. |
|
Float |
Edge |
Используется в качестве элемента управления ребром для модификатора Bevel. |
|
Integer |
Face |
Используется свойством «набора граней» для скульптинга. |
|
Float |
Point |
Используется функцией маски́рования при скульптинге. |
|
Integer |
Face |
Используется свойством «набора граней» для скульптинга. |
Пользовательские атрибуты¶
Группы вершин, UV-карты и атрибуты цвета доступны как атрибуты в геометрических нодах. Они «называются» по имени. Следует избегать конфликтов имён (например, группы вершин и UV-карты с одинаковым именем). Если есть конфликт имён, то в нодах геометрии будет доступен только один из атрибутов.
Атрибуты с любым другим именем также могут быть созданы нодами, когда это имя используется впервые.
Обратите внимание, что геометрические ноды не всегда производят, например, группы вершин, если используется такая нода, как Join Geometry. Точно так же, если тип данных атрибута группы вершин изменён с исходного типа «Float», атрибут больше не будет группой вершин.
Оператор преобразования атрибутов¶
Этот оператор, расположенный на панели Attributes редактора свойств, может изменить домен или тип данных атрибута.
Из-за постоянного развития в области атрибутов – многие области Blender’а пока не могут работать с общими (идентифицированными по имени, хранящимися в любом домене с любым типом данных) атрибутами, используемыми геометрическими нодами. Это делает этот оператор важным обходным путём в некоторых случаях, когда существующие инструменты должны использоваться с данными, сгенерированными из нод геометрии.
- Режим (mode)
- Общий (generic):
Интерполировать и преобразовать атрибут между доменами и типами данных, описанными на этой странице.
- Группа вершин (vertex group):
Создать группу вершин из атрибута, который соответствует атрибуту с плавающей запятой в домене точек.
Примечание
Этот оператор работает только с исходными данными объекта, не включая в себя результаты модификаторов, поэтому любые атрибуты, добавленные или изменённые геометрическими нодами – затронуты не будут. Чтобы изменить тип атрибута, сгенерированного процедурно, необходимо применять модификаторы.