Подразделение поверхности меша Doo-Sabin представляет собой тип подразделения, основанный на обобщении би-квадратичных однородных B-сплайнов, в отличие от более часто используемого подразделения Catmull-Clark, которое основана на обобщенных би-кубических однородных B-сплайнов. Создать подразделение меша Doo-Sabin в Blender Geometry Nodes можно с использованием всего двух нод.
Добавим в сцену куб (shift + a – Mesh – Cube), назначим ему модификатор Geometry Nodes и создадим начальное дерево нод.
Чуть усложним форму меша для наглядности, экструдировав 3 грани куба в разных направлениях (выделить грань – e – 2 – ввод).
Согласно алгоритму Doo-Sabin, подразделение должно создавать новую грань на каждом отдельном вертексе, новую грань на каждом отдельном ребре и новую грань на каждой отдельной грани.
Получить нужный результат мы можем при помощи нодов Subdivide Mesh и Dual Mesh.
Добавим в главную ветку нодового дерева последовательно два нода: Subdivide Mesh (shift + a – Mesh – Operators – Subdivide Mesh) и Dual Mesh (shift + a – Mesh – Operators – Dual Mesh).
Эта простая комбинация нод делает всю нужную работу – полученный нами результат соответствует алгоритму.
Для того чтобы сделать несколько уровней подразделения меша, выделим оба нода Subdivide Mesh и Dual Mesh и нажатием комбинации клавиш Ctrl + g соберем их в группу. Назовем ее “Doo-Sabin”.
Теперь, если нам нужно сделать подразделение Doo-Sabin на 2 уровня, просто включим созданную нами нодовую группу последовательно два раза в главную ветку геометрии.
При необходимости подразделить меш большее число раз, просто последовательно добавьте нужное количество нодовых групп.