Вычислить замыкание (evaluate closure)¶
Нода „Evaluate Closure“ запускает подключённую зону замыкания. Она выступает в качестве места вызова замыкания, запуская её внутренний нодовый граф и возвращая результирующие значения.
Замыкания обеспечивают динамическую и настраиваемую структуру нодовых групп, позволяя пользователям передавать процедурную логику в другое дерево нод. При запуске ноды „Evaluate Closure“, – подключённое замыкание оценивается в текущем контексте, сопоставляя свои входные и выходные сокеты по именам.
Нода „Evaluate Closure“ обычно используется в следующих случаях:
Предоставление определяемого пользователем поведения внутри процедурных систем (например, пользовательское распределение, правила размещения или логика затенения).
Внедрение логики в повторно используемые нодовые группы для получения расширенных эффектов.
Предоставление дополнительных входных данных для настройки высокоуровневых нодовых инструментов.
Входы (inputs)¶
- Замыкание (closure)
Замыкание, которое будет оцениваться. Этот вход ожидает соединения из зоны замыкания. Если замыкание не подключено, – нода будет работать в сквозном режиме (см. ниже).
Интерфейс (interface)¶
Нода может вручную определять дополнительные входы, которые будут сопоставляться по имени с соответствующими входами подключённого замыкания. При подключении замыкания, – эти сокеты автоматически синхронизируются, отражая интерфейс, определённый замыканием.
Свойства (properties)¶
Нода „Evaluate Closure“ не имеет функциональных свойств, но её интерфейсом входов и выходов можно управлять на вкладке „Node“ боковой панели.
- Синхронизировать сокеты (sync)
Обновляет текущую ноду в соответствии с сигнатурой сокетов подключённых нод. Используйте данную опцию после переименования, добавления или удаления сокетов.
- Определить сигнатуру (define signature)
Помечает ноду как определяющую сигнатуру замыкания, которая будет использоваться другими нодами замыкания. Обеспечивает согласованность определений входных и выходных данных между связанными замыканиями.
Элементы ввода (input items)¶
- Список входных сокетов
Отображает одну запись на каждый сокет, который был определён в ноде замыкания. Чтобы переименовать – щёлкните дважды.
- Добавить элемент
Добавить новый входной сокет к интерфейсу ноды замыкания.
- Удалить элемент
Удалить выделенный входной сокет.
- Тип (type)
Тип данных выделенного сокета (например, Float, Vector, Geometry, Object, Bundle). Для типов значений будет отображаться и использоваться поле значения по умолчанию, в случае, когда сокет не подсоединён.
- Форма (shape)
Определяет структуру данных, поддерживаемую входным сокетом, например, единичное значение , поле или сетку. Форма определяет способ оценки данных и их передачи через нодовую сеть. Подробнее см. в разделе «Форма сокета».
Элементы вывода (output items)¶
- Список выходных сокетов
Отображает одну запись на каждый сокет вывода. Чтобы переименовать – щёлкните дважды.
- Добавить элемент
Добавить новый выходной сокет для ноды.
- Удалить элемент
Удалить выделенный выходной сокет.
- Тип (type)
Тип данных выделенного сокета (например, Float, Vector, Geometry, Object, Bundle). Для типов значений будет отображаться и использоваться поле значения по умолчанию, в случае, когда сокет не подсоединён.
Выходы (outputs)¶
Выходы ноды „Evaluate Closure“ зависят от её текущей конфигурации:
При подключённом замыкании – каждый выход соответствует сокету вывода „зоны замыкания“ с тем же именем.
Если замыкание не подключено – выходы определяются вручную через панель „Output Items“ на боковой панели.
Поведение¶
При выполнении, – эта нода оценивает внутренний нодовый граф подключённого замыкания. Все входные значения передаются в замыкание по именам, а все результирующие значения возвращаются через соответствующие выходы.
Если замыкание не подключено или нода была выключена, – „Evaluate Closure“ автоматически передаёт все соответствующие входы и выходы по именам. Этот сквозной режим делает замыкания опциональными и позволяет нодовым группам функционировать даже без них.
Оценка выполняется в локальном контексте дерева нод, где находится нода „Evaluate Closure“, наследующая соответствующие поля, атрибуты и геометрические данные.
Использование¶
Нода „Evaluate Closure“ обычно используется для того, чтобы сделать группу нод частично настраиваемой, сохраняя при этом стабильную, повторно используемую структуру.
Например, генератор ландшафта может использовать „Evaluate Closure“ для установления логики распределения деревьев по ландшафту:
Внутри группы генератора, – замените фиксированную логику размещения используемого дерева с помощью ноды „Evaluate Closure“.
Выведите вход замыкания в интерфейсе группы.
В главном древе нод, – подсоедините зону замыкания, определяющую желаемое поведение распределения используемого дерева.
Всякий раз, когда будет оцениваться замыкание, связанный нодовый граф запускается в контексте генератора ландшафта, создавая настроенный результат.
Пример: пользовательское распределение деревьев с использованием „Evaluate Closure“.¶
Синхронизация сокетов¶
Замыкания основываются на совпадениях имён сокетов для корректного соединения входов и выходов. Если сигнатуры соединённых нод зоны замыкания и „Evaluate Closure“ будут не совпадать, – Blender может автоматически синхронизировать их.
Значок синхронизации „“ появляться тогда, когда расположение сокетов отличается.
При нажатии на значок, – сокеты обновляются в соответствии с подключённым замыканием.
Автоматическая синхронизация происходит при первом подключении замыкания.
Существующие сокеты никогда не изменяются автоматически, во избежание потери данных.
Ограничения¶
Функция инспектирования нод и нода „Viewer“ могут не отображать точные значения, если замыкания оцениваются в нескольких контекстах.
Захваченные внешние значения доступны только для чтения и не могут быть изменены внутри оценки.
В настоящее время замыкания не могут получать доступ к атрибутам или данным вне контекста их оценки.