gKitGL
 All Classes Namespaces Functions Variables Typedefs Enumerator Friends
Public Member Functions | Friends
gk::Mesh Class Reference

representation d'un maillage triangule. More...

#include <Mesh.h>

Inheritance diagram for gk::Mesh:
gk::IOResource

List of all members.

Public Member Functions

Pointposition (const int id)
 renvoie la position d'un sommet.
const Pointposition (const int id) const
 renvoie la position d'un sommet.
Normalnormal (const int id)
 renvoie la normale d'un sommet.
const Normalnormal (const int id) const
 renvoie la normale d'un sommet.
Point2texcoords (const int id)
 renvoie la coordonnee de texture d'un sommet.
const Point2texcoords (const int id) const
 renvoie la coordonnees de texture d'un sommet.
 Mesh ()
 constructeur par defaut.
 ~Mesh ()
 destructeur.
int 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.
int 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.
int 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.
MeshBufferfindBuffer (const Name &semantic) const
 renvoie un buffer d'apres son nom / semantique.
int bufferCount () const
 renvoie le nombre de buffers d'attributs.
MeshBufferbuffer (const int id)
 renvoie un buffer.
const MeshBufferbuffer (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
BBoxbbox ()
 renvoie la bbox du mesh.
const BBoxgetBBox () 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.
SubMeshsubMesh (const int submesh_id)
 renvoie un submesh.
const SubMeshsubMesh (const int submesh_id) const
 renvoie un submesh.
const MeshMaterialsubMeshMaterial (const int id) const
 renvoie la matiere d'un submesh.
const MeshMaterialsubMeshMaterial (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 buildSubMeshes (std::vector< int > *map=NULL)
 construit les submeshes, sequences de triangles utilisant la meme matiere.
int pushDefaultMaterial ()
 definit la matiere par defaut.
int pushMaterial (MeshMaterial *material)
 insere une matiere.
void attachMaterials (const std::vector< MeshMaterial * > &materials)
 remplace l'ensemble de matieres.
int materialCount () const
 renvoie le nombre de matieres.
MeshMaterialmaterial (const int material_id)
 renvoie une matiere.
const MeshMaterialmaterial (const int material_id) const
 renvoie une matiere.
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.
std::vector< int > & triangleMaterialsId ()
 renvoie l'ensemble d'identifiants de matieres des triangles.
MeshMaterialtriangleMaterial (const int id)
 renvoie la matiere d'un triangle.
const MeshMaterialtriangleMaterial (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.
MeshTriangle getMeshTriangle (const int id) const
 renvoie un triangle 'indexe', les 3 indices des sommets du 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.
PTNTriangle getPTNTriangle (const int id) const
 renvoie un ptn 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

Detailed Description

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.


Member Function Documentation

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().

References position().

Referenced by getPNTriangle().

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

References position().

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(), normal(), and gk::Normalize().

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

References texcoords().

construit la liste d'adjacence des sommets (liste de triangles).

Todo:
acces a l'adjacence.

References positionCount(), and triangleCount().

construit les normales du maillage.

Todo:
utiliser les smooth groups s'ils sont presents.

References gk::Cross(), normal(), gk::Normalize(), position(), and triangleCount().


The documentation for this class was generated from the following files:
 All Classes Namespaces Functions Variables Typedefs Enumerator Friends