From a07b6e638ac69ee249772042d95900717dd68aa0 Mon Sep 17 00:00:00 2001 From: cnr-isti-vclab Date: Mon, 15 Jan 2007 12:46:25 +0000 Subject: [PATCH] Added relaxation. --- apps/sample/trimesh_hole/trimesh_hole.cpp | 28 +++++++++++++++-------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/apps/sample/trimesh_hole/trimesh_hole.cpp b/apps/sample/trimesh_hole/trimesh_hole.cpp index 25e4ad60..b7e83d82 100644 --- a/apps/sample/trimesh_hole/trimesh_hole.cpp +++ b/apps/sample/trimesh_hole/trimesh_hole.cpp @@ -6,6 +6,7 @@ #include #include #include +//#include #include @@ -32,21 +33,28 @@ class MyEdge; // dummy prototype never used class MyFace; class MyVertex; -class MyVertex : public VertexSimp2< MyVertex, MyEdge, MyFace, vert::Coord3f, vert::BitFlags, vert::Normal3f, vert::Mark >{}; -class MyFace : public FaceSimp2 < MyVertex, MyEdge, MyFace, face::VertexRef,face::FFAdj, face::Mark, face::BitFlags, face::Normal3f > {}; +class MyVertex : public VertexSimp2< MyVertex, MyEdge, MyFace, vert::Coord3f, vert::BitFlags, vert::Normal3f, vert::Mark, vert::Color4b >{}; +class MyFace : public FaceSimp2 < MyVertex, MyEdge, MyFace, face::VertexRef,face::FFAdj, face::Mark, face::BitFlags, face::Normal3f> {}; class MyMesh : public tri::TriMesh< vector, vector >{}; +/* +//for coplanar mesh +class MyTriEdgeFlip: public vcg::tri::PlanarEdgeFlip< MyMesh, MyTriEdgeFlip > { + public: + typedef vcg::tri::PlanarEdgeFlip< MyMesh, MyTriEdgeFlip > TEF; + inline MyTriEdgeFlip( const TEF::PosType &p, int i) :TEF(p,i){} +}; +/*/ +//Delaunay class MyTriEdgeFlip: public vcg::tri::TriEdgeFlip< MyMesh, MyTriEdgeFlip > { public: typedef vcg::tri::TriEdgeFlip< MyMesh, MyTriEdgeFlip > TEF; - //typedef MyMesh::VertexType::PosType PosType; inline MyTriEdgeFlip( const TEF::PosType &p, int i) :TEF(p,i){} }; - - +//*/ bool callback(int percent, const char *str) { cout << "str: " << str << " " << percent << "%\r"; return true; @@ -91,6 +99,7 @@ int main(int argc,char ** argv){ tri::UpdateNormals::PerVertexPerFace(m); tri::UpdateFlags::FaceBorderFromFF(m); assert(tri::Clean::IsFFAdjacencyConsistent(m)); + tri::Hole holeFiller; switch(algorithm) @@ -100,17 +109,16 @@ int main(int argc,char ** argv){ case 3: tri::Hole::EarCuttingIntersectionFill >(m,holeSize,false); break; case 4: tri::Hole::MinimumWeightFill(m, false); break; } - printf("\nCompleted. Saving....\n"); + printf("\nCompleted. Saving...\n"); assert(tri::Clean::IsFFAdjacencyConsistent(m)); tri::io::ExporterPLY::Save(m,argv[4],false); - printf("\nCompleted. flipping....\n"); + printf("\nStart flipping...\n"); - /* Does not Work!!! (but it compiles :) ) */ vcg::LocalOptimization FlippingSession(m); - FlippingSession.SetTargetOperations(100); + FlippingSession.SetTargetMetric(-0.000000000001f);// FlippingSession.Init(); FlippingSession.DoOptimization(); - tri::io::ExporterPLY::Save(m,"out2.ply",false); + tri::io::ExporterPLY::Save(m,"out2.ply",vcg::tri::io::Mask::IOM_VERTCOLOR); return 0; }