Subversion Repositories gelsvn

Rev

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

Rev Author Line No. Line
63 jab 1
#include <sstream>
2
#include <fstream>
3
#include <unistd.h>
4
 
5
#include "CGLA/Mat2x2f.h"
6
#include "Geometry/Polygonizer.h"
7
#include "Geometry/TrilinFilter.h"
8
#include "Geometry/load_raw.h"
9
#include "HMeshUtil/build_manifold.h"
81 jab 10
#include "HMeshUtil/obj_save.h"
63 jab 11
#include "Util/ArgExtracter.h"
12
 
13
using namespace HMesh;
14
using namespace HMeshUtil;
15
using namespace Geometry;
16
using namespace CGLA;
17
using namespace Util;
18
using namespace std;
19
 
20
 
81 jab 21
/* Create an implicit function: Just union of two spheres */
22
class TestImplicit: public ImplicitFunction
63 jab 23
{
81 jab 24
		const Vec3f c0, c1;
63 jab 25
public:
26
 
81 jab 27
		TestImplicit(): c0(0,0,0), c1(2,2,2)  {}
63 jab 28
 
29
		float eval(float x,float y,float z) 
30
				{
81 jab 31
						Vec3f p(x,y,z);
32
						return min(length(p-c0)-2.0f,length(p-c1)-2.0f);
63 jab 33
				}
34
};
35
 
36
 
37
int main(int argc, char **argv)
38
{
81 jab 39
	// Create an implicit.
40
	TestImplicit imp;
63 jab 41
 
81 jab 42
	// Create a polygonizer. Cell side length = 0.1 and go up to 50 cells.
43
	Polygonizer pol(&imp, 0.1f, 50);	
63 jab 44
 
81 jab 45
	// Start polygonizer in vicinity of 1,1,1
46
	pol.march(1,1,1);
47
 
48
	// Build HMesh from triangles
63 jab 49
	vector<int> indices;
50
	vector<Vec3f> verts;
51
	vector<int> faces;
52
 
81 jab 53
	// Extract vertices
63 jab 54
 	for(int i=0;i<pol.no_vertices();++i)
55
	{
56
			verts.push_back(*reinterpret_cast<Vec3f*>(&pol.get_vertex(i)));
57
	}
81 jab 58
 
59
	// Extract triangles.
63 jab 60
 	for(int i=0;i<pol.no_triangles();++i)
61
	{
62
			faces.push_back(3);
63
			TRIANGLE f = pol.get_triangle(i);
64
			indices.push_back(f.v0);
65
			indices.push_back(f.v1);
66
			indices.push_back(f.v2);
67
	}
81 jab 68
 
69
	// Build manifold
63 jab 70
	Manifold m;
81 jab 71
	build_manifold(m, verts.size(), &verts[0], 
63 jab 72
								 faces.size(), &faces[0], &indices[0]);
81 jab 73
 
74
	// Save as obj file
75
 	obj_save("bloomenthal.obj", m);
63 jab 76
 
77
}