Алгоритм Catmull-Clark в Subdivision Surface используется для создания гладких поверхностей путём моделирования подразделения поверхности. github.com ru.wikipedia.org
Процесс включает несколько шагов: github.com
- Начинают с сетки произвольного многогранника. github.com Все вершины этой сетки называют исходными точками. github.com
- Для каждого грани добавляют точку грани. github.com Каждая точка грани становится средней из всех исходных точек для соответствующей грани. github.com
- Для каждого ребра добавляют точку ребра. github.com Каждая точка ребра становится средней из двух соседних точек грани и двух исходных точек конца ребра. github.com
- Для каждой точки грани добавляют ребро для каждого ребра грани, соединяя точку грани с каждой точкой ребра для грани. github.com
- Для каждой исходной точки P берут среднюю точку F из всех недавно созданных точек грани для граней, касающихся P, и среднюю точку R из всех средних точек ребра для ребер, касающихся P. github.com Каждая средняя точка ребра становится средней из двух его конечных вершин. github.com
- Каждую исходную точку переносят в точку, которая является барицентром точек P, R и F с весами (n − 3), 2 и 1. github.com ru.wikipedia.org
- Каждую новую точку соединяют с новыми точками рёбер всех исходных рёбер, инцидентных исходной вершине. ru.wikipedia.org
- Определяют новые грани, заключённые новыми рёбрами. ru.wikipedia.org
В результате получается сетка, состоящая только из четырёхугольников, которые не находятся в одной плоскости. ru.wikipedia.org Новая сетка обычно выглядит более гладко, чем исходная. ru.wikipedia.org Повторное подразбиение приводит к ещё более гладкой сетке. ru.wikipedia.org