diff --git a/src/meshlabplugins/filter_screened_poisson/filter_screened_poisson.cpp b/src/meshlabplugins/filter_screened_poisson/filter_screened_poisson.cpp index 85cc91597..02e4b29f8 100644 --- a/src/meshlabplugins/filter_screened_poisson/filter_screened_poisson.cpp +++ b/src/meshlabplugins/filter_screened_poisson/filter_screened_poisson.cpp @@ -555,11 +555,15 @@ void PoissonClean(MeshType &m, bool scaleNormal, bool cleanFlag) vcg::tri::UpdateNormal::NormalizePerVertex(m); if(cleanFlag) { - for (auto vi = m.vert.begin(); vi != m.vert.end(); ++vi) - if (vcg::SquaredNorm(vi->N()) < std::numeric_limits::min()*10.0) - vi->setD(); + for (auto vi = m.vert.begin(); vi != m.vert.end(); ++vi) + if (vcg::SquaredNorm(vi->N()) < std::numeric_limits::min()*10.0) + vcg::tri::Allocator::DeleteVertex(m,*vi); + + for (auto fi = m.face.begin(); fi != m.face.end(); ++fi) + if( fi->V(0)->IsD() || fi->V(1)->IsD() || fi->V(2)->IsD() ) + vcg::tri::Allocator::DeleteFace(m,*fi); } - + vcg::tri::Allocator::CompactEveryVector(m); if(scaleNormal) {