Subversion Repositories gelsvn

Rev

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