representation d'un maillage triangule. More...
#include <Mesh.h>
Public Member Functions | |
Mesh () | |
constructeur par defaut. | |
~Mesh () | |
destructeur. | |
void | pushPosition (const Point &point) |
ajoute un sommet. | |
void | attachPositionBuffer (const std::vector< Point > &positions) |
ajoute un ensemble de sommets. | |
void | attachPositionBuffer (const int n, const Point *positions) |
ajoute un ensemble de sommets. | |
int | positionCount () const |
renvoie le nombre de sommets du maillage. | |
std::vector< Point > & | positions () |
renvoie les positions des sommets du maillage. | |
const std::vector< Point > & | positions () const |
renvoie les positions des sommets du maillage. | |
void | pushNormal (const Normal &normal) |
ajoute une normale. | |
void | attachNormalBuffer (const std::vector< Normal > &normals) |
ajoute un ensemble de normales | |
void | attachNormalBuffer (const int n, const Normal *normals) |
ajoute un ensemble de normales | |
int | normalCount () const |
renvoie le nombre de normales du maillage. | |
std::vector< Normal > & | normals () |
renvoie les normales. | |
const std::vector< Normal > & | normals () const |
renvoie les normales. | |
void | pushTexCoord (const Point2 &texcoord) |
ajoute une coordonnee de texture. | |
void | attachTexCoordBuffer (const std::vector< Point2 > &texcoords) |
ajoute un ensemble de coordonnees de texture. | |
void | attachTexCoordBuffer (const int n, const Point2 *texcoords) |
ajoute un ensemble de coordonnees de texture. | |
int | texCoordCount () const |
renvoie le nombre de coordonnees de textures des sommets du maillage. | |
std::vector< Point2 > & | texCoords () |
renvoie les coordonnees de textures des sommets du maillage. | |
const std::vector< Point2 > & | texCoords () const |
renvoie les coordonnees de textures des sommets du maillage. | |
const std::vector< int > & | smoothGroups () |
renvoie les groupes de lissage de normales du maillage. | |
const std::vector< int > & | smoothGroups () const |
renvoie les groupes de lissage de normales du maillage. | |
template<class T > | |
int | attachAttributeBuffer (const Name &semantic, const std::vector< T > &attributes) |
attache un ensemble d'attributs. | |
template<class T > | |
int | attachAttributeBuffer (const Name &semantic, const int n, const T *attributes) |
attache un ensemble d'attributs. | |
MeshBuffer * | attachAttributeBuffer (const Name &semantic, const Point2 &attribute_tag) |
declare un ensemble d'attributs point 2d. | |
MeshBuffer * | attachAttributeBuffer (const Name &semantic, const Point &attribute_tag) |
declare un ensemble d'attributs point 3d. | |
MeshBuffer * | attachAttributeBuffer (const Name &semantic, const Vector &attribute_tag) |
declare un ensemble d'attributs vecteur 3d. | |
MeshBuffer * | attachAttributeBuffer (const Name &semantic, const Normal &attribute_tag) |
declare un ensemble d'attributs normale 3d. | |
MeshBuffer * | attachAttributeBuffer (const Name &semantic, const Color &attribute_tag) |
declare un ensemble d'attributs couleur rgba. | |
MeshBuffer * | findBuffer (const Name &semantic) |
renvoie un buffer d'apres son nom / semantique. | |
int | bufferCount () const |
renvoie le nombre de buffers d'attributs. | |
MeshBuffer * | buffer (const int id) |
renvoie un buffer. | |
const MeshBuffer * | buffer (const int id) const |
renvoie un buffer. | |
template<class T > | |
void | pushAttribute (const Name &semantic, const T &attribute) |
insere un attribut dans l'ensemble associe. | |
void | pushTriangle (const int a, const int b, const int c, const int material_id, const int smooth_group=-1) |
ajoute un triangle | |
BBox & | bbox () |
renvoie la bbox du mesh. | |
const BBox & | getBBox () const |
int | triangleCount () const |
renvoie le nombre de triangles du maillage. | |
int | indiceCount () const |
renvoie le nombre d'indices du maillage. | |
std::vector< int > & | indices () |
renvoie les indices du maillage. | |
const std::vector< int > & | indices () const |
renvoie les indices du maillage. | |
void | pushSubMesh (const int begin, const int end, const int material_id) |
ajoute un submesh. | |
int | subMeshCount () const |
renvoie le nombre de submesh. | |
const MeshMaterial & | subMeshMaterial (const int id) const |
renvoie la matiere d'un submesh. | |
const MeshMaterial & | subMeshMaterial (const int id) |
renvoie la matiere d'un submesh. | |
const std::vector< SubMesh > & | subMeshes () |
renvoie les parties du maillage. | |
const std::vector< SubMesh > & | subMeshes () const |
renvoie les parties du maillage. | |
int | pushDefaultMaterial () |
definit la matiere par defaut. | |
void | setMaterials (const std::vector< MeshMaterial * > &materials) |
remplace l'ensemble de matieres. | |
int | buildSubMeshes (std::vector< int > *map=NULL) |
construit les submeshes, sequences de triangles utilisant la meme matiere. | |
int | materialCount () const |
renvoie le nombre de matieres. | |
const std::vector < MeshMaterial * > & | materials () |
renvoie l'ensemble de matieres. | |
const std::vector < MeshMaterial * > & | materials () const |
renvoie l'ensemble de matieres. | |
const std::vector< int > & | triangleMaterialsId () const |
renvoie l'ensemble d'identifiants de matieres des triangles. | |
MeshMaterial & | triangleMaterial (const int id) |
renvoie la matiere d'un triangle. | |
const MeshMaterial & | triangleMaterial (const int id) const |
renvoie la matiere d'un triangle. | |
int | getTriangleMaterialId (const int id) const |
renvoie l'indice de la matiere d'un triangle. | |
Triangle | getTriangle (const int id) const |
renvoie un triangle 'geometrique' pour le calcul d'intersection avec un rayon. | |
PNTriangle | getPNTriangle (const int id) const |
renvoie un pn triangle. | |
BBox | getTriangleBBox (const int id) |
renvoie la boite englobante d'un triangle. | |
float | getTriangleArea (const int id) |
renvoie l'aire d'un triangle. | |
Normal | getTriangleNormal (const int id) const |
calcule et renvoie la normale geometrique d'un triangle. | |
Point | getUVPoint (const int id, const float u, const float v) const |
interpole une position a l'interieur d'un triangle, connaissant les coordonnees barycentriques du point. | |
Normal | getUVNormal (const int id, const float u, const float v) const |
interpole une normale a l'interieur d'un triangle, connaissant ses coordonnees barycentriques. | |
Point2 | getUVTexCoord (const int id, const float u, const float v) const |
interpole une coordonnee de texture a l'interieur du triangle, connaissant ses coordonnees barycentriques. | |
int | getTriangleSmoothGroup (const int id) |
renvoie le smooth group du triangle. | |
int | buildAdjacency () |
construit la liste d'adjacence des sommets (liste de triangles). | |
int | buildNormalSmoothGroups (const float max_angle) |
construit les smooth groups en fonction de l'angle entre les normales des triangles adjacents. | |
int | buildTexCoordSmoothGroups (const float max) |
construit les smooth groups en fonction de la distance entre les coordonnees de textures des triangles adjacents. | |
int | buildNormals () |
construit les normales du maillage. | |
Friends | |
class | MeshIO |
representation d'un maillage triangule.
un mesh est un ensemble de triangles. un triangle est un triplet <abc> d'indices permettant de retrouver la position, la normale et les coordonnees de texture de chaque sommet a, b, c. un triangle (cf. gk::MeshMaterial) a egalement une matiere associee. les triangles partageants la meme matiere peuvent etre groupes dans un gk::SubMesh pour un affichage efficace.
int gk::Mesh::buildSubMeshes | ( | std::vector< int > * | map = NULL |
) |
construit les submeshes, sequences de triangles utilisant la meme matiere.
tri les triangles en fonction de leur indice de matiere, eventuellement utilise un autre tableau d'indices, cf map).
References pushSubMesh(), subMeshCount(), and triangleCount().
Triangle gk::Mesh::getTriangle | ( | const int | id | ) | const [inline] |
renvoie un triangle 'geometrique' pour le calcul d'intersection avec un rayon.
utiliser les resultats de l'intersection pour calculer la normale et les texcoords interpolees au point d'intersection. cf. Mesh::getUVPoint(), Mesh::getUVNormal(), Mesh::getUVTexCoord().
Point gk::Mesh::getUVPoint | ( | const int | id, | |
const float | u, | |||
const float | v | |||
) | const [inline] |
interpole une position a l'interieur d'un triangle, connaissant les coordonnees barycentriques du point.
convention p(u, v)= (1 - u - v) * a + u * b + v * c
Normal gk::Mesh::getUVNormal | ( | const int | id, | |
const float | u, | |||
const float | v | |||
) | const [inline] |
interpole une normale a l'interieur d'un triangle, connaissant ses coordonnees barycentriques.
convention n(u, v)= (1 - u - v) * a + u * b + v * c
References getTriangleNormal().
Point2 gk::Mesh::getUVTexCoord | ( | const int | id, | |
const float | u, | |||
const float | v | |||
) | const [inline] |
interpole une coordonnee de texture a l'interieur du triangle, connaissant ses coordonnees barycentriques.
convention t(u, v)= (1 - u - v) * a + u * b + v * c
int gk::Mesh::buildAdjacency | ( | ) |
construit la liste d'adjacence des sommets (liste de triangles).
References positionCount(), and triangleCount().
int gk::Mesh::buildNormals | ( | ) |
construit les normales du maillage.
References gk::Cross(), gk::Normalize(), and triangleCount().