Методическая часть
В первую очередь после изучения теоретической части необходимо разобраться, через какие методы и инструменты в Houdini может быть реализована рекурсия.
Основные подходы включают использование For-Each Loop, VEX и Solver. Каждый из них отличается степенью сложности, подходом и целью.

Краткое сравнение 3-х методов.
В рамках данной главы создана одна и та же сцена с применением всех трёх подходов. Это позволит наглядно показать различия в реализации каждого метода и закрепить понимание принципов их работы на практике. В качестве основы использована точка, которая проходит через заданный цикл. На каждом шаге она дублируется, а новая точка подвергается трансформации. Затем все точки объединяются, формируя непрерывный путь, который впоследствии преобразуется в кривую.

Принцип работы цикла в будущей сцене. 1 — копирование новой точки; 2 — трансформация новой точки; 3 — объединение новой и старой точек; 4-6 — аналогичны шагам 1-3; 7 — преобразование точек в кривую.
1. For-Each Loop
Принцип работы For-Each Loop
For-Each Loop — базовый инструмент, используемый для автоматизации повторяющихся операций над геометрией.
Его задача — взять определённый набор элементов (точки, примитивы, куски геометрии, числа и т.д.) и выполнить заданную цепочку нод столько раз, сколько требуется.

В TAB Menu (список нод, вызываемый Tab-ом) доступно шесть типов инструментов For-Each, отличающихся тем, как именно разбивается геометрия и какие данные проходят через цикл.
For-Each Number
- цикл, повторяющийся фиксированное количество раз.
For-Each Point For-Each Primitive For-Each Connected Piece For-Each Named Primitive
- циклы, имеющий похожий принцип: каждая итерация цикла проходит через отдельный элемент (точку, примитив, отдельный фрагмент или именованную часть).
For-Loop with Feedback
- особый тип цикла, при котором результат каждой итерации передаётся в следующую.

Инструмент For-Each Loop состоит из двух основных элементов:
Block Begin
- входная точка цикла.
- настройка метода цикла .
Block End
- завершающая точка цикла.
- сбор результатов всех итераций, настройка шагов, типа завершения цикла.
В некоторых случаях создаётся служебная нода Metadata
- хранение данных о текущей итерации: номер шага, количество итераций, текущий элемент.
Принцип работы инструмента For-Each Loop. Куб состоит из 6 примитивов (полигонов), цикл выполняет 6 итераций.
Таким образом, принцип работы For-Each Loop заключается в том, что в Block Begin поступает геометрия, которая затем делится согласно выбранному типу (точки, примитивы, отдельные фрагменты или именованные части), после чего внутри цикла выполняется цепочка нод, применяемая к каждому элементу. Завершает процесс нодой Block End, где результаты всех итераций объединяются в итоговую геометрию.
Всё это позволяет гибко настраивать результат, добавлять вложенные циклы и быстро вносить необходимые изменения. Кроме того, структура представлена нодами, а не кодом, что визуально и технически упрощает работу.
Практическая реализация For-Each Loop
Интерфейс Houdini. 1 — вьюпорт (viewport); 2 — панель параметров; 3 — панель нод.
В новом проекте Houdini в панели нод создаётся нода «Geometry» (пустая нода геометрии). После двойного нажатия ЛКМ по ней открывается её внутренняя структура — уровень SOP.
SOP (Surface Operators) — это уровень работы в Houdini, предназначенный для выполнения операций с геометрией.
Создание ноды Geometry в панели нод.
В первую очередь, необходимо создать точку, с которой начинается построение системы. Для этого добавляется нода «Add».

Нода «Add» Создание точек и их соединение в примитивы по заданными условиям.

В Parameters (окно настройки ноды) во вкладке Points нажимается +, в результате чего создаётся точка. Ниже отображена информация о ней: её номер и координаты. В данном случае, настройки остаются по умолчанию.

Затем добавляется нода «Group». Это определяет группу, на которую применяется трансформация в последующем цикле.

Нода «Group» Генерация группы из точек, примитивов, эджей или вершин по заданным условиям.

Группе присваивается имя last в Group Name (название можно изменить при необходимости). Параметр Group Type — Points, поскольку работа ведётся с точками. Остальные параметры остаются без изменений.

Далее создаётся нода For-Loop with Feedback. Используется именно вариант с feedback, так как он позволяет на каждом шаге цикла использовать результат предыдущей итерации, что необходимо для постепенного наращивания геометрии.

Внутри цикла добавляется нода «Blast», которая удаляет все точки, кроме последней, к которой применяется трансформация (то есть к точке в группе last).

Нода «Blast» Удаление примитивов, эджей, точек.

Для того, чтобы оставить только последнюю точку в Group назначается группа last, Group Type — Points, и активируется опция Delete Non-Selected.

Следом добавляется нода «Transform», с помощью которой последняя точка перемещается в пространстве.

Нода «Transform» Трансформация геометрии (перемещение, вращение, масштаб и центровку) в 3D-пространстве.

Параметры трансформации могут быть заданы произвольно, однако для воспроизводимости эксперимента они остаются постоянными.
Translate — позиция; Rotate — поворот; Scale — размер.




