PlanetTexturer Class Reference

Création de textures pour les planètes. More...

#include <PlanetTexturer.h>

Inheritance diagram for PlanetTexturer:

PlanetTexturer_Complex PlanetTexturer_Gas PlanetTexturer_Granit PlanetTexturer_Ice PlanetTexturer_Rock PlanetTexturer_Venusian List of all members.

Public Member Functions

 PlanetTexturer ()
 Contructeur.
 ~PlanetTexturer ()
 Destructeur.
void createReferencePlanet ()
 Fonction de reference directement issue du tutorial. Génère une texture de base de type planete.
void createTexture (String BitmapName)
 Creation d'une texture de planete avec un découpage en continents simple.
void setLightColor (Ogre::ColourValue couleur)
 Définition de la couleur de la lumière qui sera appliquée sur la planete (cad la lumière du soleil).
void setPlanetType (int PlanetType)
 Définition de la couleur de la lumière qui sera appliquée sur la planete (cad la lumière du soleil).
void setSeed (int seed)

Protected Member Functions

void buildPlanarTexture (const module::Module &noiseModule, bool seamless, NoiseMap &noiseMap)
 A partir d'un noise-module, cette fonction va remplir une noise-map plane.
void buildSphericalTexture (const module::Module &noiseModule, NoiseMap &noiseMap)
 A partir d'un noise-module, cette fonction va remplir une noise-map spherique.
virtual void renderColors (RendererImage &renderer, int PlanetType)
void renderLight (RendererImage &renderer)
 On applique une lumière artificielle sur la map.
void renderLandscapeLight (RendererImage &renderer)
 On applique une lumière artificielle sur un paysage.
bool openGradientFile (String SVGfilename)
 Lit un fichier gradient au format SVG (Vector Scalable Graphics).
bool addGradient (RendererImage &renderer)
 Lit un gradient du fichier SVG (Vector Scalable Graphics).
void closeGradientFile ()
 On libere le parser XML du fichier SVG.
ColourValue parseRGB1 (String colorString)
 Parse une couleur au format rrggbb.
ColourValue parseRGB2 (String colorString)
 Parse une couleur au format rgb(R,G,B).
void generateColormap (const NoiseMap &noiseMap, String filename, int PlanetType=0, bool light=true)
 A partir de la noise-map, on génère un fichier BMP qui pourra être utilisé comme texture.
void generateSpecMap (const NoiseMap &noiseMap, String filename)
 Generation de la 'specularity map'.
void generateBumpMap (const NoiseMap &noiseMap, String filename)
 Generation de la 'Bump map'.
void generateNormalMap (NoiseMap &noiseMap, String filename)
 Generation de la 'Normal map'.
void generateRawMap (NoiseMap &noiseMap, String filename)
 Generation de la 'Raw map'.
void generateTerragenMap (NoiseMap &noiseMap, String filename)
 Generate a Terragen file (elevation grid).
void CheckParameters ()
 On vérifie que tous les paramètres sont bien dans les limites prévues.
void scalePlanetInMeters (NoiseMap &noiseMap, Real minAltitude, Real maxAltitude, Real Circonference)
 Transforme la noiseMap en metres (au lieu de -1..+1).
void flattenSea (NoiseMap &noiseMap)
 Applatit le fond de la mer.
Real altitude (Real x)
 Transforme un niveau (-1..+1) en tenant compte du niveau de la mer.
Real toHauteur (Real x)
 Transforme un offset SVG en tenant compte du niveau de la mer.
Ogre::uint8 dec (char C)
 Convertit un caractere ascii hexa en decimal.

Protected Attributes

int GRID_WIDTH
 Width of elevation grid, in points.
int GRID_HEIGHT
 Height of elevation grid, in points.
double mSeaLevel
 Specifies the planet's sea level. [-1..+1].
int mSeed
 Planet seed.
double mResInMeters
 Resoltion of the map in meters (not used for planet maps).
Color mLightColor
 Color of the sun light.
int mPlanetType
 Type de la planete (temperée, rocheuse, etc).
XMLParser_TmSVGfile
 Fichier de description des couleurs pour texturer une planete.
int mIndex
 Index des elements stop dans le fichier SVG.

Detailed Description

Création de textures pour les planètes.

Ce générateur crée une texture pour la planete, selon un certain nombre de paramètres, tels que l'aridité, la température, etc. On utilise la librairie 'libnoise' dans une version modifiée par David. Chaque texture est différente, mais une même 'seed' fournit la même texture.


Constructor & Destructor Documentation

PlanetTexturer::PlanetTexturer  ) 
 

Contructeur.

PlanetTexturer::~PlanetTexturer  ) 
 

Destructeur.


Member Function Documentation

bool PlanetTexturer::addGradient RendererImage &  renderer  )  [protected]
 

Lit un gradient du fichier SVG (Vector Scalable Graphics).

TODO: controler que l'on n'a pas dejà deja un gradient à cette hauteur: sinon plantage!

Real PlanetTexturer::altitude Real  x  )  [protected]
 

Transforme un niveau (-1..+1) en tenant compte du niveau de la mer.

Convertit une Altitude (-1..+1) en hauteur (-1..+1). si x = 0, on renvoie SEA_LEVEL si x est dans [-1..0], on renvoie une valeur dans [-1..SEA_LEVEL] si x est dans [0..+1], on renvoie une valeur dans [SEA_LEVEL..+1]

Parameters:
x Altitude à convertir (en coordonnées planetaire -1..+1). La mer est en 0.
Returns:
Hauteur (en coordonnées planetaire -1..+1). La mer est en SEA_LEVEL. /* -------------------------------------------------------------------------

void PlanetTexturer::buildPlanarTexture const module::Module &  noiseModule,
bool  seamless,
NoiseMap &  noiseMap
[protected]
 

A partir d'un noise-module, cette fonction va remplir une noise-map plane.

Il faut avoir GRID_WIDTH = GRID_HEIGHT, pour obtenir une texture carrée.

void PlanetTexturer::buildSphericalTexture const module::Module &  noiseModule,
NoiseMap &  noiseMap
[protected]
 

A partir d'un noise-module, cette fonction va remplir une noise-map spherique.

Il faut avoir GRID_WIDTH = GRID_HEIGHT *2.

void PlanetTexturer::CheckParameters  )  [protected]
 

On vérifie que tous les paramètres sont bien dans les limites prévues.

Reimplemented in PlanetTexturer_Complex.

void PlanetTexturer::closeGradientFile  )  [protected]
 

On libere le parser XML du fichier SVG.

void PlanetTexturer::createReferencePlanet  ) 
 

Fonction de reference directement issue du tutorial. Génère une texture de base de type planete.

void PlanetTexturer::createTexture String  BitmapName  ) 
 

Creation d'une texture de planete avec un découpage en continents simple.

Parameters:
BitmapName Nom du fichier BMP qui sera généré.

Reimplemented in PlanetTexturer_Complex, PlanetTexturer_Gas, PlanetTexturer_Granit, PlanetTexturer_Ice, PlanetTexturer_Rock, and PlanetTexturer_Venusian.

Ogre::uint8 PlanetTexturer::dec char  C  )  [protected]
 

Convertit un caractere ascii hexa en decimal.

Parameters:
C Le caractère ASCII a convertir ('0'... 'F')
Returns:
La valeur décimale correspondante (0..15). /* -------------------------------------------------------------------------

void PlanetTexturer::flattenSea NoiseMap &  noiseMap  )  [protected]
 

Applatit le fond de la mer.

void PlanetTexturer::generateBumpMap const NoiseMap &  noiseMap,
String  filename
[protected]
 

Generation de la 'Bump map'.

Cette Map retranscrit directement l'élévation de la planete. Les zones basses ont en noir, et les zones élevées en blanc.

void PlanetTexturer::generateColormap const NoiseMap &  noiseMap,
String  filename,
int  PlanetType = 0,
bool  light = true
[protected]
 

A partir de la noise-map, on génère un fichier BMP qui pourra être utilisé comme texture.

void PlanetTexturer::generateNormalMap NoiseMap &  noiseMap,
String  filename
[protected]
 

Generation de la 'Normal map'.

Cette Map retranscrit le relief de la planete, sous forme de vecteurs RGB. Il faut utiliser cette normal map avec une colormap (sans lumière artificielle), et un moteur3D (tel que Ogre), pour obtenir des lumières réalistes en temps réel de la planète. Le relief est représenté par les vecteur "normal" en chaque point de la map. R = composante X du vecteur. (0..255) G = composante Y du vecteur. (0..255) B = composante Z du vecteur. (0..255)

void PlanetTexturer::generateRawMap NoiseMap &  noiseMap,
String  filename
[protected]
 

Generation de la 'Raw map'.

A raw terrain (*.raw) file has its elevation points measured in meters. This terrain file contains 16-bit signed big-endian values, in row-major order, ordered south to north.

void PlanetTexturer::generateSpecMap const NoiseMap &  noiseMap,
String  filename
[protected]
 

Generation de la 'specularity map'.

Cette Map définit la brillance de la planete. Le noir indique une zone mate, sans reflets. Le blanc indique une zone très brillante. Les mers sont les plus brillantes, ainsi que les zones élevées en raison de la neige.

Parameters:
noiseMap Reférence de la noise Map à analyser.
filename Nom du fichier BMP qui sera généré.

void PlanetTexturer::generateTerragenMap NoiseMap &  noiseMap,
String  filename
[protected]
 

Generate a Terragen file (elevation grid).

A Terragen terrain (*.ter) file that has its elevation points measured in meters. This file is generated only if the grid of elevation points has a spatial resolution <= 240 meters. The grid of elevation points can have a maximum horizontal resolution of 0.25 arcseconds (~7.5 meters.) A higher-resolution grid will cause the terrain to appear blurry.

bool PlanetTexturer::openGradientFile String  SVGfilename  )  [protected]
 

Lit un fichier gradient au format SVG (Vector Scalable Graphics).

Parameters:
SVGfilename Le nom du fichier SVG à lire.
Returns:
Renvoie TRUE si le node "linearGradient" a bien été trouvé.

ColourValue PlanetTexturer::parseRGB1 String  colorString  )  [protected]
 

Parse une couleur au format rrggbb.

ColourValue PlanetTexturer::parseRGB2 String  colorString  )  [protected]
 

Parse une couleur au format rgb(R,G,B).

void PlanetTexturer::renderColors RendererImage &  renderer,
int  PlanetType
[protected, virtual]
 

Définit la palette de couleurs qui sera utilisée pour la planete.

Parameters:
renderer L'image à coloriser
PlanetType Le type de palette à choisir en fonction du type de planete (tempérée, rocheuse, etc)

Reimplemented in PlanetTexturer_Gas, and PlanetTexturer_Venusian.

void PlanetTexturer::renderLandscapeLight RendererImage &  renderer  )  [protected]
 

On applique une lumière artificielle sur un paysage.

Parameters:
renderer L'image à modifier. Celle doit avoir été convertie en mètres.

void PlanetTexturer::renderLight RendererImage &  renderer  )  [protected]
 

On applique une lumière artificielle sur la map.

Parameters:
renderer L'image à modifier.

void PlanetTexturer::scalePlanetInMeters NoiseMap &  noiseMap,
Real  minAltitude,
Real  maxAltitude,
Real  Circonference
[protected]
 

Transforme la noiseMap en metres (au lieu de -1..+1).

Parameters:
noiseMap La noiseMap a modifier.
minAltitude L'élévation minimale de la planète en mètres. (La plus profonde faille).
maxAltitude L'élévation maximale de la planète en mètres. (La plus haute montagne).
Circonference La circonference de la planète en mètres.
on convertit toute la map en mètres en transformant de -1..+1 à MIN_ELEV..MAX_ELEV

On calcule le niveau de la mer (en metres)

On calcule la résolution de la Map (en metres).

void PlanetTexturer::setLightColor Ogre::ColourValue  couleur  ) 
 

Définition de la couleur de la lumière qui sera appliquée sur la planete (cad la lumière du soleil).

Parameters:
couleur La couleur de la lumière qui éclaire la planète. On convertit la couleur du format Ogre au format libnoise.

void PlanetTexturer::setPlanetType int  PlanetType  ) 
 

Définition de la couleur de la lumière qui sera appliquée sur la planete (cad la lumière du soleil).

Parameters:
couleur La couleur a mémoriser.

void PlanetTexturer::setSeed int  seed  ) 
 

Initialise le moteur aléatoire, pour le relief de la planete.

Parameters:
seed Planet seed. A changer pour générer une autre planete.

Real PlanetTexturer::toHauteur Real  x  )  [protected]
 

Transforme un offset SVG en tenant compte du niveau de la mer.

Convertit un offset (0..+1) en hauteur (-1..+1). si x = 0.5, on renvoie SEA_LEVEL si x est dans [0.0...0.5], on renvoie une valeur dans [-1..SEA_LEVEL] si x est dans [0.5...1.0], on renvoie une valeur dans [SEA_LEVEL..+1]

Parameters:
x Offset à convertir (en coordonnées 0...+1). La mer est en 0.5.
Returns:
Hauteur (en coordonnées planetaire -1..+1). La mer est en SEA_LEVEL. /* -------------------------------------------------------------------------


Member Data Documentation

int PlanetTexturer::GRID_HEIGHT [protected]
 

Height of elevation grid, in points.

int PlanetTexturer::GRID_WIDTH [protected]
 

Width of elevation grid, in points.

int PlanetTexturer::mIndex [protected]
 

Index des elements stop dans le fichier SVG.

Color PlanetTexturer::mLightColor [protected]
 

Color of the sun light.

int PlanetTexturer::mPlanetType [protected]
 

Type de la planete (temperée, rocheuse, etc).

double PlanetTexturer::mResInMeters [protected]
 

Resoltion of the map in meters (not used for planet maps).

double PlanetTexturer::mSeaLevel [protected]
 

Specifies the planet's sea level. [-1..+1].

int PlanetTexturer::mSeed [protected]
 

Planet seed.

XMLParser_T* PlanetTexturer::mSVGfile [protected]
 

Fichier de description des couleurs pour texturer une planete.


The documentation for this class was generated from the following files:
Generated on Mon Mar 27 21:33:15 2006 for Long Forgotten Earth by  doxygen 1.4.6-NO