23 #include<vcg/complex/complex.h>
24 #include<wrap/io_trimesh/import.h>
25 #include<wrap/io_trimesh/export_ply.h>
26 #include <vcg/complex/algorithms/voronoi_remesher.h>
35 struct MyUsedTypes :
public vcg::UsedTypes<
36 vcg::Use<MyVertex>::AsVertexType,
37 vcg::Use<MyFace>::AsFaceType,
38 vcg::Use<MyEdge>::AsEdgeType> {};
40 class MyVertex:
public vcg::Vertex<MyUsedTypes,
41 vcg::vertex::Coord3f, vcg::vertex::Normal3f,
42 vcg::vertex::Color4b, vcg::vertex::Qualityd,
43 vcg::vertex::VFAdj, vcg::vertex::VEAdj,
44 vcg::vertex::BitFlags, vcg::vertex::Mark> {};
45 class MyFace :
public vcg::Face<MyUsedTypes,
46 vcg::face::VertexRef, vcg::face::Normal3f,
47 vcg::face::Color4b, vcg::face::BitFlags,
48 vcg::face::VFAdj, vcg::face::FFAdj,
50 class MyEdge:
public vcg::Edge<MyUsedTypes,
51 vcg::edge::VertexRef, vcg::edge::BitFlags,
52 vcg::edge::EEAdj, vcg::edge::VEAdj> {};
54 class MyMesh :
public vcg::tri::TriMesh< std::vector<MyVertex>, std::vector<MyFace> > {};
56 int main(
int argc,
char **argv )
61 printf(
"Usage trimesh_voro mesh region_num\n");
64 printf(
"Reading %s \n",argv[1]);
65 int ret = tri::io::Importer<MyMesh>::Open(startMesh,argv[1]);
68 printf(
"Unable to open %s: '%s'\n",argv[1],tri::io::ImporterPLY<MyMesh>::ErrorMsg(ret));
73 float samplingRadius = startMesh.bbox.Diag() * 0.005f;
77 samplingRadius = stof(
string(argv[2]));
78 }
catch (exception &) {}
80 std::cout <<
"Remeshing using sampling radius: " << samplingRadius << std::endl;
81 auto remeshed = Remesher<MyMesh>::Remesh(startMesh, samplingRadius, 70.0);
84 tri::io::ExporterPLY<MyMesh>::Save(*remeshed,
"Full.ply",tri::io::Mask::IOM_VERTCOLOR|tri::io::Mask::IOM_WEDGTEXCOORD );