Merge branch 'devel' of https://github.com/cnr-isti-vclab/vcglib into devel
This commit is contained in:
commit
6358aebc09
|
|
@ -674,7 +674,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
/// \brief This function expand current selection to cover the whole connected component.
|
/// \brief This function expand current selection to cover the whole connected component.
|
||||||
static size_t SplitManifoldComponents(MeshType &m)
|
static size_t SplitManifoldComponents(MeshType &m, const ScalarType moveThreshold = 0)
|
||||||
{
|
{
|
||||||
typedef typename MeshType::FacePointer FacePointer;
|
typedef typename MeshType::FacePointer FacePointer;
|
||||||
typedef typename MeshType::FaceIterator FaceIterator;
|
typedef typename MeshType::FaceIterator FaceIterator;
|
||||||
|
|
@ -720,6 +720,30 @@ public:
|
||||||
++selCnt;
|
++selCnt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vcg::tri::UpdateTopology<MeshType>::VertexFace(tmpMesh);
|
||||||
|
vcg::tri::UpdateFlags<MeshType>::VertexBorderFromNone(tmpMesh);
|
||||||
|
for (size_t i = 0; i < size_t(tmpMesh.VN()); ++i)
|
||||||
|
{
|
||||||
|
VertexType & v = tmpMesh.vert[i];
|
||||||
|
|
||||||
|
if (v.IsB())
|
||||||
|
{
|
||||||
|
std::vector<FacePointer> faceVec;
|
||||||
|
std::vector<int> idxVec;
|
||||||
|
|
||||||
|
vcg::face::VFStarVF(&v, faceVec, idxVec);
|
||||||
|
|
||||||
|
CoordType delta(0, 0, 0);
|
||||||
|
for (auto fp : faceVec)
|
||||||
|
{
|
||||||
|
delta += vcg::Barycenter(*fp) - v.cP();
|
||||||
|
}
|
||||||
|
delta /= faceVec.size();
|
||||||
|
|
||||||
|
v.P() += delta * moveThreshold;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
UpdateSelection<MeshType>::Clear(tmpMesh);
|
UpdateSelection<MeshType>::Clear(tmpMesh);
|
||||||
Append<MeshType, MeshType>::MeshCopy(m, tmpMesh);
|
Append<MeshType, MeshType>::MeshCopy(m, tmpMesh);
|
||||||
return selCnt;
|
return selCnt;
|
||||||
|
|
|
||||||
|
|
@ -889,7 +889,7 @@ void VFDetach(FaceType & f, int z)
|
||||||
|
|
||||||
/// Append a face in VF list of vertex f->V(z)
|
/// Append a face in VF list of vertex f->V(z)
|
||||||
template <class FaceType>
|
template <class FaceType>
|
||||||
void VFAppend(FaceType* & f, int z)
|
void VFAppend(FaceType * f, int z)
|
||||||
{
|
{
|
||||||
typename FaceType::VertexType *v = f->V(z);
|
typename FaceType::VertexType *v = f->V(z);
|
||||||
if (v->VFp()!=0)
|
if (v->VFp()!=0)
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@
|
||||||
* Example of usage:
|
* Example of usage:
|
||||||
* MeshType m;
|
* MeshType m;
|
||||||
* ...
|
* ...
|
||||||
|
* vcg::tri::UpdateBounding<MeshType>::Box(m);
|
||||||
* vcg::tri::UpdateFlags<MeshType>::Clear(m);
|
* vcg::tri::UpdateFlags<MeshType>::Clear(m);
|
||||||
* vcg::tri::UpdateFlags<MeshType>::VertexBorderFromNone(m);
|
* vcg::tri::UpdateFlags<MeshType>::VertexBorderFromNone(m);
|
||||||
* vcg::tri::OptimizeUV_ARAP(m);
|
* vcg::tri::OptimizeUV_ARAP(m);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue