From 98cc5ee0280cf05a34d0c003c35cdd4265b2e5ee Mon Sep 17 00:00:00 2001 From: cignoni Date: Tue, 18 Oct 2011 00:02:12 +0000 Subject: [PATCH] Added minimal example of disk parametrization. --- .../trimesh_diskparam/trimesh_diskparam.cpp | 86 +++++++++++++++++++ .../trimesh_diskparam/trimesh_diskparam.pro | 13 +++ 2 files changed, 99 insertions(+) create mode 100644 apps/sample/trimesh_diskparam/trimesh_diskparam.cpp create mode 100644 apps/sample/trimesh_diskparam/trimesh_diskparam.pro diff --git a/apps/sample/trimesh_diskparam/trimesh_diskparam.cpp b/apps/sample/trimesh_diskparam/trimesh_diskparam.cpp new file mode 100644 index 00000000..7333bd42 --- /dev/null +++ b/apps/sample/trimesh_diskparam/trimesh_diskparam.cpp @@ -0,0 +1,86 @@ +/**************************************************************************** +* VCGLib o o * +* Visual and Computer Graphics Library o o * +* _ O _ * +* Copyright(C) 2004-2009 \/)\/ * +* Visual Computing Lab /\/| * +* ISTI - Italian National Research Council | * +* \ * +* All rights reserved. * +* * +* This program is free software; you can redistribute it and/or modify * +* it under the terms of the GNU General Public License as published by * +* the Free Software Foundation; either version 2 of the License, or * +* (at your option) any later version. * +* * +* This program is distributed in the hope that it will be useful, * +* but WITHOUT ANY WARRANTY; without even the implied warranty of * +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +* GNU General Public License (http://www.gnu.org/licenses/gpl.txt) * +* for more details. * +* * +****************************************************************************/ + +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace vcg; +using namespace std; + +class MyEdge; +class MyFace; +class MyVertex; +struct MyUsedTypes : public UsedTypes< Use ::AsVertexType, + Use ::AsEdgeType, + Use ::AsFaceType>{}; + +class MyVertex : public Vertex{}; +class MyFace : public Face< MyUsedTypes, face::VertexRef, face::BitFlags, face::FFAdj , face::WedgeTexCoord2f> {}; +class MyEdge : public Edge{}; +class MyMesh : public tri::TriMesh< vector, vector , vector > {}; + + +int main( int argc, char **argv ) +{ + MyMesh m; + if(argc < 2 ) return -1; + + printf("Reading %s\n",argv[1]); + int ret= tri::io::ImporterPLY::Open(m,argv[1]); + if(ret!=0) + { + printf("Unable to open %s for '%s'\n",argv[1],tri::io::ImporterPLY::ErrorMsg(ret)); + return -1; + } + + printf("Mesh has %i vn %i fn\n",m.vn,m.fn); + tri::PoissonSolver PS(m); + + if(!PS.IsFeaseable()) + { + printf("mesh is not homeomorphic to a disk\n"); + return -1; + } else + printf("OK - mesh is homeomorphic to a disk\n"); + + PS.Init(); + PS.SetBorderAsFixed(); + PS.FixDefaultVertices(); + PS.SolvePoisson(true); + + tri::UpdateTexture::WedgeTexFromVertexTex(m); + tri::io::ExporterPLY::Save(m,"pippo.ply",tri::io::Mask::IOM_WEDGTEXCOORD); + + return 0; +} diff --git a/apps/sample/trimesh_diskparam/trimesh_diskparam.pro b/apps/sample/trimesh_diskparam/trimesh_diskparam.pro new file mode 100644 index 00000000..966c1d09 --- /dev/null +++ b/apps/sample/trimesh_diskparam/trimesh_diskparam.pro @@ -0,0 +1,13 @@ +#DEFINES += VCG_USE_EIGEN + +TARGET = trimesh_diskparam +DEPENDPATH += . ../../.. + +INCLUDEPATH += . ../../.. + +CONFIG += console stl +TEMPLATE = app +SOURCES += trimesh_diskparam.cpp ../../../wrap/ply/plylib.cpp + +# Mac specific Config required to avoid to make application bundles +CONFIG -= app_bundle