Point2Part: как разобрать 3D-модель на части по точкам
Указать точкой на ножку стула и получить её отдельным мешем, готовым к вращению, печати или анимации. До сих пор разбор 3D-объекта на части оставался ручной работой художника или давал детали с наложениями и дырами. Вышедший 29 сентября препринт Point2Part (arXiv:2609.38180) решает задачу иначе: модель разбивает всю форму целиком, назначая каждую точку объёма ровно одной детали.
Сложность здесь не в генерации красивой детали, а в согласованности. Если разбирать велосипед, откручивая узлы по одному, легко получить педаль, врезающуюся в раму, или потерянное крепление. Ровно этим страдают современные модели: одни генерируют каждую часть независимо и получают взаимные наложения, другие сегментируют поверхность и оставляют дыры на стыках.
Что такое Point2Part
Point2Part это promptable-модель для 3D-декомпозиции: она разбивает всю форму на части, которые не пересекаются между собой и вместе покрывают весь объём объекта. Пользователь задаёт нужные детали 3D-точками-промптами, по одной на деталь, а модель назначает каждую точку объёма одной части. Авторы называют результат exclusive и exhaustive разбиением: детали не делят объём друг с другом и не оставляют пустот.
Почему части наслаиваются и теряются
Подходы к 3D-частям делятся на два лагеря, и обоим не хватает взгляда на объект целиком. Генераторы частей вроде CubePart, OmniPart и PartPacker декодируют каждую деталь отдельно, иногда с cross-attention между частями, но не отвечают на главный вопрос: складываются ли результаты в целый объект. Один и тот же объём может достаться сразу двум деталям (penetration, взаимное проникновение) или не достаться ни одной, оставив дыру.
В качественных сравнениях авторы показывают набор типичных провалов конкурентов: где-то детали врезаются друг в друга, где-то теряется крепление, где-то две детали склеиваются в одну. У Point2Part на тех же объектах разбиение совпадает с эталонной разметкой.
Сегментаторы вроде Point-SAM и P3-SAM идут от поверхности меша: пользователь ставит точки, модель предсказывает маску для каждой из них. Управление получается прямым, но маски независимы, их приходится чинить постобработкой, и гарантий полноты покрытия здесь тоже нет.
Управлять разбиением неудобно и в обоих случаях: число частей задаётся заранее, желаемая деталь описывается текстом или 2D-маской, а прямого 3D-управления либо нет, либо оно ограничено.
Как устроено совместное разбиение
Авторы формулируют декомпозицию как совместное разбиение всей формы: каждая точка объёма должна быть отнесена ровно к одной из частей, заданных промптами. Модель строят на предобученном генеративном бэкбоне Hunyuan3D 2.1 и собирают из трёх блоков.
Shape latent backbone кодирует изображение или меш в латент, описывающий геометрию всего объекта. Prompt encoder превращает каждую 3D-точку в токен части, причём токен через cross-attention смотрит на латент формы. Part decoder затем совместно оценивает весь объём против всех токенов частей: для каждой точки пространства он считает скор каждой детали, и точка достаётся той, чей скор максимален. Никакого независимого декодирования, одно совместное решение на всю форму.
Границы частей уточняются в два прохода: сначала по грубой сетке 128³, затем по сетке 512³. Многоуровневое уточнение исправляет мелкие ошибки на швах между деталями. Дальше marching cubes превращает разбиение в замкнутые меши, а в задаче сегментации каждая грань исходного меша получает метку своей части.
За счёт общего латента одна архитектура закрывает три сценария: генерацию частей из изображения, генерацию частей из меша и сегментацию поверхности. Число частей не задаётся гиперпараметром: сколько точек поставил, столько деталей и получишь. Нужна ещё одна деталь, добавьте точку.
Чему и как учили модель
Обучение шло на HY3D-Bench, публичном датасете из примерно 240 тысяч ассетов с разметкой частей. Четыре A100 по 80 ГБ, три дня, батч 256 и 10 эпох. На каждой форме сэмплировали 20 480 точек поверхности, к ним добавляли точки у швов между частями и разреженную сетку по остальному объёму: большинство ячеек сетки лежат далеко от поверхностей, где ошибка и так нулевая.
Лосс состоит из трёх частей: классификация точек с focal loss, dice для формы деталей и consistency loss. Последний устроен просто: на одну форму подают два разных набора промпт-точек, и разбиения обязаны совпасть. Вес у consistency небольшой, 0.5, но без него границы частей начинают зависеть от того, куда именно попали точки.
Промпт-точек на деталь в обучении от одной до четырёх, и это не косметика. Одна точка сообщает, где деталь находится, дополнительные уточняют, насколько она протяжённая. С ростом числа точек улучшаются все метрики: на бэкбоне HY3D 2.1 переход с одной точки на четыре поднимает mIoU сегментации с 69.8 до 74.8.
Что показывают бенчмарки
Оценка идёт на PartObjaverse-Tiny, стандартном бенчмарке для 3D-декомпозиции: 200 мешей с разметкой на уровне граней. Метрик несколько: качество частей (pCD и pF1 для сопоставленных деталей), геометрия целого (CD и F1 для объединения частей), совместимость деталей (pen% для взаимного проникновения и wt% для доли закрытых частей) плюс время инференса на одной A100. Авторы честно оговаривают, что сравнение proof-of-concept: часть конкурентов обучалась на закрытых данных, недоступных для воспроизведения.
На входе-меше Point2Part даёт pCD 2.73 против 4.53 у X-Part, 4.71 у CubePart и 5.29 у HoloPart. Точность поверхностей деталей pF1@.05 составляет 84.4 против от 72.5 до 73.9 у всех конкурентов. Главное в другом: взаимное проникновение pen% падает до 0.06, тогда как у прошлых методов это от 1.01 до 3.05. Разница на порядок и больше, и именно она отвечает на вопрос, можно ли считать результат настоящей разборкой объекта.
Показателен и столбец wt%: у Point2Part все 100% деталей закрыты, у HoloPart закрыта лишь треть (32.6%). Незакрытая деталь не имеет внутреннего объёма, её нельзя отправить в слайсер для 3D-печати или в физический симулятор как тело. Части Point2Part закрыты по построению, потому что каждая точка объёма назначена единственной детали.
Одна строка в таблице выглядит в пользу конкурентов: CD объединённой формы у Point2Part 1.56 против 1.19 у X-Part. Точность целого ограничена реконструкцией бэкбона, и авторы этого не скрывают: детали не пересекаются, а вот сам объект наследует качество генеративной модели, на которой построен пайплайн.
Из изображения картина похожая: pCD 5.34 против 6.43 у OmniPart и 12.75 у PartCrafter, pF1@.05 равен 68.6 против 60.8 у ближайшего конкурента, проникновение 0.01%. Инференс занимает 24.4 секунды для меша и 37.8 для изображения: это самый быстрый мешевый режим в таблице, а на изображениях быстрее только PartPacker (26.7 секунды). Все части декодируются одним проходом, и это главная причина скорости.
В сегментации Point2Part обходит PartField по mIoU скромно, 69.80 против 69.10, зато выигрывает по точности границ: pF1 на строгом пороге 0.01 равен 78.3 против 63.4 у лучшего из конкурентов, а pCD снижается до 2.10 против 3.16. По времени сегментация занимает 0.3 секунды, столько же у S²AM3D и заметно быстрее остальных.
Пороги pF1 стоит читать так: на мягком пороге 0.05 достаточно попасть в область детали, на строгом 0.01 граница должна совпадать с эталонной. В сегментации разрыв растёт именно на строгом пороге, 78.3 против 63.4 у лучшего конкурента, а аккуратные границы и есть то, что делает деталь пригодной для правки, а не просто узнаваемой.
Абляции показывают, откуда берётся качество. Убрать prompt encoder больнее всего: pCD растёт с 2.73 до 4.24. Отказ от consistency loss поднимает его до 3.11, отказ от уточнения до 2.86, причём страдает в первую очередь точность границ. Самый говорящий эксперимент последний: если заменить совместное назначение на независимую бинарную классификацию для каждой части, геометрия почти не меняется (pCD 2.90), а проникновение деталей взлетает с 0.06% до 1.23%, в двадцать раз. Разбиение разбиением делает именно совместное решение, а не сам декодер.
Где это применимо
Разница между набором красивых деталей и настоящей разборкой объекта видна на конкретных сценариях. В 3D-редактировании можно заменить сиденье стула, не переделывая ножки. В анимации артикулированных объектов дверцы открываются и закрываются, потому что петли и полотна не пересекаются в объёме. В 3D-печати каждая деталь закрыта и печатается отдельно. В симуляторах и у робототехников появляется возможность двигать и снимать части как физические тела.
Для контент-пайплайнов это ещё и про автоматизацию: сегодня ассеты для игр и кино разбирают на части вручную, потому что автоматика ошибается на стыках. Когда разбиение гарантированно полное и без пересечений по построению, разбор можно ставить на конвейер: сгенерировать объект целиком, а затем вытаскивать из него нужные детали отдельными мешами.
Это продолжение заметного тренда: 3D-генерация движется от целых объектов к редактируемым структурам. Сначала речь шла о том, чтобы получить объект из картинки или текста, теперь важнее, что с этим объектом можно делать дальше: разбирать, собирать, менять отдельные узлы.
Ограничения
Метод не универсален. Тонкие структуры и большие открытые поверхности даются плохо: у них нет чётко очерченного объёма, а предобученный бэкбон не всегда аккуратно их реконструирует. Часть остаточного проникновения в таблицах объясняется интерполяцией marching cubes на стыках деталей внутри одной ячейки. Обе проблемы авторы относят к бэкбону и считают инженерными, а не концептуальными. Код и модели обещают открыть.
Часто задаваемые вопросы
Чем Point2Part отличается от обычной 3D-сегментации?
Сегментация делит поверхность меша на маски для каждой точки-промпта, и маски не обязаны складываться в непротиворечивую картину. Point2Part работает с объёмом: каждая точка пространства внутри объекта относится ровно к одной части, поэтому разбиение покрывает форму целиком и без пересечений. Бонусом та же модель генерирует закрытые меши деталей, а не только метки на поверхности.
Сколько точек нужно ставить на одну деталь?
Одна точка уже даёт рабочее разбиение: она указывает, где деталь находится. Больше точек уточняют её протяжённость, и метрики растут: на бэкбоне HY3D 2.1 mIoU сегментации поднимается с 69.8 при одной точке до 74.8 при четырёх. В обучении модель видела от одной до четырёх промпт-точек на деталь.
Можно ли указывать части текстом или масками?
Нет, управление идёт только 3D-точками. Текстовые описания и 2D-маски используют конкурирующие методы; авторы Point2Part выбрали точки, потому что те дают однозначное управление прямо в объёме: точка на детали не допускает разночтений, возможных у текста или плоской маски.
Доступен ли код Point2Part?
Пока нет. Препринт вышел 29 сентября 2026 года, авторы пишут, что код и модели будут открыты, но точных сроков не называют. Обычно релиз таких работ занимает от нескольких недель до пары месяцев, так что следить стоит за обновлениями страницы arXiv:2609.38180.
Итог
Point2Part переводит 3D-декомпозицию из набора независимых предсказаний в одну совместную задачу: каждая точка объёма принадлежит ровно одной части, поэтому разбиение выходит полным и без наложений по построению. Взаимное проникновение деталей падает на порядок, все части закрыты, а единая архитектура закрывает генерацию из изображения, из меша и сегментацию. Если вы работаете с 3D, вопрос уже не в том, разберётся ли модель на детали, а в том, насколько быстро такие инструменты дойдут до вашего пайплайна. Препринт лежит на arXiv.