From 80467d1f41a2786512e5b98391f661b6c2d45346 Mon Sep 17 00:00:00 2001 From: cignoni Date: Wed, 11 Sep 2013 11:09:29 +0000 Subject: [PATCH] minor changes (component check in the sampler class) --- vcg/complex/algorithms/point_sampling.h | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/vcg/complex/algorithms/point_sampling.h b/vcg/complex/algorithms/point_sampling.h index b3d0b92a..4280fd69 100644 --- a/vcg/complex/algorithms/point_sampling.h +++ b/vcg/complex/algorithms/point_sampling.h @@ -141,7 +141,8 @@ public: tri::Allocator::AddVertices(m,1); m.vert.back().P() = f.cP(0)*p[0] + f.cP(1)*p[1] +f.cP(2)*p[2]; m.vert.back().N() = f.cV(0)->N()*p[0] + f.cV(1)->N()*p[1] + f.cV(2)->N()*p[2]; - m.vert.back().Q() = f.cV(0)->Q()*p[0] + f.cV(1)->Q()*p[1] + f.cV(2)->Q()*p[2]; + if(tri::HasPerVertexQuality(m) ) + m.vert.back().Q() = f.cV(0)->Q()*p[0] + f.cV(1)->Q()*p[1] + f.cV(2)->Q()*p[2]; } }; // end class BaseSampler @@ -1310,17 +1311,20 @@ static void InitSpatialHashTable(MetroMesh &montecarloMesh, MontecarloSHT &monte int sizeY = std::max(1.0f,bb.DimY() / cellsize); int sizeZ = std::max(1.0f,bb.DimZ() / cellsize); Point3i gridsize(sizeX, sizeY, sizeZ); - if(pp.pds) pp.pds->gridSize = gridsize; montecarloSHT.InitEmpty(bb, gridsize); for (VertexIterator vi = montecarloMesh.vert.begin(); vi != montecarloMesh.vert.end(); vi++) montecarloSHT.Add(&(*vi)); montecarloSHT.UpdateAllocatedCells(); - pp.pds->gridCellNum = (int)montecarloSHT.AllocatedCells.size(); + if(pp.pds) + { + pp.pds->gridSize = gridsize; + pp.pds->gridCellNum = (int)montecarloSHT.AllocatedCells.size(); + } cellsize/=2.0f; occupancyRatio = float(montecarloMesh.vn) / float(montecarloSHT.AllocatedCells.size()); - qDebug(" %i / %i = %6.3f", montecarloMesh.vn , montecarloSHT.AllocatedCells.size(),occupancyRatio); +// qDebug(" %i / %i = %6.3f", montecarloMesh.vn , montecarloSHT.AllocatedCells.size(),occupancyRatio); } while( occupancyRatio> 100); }