24 #include<vcg/complex/complex.h>
25 #include<vcg/complex/algorithms/create/platonic.h>
26 #include<vcg/complex/algorithms/parametrization/poisson_solver.h>
27 #include<vcg/complex/algorithms/update/texture.h>
28 #include<wrap/io_trimesh/import_ply.h>
29 #include<wrap/io_trimesh/export_ply.h>
37 struct MyUsedTypes :
public UsedTypes< Use<MyVertex> ::AsVertexType,
38 Use<MyEdge> ::AsEdgeType,
39 Use<MyFace> ::AsFaceType>{};
41 class MyVertex :
public Vertex<MyUsedTypes, vertex::Coord3f, vertex::Normal3f, vertex::TexCoord2f, vertex::BitFlags >{};
42 class MyFace :
public Face< MyUsedTypes, face::VertexRef, face::BitFlags, face::FFAdj , face::WedgeTexCoord2f> {};
43 class MyEdge :
public Edge<MyUsedTypes>{};
44 class MyMesh :
public tri::TriMesh< vector<MyVertex>, vector<MyFace> , vector<MyEdge> > {};
47 int main(
int argc,
char **argv )
50 if(argc < 2 )
return -1;
52 printf(
"Reading %s\n",argv[1]);
53 int ret= tri::io::ImporterPLY<MyMesh>::Open(m,argv[1]);
56 printf(
"Unable to open %s for '%s'\n",argv[1],tri::io::ImporterPLY<MyMesh>::ErrorMsg(ret));
60 printf(
"Mesh has %i vn %i fn\n",m.VN(),m.FN());
61 tri::PoissonSolver<MyMesh> PS(m);
65 printf(
"mesh is not homeomorphic to a disk\n");
68 printf(
"OK - mesh is homeomorphic to a disk\n");
71 PS.SetBorderAsFixed();
72 PS.FixDefaultVertices();
73 PS.SolvePoisson(
true);
76 tri::io::ExporterPLY<MyMesh>::Save(m,
"pippo.ply",tri::io::Mask::IOM_WEDGTEXCOORD);