Todo un misterio, muchas pruebas y un enorme trabajo para lograr el resultado final. Primero voy a resumir las aplicaciones y lenguajes libres que utilizo, luego describiré mi problema y finalmente hablaré de mi solución.
Aplicaciones:
-
ParaView: herramienta para visualización en 3D. Util para cortar mallas (y ver su interior), para conversión de datos entre VTK-STL-PLY, práctico para obtener rápidamente la iso-surface de una imagen binaria, sencillo al momento de medir distancias o poner nuevos puntos.
-
MeshLab: herramienta para el tratamiento de mallas. Util para la conversión de datos PLY-STL, práctico para lanzar algoritmos sobre mallas e.g. smooth, decimation, invertir normales, etc. Tiene una interfaz simple para identificar y llenar huecos en las mallas. Puede utilizarse para el análisis de las propiedades de las mallas : self-intersect faces, manifold edges, duplicated vertices, etc.
-
MeVisLab: herramienta de prototipado rápido para visualización y tratamiento de imágenes, especialmente enfocado en imágenes médicas. Util para toda prueba rápida de algoritmos de procesamiento de imágenes. Arquitectura orientada a eventos con respuesta inmediata ante los cambios en los parámetros de los filtros.
-
FreeCAD: herramienta CAD open-source para el modelado en 3D. No tengo mucha experiencia en su utilización, pero en este proyecto es muy práctico para la conversión de una malla de triángulos a un formato de solidos (IGS/IGES). También tiene una interfaz de análisis de las propiedades de las mallas que permite modificar y reparar problemas en el mallado.
-
Blender: herramienta para el modelado libre de objetos en 3D. Util para pasar filtros sobre las mallas, e.g. decimation, smooth, binary operations, entre otros. Util para la edición por puntos, aristas o caras de una superficie. Se puede utilizar para leer y convertir archivos STL y PLY.
-
VTK: lenguaje open-source para visualización de datos. En este caso utilizo el código comentado previamente en este blog para la rasterización de una malla en una imagen binaria. El código lo ejecuto en Linux con la versión de VTK 5.6
-
vtkSurface-DiscreteRemeshing: código bajo licencia CeCILL B desarrollado en el laboratorio CREATIS por Sebastien Valette. Permite una regeneración correcta de una superficie con una cantidad definida de elementos. Conserva la topología de la malla con las mejores propiedades de la misma. Para más información ver el artículo:
" Approximated Centroidal Voronoi Diagrams for Uniform Polygonal Mesh Coarsening", Valette & Chassery, Eurographics 2004