Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00029 #include<vcg/complex/complex.h>
00030
00031 #include<wrap/io_trimesh/import_off.h>
00032
00033 #include<vcg/complex/algorithms/update/normal.h>
00034
00035 using namespace vcg;
00036 using namespace std;
00037
00038 class MyEdge;
00039 class MyFace;
00040 class MyVertex;
00041 struct MyUsedTypes : public UsedTypes< Use<MyVertex> ::AsVertexType,
00042 Use<MyEdge> ::AsEdgeType,
00043 Use<MyFace> ::AsFaceType>{};
00044
00045 class MyVertex : public Vertex<MyUsedTypes, vertex::Coord3f, vertex::Normal3f, vertex::BitFlags >{};
00046 class MyFace : public Face< MyUsedTypes, face::FFAdj, face::VertexRef, face::BitFlags > {};
00047 class MyEdge : public Edge<MyUsedTypes>{};
00048 class MyMesh : public tri::TriMesh< vector<MyVertex>, vector<MyFace> , vector<MyEdge> > {};
00049
00050 int main( int argc, char **argv )
00051 {
00052 if(argc<2)
00053 {
00054 printf("Usage trimesh_base <meshfilename.obj>\n");
00055 return -1;
00056 }
00057
00058 MyMesh m;
00059
00060 if(tri::io::ImporterOFF<MyMesh>::Open(m,argv[1])!=0)
00061 {
00062 printf("Error reading file %s\n",argv[1]);
00063 exit(0);
00064 }
00065
00066 Matrix44f m44 = Matrix44f::Identity();
00067
00068 tri::UpdateNormal<MyMesh>::PerVertexClear(m);
00069 tri::UpdateNormal<MyMesh>::PerVertex(m);
00070 tri::UpdateNormal<MyMesh>::PerVertexAngleWeighted(m);
00071 tri::UpdateNormal<MyMesh>::PerVertexNelsonMaxWeighted(m);
00072 tri::UpdateNormal<MyMesh>::PerFace(m);
00073 tri::UpdateNormal<MyMesh>::PerVertexFromCurrentFaceNormal(m);
00074 tri::UpdateNormal<MyMesh>::PerFaceFromCurrentVertexNormal(m);
00075 tri::UpdateNormal<MyMesh>::NormalizePerVertex(m);
00076 tri::UpdateNormal<MyMesh>::NormalizePerFace(m);
00077 tri::UpdateNormal<MyMesh>::NormalizePerFaceByArea(m);
00078 tri::UpdateNormal<MyMesh>::PerBitQuadFaceNormalized(m);
00079 tri::UpdateNormal<MyMesh>::PerVertexMatrix(m,m44);
00080 tri::UpdateNormal<MyMesh>::PerFaceMatrix(m,m44);
00081 tri::UpdateNormal<MyMesh>::PerWedgeCrease(m, math::ToRad(45.0f));
00082
00083 return 0;
00084 }