Subdivision — это метод сглаживания трехмерной поверхности каркаса модели, когда многоугольники разделяют на более мелкие элементы. Сглаживание изменяет положение вершин (точек в пространстве, задающих координаты объектов) полигонов (многоугольников). Все примитивные полигоны, содержащиеся в каркасе, делятся на четырехугольники, создавая новые вершины на основе средних значений. Так же происходит корректировка предыдущих вершин исходного многоугольника.

Алгоритм Катмулла-Кларка, который используется в методах Subdivision во многих программах для работы с трехмерной графикой, способен сглаживать куб до сферы. 

Эта техника подразделения полигонов использовалась в таких анимационных фильмах, как A Bug’s Life, Finding Nemo и The Incredibles. Применяется алгоритм для рендеринга (визуализации) любых проектов от науки до игр и анимационных фильмов.

Что делает полигональную сетку правильной?

Subdivision позволяет сделать полигональную сетку правильной (оптимизированной), но это далеко не единственный метод. Есть рекомендации, которым следуют профессионалы. Они сводят к минимуму визуальные дефекты конечных моделей при рендеринге. Вот некоторые из них:

  1. Отсутствие треугольников. Они — частая причина странных сбоев сглаживания, поэтому по возможности их следует избегать. Однако полностью не использовать их просто невозможно — сетка может потребовать некоторое количество треугольных полигонов. Их ставят на относительно плоской поверхности либо «прячут» в плотно закрытых участках сетки.
  2. Отказ от N-угольников. Они скрываются с использованием тех же методов. Обычно люди стараются избегать многоугольников с 5 и более вершинами из-за того, что их сложнее моделировать.
  3. Использование четырехугольников. Создание сетки из четырехугольников — простой способ избежать визуальных искажений при сглаживании и рендеринге. Ее легче анимировать.

Особенности техники Subdivision

Subdivision представляет собой метод сглаживания сетки, когда добавляют больше полигонов и вершин, но сохраняют при этом начальную форму. Четырехугольник будет разделен на четыре многоугольника, которые не выйдут за контур полигональной сетки.

Метод Subdivision

3D модель пружины до и после применения метода Subdivision

Можно создавать сетки с заданным количеством полигонов, прежде чем использовать Subdivision, а потом сделать модель настолько гладкой, насколько это визуально необходимо.

Метод Subdivision, как и вычисление нормалей вершин (векторов, перпендикулярных плоскости), неидеален. При разделении треугольники становятся E-полюсами, а N-угольники — N-полюсами. Полюса — вершины, в которых количество ребер, исходящих из них, не равно четырем. 

Обратное тоже верно. E-полюса становятся треугольниками, а N-полюса — N-угольниками. Из-за этого четырехугольники — единственное, что заставляет Subdivision работать практически идеально. Именно полигональная сетка из четырехугольников позволит алгоритму избежать дефектов при визуализации модели. 

Меню