Триангуляция поверхности с помощью vtk по точкам И нормалям

У меня есть набор точек в 3D, которые лежат на поверхности, и у меня также есть нормали в каждой точке. Я хотел бы создать триангуляцию поверхности с этой информацией. Кроме того, я мог бы указать алгоритму использовать точки, лежащие на границе, если это необходимо.

Итак, информации у меня совсем немного: * точки * нормали * граница

Как мне триангулировать поверхность с этой информацией, используя vtk?

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

Я хотел бы, чтобы ответ был сформулирован с точки зрения того, какую функцию vtk использовать и, если доступны (и это было бы здорово), примеры использования этой функции.

Огромное спасибо заранее.


person Alejandro    schedule 27.12.2012    source источник
comment
Вы уже рассматривали возможность настройки неявной функции, например. радиальный базис, а затем использовать марширующие кубы для триангуляции поверхности?   -  person André    schedule 28.12.2012
comment
Я никогда не использовал vtk, поэтому я действительно не знаю, будет ли это правильным подходом. У меня есть набор точек и нормалей поверхности в этих местах. Мой вопрос в том, могу ли я использовать vtk для этого и, если возможно, дать некоторые подробности (например, какой метод использовать). Если получу положительный ответ, то узнаю подробности.   -  person Alejandro    schedule 28.12.2012


Ответы (3)


Вы можете использовать фильтр vtkSurfaceReconstruction для создания поверхности из набора трехмерных точки.

person waxeye    schedule 17.04.2013

Вы можете попробовать библиотеку облаков точек

Библиотека облака точек

person DannyK    schedule 27.12.2012
comment
Спасибо. Я посмотрю на это. Не знаете ли вы, могу ли я с помощью этой библиотеки вводить свои нормали? Опять же, мне не нужно делать реконструкцию поверхности (по крайней мере, я так думаю). - person Alejandro; 28.12.2012
comment
Вчера попробовал PCL. Я обнаружил, что он отлично работает для небольших наборов данных, для которых точки распределены изотропно (это означает, что точка имеет одинаковые шансы найти соседа во всех направлениях). Мои наборы данных большие (по крайней мере, для PCL), около 200 тысяч точек и легко могут достигать 1 миллиона точек. Кроме того, мои точки распределены не изотропно, а сгруппированы в регионах (и в направлении), где требуется больше деталей. Поигравшись с ним некоторое время, PCL не работал в этих случаях. - person Alejandro; 03.01.2013

Просто 3D-точек было бы достаточно. Поскольку вы знаете, что ваша поверхность гладкая, вы можете выполнить триангуляцию Делоне по точкам (vtkDelaunay3D) и применить фильтр подразделения для сглаживания (vtkButterflySubdivisionFilter).

триангуляция Делоне3D

person Sunil Mathew    schedule 28.09.2013