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

Геометрия как массив структур: points, primitives, vertices, detail

core Читать данные геометрии в Geometry Spreadsheet и определять, на каком уровне (point/prim/vertex/detail) хранится нужный атрибут

Геометрия в Houdini — это не «меш» в смысле «набор треугольников», а набор из четырёх связанных таблиц данных. Если бы ты писал это на C, у тебя было бы что-то вроде массива структур Point pts[N] плюс отдельный массив, описывающий, как эти точки собираются в грани. Houdini формализует это разделение в четыре уровня, и именно с них начинается вся процедурная логика.

Уровень Что хранит Аналогия в C Кардинальность
Point позицию и прочие данные точки, обязателен @P struct Point { vec3 P; ... }; Point pts[N]; N уникальных точек
Primitive грань/кривую/объём, список индексов точек struct Prim { int ptIdx[]; }; — как index buffer M примитивов
Vertex связь primitive↔point + свои данные (UV, нормаль на угол) index buffer + per-corner payload K вершин, обычно K > N
Detail глобальные данные всей геометрии, один экземпляр глобальная переменная/структура ровно 1

Ключевой момент, который ломает интуицию «point = vertex»: точка — это уникальная позиция в пространстве, а вершина — это конкретное использование точки внутри конкретного примитива. Угол куба — это одна точка, но три вершины (по одной на каждую примыкающую грань), потому что на каждой грани у этого угла может быть своя нормаль или UV.

graph TD
    D[Detail: 1 экземпляр, глобальные атрибуты] --> P1[Primitive 1]
    D --> P2[Primitive 2]
    P1 --> V1[Vertex]
    P1 --> V2[Vertex]
    V1 --> PT1[Point]
    V2 --> PT2[Point]
    P2 --> V3[Vertex]
    V3 --> PT1
Иерархия геометрии — detail владеет примитивами, примитивы ссылаются на вершины, вершины ссылаются на общие точки.

Количество элементов всегда выводится из параметров генератора: например, Grid с сеткой 10×10 точек даёт 100 точек и 9×9 = 81 примитив-квад. Меняешь параметры узла — меняются массивы данных на выходе.

Geometry Spreadsheet — это не «просмотрщик», а дебаггер данных: у него отдельные вкладки Points / Primitives / Vertices / Detail, и в каждой строка = элемент, столбец = атрибут. Это твой printf для геометрии, только с фильтрами и сортировкой.

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

Задача: понять, почему у стандартного Box SOP 8 точек, но 24 вершины.

Рассуждение: у куба 6 граней (примитивов), каждая — квад из 4 углов. Каждый угол куба физически общий для 3 граней (один @P), но каждая грань видит его как свою собственную вершину, потому что нормаль этой вершины смотрит в направлении данной грани, а не «усреднённо». Поэтому: 6 примитивов × 4 вершины = 24 вершины, но уникальных позиций — только 8. В Geometry Spreadsheet это видно буквально: на вкладке Points — 8 строк, на вкладке Vertices — 24 строки, и у каждой вершины есть ссылка на индекс одной из 8 точек.

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

Создай Box SOP, подключи к нему Geometry Spreadsheet. Пройди по вкладкам Points, Primitives, Vertices, Detail и запиши количество строк в каждой. Затем добавь Subdivide SOP после Box и, глядя на Geometry Spreadsheet, предположи, во сколько раз вырастет число точек и примитивов, прежде чем нажать пересчёт.

Ожидаемый результат: 8 points / 6 primitives / 24 vertices / 1 detail на Box; после Subdivide — заметно больше points и primitives, но структура (4 уровня) та же.

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

Ты можешь объяснить без подсказки, почему число вершин у куба (24) не равно числу точек (8), используя слова «точка — уникальная позиция», «вершина — использование точки в примитиве», и без труда переключаешься между вкладками Points / Primitives / Vertices / Detail.

Вывод

Геометрия = 4 плоские таблицы (point/primitive/vertex/detail), связанные индексами, а не одна структура «меш». Geometry Spreadsheet — первый инструмент, который открываешь при любой непонятной ситуации.

AI-generated · source-grounded review

🛡 Fact-checked: 2 risky claims verified · 2 removed · confidence: high · figures: 1
[verified] Box SOP: 8 точек, 6 примитивов, 24 вершины, 1 detail
Согласуется с четырёхуровневой моделью геометрии (points/prims/vertices/detail) из базы; 6 квадов × 4 угла = 24 вершины при 8 уникальных позициях
[softened] Grid по умолчанию 10×10 = 100 точек и 9×9 = 81 примитив
База не фиксирует значения по умолчанию; оставлена только арифметика 'сетка 10×10 точек → 100 точек и 81 квад'
[removed] На вкладке Detail у Grid есть атрибут 'topology' со значением 'quads'
Такой detail-атрибут не подтверждается базой знаний
[verified] Иерархия в mermaid: detail → primitives → vertices → points, одна точка используется несколькими вершинами
Соответствует описанию уровней геометрии и связи vertex↔point в базе
[removed] Утверждение версии B о detail-атрибуте 'topology' со значением 'quads' у Grid — такого атрибута база знаний не подтверждает
[removed] Формулировка 'по умолчанию у Grid 10x10' смягчена до 'Grid с сеткой 10×10 точек', чтобы не утверждать конкретные значения по умолчанию

A second opinion has not checked this lesson.

Key concepts: геометрия-как-данные points/primitives/vertices/detail Geometry Spreadsheet массив структур
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. Почему количество вершин (vertices) может быть больше количества точек (points) у одной и той же геометрии?
2. Сколько экземпляров detail-данных существует у одного объекта геометрии?
3. Grid с сеткой 3×3 точки: сколько у него точек и полигональных примитивов?
4. Какой инструмент является основным для чтения и отладки данных геометрии в Houdini?
On your own course, these are marked as you answer