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

 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.
MeshBufferattachAttributeBuffer (const Name &semantic, const Point2 &attribute_tag)
 declare un ensemble d'attributs point 2d.
MeshBufferattachAttributeBuffer (const Name &semantic, const Point &attribute_tag)
 declare un ensemble d'attributs point 3d.
MeshBufferattachAttributeBuffer (const Name &semantic, const Vector &attribute_tag)
 declare un ensemble d'attributs vecteur 3d.
MeshBufferattachAttributeBuffer (const Name &semantic, const Normal &attribute_tag)
 declare un ensemble d'attributs normale 3d.
MeshBufferattachAttributeBuffer (const Name &semantic, const Color &attribute_tag)
 declare un ensemble d'attributs couleur rgba.
MeshBufferfindBuffer (const Name &semantic)
 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.
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 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.
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.
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

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. Material) a egalement une matiere associee.


Member Function Documentation

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.

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

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


The documentation for this class was generated from the following files:
 All Classes Namespaces Functions Variables Typedefs Friends
Generated on Thu Sep 22 16:34:00 2011 for gKitGL by  doxygen 1.6.3