TIDOP-USAL / graphos

GRAPHOS
GNU General Public License v3.0
4 stars 0 forks source link

Mallado con Poisson #5

Closed estebanrdo closed 8 months ago

estebanrdo commented 2 years ago

Añadir a Graphos el mallado con Poisson. Si el modelo no dispone de normales (son necesarias para la reconstrucción) se generarán previamente.

estebanrdo commented 2 years ago

Papers y código fuente:

Poisson Surface Reconstruction Poisson Surface Reconstruction with Envelope Constraints PoissonRecon

estebanrdo commented 2 years ago

He descargado los ejecutables de PoissonRecon y probado los ejemplos pero no realiza el mallado aunque tampoco da ningún error. Incluye otro método de reconstrucción (SSDRecon - Smooth Signed Distance Surface Reconstruction) que si que funciona.

estebanrdo commented 2 years ago

CloudCompare incluye un plugin de Poisson. El código esta disponible en GitHub. Es un fork de PoissonRecon en el que se incluye un wrapper para generar una librería. Incluye ficheros de CMake aunque el proyecto no esta muy bien hecho. En caso de que funcione, lo mejor es hacer un fork del repositorio original y hacer el proyecto de CMake desde cero.

estebanrdo commented 2 years ago

He descargado los ejecutables de PoissonRecon y probado los ejemplos pero no realiza el mallado aunque tampoco da ningún error. Incluye otro método de reconstrucción (SSDRecon - Smooth Signed Distance Surface Reconstruction) que si que funciona.

En mi portatil si que funciona. Esto me hace suponer que se pueda tratar de un problema con la tarjeta gráfica.

estebanrdo commented 2 years ago

El problema es que esta compilando con soporte para AVX2 y por eso da error en el PC. Al cambiar a AVX y compilar nuevamente ya funciona.

Para evitar problemas se ha creado un fork y se construirá el proyecto con CMake para no tener que volver a modificarlo a mano cada vez que actualicen la librería.

estebanrdo commented 2 years ago

Al generar la malla, debido a la baja densidad de puntos en ciertas partes, pueden darse errores o zonas que se quieran evitar:

Image

Para eliminar estas zonas hay que utilizar el parámetro density. Al utilizar density parece que es necesario llamar a samplesPerNode:

.\PoissonRecon.exe --in option-all.ply --out mesh3.pr.ply --depth 11 --density --samplesPerNode 5 --bType 3

Al generar el mallado de esta forma se puede utilizar el comando SurfaceTrimmer para quitar las zonas de baja densidad:

.\SurfaceTrimmer --in mesh3.pr.ply --out mesh3.pr.trimmer.ply --trim 7

Image

estebanrdo commented 2 years ago

Se ha añadido la herramienta de mallado al menú Workflow:

Image