24 #include <vcg/complex/complex.h>
26 #include <vcg/complex/algorithms/clean.h>
27 #include <vcg/complex/algorithms/create/platonic.h>
29 #include <wrap/io_trimesh/import.h>
30 #include <wrap/io_trimesh/export_ply.h>
33 #include <vcg/complex/algorithms/update/halfedge_indexed.h>
42 struct TUsedTypes:
public vcg::UsedTypes< vcg::Use<TVertex>::AsVertexType, vcg::Use<TFace>::AsFaceType >{};
44 class TVertex :
public Vertex< TUsedTypes,
50 class TFace :
public Face< TUsedTypes,
58 class TMesh :
public vcg::tri::TriMesh< vector<TVertex>, vector<TFace> > {};
68 struct PUsedTypes:
public vcg::UsedTypes<vcg::Use<PVertex> ::AsVertexType,
69 vcg::Use<PEdge> ::AsEdgeType,
70 vcg::Use<PHEdge>::AsHEdgeType,
71 vcg::Use<PFace> ::AsFaceType
75 class PVertex:
public vcg::Vertex< PUsedTypes,
77 vcg::vertex::Normal3f,
79 vcg::vertex::BitFlags,
80 vcg::vertex::VHAdj>{} ;
82 class PEdge :
public Edge<PUsedTypes>{};
83 class PHEdge :
public HEdge< PUsedTypes, hedge::BitFlags,
92 class PFace:
public vcg::Face<
107 std::vector<PVertex>,
109 std::vector<PHEdge> ,
116 int main(
int ,
char *argv[]) {
130 vcg::tri::Hexahedron(tm0);
140 vcg::tri::PolygonSupport<TMesh,PMesh>::ImportFromTriMesh(pm,tm0);
147 vcg::tri::io::ImporterOBJ<PMesh>::Open(pm,argv[1],loadmask);
163 int size = pm.face.size();
167 for(
int i = 0; i < size; ++i)
168 if(!(pm.face[i].IsD()))
169 if(pm.face[i].VN()>3){
170 PMesh::HEdgePointer ef = pm.face[i].FHp();
171 PMesh::HEdgePointer ef1 = ef -> HNp();
176 size = pm.face.size();
180 for(
int i = 0; i < size; ++i)
181 if(!(pm.face[i].IsD() ))
183 PMesh::HEdgePointer ef = pm.face[i].FHp();
184 if( ef->HOp()->HFp() !=NULL){
197 vcg::tri::PolygonSupport<TMesh,PMesh>::ImportFromPolyMesh(tm1,pm);
199 vcg::tri::io::ExporterPLY<TMesh>::Save(tm1,
"converted_tri.ply",
false);
200 vcg::tri::io::ExporterPLY<PMesh>::Save(pm,
"converted_poly.ply",
false);