Атрибуты (attributes)

Атрибут – это общий термин для описания данных, хранящихся для каждого элемента в блоке данных геометрии. Например, каждая вершина может иметь связанное с ней число или вектор. Атрибуты можно изменять, подключая значение к ноде Group Output, но также и многие ноды могут изменять значения определённых атрибутов.

Примечание

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

Названные атрибуты (named attributes)

Названные атрибуты создаются и используются в других областях Blender’а, таких как шейдеры, рисование и UV-развёртка. На панели модификатора Geometry Nodes названный атрибут можно использовать для ввода, щёлкнув значок справа от кнопки значения. Строковый ввод позволяет искать и выбирать существующие атрибуты из входной геометрии модификатора.

../../_images/modeling_geometry-nodes_attribute-reference_search.png

Поиск по атрибуту.

Поиск по атрибуту даёт немного контекста о каждом атрибуте. Слева от меню отображается домен атрибута, за которым следует имя атрибута. Справа от меню отображается тип данных атрибута.

Анонимные атрибуты

../../_images/modeling_geometry-nodes_attribute-reference_attribute-field.png

Выходные сокеты Normal и Rotation являются примерами полей атрибутов, которые относятся к атрибуту, хранящемуся в геометрии.

Анонимный атрибут – это набор общих данных, хранящихся в геометрии, у которой нет имени. Обычно атрибуты, отображаемые в интерфейсе Blender’а, имеют имена. Однако в геометрических нодах атрибуты можно передавать с помощью сокетов узла. В этих случаях создаётся поле вывода Attribute Field, которое используется нодами для поиска данных атрибута во входной геометрии.

Анонимные атрибуты по-прежнему хранятся в геометрии, как и другие атрибуты, и даже автоматически интерполируются, когда геометрия изменяется другими нодами, за исключением нескольких случаев. Таким образом, если ссылка ноды всё ещё доступна – атрибут, на который она ссылается, также будет доступен. Однако анонимные атрибуты не могут быть подключены к полностью отделённой геометрии, созданной из другого источника. Для передачи атрибутов между отдельными геометриями можно использовать ноду Sample Index или другие подобные узлы, такие как нода Sample Nearest Surface.

Типы данных атрибута

Тип атрибута – это тип данных, хранящихся в каждом элементе.

Логический (boolean):

True or false value

Целое число (integer):

32-битное целое (integer)

8-битное целое число (8-bit Integer):

Smaller integer with a range from -128 to 127

Нецелое (float):

Значение с плавающей запятой (float)

Вектор (vector):

3D вектор со значениями с плавающей запятой

2D-вектор (2D vector):

2D vector with floating-point values

Цвет (color):

RGBA color with 32-bit floating-point values

Байтовый цвет (byte color):

RGBA color with 8-bit positive integer values

Вышеприведённый список составлен в порядке от менее к более «сложному» (целое число может содержать больше данных, чем логическое, поэтому оно более сложное). При объединении отдельных геометрий – предпочтительнее использовать более сложный тип данных, если есть совпадение по именам. Это особенно важно при объединении геометрии с названными атрибутами с помощью ноды Join Geometry

Для хранения 2D-векторов (UV-карт) и байтовых цветов – необходимо использовать ноду Store Named Attribute, поскольку для этих типов – сокетов нет.

Домены атрибутов (attribute domains)

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

  • Атрибуты домена Point связаны с отдельными местоположениями в пространстве с позицией:

    • Вершины меша

    • Точки облака точек

    • Контрольные точки кривой

  • Атрибуты домена Edge связаны с рёбрами меша.

  • Атрибуты домена Face связаны с гранями меша.

  • Атрибуты домена Face Corner связаны с углами граней меша. Примером может служить атрибут UV-карты.

  • Атрибуты домена Spline связаны с группой связанных контрольных точек кривой.

  • Атрибуты домена Instance существуют в экземплярах геометрии. Их можно использовать для хранения различных значений копий геометрических данных. Атрибуты домена Instance поддерживаются только в геометрических нодах.

Атрибуты автоматически интерполируются в другие домены. Например, когда нода 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)

Примечания

position (положение)

Vector

Point

Встроенный атрибут, описывающий местоположение вершин или точек в локальном пространстве геометрии. Любая нода, которая изменяет положение точек, будет корректировать этот атрибут, как нода Transform Geometry </modeling/geometry_nodes/geometry/operations/transform_geometry и нода Set Position.

radius (радиус)

Float

Point

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

id (идентификатор)

Integer

Point

Создаётся нодой Distribute Points on Faces для обеспечения стабильности при изменении формы входного меша и используется в экземплярах для создания размытия движения. Ожидается, что значения будут большими, без какого-либо порядка. Этот атрибут используется нодами, которые генерируют случайность, например нода Random Value. В отличие от других встроенных атрибутов, этот атрибут не является обязательным и может быть удалён.

material_index (индекс материала)

Integer

Face

Используется для указания слота материала для каждой грани в меше.

crease

Float

Edge

Edge attribute used by the Subdivision Surface modifier. The values are limited to a range of 0 and 1.

sharp_face (острая грань)

Boolean

Face

Attribute determining if a face should have sharp (rather than smooth) shading enabled in the viewport or a render.

resolution (разрешение)

Integer

Spline

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

cyclic (циклично)

Boolean

Spline

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

handle_left (левая ручка)

Vector

Point

Описывает положение левой ручки контрольной точки кривой со стороны начала кривой. Существует только тогда, когда кривая содержит сплайн Безье.

handle_right (правая ручка)

Vector

Point

Описывает положение правой ручки контрольной точки кривой со стороны конца кривой. Существует только тогда, когда кривая содержит сплайн Безье.

Соглашения об именовании

Эти атрибуты не существуют «по умолчанию», но неявно используются некоторыми частями Blender’а. Тип данных этих атрибутов можно изменять, как и любой другой атрибут, кроме встроенного. Однако Blender ожидает, что атрибуты будут иметь определённый тип.

Имя (name)

Тип (type)

Примечания

velocity (скорость)

Vector

Используется для создания размытия движения при рендеринге анимаций.

rest_position (положение покоя)

Vector

Содержит положение точек или вершин до того, как геометрия была деформирована процедурно. Атрибут может быть создан автоматически до того, как ключи формы и модификаторы будут оценены с опцией «Add Rest Position».

surface_uv_coordinate (координата поверхности UV)

2D Vector

Used to describe curve attachment locations on a mesh surface, typically used for hair use cases.

Пользовательские атрибуты

Группы вершин, UV-карты и атрибуты цвета доступны как атрибуты в геометрических нодах. Они «называются» по имени. Следует избегать конфликтов имён (например, группы вершин и UV-карты с одинаковым именем). Если есть конфликт имён, то в нодах геометрии будет доступен только один из атрибутов.

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

Обратите внимание, что геометрические ноды не всегда производят, например, группы вершин, если используется такая нода, как Join Geometry. Точно так же, если тип данных атрибута группы вершин изменён с исходного типа «Float», атрибут больше не будет группой вершин.

Оператор преобразования атрибутов

../../_images/modeling_geometry-nodes_attribute-reference_convert.png

Этот оператор, расположенный на панели Attributes редактора свойств, может изменить домен или тип данных атрибута.

Из-за постоянного развития в области атрибутов – многие области Blender’а пока не могут работать с общими (идентифицированными по имени, хранящимися в любом домене с любым типом данных) атрибутами, используемыми геометрическими нодами. Это делает этот оператор важным обходным путём в некоторых случаях, когда существующие инструменты должны использоваться с данными, сгенерированными из нод геометрии.

Режим (mode)
Общий (generic):

Интерполировать и преобразовать атрибут между доменами и типами данных, описанными на этой странице.

Группа вершин (vertex group):

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

Примечание

Этот оператор работает только с исходными данными объекта, не включая в себя результаты модификаторов, поэтому любые атрибуты, добавленные или изменённые геометрическими нодами – затронуты не будут. Чтобы изменить тип атрибута, сгенерированного процедурно, необходимо применять модификаторы.