2015-12-05 2 views
1

Я уверен, что средний пользователь vtk уже видел результаты, подобные следующим более одного раза.Как отремонтировать сломанную поверхность в vtk?

Broken surface of a 3D model

Мой вопрос (ы): Как бы вы ремонт такой испорченной поверхности? И что, как правило, является причиной таких целостностей на поверхности?

Мой конкретный пример был создан с помощью vtkBooleanOperationPolyDataFilter и vtkAppendPolyData, но я видел такие сломанные, вырожденные поверхности также в разных случаях.

Большое спасибо за предложения.

ответ

0

В случае представленного мною выше, сломанный поверхность была вызвана проблемами с vtkBooleanOperationPolyDataFilter. В соответствии с потоком this алгоритм был улучшен и был (или скоро будет) доступен в более новой версии vtk.

Мне также необходимо принять тот факт, что нет общего рецепта для восстановления после таких сбоев в vtk и, как указывает Mirni, связаны с данными.

2

Это, скорее всего, связано с данными. Предложения:

  • Многие фильтры vtk имеют предположения о входах, и я предполагаю, что ваши входы нарушили некоторые из этих предположений. Например. vtkBooleanOperationPolyDataFilter ожидает, что входы будут многообразиями, иначе «неожиданные результаты могут быть получены». Что вы кормите в булевом фильтре? Являются ли эти входы многообразными?
  • Некоторые другие фильтры имеют гораздо более строгие требования и ожидают только триангулированных поверхностей; в изображении вы отправили I думаю Я вижу квадрациклы. Попробуйте запустить входы через vtkTriangleFilter в начале вашего конвейера обработки, чтобы разделить все полисы на треугольники.

  • Осмотрите второй вывод vtkBooleanOperationPolyDataFilter, который содержит пересечение как множество полилиний, для любых намеков на то, что может быть причиной этого.

  • Попробуйте сохранить промежуточные результаты в файл и ожидать их на разных этапах вашего конвейера обработки.

Если ничего из этого не приведет вас к причине проблемы, пожалуйста, напишите входы, код и ВТК версию и системы, выполняющихся его, так что мы можем воспроизвести результаты.

НТН,

Миро

+0

@Miro. Спасибо за предложения. Входные данные многообразны, я использую vtkTriangleFilter, и я также проверил второй вывод vtkBooleanOperationPolyDataFilter. На данный момент я считаю, что это (возможно, числовая) ошибка в vtkBooleanOperationPoyDataFilter, поскольку она появляется только иногда. Я разместил проблему [здесь] (http://vtk.1045678.n5.nabble.com/Broken-surfaces-for-vtkBooleanOperationPolyDataFilter-Bug-td5735413.html) в списке рассылки vtk, чтобы сообщить разработчику об этом Это. – normanius

+0

@ Miro. Я надеялся получить общий рецепт о том, как исправить такие сломанные поверхности апостериор. Для некоторых инструментов для этой цели есть функция «mesh doctor», и я задавался вопросом, как это можно сделать в vtk. – normanius

+0

Существует vtkFillHolesFilter, который может сшить слезы, но ваш пробег может отличаться. Я заметил в коде, опубликованном в списке рассылки, что на самом деле вы не используете trianglefilter в работе2, поэтому, возможно, стоит подключить sourceTriangles вместо источника. Кроме того, вы можете немного уменьшить или увеличить допуск - в зависимости от масштаба ваших данных это может иметь значение. – mirni

Смежные вопросы