2008-09-17 13 views
18

Estoy buscando una buena biblioteca 3D MeshUna buena biblioteca 3D de malla

  • Debe ser capaz de leer los formatos más populares (OFF, OBJ ...)
  • Debe apoyar tanto la mitad de punta estructura y una sopa triangular
  • Debe ser tolerante a fallas y mallas ilegales.
  • Operaciones geométricas básicas: intersecciones, cálculo normal, etc. '
  • Lo más importante: no debe complicarse con plantillas interminables y jerarquías de herencia.

He intentado tanto CGAL como OpenMesh pero ambos fallan miserablemente en el último punto.

Específicamente CGAL que es imposible de seguir incluso con las herramientas de análisis de código más avanzadas.

Hasta ahora, estoy considerando seriamente sacar el mío.

Mi preferencia es C++ pero estoy abierto a otras opciones.

+0

No sé si satisface sus necesidades, pero echa un vistazo a VCG – elect

Respuesta

10

¿Puedo preguntar por qué el último punto es un requisito?

Las bibliotecas escritas para el consumo público están diseñadas para ser lo más genéricas posible de modo que puedan ser utilizadas por el público más amplio posible. En C++, a menudo esto se hace mejor usando plantillas. Sería una gran lección si encontraras una buena biblioteca, solo para descubrir que era inútil para tus propósitos porque usaba flotadores en lugar de dobles.

CGAL, por ejemplo, parece haber adoptado el conocido y probado paradigma STL de escritura de librerías C++ genéricas y extensibles. Esto hace que sea difícil seguir con las herramientas de análisis de código; Dudo que sean muy buenos para seguir los encabezados de STL tampoco.

¿Pero está tratando de usar la biblioteca o modificarla? De cualquier manera, parece que tienen una documentación de muy alta calidad (por ejemplo, Kernel Manual) que debería hacer que sea relativamente simple averiguar qué es lo que debe hacer, sin tener que recurrir a leer su código.

Descargo de responsabilidad: Sé que esto no es lo que estás pidiendo. Pero no creo que exista lo que estás buscando. Es extraordinariamente raro encontrar código fuente abierto con documentación tan buena como lo que he visto escaneando a través de CGAL. Le sugiero encarecidamente que vuelva a analizarlo.

2

En primer lugar, algunos comentarios generales acerca de sus requerimientos:

  • lectura de archivos OBJ u OFF es muy fácil. Puede implementarlo usted mismo, en la parte superior de una biblioteca que proporciona las funciones más geométricas, en pocos minutos. Por otro lado, la parte geométrica de dichas bibliotecas es mucho más complicada, por lo que debe centrarse en sus requisitos, que realmente tratan con los algoritmos geométricos, y tratar de encontrar algo que se adapte a sus necesidades. Luego, por supuesto, si hay un empate, comience a considerar este problema de interfaz.
  • en términos de operaciones geométricas, solicite la intersección. ¿Te refieres a la intersección de primitivos? (para lo cual se pueden encontrar e implementar algoritmos buenos y simples) o el cálculo de la intersección de dos mallas? o detección de colisión?(que son preguntas delicadas, sin una respuesta simple)
  • Si es más específico, desde un punto de vista de nivel superior, sobre el tipo de herramientas que desea construir, las personas podrán dirigirlo a la herramienta adecuada . Sus requisitos son de muy bajo nivel.

Por lo que entiendo su pregunta, me parece que no ve claramente el punto de las bibliotecas como CGAL y OpenMesh. Es posible que estas bibliotecas no proporcionen todas las herramientas de nivel superior que necesita, pero su objetivo es proporcionarle (especialmente en el caso de CGAL) todo el marco geométrico sobre el que puede construir una aplicación geométrica. Dichos marcos geométricos son muy delicados de diseñar, especialmente debido al problema de robustez, que es muy específico de la geometría computacional. Y sin ese marco, construir una aplicación sólida es un esfuerzo horrendo.

Si no encuentra una biblioteca que satisfaga sus necesidades, considere seriamente el uso de una biblioteca como CGAL como marco subyacente para su desarrollo. Evitará la aparición de problemas relacionados con la robustez, por lo que normalmente comenzará a notarlo tarde en su proceso de desarrollo, cuando cambiar el marco subyacente será doloroso. Como un aparte, CGAL tiene una extensa documentación y una lista de correo de usuarios muy activa.

Si usted no sabe acerca de los problemas de robustez en software de geometría, echar un vistazo a esta página: robustness issues

0

no sé si puede ser útil para usted. También hay otra biblioteca, llamada Mangrove TDS Library, disponible gratuitamente en http://mangrovetds.sourceforge.net. Admite cualquier tipo de formas (2d, 3d, cualquier dimensión), con cualquier dominio (múltiple, no múltiple, pseudo-múltiple, complejo iqm, complejos simpliciales, etc.). Posiblemente soporta formas no regulares, es decir, formadas por piezas de diferentes dimensionalidades.

Su propiedad principal es que es extensible, en el sentido de que admite cualquier estructura de datos topológicos. Es un complemento que se puede cambiar y cargar en tiempo de ejecución.

Su implementación se basa en la indexación basada en arrays de entidades, codificadas en una estructura de datos, soportando iteradores. También es compatible con propiedades dinámicas.

Por último, es compatible con una representación implícita de entidades no codificados directamente en una estructura de datos (entidades fantasma), que mejoran la eficacia de las consultas topológicas

Cuestiones relacionadas