Pipeline graphique
 Tout Structures de données Espaces de nommage Fichiers Fonctions Variables Définitions de type Ã‰numérations Valeurs énumérées Macros
ReadMesh.h
Aller à la documentation de ce fichier.
1 #ifndef _READMESH
2 #define _READMESH
3 #include <math.h>
4 
6 namespace Mesh {
9  struct COLOR {
10  float r,g,b,a;
11  void Interpolate(float u1, COLOR &col1, float u2, COLOR &col2);
12  inline void set(float v) { r=g=b=v; a=1.f; };
13  inline void set(float vr, float vg, float vb ) { r=vr; g=vg; b=vb; a=1.f; };
14  };
15  float Distance(COLOR &col1, COLOR &col2);
16 
19  struct MATERIAL {
21  float Power;
22  void Interpolate(int n1, MATERIAL &mat1, int n2, MATERIAL &mat2);
23  };
24  float Distance(MATERIAL &mat1, MATERIAL &mat2);
25 
28  struct VECTOR {
29  float x,y,z;
30  inline void set(float _x, float _y, float _z) { x=_x; y=_y; z=_z; };
31  inline void set(VECTOR P) { x=P.x; y=P.y; z=P.z; };
32  inline void zero(void) { x=y=z=0.f; };
33  inline float norm(void) { return sqrt(x*x+y*y+z*z); };
34  inline void normalize(void) { float norm2 = x*x+y*y+z*z; if (norm2==0.f) return; float inorm=1.f/sqrt(norm2); x*=inorm; y*=inorm; z*=inorm; };
35  inline void diff(VECTOR &v1, VECTOR &v2 ) { x=v1.x-v2.x; y=v1.y-v2.y; z=v1.z-v2.z; };
36  inline void add(VECTOR &v) { x+=v.x; y+=v.y; z+=v.z; };
37  inline void vecprod(VECTOR &v1, VECTOR &v2 ) { x=v1.y*v2.z-v2.y*v1.z; y=v1.z*v2.x-v2.z*v1.x; z=v1.x*v2.y-v2.x*v1.y; };
38  };
39 
42  typedef struct { VECTOR P,N; } VERTEX;
43 
46  typedef unsigned int INDICE;
47 
50  typedef struct { VECTOR Min, Max; } BOUNDINGBOX;
51 
52 
55  class Object {
56  private:
59  INDICE *Indice;
60  int *Attribute;
62  void ComputeNormals(void);
63  public:
64  Object();
65  ~Object();
66  void Normalize(void);
68  void FlattenAttributeTable(void);
69  void CompressAttributeTable(float);
70  bool LoadMesh(const char *fname, bool invface);
71  bool LoadMaterial(const char*, bool skip0);
72  void VertexInfo(int=0);
73  void FacesInfo(int=0);
74  void MaterialInfo(int=0);
75  VERTEX* getVertex (int &_nVertex) { _nVertex = nVertex; return Vertex; };
76  INDICE* getIndices (int &_nFaces) { _nFaces = nFaces; return Indice; };
77  int* getAttributes(int &_nFaces) { _nFaces = nFaces; return Attribute; };
78  MATERIAL* getMaterials (int &_nMaterials) { _nMaterials = nMaterials; return Material; };
79  int getStride(void) { return sizeof(VERTEX); };
80  void Clear(void);
81  };
82 };
83 
84 #endif
COLOR Ambient
Definition: ReadMesh.h:20
namespace pour la lecture de .mesh (g�om�trie) et .medit (materiau)
Definition: ReadMesh.h:6
int getStride(void)
renvoit la table des mat�riaux, et le nombre de mat�riaux en param�tre
Definition: ReadMesh.h:79
BOUNDINGBOX GetBoundingBox(void)
normalisation de l'objet ([-1;+1] x [-1;+1] x [-1;+1])
Definition: ReadMesh.cpp:558
INDICE * getIndices(int &_nFaces)
renvoit la table des sommets, et le nombre de sommets en param�tre
Definition: ReadMesh.h:76
void Interpolate(int n1, MATERIAL &mat1, int n2, MATERIAL &mat2)
exposant sp�culaire
Definition: ReadMesh.cpp:350
void CompressAttributeTable(float)
met la table des mat�riaux � 0 (m�me mat�riau pour toutes les faces)
Definition: ReadMesh.cpp:359
float a
Definition: ReadMesh.h:10
~Object()
constructeur
Definition: ReadMesh.cpp:77
Object()
calcul des normales � partir de la g�om�trie de l'objet
Definition: ReadMesh.cpp:60
int nFaces
Definition: ReadMesh.h:57
float b
Definition: ReadMesh.h:10
boite englobante
Definition: ReadMesh.h:50
VECTOR P
Definition: ReadMesh.h:42
void add(VECTOR &v)
fixe � la diff�rence entre 2 vecteurs
Definition: ReadMesh.h:36
int * Attribute
tableau des indices (3 indices cons�cutifs = 1 face)
Definition: ReadMesh.h:60
MATERIAL * Material
tableau des attributs (Attribute[i] = indice j du mat�riau � utiliser pour la i�me face) ...
Definition: ReadMesh.h:61
void set(float _x, float _y, float _z)
position d'un vecteur
Definition: ReadMesh.h:30
void Clear(void)
Definition: ReadMesh.cpp:68
void set(VECTOR P)
fixe la valeur du vecteur
Definition: ReadMesh.h:31
distance entre 2 couleurs
Definition: ReadMesh.h:19
bool LoadMesh(const char *fname, bool invface)
reduit le nombre de mat�riaux dans la table (param�tre=distance entre 2 mat�riaux pour les amalgam...
Definition: ReadMesh.cpp:115
void normalize(void)
norme du vecteur
Definition: ReadMesh.h:34
float y
Definition: ReadMesh.h:29
void Interpolate(float u1, COLOR &col1, float u2, COLOR &col2)
rouge, vert, bleu, alpha
Definition: ReadMesh.cpp:334
float Power
couleurs diffuses, ambiante, sp�culaire et �missive
Definition: ReadMesh.h:21
structure de sommet (position+normale)
Definition: ReadMesh.h:42
float r
Definition: ReadMesh.h:10
VERTEX * Vertex
nombre de sommets, de faces et de mat�riaux
Definition: ReadMesh.h:58
float Distance(COLOR &col1, COLOR &col2)
Definition: ReadMesh.cpp:319
MATERIAL * getMaterials(int &_nMaterials)
renvoit la table des attributs, et le nombre de faces en param�tre
Definition: ReadMesh.h:78
structure pour la gestion des couleurs
Definition: ReadMesh.h:9
INDICE * Indice
tableau de sommets
Definition: ReadMesh.h:59
COLOR Specular
Definition: ReadMesh.h:20
int nMaterials
Definition: ReadMesh.h:57
COLOR Emissive
Definition: ReadMesh.h:20
float g
Definition: ReadMesh.h:10
VERTEX * getVertex(int &_nVertex)
affiche les 10 premiers mat�riaux
Definition: ReadMesh.h:75
void Normalize(void)
destructeur
Definition: ReadMesh.cpp:575
float z
Definition: ReadMesh.h:29
void MaterialInfo(int=0)
affiche les 10 premi�res faces
Definition: ReadMesh.cpp:544
void FlattenAttributeTable(void)
calcule et retourne la boite englobante
Definition: ReadMesh.cpp:512
void set(float v)
interpolation entre 2 couleurs
Definition: ReadMesh.h:12
distance entre 2 mat�riaux
Definition: ReadMesh.h:28
void zero(void)
Definition: ReadMesh.h:32
bool LoadMaterial(const char *, bool skip0)
charge un objet g�om�trique .mesh dans l'objet (invface = inverser l'ordre des faces (false = ...
Definition: ReadMesh.cpp:209
int * getAttributes(int &_nFaces)
renvoit la table des indices, et le nombre de faces en param�tre
Definition: ReadMesh.h:77
void vecprod(VECTOR &v1, VECTOR &v2)
ajoute un vecteur au vecteur courant
Definition: ReadMesh.h:37
void FacesInfo(int=0)
affiche les 10 premiers sommets
Definition: ReadMesh.cpp:535
float norm(void)
fixe le vecteur � null
Definition: ReadMesh.h:33
void diff(VECTOR &v1, VECTOR &v2)
normalise le vecteur
Definition: ReadMesh.h:35
void ComputeNormals(void)
tableau des mat�riaux
Definition: ReadMesh.cpp:281
unsigned int INDICE
indice des sommets
Definition: ReadMesh.h:46
int nVertex
Definition: ReadMesh.h:57
float x
Definition: ReadMesh.h:29
void set(float vr, float vg, float vb)
fixe un niveau de gris
Definition: ReadMesh.h:13
void VertexInfo(int=0)
charge un table de mat�riau .medit dans l'objet (skip0 = ne pas utiliser le mat�riau 0 - faux en gï¿...
Definition: ReadMesh.cpp:524
COLOR Diffuse
Definition: ReadMesh.h:20
structure pour la gestion d'un objet 3D
Definition: ReadMesh.h:55