gKit2 light
mesh_data.h
Go to the documentation of this file.
1 
3 #ifndef _MESH_DATA_H
4 #define _MESH_DATA_H
5 
6 #include <vector>
7 #include <string>
8 
9 #include "glcore.h"
10 #include "vec.h"
11 #include "color.h"
12 
13 
16 {
19 
20  std::string diffuse_filename;
21  GLuint diffuse_texture;
22 
24 
26  float ns;
27 
28  std::string ns_filename;
29  GLuint ns_texture;
30 
31  // normal texture... \todo
32 
33  MaterialData( ) : diffuse(0.8f, 0.8f, 0.8f), diffuse_texture_color(1, 1, 1), diffuse_filename(), diffuse_texture(0),
34  specular(Black()), emission(),
35  ns(0), ns_filename(), ns_texture(0) {}
36 };
37 
40 {
41  std::vector<std::string> names;
42  std::vector<MaterialData> data;
43 };
44 
45 
46 struct MeshData
47 {
48  std::vector<vec3> positions;
49  std::vector<vec2> texcoords;
50  std::vector<vec3> normals;
51 
52  std::vector<int> position_indices;
53  std::vector<int> texcoord_indices;
54  std::vector<int> normal_indices;
55 
56  std::vector<MaterialData> materials;
57  std::vector<int> material_indices;
58 };
59 
66 std::string pathname( const std::string& filename );
67 
69 MeshData read_mesh_data( const char *filename );
70 
72 MaterialDataLib read_material_data( const char *filename );
73 
75 void bounds( const MeshData& data, Point& pmin, Point& pmax );
76 
78 void normals( MeshData& data );
79 
81 MeshData vertices( MeshData& data );
82 
83 
84 #endif
Color Black()
utilitaire. renvoie une couleur noire.
Definition: color.cpp:31
MaterialDataLib read_material_data(const char *filename)
charge un ensemble de matieres texturees.
Definition: mesh_data.cpp:202
std::string pathname(const std::string &filename)
Definition: files.cpp:68
void normals(MeshData &data)
(re-) calcule les normales des sommets. utiliser avant les reindexations, cf indices() et vertices().
Definition: mesh_data.cpp:307
MeshData read_mesh_data(const char *filename)
charge un fichier wavefront .obj et renvoie les donnees.
Definition: mesh_data.cpp:16
MeshData vertices(MeshData &data)
construit les sommets. prepare l'affichage openGL, avec glDrawArrays().
Definition: mesh_data.cpp:350
void bounds(const MeshData &data, Point &pmin, Point &pmax)
renvoie l'englobant.
Definition: mesh_data.cpp:290
ensemble de matieres texturees.
Definition: mesh_data.h:40
representation d'une couleur (rgba) transparente ou opaque.
Definition: color.h:14
representation d'une matiere texturee.
Definition: mesh_data.h:16
Color specular
couleur du reflet
Definition: mesh_data.h:23
Color emission
pour une source de lumiere
Definition: mesh_data.h:25
GLuint diffuse_texture
texture diffuse
Definition: mesh_data.h:21
std::string diffuse_filename
nom de la texture diffuse
Definition: mesh_data.h:20
float ns
exposant pour les reflets blinn-phong
Definition: mesh_data.h:26
GLuint ns_texture
texture exposant
Definition: mesh_data.h:29
Color diffuse
couleur diffuse
Definition: mesh_data.h:17
std::string ns_filename
nom de la texture exposant
Definition: mesh_data.h:28
Color diffuse_texture_color
couleur moyenne de la texture
Definition: mesh_data.h:18
representation d'un point 3d.
Definition: vec.h:21