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 () |
void | setMaterials (const std::vector< MeshMaterial * > &materials) |
remplace l'ensemble de matieres. | |
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 | buildTexCoordSmoothGropus (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. Material) a egalement une matiere associee.
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::buildNormals | ( | ) |
construit les normales du maillage.
References gk::Cross(), gk::Normalize(), and triangleCount().