23 #include<vcg/complex/complex.h>
25 #include<wrap/io_trimesh/import_off.h>
26 #include<wrap/io_trimesh/export_off.h>
28 #include<vcg/complex/algorithms/point_sampling.h>
29 #include<vcg/complex/algorithms/create/platonic.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::BitFlags >{};
42 class MyFace :
public Face< MyUsedTypes, face::FFAdj, face::Normal3f, face::VertexRef, face::BitFlags > {};
43 class MyEdge :
public Edge<MyUsedTypes>{};
44 class MyMesh :
public tri::TriMesh< vector<MyVertex>, vector<MyFace> , vector<MyEdge> > {};
46 int main(
int argc,
char **argv )
50 printf(
"Usage trimesh_base <meshfilename.obj> radius\n");
56 if(tri::io::ImporterOFF<MyMesh>::Open(m,argv[1])!=0)
58 printf(
"Error reading file %s\n",argv[1]);
68 vector<Point3f> pointVec;
70 if(argc>2) rad=atof(argv[2]);
71 int sampleNum=rad?0:1000;
72 tri::PoissonSampling<MyMesh>(m,pointVec,sampleNum,rad);
74 MyMesh BasicPoissonMesh;
75 tri::BuildMeshFromCoordVector(BasicPoissonMesh,pointVec);
77 tri::io::ExporterOFF<MyMesh>::Save(BasicPoissonMesh,
"BasicPoissonMesh.off");
78 printf(
"Computed a basic poisson disk distribution of %i vertices radius is %6.3f in %5.2f sec\n",BasicPoissonMesh.VN(),rad,float(t1-t0)/CLOCKS_PER_SEC);
83 MyMesh MontecarloSurfaceMesh;
84 MyMesh MontecarloEdgeMesh;
85 MyMesh PoissonEdgeMesh;
88 std::vector<Point3f> sampleVec;
94 tri::BuildMeshFromCoordVector(MontecarloEdgeMesh,sampleVec);
95 tri::io::ExporterOFF<MyMesh>::Save(MontecarloEdgeMesh,
"MontecarloEdgeMesh.off");
99 tri::BuildMeshFromCoordVector(PoissonEdgeMesh,sampleVec);
100 tri::io::ExporterOFF<MyMesh>::Save(PoissonEdgeMesh,
"VertexCreaseMesh.off");
103 pp.preGenMesh = &PoissonEdgeMesh;
107 tri::BuildMeshFromCoordVector(PoissonEdgeMesh,sampleVec);
108 tri::io::ExporterOFF<MyMesh>::Save(PoissonEdgeMesh,
"PoissonEdgeMesh.off");
112 tri::BuildMeshFromCoordVector(MontecarloSurfaceMesh,sampleVec);
113 tri::io::ExporterOFF<MyMesh>::Save(MontecarloSurfaceMesh,
"MontecarloSurfaceMesh.off");
115 pp.preGenMesh = &PoissonEdgeMesh;
119 tri::BuildMeshFromCoordVector(PoissonMesh,sampleVec);
120 tri::io::ExporterOFF<MyMesh>::Save(PoissonMesh,
"PoissonMesh.off");
121 printf(
"Computed a feature aware poisson disk distribution of %i vertices radius is %6.3f\n",PoissonMesh.VN(),rad);