From 2451c6b8f9606646f79283f81345c97fce04e327 Mon Sep 17 00:00:00 2001 From: Luigi Malomo Date: Fri, 11 May 2018 18:58:28 +0200 Subject: [PATCH] voronoi remesher tweaking --- vcg/complex/algorithms/voronoi_remesher.h | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/vcg/complex/algorithms/voronoi_remesher.h b/vcg/complex/algorithms/voronoi_remesher.h index f2521b26..80e9dcee 100644 --- a/vcg/complex/algorithms/voronoi_remesher.h +++ b/vcg/complex/algorithms/voronoi_remesher.h @@ -31,7 +31,7 @@ #include #include #include -#include +//#include #include #include @@ -133,7 +133,7 @@ protected: } public: - static const int VoroRelaxationStep = 30; + static const int VoroRelaxationStep = 40; /// /// \brief Remesh the main function that remeshes a mesh preserving creases. @@ -326,7 +326,7 @@ protected: // uniform edge sampling UpdateTopology::EdgeEdge(em); - SurfaceSampling::EdgeMeshUniform(em, ps, samplingRadius, false); + SurfaceSampling::EdgeMeshUniform(em, ps, samplingRadius, SurfaceSampling::Round); BuildMeshFromCoordVector(poissonEdgeMesh, borderSamples); UpdateBounding::Box(poissonEdgeMesh); @@ -355,7 +355,7 @@ protected: // refine to obtain a base mesh VoronoiProcessingParameter vpp; - vpp.refinementRatio = 5.0f; + vpp.refinementRatio = 8.0f; Voronoi::PreprocessForVoronoi(baseMesh, samplingRadius, vpp); // Poisson sampling preserving border @@ -394,7 +394,7 @@ protected: else { // Montecarlo poisson sampling - SurfaceSampler::MontecarloPoisson(original, mps, poissonCount * 40); + SurfaceSampler::MontecarloPoisson(original, mps, poissonCount * 50); BuildMeshFromCoordVector(montecarloMesh,sampleVec); #ifdef DEBUG_VORO @@ -405,6 +405,8 @@ protected: typename SurfaceFixSampler::PoissonDiskParam pp; pp.preGenMesh = &poissonEdgeMesh; pp.preGenFlag = true; + pp.bestSampleChoiceFlag = true; + pp.bestSamplePoolSize = 100; SurfaceFixSampler::PoissonDiskPruning(fix_sampler, montecarloMesh, samplingRadius, pp); } @@ -425,9 +427,13 @@ protected: return std::make_shared(); } + // TODO: rimettere a posto // restricted relaxation with fixed points - vpp.seedPerturbationProbability = 0.0f; + vpp.seedPerturbationProbability = 0.2f; + vpp.seedPerturbationAmount = 0.005f; Voronoi::RestrictedVoronoiRelaxing(baseMesh, seedPointVec, seedFixedVec, VoroRelaxationStep, vpp); + vpp.seedPerturbationProbability = 0.0f; + Voronoi::RestrictedVoronoiRelaxing(baseMesh, seedPointVec, seedFixedVec, VoroRelaxationStep/2, vpp); #ifdef DEBUG_VORO