minor changes to isotropic remeshing

This commit is contained in:
T.Alderighi 2020-01-10 10:10:59 +01:00
parent 3a15e94e95
commit f2a5f1ef72
1 changed files with 6 additions and 4 deletions

View File

@ -325,9 +325,9 @@ private:
double qualityAdj = vcg::QualityRadii(ffAdj->cP(0), ffAdj->cP(1), ffAdj->cP(2)); double qualityAdj = vcg::QualityRadii(ffAdj->cP(0), ffAdj->cP(1), ffAdj->cP(2));
bool qualityCheck = quality > 0.00000001 && qualityAdj > 0.00000001; bool qualityCheck = quality > 0.00000001 && qualityAdj > 0.00000001;
bool areaCheck = vcg::DoubleArea(*ff) > 0.000001 && vcg::DoubleArea(*ffAdj) > 0.000001; // bool areaCheck = vcg::DoubleArea(*ff) > 0.000001 && vcg::DoubleArea(*ffAdj) > 0.000001;
if (!params.userSelectedCreases && (testCreaseEdge(p, params.creaseAngleCosThr) && areaCheck && qualityCheck) || p.IsBorder()) if (!params.userSelectedCreases && (testCreaseEdge(p, params.creaseAngleCosThr) /*&& areaCheck*//* && qualityCheck*/) || p.IsBorder())
{ {
PosType pp = p; PosType pp = p;
do { do {
@ -1233,7 +1233,7 @@ private:
} }
} }
static void VertexCoordPlanarLaplacian(MeshType &m, Params & params, int step) static void VertexCoordPlanarLaplacian(MeshType &m, Params & params, int step, ScalarType delta = 0.2)
{ {
typename vcg::tri::Smooth<MeshType>::LaplacianInfo lpz(CoordType(0, 0, 0), 0); typename vcg::tri::Smooth<MeshType>::LaplacianInfo lpz(CoordType(0, 0, 0), 0);
SimpleTempData<typename MeshType::VertContainer, typename vcg::tri::Smooth<MeshType>::LaplacianInfo> TD(m.vert, lpz); SimpleTempData<typename MeshType::VertContainer, typename vcg::tri::Smooth<MeshType>::LaplacianInfo> TD(m.vert, lpz);
@ -1282,7 +1282,7 @@ private:
{ {
std::vector<CoordType> newPos(1, TD[*vi].sum); std::vector<CoordType> newPos(1, TD[*vi].sum);
if ((*vi).IsS() && testHausdorff(*params.mProject, params.grid, newPos, params.maxSurfDist)) if ((*vi).IsS() && testHausdorff(*params.mProject, params.grid, newPos, params.maxSurfDist))
(*vi).P() = TD[*vi].sum; (*vi).P() = (*vi).P() * (1-delta) + TD[*vi].sum * (delta);
} }
} // end step } // end step
} }
@ -1330,6 +1330,8 @@ private:
Reprojection step, this method reprojects each vertex on the original surface Reprojection step, this method reprojects each vertex on the original surface
sampling the nearest Point3 onto it using a uniform grid StaticGrid t sampling the nearest Point3 onto it using a uniform grid StaticGrid t
*/ */
//TODO: improve crease reprojection:
// crease verts should reproject only on creases.
static void ProjectToSurface(MeshType &m, Params & params) static void ProjectToSurface(MeshType &m, Params & params)
{ {
for(auto vi=m.vert.begin();vi!=m.vert.end();++vi) for(auto vi=m.vert.begin();vi!=m.vert.end();++vi)