Реконструкция поверхности из трехмерных треугольных сеток
У меня есть 3D-модель, которая состоит из трехмерных треугольных сеток. Я хочу разделить сетки на разные группы. Каждая группа представляет поверхность, такую как плоская грань, цилиндрическая поверхность. Это что-то вроде распознавания / реконструкции поверхности.
Вход представляет собой набор трехмерных треугольных сеток. Результатом является сегментация сетки на поверхность.
Есть ли библиотека, отвечающая моим требованиям?
2 ответа
Если вы хотите много работать с сеткой, то библиотека облаков точек - хорошая идея, но я бы также предложил CGAL: http://www.cgal.org/ для большего количества алгоритмов и множества структур, нацеленных на сетки.
Наконец, проблему, которую вы описываете, легче всего решить самостоятельно:
- перечислить все вершины
- перечислить все полигоны
- создайте массив целых с размером числа вершин в вашей "большой" сетке, инициализируйте с 0.
- создайте массив целых чисел с размером числа полигонов в вашей "большой" сетке, инициализируйте с 0.
- инициализировать счетчик до 0
- для каждого многоугольника в вашей сетке посмотрите на его вершины и значение, которое у каждого есть в массиве. если значения для каждой вершины равны нулю, увеличьте счетчик и присвойте каждому из значений в массиве вершин и массиве полигонов соответственно. если нет, перемаркируйте все вершины и многоугольники с большим числом к наименьшему ненулевому числу.
Перемаркировка может быть выполнена быстро с помощью справочной таблицы. Это может избавить вас от множества проблем, связанных с вашим кодом, в какой-то библиотеке, которая вас не особо интересует.
Вы должны взглянуть на библиотеку PCL, она имеет все эти функции и многое другое: http://pointclouds.org/