1 /****************************************************************************
2 * VCGLib                                                            o o     *
3 * Visual and Computer Graphics Library                            o     o   *
4 *                                                                _   O  _   *
5 * Copyright(C) 2004-2009                                           \/)\/    *
6 * Visual Computing Lab                                            /\/|      *
7 * ISTI - Italian National Research Council                           |      *
8 *                                                                    \      *
9 * All rights reserved.                                                      *
10 *                                                                           *
11 * This program is free software; you can redistribute it and/or modify      *
12 * it under the terms of the GNU General Public License as published by      *
13 * the Free Software Foundation; either version 2 of the License, or         *
14 * (at your option) any later version.                                       *
15 *                                                                           *
16 * This program is distributed in the hope that it will be useful,           *
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of            *
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             *
19 * GNU General Public License (http://www.gnu.org/licenses/gpl.txt)          *
20 * for more details.                                                         *
21 *                                                                           *
22 ****************************************************************************/
23 #include<vcg/complex/complex.h>
24 #include<vcg/complex/algorithms/create/platonic.h>
25 
26 #include<wrap/io_trimesh/import_ply.h>
27 #include<wrap/io_trimesh/export_ply.h>
28 #include<vcg/complex/algorithms/parametrization/voronoi_atlas.h>
29 #include<vcg/space/outline2_packer.h>
30 
31 using namespace vcg;
32 using namespace std;
33 
34 class MyEdge;
35 class MyFace;
36 class MyVertex;
37 struct MyUsedTypes : public UsedTypes<	Use<MyVertex>   ::AsVertexType,
38                                         Use<MyEdge>     ::AsEdgeType,
39                                         Use<MyFace>     ::AsFaceType>{};
40 
41 class MyVertex  : public Vertex<MyUsedTypes, vertex::InfoOcf, vertex::Coord3f, vertex::Normal3f, vertex::TexCoord2f, vertex::VFAdj , vertex::Qualityf, vertex::Color4b, vertex::BitFlags  >{};
42 class MyFace    : public Face< MyUsedTypes, face::InfoOcf, face::VertexRef, face::CurvatureDirf, face::BitFlags, face::FFAdjOcf ,face::VFAdj , face::WedgeTexCoord2f> {};
43 class MyEdge    : public Edge< MyUsedTypes>{};
44 class MyMesh    : public tri::TriMesh< vertex::vector_ocf<MyVertex>, face::vector_ocf<MyFace> , vector<MyEdge>  > {};
45 
46 
47 
main(int argc,char ** argv)48 int main( int argc, char **argv )
49 {
50   MyMesh startMesh;
51   if(argc < 3 )
52   {
53     printf("Usage trimesh_voro mesh region_num\n");
54      return -1;
55   }
56   int sampleNum =atoi(argv[2]);
57   printf("Reading %s and sampling %i \n",argv[1],sampleNum);
58   int ret= tri::io::ImporterPLY<MyMesh>::Open(startMesh,argv[1]);
59   if(ret!=0)
60   {
61     printf("Unable to open %s for '%s'\n",argv[1],tri::io::ImporterPLY<MyMesh>::ErrorMsg(ret));
62     return -1;
63   }
64 
65   MyMesh paraMesh;
66   tri::VoronoiAtlas<MyMesh>::VoronoiAtlasParam pp;
67   pp.sampleNum =sampleNum;
68   pp.overlap=false;
69 
70   tri::VoronoiAtlas<MyMesh>::Build(startMesh,paraMesh,pp);
71 
72   tri::io::ExporterPLY<MyMesh>::Save(paraMesh,"Full.ply",tri::io::Mask::IOM_VERTCOLOR|tri::io::Mask::IOM_WEDGTEXCOORD );
73   return 0;
74 }
75