int main(int /*argc*/, char** argv) { SurfaceMesh mesh; mesh.read(argv[1]); float mean_valence = 0.0f; unsigned int vertex_valence; // instantiate iterator and circulators SurfaceMesh::Vertex_iterator vit; SurfaceMesh::Vertex_around_vertex_circulator vc, vc_end; // loop over all vertices for (vit = mesh.vertices_begin(); vit != mesh.vertices_end(); ++vit) { // initialize circulators vc = mesh.vertices(*vit); vc_end = vc; // reset counter vertex_valence = 0; // loop over all incident vertices do { ++vertex_valence; } while (++vc != vc_end); // sum up vertex valences mean_valence += vertex_valence; } mean_valence /= mesh.n_vertices(); std::cout << "mean valence: " << mean_valence << std::endl; }
int main(int argc, char** argv) { QApplication application(argc,argv); if(argc!=2){ cout << "One argument necessary, given: " << (argc-1) << endl; return EXIT_FAILURE; } SurfaceMesh mesh; bool ok = mesh.read(argv[1]); if(!ok){ cout << "could not open file: " << argv[1] << endl; return EXIT_FAILURE; } ///--- Preprocess mesh.triangulate(); mesh.update_vertex_normals(); ///--- Shutdown on close GUI QObject::connect(&application, &QApplication::lastWindowClosed, &application, &QApplication::quit); Viewer viewer(mesh); viewer.setWindowTitle("OpenGP/apps/qglviewer"); viewer.show(); return application.exec(); }
int main(int argc, char** argv) { std::string file = (argc>1) ? argv[1] : "bunny.obj"; SurfaceMesh mesh; bool success = mesh.read(file); CHECK(success); auto points = mesh.get_vertex_property<Vec3>("v:point"); Vec3 p(0,0,0); for (auto vit: mesh.vertices()) p += points[vit]; p /= mesh.n_vertices(); std::cout << "barycenter: " << p << std::endl; }
/// Entry point int main(int argc, char** argv) { if(argc!=2) mFatal("usage: glfwviewer bunny.obj"); int success = mesh.read(argv[1]); if(!success) mFatal() << "File not found"; mesh.triangulate(); mesh.update_vertex_normals(); cout << "input: '" << argv[1] << "' num vertices " << mesh.vertices_size() << endl; cout << "BBOX: " << bounding_box(mesh) << endl; glfwInitWindowSize(_width, _height); if (glfwMakeWindow(__FILE__) == EXIT_FAILURE) return EXIT_FAILURE; glfwDisplayFunc(display); glfwTrackball(update_matrices, update_projection_matrix); init(); glfwMainLoop(); return EXIT_SUCCESS; }
int main(int argc, char** argv) { std::string in_file = (argc>1) ? argv[1] : "bunny.obj"; std::string out_file = (argc>2) ? argv[2] : "output.obj"; // instantiate a SurfaceMesh object SurfaceMesh mesh; // read a mesh specified as the first command line argument bool success = mesh.read(in_file); CHECK(success); // ... // do fancy stuff with the mesh // ... // write the mesh to the file specified as second argument mesh.write(out_file); CHECK(success); mLogger() << "read:" << in_file << "wrote:" << out_file; return EXIT_SUCCESS; }
int main(int argc, char** argv){ if(argc!=3){ cout << "usage:" << endl << "isoremesh bunny.obj remeshed.obj" << endl; return EXIT_FAILURE; } std::string input(argv[1]); std::string output(argv[2]); ///--- Load mesh SurfaceMesh mesh; mesh.read(input); if(mesh.n_vertices()==0){ cout << "Input mesh has 0 vertices" << endl; return EXIT_FAILURE; } ///--- Remesher is only for triangulations! mesh.triangulate(); ///--- Compute bounding box Scalar bbox_diag_length = bounding_box(mesh).diagonal().norm(); cout << "#vertices: " << mesh.n_vertices() << endl; cout << "bbox_diag_length: " << bbox_diag_length << endl; ///--- Perform remeshing IsotropicRemesher remesher(mesh); remesher.num_iterations = 10; remesher.sharp_feature_deg = 45; remesher.longest_edge_length = 0.02*bbox_diag_length; remesher.keep_short_edges = false; remesher.reproject_to_surface = true; remesher.myout = &std::cout; ///< print output to... remesher.execute(); ///--- Write to file mesh.write(output); return EXIT_SUCCESS; }
int main(int /*argc*/, char** argv) { SurfaceMesh mesh; mesh.read(argv[1]); // get (pre-defined) property storing vertex positions SurfaceMesh::Vertex_property<Vec3> points = mesh.get_vertex_property<Vec3>("v:point"); SurfaceMesh::Vertex_iterator vit, vend = mesh.vertices_end(); Vec3 p(0,0,0); for (vit = mesh.vertices_begin(); vit != vend; ++vit) { // access point property like an array p += points[*vit]; } p /= mesh.n_vertices(); std::cout << "barycenter: " << p << std::endl; }