Rev 150 | Rev 341 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
#include <fstream>
#include <string>
#include "obj_save.h"
#include "HMesh/FaceCirculator.h"
namespace HMesh
{
using namespace std;
using namespace CGLA;
using namespace HMesh;
bool obj_save(const std::string& filename, Manifold& m)
{
ofstream os(filename.data());
if(os.bad()) return false;
int k=1;
for(VertexIter vi = m.vertices_begin(); vi != m.vertices_end(); ++vi,++k)
{
vi->touched = k;
Vec3f p = vi->pos;
os << "v "<< p[0] << " " << p[1] << " " << p[2] << "\n";
}
for(FaceIter fi = m.faces_begin();fi != m.faces_end(); ++fi)
{
std::vector<int> verts;
for(FaceCirculator fc(fi);!fc.end();++fc)
{
int vertex_idx = fc.get_vertex()->touched;
if(vertex_idx >= k)
{
cout << vertex_idx << " " << k << endl;
verts.push_back(0);
}
else
{
assert(vertex_idx < k);
verts.push_back(vertex_idx);
}
}
assert(verts.size()==3);
for(size_t i=1;i<(verts.size()-1);++i)
{
os << "f ";
os << verts[0] << " " << verts[i] << " " << verts[i+1] << "\n";
}
}
return true;
}
}