From f7db6bfc1890c08b4a9be7d1cd25e792f9de6236 Mon Sep 17 00:00:00 2001 From: Guido Ranzuglia granzuglia Date: Wed, 18 Jul 2012 07:39:21 +0000 Subject: [PATCH] - removed crash and removed assert --- src/meshlabplugins/filter_meshing/meshfilter.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/meshlabplugins/filter_meshing/meshfilter.cpp b/src/meshlabplugins/filter_meshing/meshfilter.cpp index f5cd4b964..22aaa009f 100644 --- a/src/meshlabplugins/filter_meshing/meshfilter.cpp +++ b/src/meshlabplugins/filter_meshing/meshfilter.cpp @@ -1349,24 +1349,26 @@ case FP_COMPUTE_PRINC_CURV_DIR: case FP_REFINE_HALF_CATMULL: { - m.updateDataMask(MeshModel::MM_FACEQUALITY); + m.updateDataMask(MeshModel::MM_FACEQUALITY | MeshModel::MM_FACEFACETOPO); tri::BitQuadCreation::MakePureByRefine(m.cm); tri::UpdateNormals::PerBitQuadFaceNormalized(m.cm); assert(tri::BitQuadCreation::IsBitTriQuadConventional(m.cm)); - m.updateDataMask(MeshModel::MM_FACEFACETOPO); } break; case FP_REFINE_CATMULL : { // in practice it is just a simple double application of the FP_REFINE_HALF_CATMULL. - m.updateDataMask(MeshModel::MM_FACEQUALITY); + m.updateDataMask(MeshModel::MM_FACEQUALITY | MeshModel::MM_FACEFACETOPO); tri::BitQuadCreation::MakePureByRefine(m.cm); - assert(tri::BitQuadCreation::IsBitTriQuadConventional(m.cm)); - tri::UpdateTopology::FaceFace(m.cm); + if (!tri::BitQuadCreation::IsBitTriQuadConventional(m.cm)) + { + errorMessage = "The input mesh has not third edge faux for all triangles."; + return false; + } tri::BitQuadCreation::MakePureByRefine(m.cm); tri::UpdateNormals::PerBitQuadFaceNormalized(m.cm); m.clearDataMask(MeshModel::MM_FACEFACETOPO); - m.updateDataMask(MeshModel::MM_POLYGONAL); + m.updateDataMask(MeshModel::MM_POLYGONAL); } break; case FP_QUAD_PAIRING :