Редактирование сегментации полигональной сетки
Часто полигональные сетки моделей, являясь результатом 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.