Подтвердить что ты не робот

Хорошая 3D-сетчатая библиотека

Я ищу хорошую библиотеку 3D Mesh

  • Должна иметь возможность читать популярные форматы (OFF, OBJ...)
  • Должен поддерживать как структуру с половинным краем, так и суп треугольника
  • Должно быть толерантным к ошибкам и незаконным сеткам.
  • Основные геометрические операции - пересечения, нормальный расчет и т.д.
  • Самое главное - не должно быть свернуто с бесконечными шаблонами и иерархиями наследования.

Я пробовал как CGAL, так и OpenMesh, но оба они терпят неудачу в последней точке.

В частности, CGAL, который невозможно выполнить даже с помощью самых современных инструментов анализа кода.

До сих пор я серьезно подумываю о том, чтобы вытащить свои собственные.

Мое предпочтение - С++, но я открыт для других параметров.

4b9b3361

Ответ 1

Могу ли я спросить, почему последнее требование является обязательным?

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

Например, CGAL, по-видимому, приняла хорошо известную и хорошо протестированную парадигму STL для написания родовых и расширяемых библиотек С++. Это действительно затрудняет работу с инструментами анализа кода; Я сомневаюсь, что они хорошо разбираются в заголовках STL.

Но пытаетесь ли вы использовать библиотеку или изменить ее? В любом случае, похоже, у них есть чрезвычайно высококачественная документация (например, Руководство по ядру), что должно сделать относительно простым понять, что вам нужно do, не прибегая к чтению их кода.

Отказ от ответственности: Я знаю, что это не то, о чем вы просите. Но я не думаю, что то, что вы ищете, существует. необычно редко можно найти код с открытым исходным кодом с документацией так же хорошо, как то, что я видел при сканировании через CGAL. Я настоятельно рекомендую вам взглянуть на это.

Ответ 2

Во-первых, некоторые общие комментарии о ваших требованиях:

  • чтение OBJ или OFF файлов очень просто. Вы можете реализовать его самостоятельно, в дополнение к библиотеке, обеспечивающей более геометрические функции, через несколько минут. С другой стороны, геометрическая часть таких библиотек настолько сложнее, что вы должны, безусловно, сосредоточиться на своих требованиях, которые действительно касаются геометрических алгоритмов, и попытаться найти то, что соответствует вашим потребностям. Тогда, конечно, если есть связь, начните рассматривать эту проблему с интерфейсом.
  • в терминах геометрических операций, вы запрашиваете пересечение. Вы имеете в виду пересечение примитивов? (для чего можно найти и реализовать хорошие и простые алгоритмы) или вычисление пересечения двух сеток? или обнаружение столкновения? (которые являются деликатными вопросами, без простого ответа).
  • Если вы более конкретно, с более высокой точки зрения, о том, какие инструменты вы хотите построить, тогда люди смогут направить вас к нужному инструменту. Ваши требования слишком низки.

Насколько я понимаю ваш вопрос, мне кажется, что вы явно не видите точки библиотек, таких как CGAL и OpenMesh. Такие библиотеки могут не предоставлять все инструменты более высокого уровня, которые вам нужны, но их цель - предоставить вам (особенно в случае CGAL) всю геометрическую структуру, на которой вы можете построить геометрическое приложение. Такие геометрические рамки очень деликатные для дизайна, особенно из-за проблемы надежности, которая очень специфична для вычислительной геометрии. И без такой структуры создание надежного приложения - это ужасающее усилие.

Если вы не найдете библиотеку, которая вам подходит, вам следует серьезно подумать о том, чтобы использовать библиотеку, такую ​​как CGAL, в качестве базовой основы для вашей разработки. Это предотвратит появление проблем, связанных с устойчивостью, что вы обычно только начинаете замечать в конце своего процесса разработки, когда изменение базовой структуры будет болезненным. В стороне, CGAL имеет обширную документацию и очень активный список рассылки пользователей.

Если вы не знаете о проблемах надежности в программном обеспечении геометрии, посмотрите на эту страницу: проблемы устойчивости

Ответ 3

Я не знаю, может ли это быть полезным для вас. Существует также другая библиотека, которая называется Mangrove TDS Library, свободно доступная по адресу http://mangrovetds.sourceforge.net Она поддерживает любые типы фигур (2d, 3d, любой размерности) с любыми доменами (многообразием, не многообразием, псевдоамплионами, комплексами iqm, симплициальными комплексами и т.д.). Он, возможно, поддерживает нерегулярные фигуры, т.е. Сформированные кусками разных размерностей.

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

Его реализация основана на индексировании объектов на основе массивов, закодированных в структуре данных, поддерживающих итераторы. Он также поддерживает динамические свойства.

Наконец, он поддерживает неявное представление объектов, непосредственно не закодированных в структуре данных (объектах-призраках), которые повышают эффективность топологических запросов