topografia puntos nube descargar correlacion 3d mesh point-cloud-library

3d - correlacion - nube de puntos descargar



Diferencia entre visualizar una malla y su nube de puntos (2)

Si alguien está interesado, aquí está la respuesta:

PointCloud<PointXYZRGBA>::Ptr cloud (new PointCloud<PointXYZRGBA> ()); pcl::PolygonMesh triangles; pcl::io::loadPolygonFilePLY(argv[1], triangles); pcl::fromROSMsg(triangles.cloud, *cloud);

Este código abre un archivo PLY y lo convierte en una nube de puntos con la forma correcta.

Estoy trabajando con PCL y un editor de malla (MeshLab). Estoy interesado en importar mis mallas a PCL para hacer algo de procesamiento en 3D.

Tengo un modelo de malla en formato de capas. Cuando cargo el modelo con el código:

PointCloud<PointXYZRGBA>::Ptr cloud (new PointCloud<PointXYZRGBA> ()); pcl::io::loadPLYFile<pcl::PointXYZRGBA>(argv[1], *cloud);

y lo visualizo como una nube de puntos:

visualization::PCLVisualizer viewer ("Model"); viewer.addPointCloud (cloud,"model");

la geometría es diferente de cargar y visualizar la malla directamente:

viewer.addModelFromPLYFile(argv[1], "model");

En el segundo caso, visualizo el modelo exactamente como lo hago con un editor de Mesh, pero en el primer caso visualizo una versión deformada de él, es decir, y la esfera es como y elipsoide. ¿Que está sucediendo aquí? Tal vez debería probar manualmente la malla?

Si agrego los dos modelos en el visor, la diferencia es muy evidente, la nube de puntos es más pequeña que la malla y ha sufrido alguna deformación extraña (por favor, vea la imagen adjunta)

Muchas gracias

ply http://www.pcl-users.org/file/n4028582/meshply.png


Estoy bastante seguro de que es un error de PCL antes de 1.7.2, tal como se lo negó en las notas de la versión y lo comprobé según mi propia experiencia:

Se solucionó un error en PLYReader que provocaba la deformación de las nubes de puntos cuando se visualizaba en CloudViewer o PCLVisualizer # 879

Si no actualiza, agregue una línea para corregir el error de la siguiente manera:

if (pcl::io::loadPLYFile <pcl::PointXYZRGBNormal> (file, *cloud) == -1) { std::cout << "Cloud reading failed." << std::endl; return (-1); } cloud->sensor_orientation_.setIdentity();