gKit2 light
Classes
#include <vector>
#include <unordered_map>
#include "glcore.h"
#include "vec.h"
#include "mat.h"
#include "color.h"
#include "materials.h"

Go to the source code of this file.

Classes

struct  TriangleData
 representation d'un triangle. More...
 
struct  TriangleGroup
 representation d'un ensemble de triangles de meme matiere. More...
 
class  Mesh
 representation d'un objet / maillage. More...
 

Detailed Description

representation d'un objet.

Mesh propose plusieurs manieres de decrire un maillage. par exemple, un triangle :

Mesh m(GL_TRIANGLES);
// coordonnnees des 3 sommets d'un triangle
Point a= { ... }
Point b= { ... }
Point c= { ... }
m.vertex( a );
m.vertex( b );
m.vertex( c );
representation d'un objet / maillage.
Definition: mesh.h:112
representation d'un point 3d.
Definition: vec.h:21

il est aussi possible de definir d'autres attributs : la couleur du sommet, sa normale, ses coordonnees de texture, ce sont les fonctions Mesh::color(), Mesh::normal() et Mesh::texcoord(). on peut decrire ces informations de maniere assez compacte :

Mesh m(GL_TRIANGLES);
m.color(Red()).vertex(a);
m.color(Green()).vertex(b);
m.color(Blue()).vertex(c);
Color Red()
utilitaire. renvoie une couleur rouge.
Definition: color.cpp:57
Color Blue()
utilitaire. renvoie une couleur bleue.
Definition: color.cpp:67
Color Green()
utilitaire. renvoie une couleur verte.
Definition: color.cpp:62

et :

Mesh m(GL_TRIANGLES);
m.color(Red()).normal(na).vertex(a);
m.color(Green()).normal(nb).vertex(b);
m.color(Blue()).normal(nc).vertex(c);

vertex() doit etre utilise en dernier. pour permettre de decrire un triangle de couleur uniforme, par exemple, au lieu d'ecrire :

Mesh m(GL_TRIANGLES);
m.color(Red()).vertex(a);
m.color(Red()).vertex(b);
m.color(Red()).vertex(c);

il est plus simple d'ecrire :

Mesh m(GL_TRIANGLES);
m.color(Red());
m.vertex(a);
m.vertex(b);
m.vertex(c);

et cette solution permet aussi de decrire plusieurs triangles partageant leurs sommets, par exemple :

Mesh m(GL_TRIANGLES);
// insere 4 sommets dans le maillage et conserve leurs indices
unsigned int a= m.vertex(Point(...));
unsigned int b= m.vertex(Point(...));
unsigned int c= m.vertex(Point(...));
unsigned int d= m.vertex(Point(...));
// decrit 2 triangles avec les indices des 4 sommets
m.triangle(a, b, c);
m.triangle(a, c, d);
// ou decrit un triangle indexe sommet par sommet (indice par indice)
m.index(a);
m.index(b);
m.index(c);

Definition in file mesh.h.