Поля (fields)¶
По сути, поле — это функция: набор инструкций, которые могут преобразовать произвольное количество входных данных в один выходной. Затем результат поля может быть рассчитан много раз с различными входными данными. Они используются во всех узлах геометрии, чтобы обеспечить расчёты, которые дают разные результаты для каждого элемента (вершины сетки, грани и т.д.).
For example, in the figure above, the field connected to the «Set Position» node depends on two inputs, Position and Index, and transforms them into a vector using a single instruction.
Отображение поля¶
Формы портов используются для передачи того, какие порты являются полями, а какие — обычными данными. Существует три возможных формы порта, каждая из которых отображает свой «статус поля»:
- Окружность (circle):
Порт требует единственное реальное значение, он не может принимать поле ввода. Для портов выхода это означает, что узел всегда выводит единое значение.
- Ромб:
Порт может принимать ввод поля или выводить поле. К этим портам можно подключить постоянное единое значение, но тогда вывод часто не будет меняться для каждого элемента.
- Ромб с точкой:
Порт может быть полем, но в настоящее время это единое значение. Это полезно, поскольку позволяет отслеживать, где вычисляются единые значения, а не поле с множеством разных результатов. Это также означает, что Проверка сокета покажет значение, а не имена полей ввода.
Совет
Often it is desired to extract a single value from a field. While it doesn’t make sense conceptually to simply change a field into a single value, the Нода «Сэмплинг индекса» (sample index node) or the Нода «Статистика по атрибуту» (attribute statistic node) can be used to retrieve a single value from a field evaluated on a geometry.
Когда соединение устанавливается между двумя портами узла, которые поддерживают поля, соединение узла будет отображено пунктирной линией. Если вы допустили ошибку, подключив неполевой порт к порту поля, соединение будет отображено сплошной красной линией, указывающей на наличие ошибки.
Типы нод (node types)¶
Узлы можно разделить на две категории: узлы потока данных, которые обычно передают геометрию, и узлы полей, которые работают с данными для каждого элемента. Узлы поля могут быть входными узлами, которые вносят геометрические данные в дерево узлов, или функциональными узлами, которые работают с этими данными.
Узлы потока данных¶
Узлы с входной и выходной геометрией почти всегда будут узлами потока данных. Это означает, что они фактически изменяют данные геометрии, которые будут выводиться модификатором узлов геометрии.
Функциональные узлы¶
Nodes with diamond socket inputs and outputs are field nodes, and resemble the instructions that will be evaluated by data flow nodes. Examples of function nodes are the math nodes and also more complex nodes like the Нода «Близлежащая геометрия» (geometry proximity node).
Ноды ввода (input nodes)¶
Input nodes provide data to the field evaluation process. By themselves, they mean nothing; they must be evaluated within the context of a data flow node (geometry) to actually output a value. Examples of input nodes are the built-in attribute input nodes like Position and ID, but also selection nodes like Endpoint Selection.
Входные данные поля также могут поступать от других узлов, обрабатывающих геометрию, таких как Нода «Распределить точки на гранях» (distribute points on faces), в форме Анонимные атрибуты.
Контекст поля¶
Все узлы полей работают в контексте узла потока данных, к которому они подключены. Контекст обычно состоит из типа компонента геометрии и домена атрибутов, поэтому он определяет, какие данные извлекаются из входных узлов.
Одним из распространённых заблуждений является то, что одно и то же дерево узлов поля, используемое в нескольких местах, будет выводить одни и те же данные. Это не обязательно верно, потому что дерево узлов поля будет оцениваться для каждого узла потока данных, потенциально извлекая данные из другой или изменённой геометрии.
Here, the Set Position node’s input field is evaluated once. To evaluate the field, the node traverses backwards to retrieve the inputs from the field input nodes.
Когда добавляется второй узел Set Position, одно и то же дерево узлов поля оценивается дважды, по одному разу для каждого узла потока данных. Во втором узле Set Position результаты будут другими, так как его входная геометрия уже будет иметь изменённое положение из первого узла.
Однако часто необходимо использовать одни и те же значения поля даже после изменения геометрии. Узел Нода «Захват атрибута» (capture attribute node) оценивает поле, копируя результат в анонимный атрибут геометрии.
Здесь узел Capture Attribute хранит копию исходной позиции. Обратите внимание, что оценка ввода поля узла Capture Attribute — это совершенно другой шаг. Позже поля ввода для узлов Set Position используют не фактическую позицию, а её копию анонимного атрибута.