#include <Mesh.h>
Public Member Functions | |
Mesh (HeightMap *hm, Lac **lac, int nbLacs) | |
Constructeur de la classe Mesh. | |
Mesh (HeightMap *hm, unsigned int nbPatchX, unsigned int nbPatchY) | |
Constructeur de la classe Mesh. | |
~Mesh () | |
Destructeur de la classe Mesh. | |
GLfloat * | getVertices () |
Accesseur pour le tableau de vertices du maillage. | |
unsigned | getVertexCount () |
Renvoie la taille du tableau de vertices. | |
unsigned int | getPatchSize () |
Renvoie la taille d'un patch du maillage. | |
unsigned int | getNbPatchX () |
Renvoie le nombre de patches du maillage selon X. | |
unsigned int | getNbPatchY () |
Renvoie le nombre de patches du maillage selon Y. | |
unsigned int | getNbPatch () |
Renvoie le nombre total de patches du maillage. | |
unsigned int | getSizeX () |
Renvoie la taille du maillage selon X. | |
unsigned int | getSizeY () |
Renvoie la taille du maillage selon Y. | |
void | render () |
Effectue le rendu du terrain avec variation de niveau de detail. | |
void | renderHighDetail () |
Fonction de rendu a niveau de detail eleve. | |
void | init (HeightMap *hm, unsigned int nbPatchX, unsigned int nbPatchY, Lac **lac, int nbLacs) |
Fonction de construction du maillage. | |
void | displayAABoundingBoxs (bool display) |
Change la modalite de rendu des boites englobantes. | |
void | walk (point3 *pos, point3 newPos) |
Verifie si une position dans l'espace est correcte, et calcule une nouvelle position dans le cas contraire. | |
Static Public Member Functions | |
static float | getGmLod () |
Renvoie le niveau de detail du patch courant (variable de shader). | |
static float | getGmLodX () |
Renvoie le niveau de detail du patch voisin gauche (variable de shader). | |
static float | getGmLodY () |
Renvoie le niveau de detail du patch voisin haut (variable de shader). | |
static float | getGmPatchSize () |
Renvoie la taille de patch du maillage (variable de shader). | |
Private Member Functions | |
void | computePatchSize (HeightMap *hm) |
Fonction de calcul de la taille de patch pour le maillage. | |
void | computeMaxLOD () |
Fonction de calcul du niveau de detail maximum. | |
void | computeTilesPieces () |
Fonction de calcul de triangulation du maillage. | |
void | compileTilesPieces () |
Fonction de chargement des donnees de triangulation en VBO. | |
void | computeAABBs () |
Fonction de calcul des boites englobantes orientees pour les patches du maillage. | |
void | renderAABBBs () |
void | computeOMaps () |
pre-calcul ou charge les cartes d'occlusion (Occlusion Maps) | |
void | computeGeomorphingVertices () |
Calcul des informations de geomorphing. | |
void | computeGeomorphingVertex (unsigned int i1, unsigned int i2, unsigned int lod) |
Effectue le calcul des informations de geomorphing pour un vertex donne. | |
void | insertLakes (Lac **lac, int nbLacs) |
Insere les lacs dans le maillage en changeant l'elevation sur les zones considerees. | |
void | saveOMaps (char *path, char *fname) |
Sauvegarde toutes les cartes d'occlusion dans un fichier pgm. | |
bool | loadOMaps (char *path, char *fname) |
Charge toutes les cartes d'occlusion a partir d'un fichier pgm. | |
bool | isVisible (unsigned int fromx, unsigned int fromy, float fromz, unsigned int tox, unsigned int toy) |
Teste si un patch est visible a partir du point de vu courrant. | |
Private Attributes | |
unsigned int | patchSize |
Taille d'un patch (les patches sont supposes carres). | |
unsigned int | nbPatchX |
Nombre de patches selon X. | |
unsigned int | nbPatchY |
Nombre de patches selon Y. | |
unsigned int | nbTotalPatchs |
Nombre total de patches dans le maillage. | |
unsigned int | sizeX |
Taille du maillage affiche selon X. | |
unsigned int | sizeY |
Taille du maillage affiche selon Y. | |
unsigned int | hmSizeX |
Taille du maillage complet selon X. | |
unsigned int | hmSizeY |
Taille du maillage complet selon Y. | |
bool | displayAABBs |
Indique si le rendu des boites englobantes doit etre effectue. | |
GLuint | verticesID |
Identifiant VBO du tableau de vertices du maillage. | |
GLuint | normalsID |
Identifiant VBO du tableau de normales du maillage. | |
unsigned int | vertexCount |
Nombre de coordonnees de vertices dans le maillage (nombre de vertices * 3). | |
GLfloat * | meshVertices |
Tableau de vertices du maillage (De taille vertexCount). | |
GLfloat * | meshNormals |
Tableau de normales du maillage (De taille vertexCount). | |
unsigned int | maxLOD |
Valeur maximale de niveau de detail pour le maillage. | |
vector< LodData > | lodsData |
Vecteur contenant les informations de triangulation du maillage a chaque niveau de detail. | |
float * | lods |
Niveaux de detail de tous les patches du maillage lors du rendu. | |
int | realDecal |
AABoundingBox * | AABBTab |
Tableau de boites englobantes de tous les patches du maillage. | |
OcclusionMap * | OMtab |
Tableau contenant les cartes d'occlusion de tous les patchs. | |
OMinit * | OMI |
Informations generales identique pour toutes les cartes d'occlusion. | |
Static Private Attributes | |
static float | gmLod |
Niveau de detail du patch courant, pour le geomorphing. | |
static float | gmLodX |
Niveau de detail du voisin gauche du patch courant, pour le geomorphing (variable de shader). | |
static float | gmLodY |
Niveau de detail du voisin haut du patch courant, pour le geomorphing (variable de shader). | |
static float | gmPatchSize |
Taille de patch, pour le geomorphing (variable de shader). | |
Classes | |
struct | LodData |
Structure conservant les informations de triangulation pour toutes les parties d'un patch, a un niveau de detail donne. More... | |
struct | TilePiece |
Structure conservant les informations de triangulation d'un morceau de patch pour un niveau de detail. More... |
Cette classe cree un maillage a partir d'une carte d'elevation, en effectuant toutes les operations de pretraitement necessaires :
Le rendu du terrain en lui meme est aussi fait dans cette classe, avec l'utilisation d'un frustum culling (grace aux boites englobantes). Toutes les donnees du maillage sont chargees dans la carte graphique grace a l'extension GL_ARB_vertex_buffer_object.
|
Constructeur de la classe Mesh.
|
|
Constructeur de la classe Mesh.
|
|
Destructeur de la classe Mesh.
|
|
Fonction de chargement des donnees de triangulation en VBO. Charge toutes les donnees de triangulation dans la carte graphique grace a l'extension GL_ARB_vertex_buffer_object. |
|
Fonction de calcul des boites englobantes orientees pour les patches du maillage. Calcule les boites englobantes orientees selon les axes pour tous les patches du maillage, ainsi que le centre de chaque boite englobante. |
|
Effectue le calcul des informations de geomorphing pour un vertex donne.
|
|
Calcul des informations de geomorphing. Effectue le calcul de toutes les informations de geomorphing a partir de la triangulation du maillage. |
|
Fonction de calcul du niveau de detail maximum. La fonction calcule la taille maximum de niveau de detail possible en fonction de la taille de patch calculee pour le maillage. |
|
pre-calcul ou charge les cartes d'occlusion (Occlusion Maps) Charge les cartes d'occlusion si possiblem sinon effectue le pre-calcul a partir des boites englobantes. |
|
Fonction de calcul de la taille de patch pour le maillage.
|
|
Fonction de calcul de triangulation du maillage. Calcule pour tous les niveaux de detail possibles pour le maillage la triangulation des patches. |
|
Change la modalite de rendu des boites englobantes. Active ou desactive le rendu des boites englobantes. |
|
Renvoie le niveau de detail du patch courant (variable de shader).
|
|
Renvoie le niveau de detail du patch voisin gauche (variable de shader).
|
|
Renvoie le niveau de detail du patch voisin haut (variable de shader).
|
|
Renvoie la taille de patch du maillage (variable de shader).
|
|
Renvoie le nombre total de patches du maillage.
|
|
Renvoie le nombre de patches du maillage selon X.
|
|
Renvoie le nombre de patches du maillage selon Y.
|
|
Renvoie la taille d'un patch du maillage.
|
|
Renvoie la taille du maillage selon X.
|
|
Renvoie la taille du maillage selon Y.
|
|
Renvoie la taille du tableau de vertices.
|
|
Accesseur pour le tableau de vertices du maillage.
|
|
Fonction de construction du maillage.
|
|
Insere les lacs dans le maillage en changeant l'elevation sur les zones considerees.
|
|
Teste si un patch est visible a partir du point de vu courrant.
|
|
Charge toutes les cartes d'occlusion a partir d'un fichier pgm.
|
|
Effectue le rendu du terrain avec variation de niveau de detail. La fonction effectue le rendu du terrain avec variation de niveau de detail, geomorphing et shaders. |
|
|
|
Fonction de rendu a niveau de detail eleve. Cette fonction effectue le rendu du terrain au niveau de detail le plus eleve, pour effectuer les pre-passes pour les skybox de reflexion d'eau. |
|
Sauvegarde toutes les cartes d'occlusion dans un fichier pgm.
|
|
Verifie si une position dans l'espace est correcte, et calcule une nouvelle position dans le cas contraire.
Cette fonction verifie que pos est correcte, ou bien la modifie le cas echeant : on regarde si les hauteurs autour de la nouvelle position coupent le plan de vue le plus proche (near), et on remonte cette position si c'est effectivement le cas. Le resultat est stocke dans newPos et c'est cette nouvelle position qui sera utilisee. |
|
Tableau de boites englobantes de tous les patches du maillage.
|
|
Indique si le rendu des boites englobantes doit etre effectue.
|
|
Niveau de detail du patch courant, pour le geomorphing.
|
|
Niveau de detail du voisin gauche du patch courant, pour le geomorphing (variable de shader).
|
|
Niveau de detail du voisin haut du patch courant, pour le geomorphing (variable de shader).
|
|
Taille de patch, pour le geomorphing (variable de shader).
|
|
Taille du maillage complet selon X. Cette taille est donnee en nombre de vertices. Le maillage peut etre tronque pour avoir une taille de patches en puissance de 2 avec le nombre de patches demandes. Dans ce cas cette variable indique la taille du maillage complet. |
|
Taille du maillage complet selon Y. Cette taille est donnee en nombre de vertices. Le maillage peut etre tronque pour avoir une taille de patches en puissance de 2 avec le nombre de patches demandes. Dans ce cas cette variable indique la taille du maillage complet. |
|
Niveaux de detail de tous les patches du maillage lors du rendu.
|
|
Vecteur contenant les informations de triangulation du maillage a chaque niveau de detail.
|
|
Valeur maximale de niveau de detail pour le maillage.
|
|
Tableau de normales du maillage (De taille vertexCount). Dans le tableau de normales, la premiere coordonnee contient l'elevation reelle du terrain au point, la troisieme coordonnee contient les valeurs moyennes calculees par le geomorphing sur les triangulations, et la deuxieme coordonnee contient le niveau de detail auquel a ete calcule la troisieme coordonnee. |
|
Tableau de vertices du maillage (De taille vertexCount).
|
|
Nombre de patches selon X.
|
|
Nombre de patches selon Y.
|
|
Nombre total de patches dans le maillage.
|
|
Identifiant VBO du tableau de normales du maillage. Le tableau de normales du maillage est stocke directement dans la carte graphique grace a l'extension GL_ARB_vertex_buffer_object. Cette variable indique l'identifiant de ce tableau pour y acceder et l'utiliser. |
|
Informations generales identique pour toutes les cartes d'occlusion.
|
|
Tableau contenant les cartes d'occlusion de tous les patchs.
|
|
Taille d'un patch (les patches sont supposes carres). La taille d'un patch doit obligatoirement etre une puissance de 2, pour que le decoupage en niveaux de detail soit fait correctement. La taille est donnee en nombre de vertices. |
|
|
|
Taille du maillage affiche selon X. Cette taille est donnee en nombre de vertices. Le maillage peut etre tronque pour avoir une taille de patches en puissance de 2 avec le nombre de patches demandes. Dans ce cas cette variable indique la taille du maillage tronque. |
|
Taille du maillage affiche selon Y. Cette taille est donnee en nombre de vertices. Le maillage peut etre tronque pour avoir une taille de patches en puissance de 2 avec le nombre de patches demandes. Dans ce cas cette variable indique la taille du maillage tronque. |
|
Nombre de coordonnees de vertices dans le maillage (nombre de vertices * 3).
|
|
Identifiant VBO du tableau de vertices du maillage. Le tableau de vertices du maillage est stocke directement dans la carte graphique grace a l'extension GL_ARB_vertex_buffer_object. Cette variable indique l'identifiant de ce tableau pour y acceder et l'utiliser. |