Могу ли я создать облако точек из сетки?

Я пытаюсь сгенерировать данные облака точек из сетки, такой как (.obj) файл Maya. Но я мог найти только противоположный случай, облако точек для создания сетки в Интернете. Есть ли способ создать "данные облака точек из сетки" с помощью 3D-инструментов, таких как MeshLab или Maya? (Я предпочитаю использовать MeshLab)

Благодарю.:)

6 ответов

Решение

Насколько мне известно, библиотека Point Cloud Library содержит несколько различных инструментов командной строки для преобразования сеток в облака точек путем рендеринга объекта в точки из набора видов и объединения рендеринга. например, pcl_mesh2pcd, pcl_mesh_sampling

Бесплатный проект CloudCompare с открытым исходным кодом может загружать сетки OBJ, а затем генерировать облака точек на сетке, которые затем можно сохранять в различных форматах.

Преобразование триангулированной сетки в облако точек означает, что вы хотите сделать выборку точек на этой поверхности. В зависимости от требуемого распределения (например, Uniform Montecarlo, Poisson Disk и т. Д.) Существуют разные алгоритмы с совершенно разными результатами. Например, если вам нужна хорошо расположенная случайная точка, вам нужно распределение пуассоновского диска. Вы можете протестировать некоторые из этих алгоритмов внутри meshlab или непосредственно в браузере по http://www.meshlabjs.net/ (просто загрузите сетку и введите "sampling" в поле поиска).

Вы можете найти реализацию с открытым исходным кодом на С ++ внутри библиотеки vcg для обработки мешей ( http://www.vcglib.net/) и описание этих алгоритмов (довольно просто реализовать) в:

Эффективная и гибкая выборка с характеристиками синего шума треугольных ячеек
М Корсини, П Cignoni, R Скопиньо
IEEE Сделки по визуализации и компьютерной графике 18 (6), 914-924
http://vcg.isti.cnr.it/Publications/2012/CCS12/

Интересно, что в Интернете нет однозначных ответов на этот вопрос.

Преобразование из сетки в облако точек не похоже на заклинивание вершин сетки в облако точек! Сетка - это разреженное представление облака точек. Поэтому, чтобы преобразовать сетку в облако точек, вам необходимо выбрать точки на поверхности сетки. У PCL есть утилита для этого, которая называется pcl_mesh_sampling, Исходный код находится здесь.

В основном, образцы методов N равномерно указывает от поверхности сетки с помощью VTK. Это очень эффективно, и вы получите облака точек с любым количеством точек.

Я хотел сделать то же самое, но предпочел что-то, что можно легко сделать в Python. Я нашел этот пост действительно полезным. Он использует библиотеку Python под названием pyntcloud. Он загружает сетку в формате.ply и случайным образом выбирает из нее указанное количество точек, так что она покрывает поверхность более или менее равномерным образом. Это может быть легко приспособлено для других форматов. Я сделал это для файлов.off, и это работает хорошо.

Я искал похожую проблему. Мне нужно было спроектировать модель сетки в разных позах, чтобы генерировать данные pointcloud.

И тогда я нашел следующий проект в github. Если кто-то хочет генерировать облака точек (.pcd) из объекта сетки (.obj) в разных позах, это поможет.

Это будет имитировать pointcloud в формате kinect для данного объекта сетки.

https://github.com/jbohg/render_kinect

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