Реконструкция поверхности из трехмерных треугольных сеток

У меня есть 3D-модель, которая состоит из трехмерных треугольных сеток. Я хочу разделить сетки на разные группы. Каждая группа представляет поверхность, такую ​​как плоская грань, цилиндрическая поверхность. Это что-то вроде распознавания / реконструкции поверхности.

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

Есть ли библиотека, отвечающая моим требованиям?

2 ответа

Если вы хотите много работать с сеткой, то библиотека облаков точек - хорошая идея, но я бы также предложил CGAL: http://www.cgal.org/ для большего количества алгоритмов и множества структур, нацеленных на сетки.

Наконец, проблему, которую вы описываете, легче всего решить самостоятельно:

  1. перечислить все вершины
  2. перечислить все полигоны
  3. создайте массив целых с размером числа вершин в вашей "большой" сетке, инициализируйте с 0.
  4. создайте массив целых чисел с размером числа полигонов в вашей "большой" сетке, инициализируйте с 0.
  5. инициализировать счетчик до 0
  6. для каждого многоугольника в вашей сетке посмотрите на его вершины и значение, которое у каждого есть в массиве. если значения для каждой вершины равны нулю, увеличьте счетчик и присвойте каждому из значений в массиве вершин и массиве полигонов соответственно. если нет, перемаркируйте все вершины и многоугольники с большим числом к ​​наименьшему ненулевому числу.

Перемаркировка может быть выполнена быстро с помощью справочной таблицы. Это может избавить вас от множества проблем, связанных с вашим кодом, в какой-то библиотеке, которая вас не особо интересует.

Вы должны взглянуть на библиотеку PCL, она имеет все эти функции и многое другое: http://pointclouds.org/

Другие вопросы по тегам