26 throw std::invalid_argument(
"No filename given");
32 std::ifstream in(filename.c_str());
48 in >> v[0] >> v[1] >> v[2];
57 faces.push_back(vid - 1);
59 faces.push_back(vid - 1);
61 faces.push_back(vid - 1);
66 std::cerr <<
"Unknown element type '" << row_type
67 <<
"'. Skipping." << std::endl;
80 throw std::invalid_argument(
"Null mesh given");
82 throw std::invalid_argument(
"No filename given");
88 std::ofstream out(filename.c_str(), std::ios::binary);
92 std::cout <<
"Writing SMF: " << verts.size() <<
" verts..." << std::flush;
93 for (std::size_t i = 0; i < verts.size(); ++i)
96 out <<
"v " << v[0] <<
" " << v[1] <<
" " << v[2] <<
"\n";
99 std::cout <<
" " << (faces.size() / 3) <<
" faces..." << std::flush;
100 for (std::size_t i = 0; i < faces.size(); i += 3)
102 out <<
"f " << faces[i + 0] + 1 <<
" "
103 << faces[i + 1] + 1 <<
" "
104 << faces[i + 2] + 1 <<
"\n";
106 std::cout <<
" done." << std::endl;
Vector class for arbitrary dimensions and types.
std::vector< math::Vec3f > VertexList
std::shared_ptr< TriangleMesh > Ptr
std::vector< VertexID > FaceList
std::shared_ptr< TriangleMesh const > ConstPtr
Exception class for file exceptions with additional filename.
#define MVE_NAMESPACE_BEGIN
#define MVE_NAMESPACE_END
#define MVE_GEOM_NAMESPACE_END
#define MVE_GEOM_NAMESPACE_BEGIN
void save_smf_mesh(mve::TriangleMesh::ConstPtr mesh, std::string const &filename)
Saves a triangle mesh to a file in SMF file format.
TriangleMesh::Ptr load_smf_mesh(std::string const &filename)
Loads a triangle mesh from a SMF file format.