Subversion Repositories gelsvn

Rev

Rev 338 | Rev 419 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 338 Rev 375
1
#ifndef __MINI_MESH_H
1
#ifndef __MINI_MESH_H
2
#define __MINI_MESH_H
2
#define __MINI_MESH_H
3
 
3
 
4
#include "IndexedFaceSet.h"
4
#include "IndexedFaceSet.h"
5
#include "Material.h"
5
#include "Material.h"
6
 
6
 
7
namespace Geometry
7
namespace Geometry
8
{
8
{
9
 
9
 
10
 
10
 
11
	/** \brief A Triangle Mesh struct. 
11
	/** \brief A Triangle Mesh struct. 
12
 
12
 
13
	    This struct contains three indexed face sets, one for geometry,
13
	    This struct contains three indexed face sets, one for geometry,
14
			textures, and normals. It also contains a vector of materials and a
14
			textures, and normals. It also contains a vector of materials and a
15
			vector of texture maps.
15
			vector of texture maps.
16
 
16
 
17
			A number of functions are defined allowing for rendering of the triangle
17
			A number of functions are defined allowing for rendering of the triangle
18
			mesh. */
18
			mesh. */
19
	class TriMesh 
19
	class TriMesh 
20
	{
20
	{
21
		public:
21
		public:
22
		
22
		
23
		// ------- DATA -------
23
		// ------- DATA -------
24
 
24
 
25
		/// Name of model
25
		/// Name of model
26
		std::string name;
26
		std::string name;
27
		
27
		
28
		/// Indexed face set for the actual geometry
28
		/// Indexed face set for the actual geometry
29
		IndexedFaceSet geometry;
29
		IndexedFaceSet geometry;
30
 
30
 
31
		/// Indexed face set for the normals
31
		/// Indexed face set for the normals
32
		IndexedFaceSet normals;
32
		IndexedFaceSet normals;
33
 
33
 
34
		/// Indexed face set for the texture coordinates.
34
		/// Indexed face set for the texture coordinates.
35
		IndexedFaceSet texcoords;
35
		IndexedFaceSet texcoords;
36
 
36
 
37
		/// Material indices for all faces
37
		/// Material indices for all faces
38
		std::vector<int> mat_idx;
38
		std::vector<int> mat_idx;
39
 
39
 
40
		/// Texture indices for all faces
40
		/// Texture indices for all faces
41
		std::vector<int> tex_idx;
41
		std::vector<int> tex_idx;
42
 
42
 
43
		/// Vector of materials
43
		/// Vector of materials
44
		std::vector<Material> materials;
44
		std::vector<Material> materials;
45
 
45
 
46
		// -------- FUNCTIONS -----------
46
		// -------- FUNCTIONS -----------
47
 
47
 
48
		/// Get an axis aligned bounding box for the model.
48
		/// Get an axis aligned bounding box for the model.
49
		void get_bbox(CGLA::Vec3f& p0, CGLA::Vec3f& p7) const;
49
		bool get_bbox(CGLA::Vec3f& p0, CGLA::Vec3f& p7) const;
50
 
50
 
51
		/// Get a bounding sphere for the model.
51
		/// Get a bounding sphere for the model.
52
		void get_bsphere(CGLA::Vec3f& c, float& r) const;
52
		bool get_bsphere(CGLA::Vec3f& c, float& r) const;
53
 
53
 
54
		/// Returns true if at least one normal has been defined.
54
		/// Returns true if at least one normal has been defined.
55
		bool has_normals() const 
55
		bool has_normals() const 
56
		{
56
		{
57
			return normals.no_faces()>0;
57
			return normals.no_faces()>0;
58
		}
58
		}
59
		
59
		
60
		/// Find a material from its name
60
		/// Find a material from its name
61
		int find_material(const std::string&) const;
61
		int find_material(const std::string&) const;
62
 
62
 
63
		/// Compute normals for the mesh. Does not check if there are normals.
63
		/// Compute normals for the mesh. Does not check if there are normals.
64
		void compute_normals();
64
		void compute_normals();
65
 
65
 
66
	};
66
	};
67
 
67
 
68
 
68
 
69
}
69
}
70
#endif
70
#endif
71
 
71