Cleaned up a bit for better handling of point clouds
This commit is contained in:
parent
646a31972f
commit
58471132ba
|
|
@ -20,44 +20,6 @@
|
||||||
* for more details. *
|
* for more details. *
|
||||||
* *
|
* *
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
/****************************************************************************
|
|
||||||
History
|
|
||||||
|
|
||||||
$Log: not supported by cvs2svn $
|
|
||||||
Revision 1.11 2006/06/08 13:55:16 cignoni
|
|
||||||
Added ColorPreserving Cellbase template.
|
|
||||||
|
|
||||||
Revision 1.10 2006/05/26 10:18:11 cignoni
|
|
||||||
Re-adapted to ms compilers
|
|
||||||
|
|
||||||
Revision 1.9 2006/05/25 09:37:14 cignoni
|
|
||||||
Many changes for the different interpretation of hash_set between gcc and .net. Probably to be completed.
|
|
||||||
|
|
||||||
Revision 1.8 2006/05/24 16:42:22 m_di_benedetto
|
|
||||||
Corrected bbox inflation amount in case of _cellsize != 0
|
|
||||||
|
|
||||||
Revision 1.7 2006/05/24 15:16:01 cignoni
|
|
||||||
better comment to the init parameters
|
|
||||||
|
|
||||||
Revision 1.6 2006/05/24 08:54:04 cignoni
|
|
||||||
Added missing std:: to swap
|
|
||||||
|
|
||||||
Revision 1.5 2006/05/21 06:40:31 cignoni
|
|
||||||
Added DoubleFace management
|
|
||||||
|
|
||||||
Revision 1.4 2006/05/19 20:49:03 m_di_benedetto
|
|
||||||
Added check for empty generated mesh (prevent call to mesh allocator with zero vertices or faces).
|
|
||||||
|
|
||||||
Revision 1.3 2006/05/18 22:20:53 m_di_benedetto
|
|
||||||
added check for deleted faces and modified/added std namespace qualifier.
|
|
||||||
|
|
||||||
Revision 1.2 2006/05/18 13:59:20 cignoni
|
|
||||||
Some minor optimizations
|
|
||||||
|
|
||||||
Revision 1.1 2006/05/16 21:56:06 cignoni
|
|
||||||
First working Version
|
|
||||||
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
#ifndef __VCGLIB_CLUSTERING
|
#ifndef __VCGLIB_CLUSTERING
|
||||||
#define __VCGLIB_CLUSTERING
|
#define __VCGLIB_CLUSTERING
|
||||||
|
|
@ -164,8 +126,6 @@ class NearestToCenter
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
template<class MeshType>
|
template<class MeshType>
|
||||||
class AverageColorCell
|
class AverageColorCell
|
||||||
{
|
{
|
||||||
|
|
@ -186,10 +146,11 @@ class AverageColorCell
|
||||||
n+=f.cN();
|
n+=f.cN();
|
||||||
cnt++;
|
cnt++;
|
||||||
}
|
}
|
||||||
inline void AddVertex(MeshType &/*m*/, GridType &/*g*/, Point3i &/*pi*/, VertexType &v)
|
inline void AddVertex(MeshType &m, GridType &/*g*/, Point3i &/*pi*/, VertexType &v)
|
||||||
{
|
{
|
||||||
p+=v.cP();
|
p+=v.cP();
|
||||||
n+=v.cN();
|
n+=v.cN();
|
||||||
|
if(tri::HasPerVertexColor(m))
|
||||||
c+=CoordType(v.C()[0],v.C()[1],v.C()[2]);
|
c+=CoordType(v.C()[0],v.C()[1],v.C()[2]);
|
||||||
cnt++;
|
cnt++;
|
||||||
}
|
}
|
||||||
|
|
@ -300,7 +261,6 @@ class Clustering
|
||||||
Grid.voxel[2] = Grid.dim[2]/Grid.siz[2];
|
Grid.voxel[2] = Grid.dim[2]/Grid.siz[2];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
BasicGrid<ScalarType> Grid;
|
BasicGrid<ScalarType> Grid;
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
|
|
@ -379,6 +339,7 @@ class Clustering
|
||||||
{
|
{
|
||||||
m.vert[i].P()=(*gi).second.Pos();
|
m.vert[i].P()=(*gi).second.Pos();
|
||||||
m.vert[i].N()=(*gi).second.N();
|
m.vert[i].N()=(*gi).second.N();
|
||||||
|
if(HasPerVertexColor(m))
|
||||||
m.vert[i].C()=(*gi).second.Col();
|
m.vert[i].C()=(*gi).second.Col();
|
||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
|
|
@ -389,10 +350,7 @@ class Clustering
|
||||||
{
|
{
|
||||||
m.Clear();
|
m.Clear();
|
||||||
|
|
||||||
if (TriSet.empty() || GridCell.empty())
|
if (GridCell.empty()) return;
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Allocator<MeshType>::AddVertices(m,GridCell.size());
|
Allocator<MeshType>::AddVertices(m,GridCell.size());
|
||||||
typename STDEXT::hash_map<HashedPoint3i,CellType>::iterator gi;
|
typename STDEXT::hash_map<HashedPoint3i,CellType>::iterator gi;
|
||||||
|
|
@ -400,11 +358,13 @@ class Clustering
|
||||||
for(gi=GridCell.begin();gi!=GridCell.end();++gi)
|
for(gi=GridCell.begin();gi!=GridCell.end();++gi)
|
||||||
{
|
{
|
||||||
m.vert[i].P()=(*gi).second.Pos();
|
m.vert[i].P()=(*gi).second.Pos();
|
||||||
if(m.vert[i].HasColor())
|
m.vert[i].N()=(*gi).second.N();
|
||||||
|
if(HasPerVertexColor(m))
|
||||||
m.vert[i].C()=(*gi).second.Col();
|
m.vert[i].C()=(*gi).second.Col();
|
||||||
(*gi).second.id=i;
|
(*gi).second.id=i;
|
||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
|
|
||||||
Allocator<MeshType>::AddFaces(m,TriSet.size());
|
Allocator<MeshType>::AddFaces(m,TriSet.size());
|
||||||
TriHashSetIterator ti;
|
TriHashSetIterator ti;
|
||||||
i=0;
|
i=0;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue