UpPetto

This is a real course generated by UpPetto — unedited.

AI-generated. Two models wrote it, a third checked every risky claim against sources, a fourth re-checked.

Create my own course

SOP-сеть как конвейер функций

core Строить линейные цепочки из 3–5 базовых нод (transform, merge, subdivide, group) и предсказывать результат до вычисления

Нода в SOP-сети — это функция с сигнатурой geometry' = Node(geometry, params): она принимает геометрию на входе и возвращает изменённую геометрию на выходе, ничего не трогая в исходных данных выше по цепочке. Сеть — это граф вызовов таких функций, где выход одной становится входом другой. Это ближе к функциональной композиции или конвейеру pipe в Unix, чем к «отредактировал меш и потерял историю».

Geometry g1 = Box();
Geometry g2 = Transform(g1, tx=2);
Geometry g3 = Subdivide(g2, depth=2);
Geometry g4 = Merge(g3, Sphere());
Geometry g5 = Group(g4, name="selected");

Каждая строка этого псевдокода — одна нода в сети. Важно: g1 никуда не «испортился» после создания g2 — он пересчитывается заново каждый раз, когда меняются параметры Box, и Houdini кеширует промежуточный результат на узлах. Поэтому подход называют неразрушающим (non-destructive): можно кликнуть на Transform в середине цепочки, увидеть именно его выход, поменять tx, и всё, что ниже по графу, автоматически пересчитается. Выделение ноды — это и есть «точка останова»: смотришь состояние данных на любом шаге через Geometry Spreadsheet.

flowchart LR
    Box --> Transform --> Subdivide --> Merge
    Sphere --> Merge
    Merge --> Group
Цепочка SOP-нод как конвейер функций — каждый узел получает геометрию на входе и передаёт результат следующему.

Houdini делит работу на контексты — по сути, разные типы графов для разных данных:

Контекст Что вычисляет Аналог
SOP геометрию (points/prims/attrs) фокус этого курса
OBJ трансформации объектов, иерархию сцены сцена/scene graph
DOP физические симуляции (дым, жидкости, тела) solver-цикл
ROP вывод — рендер, экспорт кэшей «компиляция» результата

Для быстрого старта в играх и ТВ-графике почти всё время ты будешь жить внутри SOP: SOP отвечает на вопрос «что за геометрия», OBJ — «где она в сцене», DOP — «как она движется», ROP — «куда её записать».

Разобранный пример

Задача: предсказать результат цепочки Box → Transform(tx=2) → Subdivide → Merge(+Sphere) → Group до того, как её вычислить.

Рассуждение: Box даёт куб с центром в начале координат. Transform сдвигает весь куб на 2 единицы по X (меняет @P каждой точки) — форма не меняется, только позиция. Subdivide увеличивает число точек и примитивов, сглаживая геометрию. Merge не меняет ни одну из входных геометрий — он просто объединяет два независимых набора данных (сглаженный куб + сфера) в один поток, поэтому итоговое число точек = сумма точек обеих геометрий. Group ничего не меняет в геометрии физически — он добавляет метаданные о выборке (какие элементы входят в группу), которые дальше могут использовать другие ноды.

Попробуй сейчас

Собери именно эту цепочку: Box → Transform → Subdivide → Merge (второй вход — Sphere) → Group (например, по bounding box одной из фигур). Перед тем как посмотреть на вьюпорт после каждого узла, запиши на бумаге ожидаемую форму и приблизительное число точек. Затем прокликай узлы сверху вниз и сравни с Geometry Spreadsheet.

Ожидаемый результат: твои предсказания формы совпадают с фактическим видом на каждом шаге; после Merge количество точек равно сумме точек двух входов.

Получилось, если…

Ты можешь, глядя на сеть из 4-5 нод без клика на них, словами описать, что происходит с геометрией на каждом шаге — как если бы читал последовательность вызовов функций в коде, и объяснить разницу между SOP- и OBJ-контекстом.

Вывод

Нода = функция geometry → geometry с параметрами как аргументами; сеть = граф вызовов, кешируемый на каждом шаге; SOP — контекст для геометрии, остальные контексты (OBJ/DOP/ROP) решают другие задачи и почти всегда просто вызывают SOP-сети внутри себя.

AI-generated · source-grounded review

🛡 Fact-checked: 3 risky claims verified · 2 removed · confidence: high · figures: 1
[verified] Нода = функция geometry → geometry; сеть кешируется, workflow неразрушающий
База прямо описывает ноды как функции преобразования и неразрушающий пересчёт графа
[verified] Mermaid-цепочка Box→Transform→Subdivide→Merge←Sphere, Merge→Group
Направление потока данных от входа к выходу и объединение двух входов соответствуют модели SOP-сети в базе
[verified] Контексты SOP/OBJ/DOP/ROP и их назначение
База описывает SOP как контекст геометрии, OBJ — объекты/сцену, DOP — симуляции, ROP — вывод
[softened] «90% времени в SOP»
Точная доля не подтверждена; заменено на 'почти всё время'
[removed] Mermaid версии B с linkStyle 0..8
Схема не перенесена: ссылка на несуществующие связи делает граф некорректным, содержание дублирует сохранённую схему
[removed] Конкретная цифра '90% времени в SOP' смягчена до 'почти всё время' — точная доля не подтверждается базой знаний
[removed] Не переносил mermaid-схему версии B: её директива linkStyle ссылалась на несуществующие связи (некорректный граф)

A second opinion has not checked this lesson.

Key concepts: нода как функция поток данных неразрушающий workflow SOP vs OBJ/DOP/ROP
Tell me more 🔒 Didn't understand — explain simply 🔒 Show examples 🔒 Sources 🔒

On your own course these buttons answer instantly, quizzes track what you've mastered, and lessons adapt to your gaps. Write my course

Check yourself

1. Что происходит с геометрией, поданной на первый вход ноды, после того как её обработала эта нода?
2. Если рассматривать ноду как функцию, что является её возвращаемым значением?
3. Какой контекст в Houdini предназначен именно для генерации и редактирования геометрии?
4. Что делает Merge SOP с точки зрения модели 'нода как функция'?
On your own course, these are marked as you answer