удалить внутреннюю информацию при объединении двух 3D-объектов

Привет, я сейчас работаю над проектом, в котором нам нужно объединить несколько трехмерных объектов. Так, например, поместите их рядом друг с другом, и иногда они также пересекаются.

Я ищу алгоритм / библиотеку или любую идею, которая уменьшила бы этот новый объединенный объект, чтобы он состоял только из внешних граней. (Наши 3D-объекты в настоящее время являются файлами.stl, но мы не привязаны к этому формату)

Мы пробовали объединить эти объекты с помощью numpy-stl, но похоже, что в этой библиотеке нет оптимизации, которая могла бы помочь с этой проблемой. Мы также пробовали использовать логическое слияние из pymesh, но это занимает очень много времени с подробными объектами.

Мы хотим потерять всю информацию, которая находится внутри объекта, и сохранить только ту информацию, которая находится снаружи. Так, например, если вы поместите этот комбинированный трехмерный объект в воду, нам нужны только лица, которых будет касаться вода.

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

Мы ценим каждый ответ:)

1 ответ

LibIGL, похоже, имеет привязки к Python. Я бы посоветовал установить порог окклюзии окружающей среды для каждого аспекта. Например, можно удалить все фасеты со значением окклюзии выше 0,8.

https://libigl.github.io/libigl-python-bindings/igl_docs/

Входными данными для этой функции являются вершины, индексирование фасетов в вершинах, положение центроидов фасетов и нормали для каждого фасета. Результатом является окружающая окклюзия для каждого фасета, которая имеет значение от 0 до 1. Значение 0 означает, что фасет полностью виден, а значение 1 означает, что он полностью затенен.

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