Редактирование сегментации полигональной сетки

Часто полигональные сетки моделей, являясь результатом 3D-сканирования, имеют сложное внутреннее устройство с наличием «шумов» – случайных выбросов точек за пределы габаритов грани. Преобразование таких сеток предполагает более плотное интерактивное взаимодействие с пользователем, так как автоматическое распознавание затруднено. Для коррекции результатов сегментации предусмотрены несколько инструментов.

Метод

MbResultType SegmentMesh( bool createSurfaces = true );

выполняет сегментирование заданной полигональной сетки. Входным параметром метода является:

  • createSurfaces – флаг создания поверхностей на сегментах.

При удачной работе алгоритма метод возвращает значение rt_Success, в противном случае метод возвращает код ошибки из перечисления MbResultType.

Метод :

void UniteSegments( size_t firstSegmentIdx,
                    size_t secondSegmentIdx );

объединяет два сегмента в текущей сегментации полигональной сетки. Входными параметрами метода являются:

  • firstSegmentIdx – индекс первого сегмента для объединения;

  • secondSegmentIdx – индекс второго сегмента для объединения.

Результат объединения доступен через коллекцию, возвращаемую методом GetSegmentedMesh().

Метод

MbResultType SegmentMeshBySeparators( const std::vector<std::vector<uint>> & separators );

выполняет сегментацию полигональной сетки по разделителям сегментов. Входным параметром метода является:

  • separators – массив разделителей, каждый из которых содержит путь по вершинам сетки, рёбра которого разделяют сегменты.

При удачной работе алгоритма метод возвращает значение rt_Success, в противном случае метод возвращает код ошибки из перечисления MbResultType.