Поля

По сути, поле — это функция: набор инструкций, которые могут преобразовать произвольное количество входных данных в один выходной. Затем результат поля может быть рассчитан много раз с различными входными данными. Они используются во всех узлах геометрии, чтобы обеспечить расчёты, которые дают разные результаты для каждого элемента (вершины сетки, грани и т.д.).

../../_images/modeling_geometry-nodes_fields_title.png

Поле входа узла.

Например, на рисунке выше поле, связанное с узлом «Set Position» (установить позицию), зависит от двух входов, Position (позиция)и Index (индекс), и преобразует их в вектор с помощью единственной инструкции.

Отображение поля

Формы портов используются для передачи того, какие порты являются полями, а какие — обычными данными. Существует три возможных формы порта, каждая из которых отображает свой «статус поля»:

Circle (окружность)

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

Ромб

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

Ромб с точкой

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

../../_images/modeling_geometry-nodes_fields_constant.png

Форма порта представляет собой ромб с точкой, что означает, что поле имеет одинаковое значение для каждого элемента. Каждая точка будет перемещена вверх на 5 метров.

../../_images/modeling_geometry-nodes_fields_varying.png

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

Совет

Часто желательно извлечь одно значение из поля. Хотя концептуально не имеет смысла простое преобразование поля в одно значение, узел Узел Transfer Attribute в режиме Index или узел Узел Attribute Statistic можно использовать для извлечения одного значения из поля, оцениваемого по геометрии.

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

Типы узлов

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

Узлы потока данных

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

Функциональные узлы

Узлы с ромбовидными входами и выходами являются узлами поля и напоминают инструкции, которые будут оцениваться узлами потока данных. Примерами функциональных узлов являются математические узлы, а также более сложные узлы, такие как узел Узел Geometry Proximity.

Входные узлы (Input)

Входные узлы предоставляют данные для процесса оценки поля. Сами по себе они ничего не значат; они должны быть оценены в контексте узла потока данных (геометрия), чтобы фактически вывести значение. Примерами входных узлов являются встроенные входные узлы атрибутов, такие как Position и ID, а также узлы выбора, такие как Endpoint Selection.

Входные данные поля также могут поступать от других узлов, обрабатывающих геометрию, таких как Узел Distribute Points on Faces, в форме Анонимные атрибуты.

Контекст поля

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

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

../../_images/modeling_geometry-nodes_fields_flow-1.png

Здесь поле ввода узла Set Position оценивается один раз. Чтобы оценить поле, узел перемещается назад, чтобы получить входные данные из узлов ввода поля.

../../_images/modeling_geometry-nodes_fields_flow-2.png

Когда добавляется второй узел Set Position, одно и то же дерево узлов поля оценивается дважды, по одному разу для каждого узла потока данных. Во втором узле Set Position результаты будут другими, так как его входная геометрия уже будет иметь изменённое положение из первого узла.

../../_images/modeling_geometry-nodes_fields_flow-3.png

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

Здесь узел Capture Attribute хранит копию исходной позиции. Обратите внимание, что оценка ввода поля узла Capture Attribute — это совершенно другой шаг. Позже поля ввода для узлов Set Position используют не фактическую позицию, а её копию анонимного атрибута.