Атрибуты (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):

Истинное или ложное значение.

Целое число (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 поддерживаются только в геометрических нодах.

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

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

sharp_edge (острое ребро)

Boolean

Edge

Атрибут, определяющий, должно ли ребро иметь плоский (а не плавный) шейдинг во вьюпорте или рендере.

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

Boolean

Face

Атрибут, определяющий, должна ли грань иметь плоский (а не плавный) шейдинг во вьюпорте или рендере.

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

Integer

Spline

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

cyclic (циклично)

Boolean

Spline

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

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

Vector

Point

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

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

Vector

Point

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

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

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

Имя (name)

Тип (type)

Домен (domain)

Примечания

velocity (скорость)

Vector

Point

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

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

Vector

Point

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

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

2D Vector

Curve

Используется для описания мест прикрепления кривых на поверхности меша, обычно применяется для системы волос.

crease_vert (вершинная складка)

Float

Point

Атрибут вершины, используемый модификатором Subdivision Surface. Ожидается, что значения будут в диапазоне от 0 до 1.

crease_edge (складка ребра)

Float

Edge

Атрибут ребра, используемый модификатором Subdivision Surface. Ожидается, что значения будут в диапазоне от 0 до 1.

uv_seam (шов UV)

Boolean

Edge

Истинно, если при развёртывании ребро считается границей между UV-островами.

bevel_weight_vert (вес вершины при скосе)

Float

Point

Используется в качестве элемента управления вершиной для модификатора Bevel.

bevel_weight_edge (вес ребра при скосе)

Float

Edge

Используется в качестве элемента управления ребром для модификатора Bevel.

sculpt_face_set (набор граней скульптинга)

Integer

Face

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

sculpt_mask (маска скульптинга)

Float

Point

Используется функцией маски́рования при скульптинге.

sculpt_face_set (набор граней скульптинга)

Integer

Face

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

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