Subversion Repositories gelsvn

Rev

Rev 39 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
39 bj 1
#include <fstream>
2
#include <string>
3
#include "obj_save.h"
4
#include "HMesh/FaceCirculator.h"
5
 
6
namespace HMeshUtil
7
{
8
	using namespace std;
9
	using namespace CGLA;
10
	using namespace HMesh;
11
 
12
	bool obj_save(const std::string& filename, Manifold& m)
13
	{
14
		ofstream os(filename.data());
15
		if(os.bad()) return false;
16
		int k=1;
17
		for(VertexIter vi = m.vertices_begin(); vi != m.vertices_end(); ++vi,++k)
18
			{
19
				vi->touched = k;
62 jab 20
				Vec3f p = vi->pos;
39 bj 21
				os << "v "<< p[0] << " " << p[1] << " " << p[2] << "\n";
22
			}
23
		for(FaceIter fi = m.faces_begin();fi != m.faces_end(); ++fi)
24
			{
25
				std::vector<int> verts;
26
				for(FaceCirculator fc(fi);!fc.end();++fc)
27
					{
28
						int vertex_idx = fc.get_vertex()->touched;
29
						if(vertex_idx >= k)
30
							{
31
								cout << vertex_idx  << " " << k << endl;
32
								verts.push_back(0);
33
							}
34
						else
35
							{
36
								assert(vertex_idx < k);
37
								verts.push_back(vertex_idx);
38
							}
39
					}
40
				assert(verts.size()==3);
41
				for(int i=1;i<(verts.size()-1);++i)
42
					{
43
						os << "f ";
44
						os << verts[0] << " " << verts[i] << " " << verts[i+1] << "\n";
45
					}
46
			}
47
	}
48
 
49
}