Classes | Public Member Functions | Static Public Member Functions | Public Attributes

# USpeedGameEngine::Object3D Class Reference

Classe d'objets 3D (modèles 3D). More...

Inheritance diagram for USpeedGameEngine::Object3D:

List of all members.

## Classes

struct | PlaneStruct
| Structure pour les plans de coupe pour aider aux calculs des ombres projetées.
struct | StructBoundinBox
| La boîte d'encadrement du modèle. More...
struct | StructBoundinSphere
| La sphère d'encadrement du modèle. More...

## Public Member Functions

| ~Object3D ()
| Destructeur par défaut.
| Object3D ()
| Constructeur par défaut.
bool | setVertices (USGE_Vertex *vList, unsigned long int vCount)
| Affectation d'une liste de Vertex par copie.
bool | setVertices (USGE_Vertex *vList, unsigned long int vCount, bool copy)
| Affectation d'une liste de Vertex (par copie ou non).
void | setMaterial (Material *pMat)
| Affectation d'un matériau à appliquer au modèle 3D.
void | clear ()
| Remise à zéro de l'instance de la classe.
void | render ()
| Effectue le rendu de l'objet.
void | render (bool noCamera)
| Effectue le rendu de l'objet.
void | renderShadow (USGE_Float3 const &lightPosition)
| Effectue le rendu de l'ombre de l'objet en fonction de la position de la lumière spécifiée.
unsigned long int | getVerticesCount ()
| Retourne le nombre de "Vertex" que contient l'objet 3D.
USGE_Vertex * | getVertex (unsigned long int num)
| Retourne le "Vertex" demandé.
void | scaleToUnit ()
| Modifie la géométrie du modèle actuellement en mémoire qu'il tienne dans une boîte de "1 x 1 x 1".
void | scaleTo (float scale)
| Modifie la géométrie du modèle actuellement en mémoire qu'il tienne dans une boîte de "A x A x A".
void | scaleTo (USGE_Float3 const &scale)
| Modifie la géométrie du modèle actuellement en mémoire qu'il tienne dans une boîte de "X x Y x Z".
bool | load3D (const char *filename)
| Chargement de la géométrie depuis un fichier.
bool | load3DFromBuffer (const char *data, unsigned long int dataSize)
| Chargement de la géométrie depuis un tampon mémoire.
bool | loadCube ()
| Chargement d'un cube.
bool | loadBox (USGE_Float3 const &min, USGE_Float3 const &max, std::vector< float * > *uvMap)
| Chargement d'un parallèlépipède rectangle à partir de deux points.
bool | loadBox (USGE_Float3 const &min, USGE_Float3 const &max)
| Chargement d'un parallèlépipède rectangle à partir de deux points.
bool | loadBox (USGE_Float3 const &dim)
| Chargement d'un parallèlépipède rectangle dont on précise la demi-section.
void | computeBB ()
| Calcul de la Bounding Box (boîte d'encadrement).
void | setSmooth (bool activate)
| Choix d'un rendu doux ou brut.
bool | getSmooth ()
| État du choix d'un rendu doux ou brut.
void | attachTo (Object3D *parent, USGE_Float3 const &translate)
| Définition de la dépendance à un parent.
void | detach ()
| Suppression du lien d'ancrage à un parent.
bool | hasPhysicState ()
| Permet de savoir si l'objet a un état physique défini.
void | setPhysicState (Physic::PhysicState *phyState)
| Affectation d'un état physique à l'objet.
Physic::PhysicState * | getPhysicState ()
| Accès à l'état physique de l'objet.
void | setTranslation (USGE_Float3 const &trans, bool add)
| Permet de définir la translation à effectuer sur modèle avant le rendu.
void | setTranslation (USGE_Float3 const &trans)
| Permet de définir la translation à effectuer sur modèle avant le rendu.
void | setRotation (USGE_Float3 const &rot, bool add)
| Permet de définir la rotation à effectuer sur modèle avant le rendu.
void | setRotation (USGE_Float3 const &rot)
| Permet de définir la rotation à effectuer sur modèle avant le rendu.
void | setScale (float scale)
| Définit l'échelle d'affichage du modèle.
void | setScale (USGE_Float3 const &scale)
| Définit l'échelle d'affichage du modèle.
void | getTranslation (USGE_Float3 &pTranslation)
| Copie de la translation actuelle du modèle.
USGE_Float3 | getTranslation ()
| Accès à la translation actuelle du modèle.
void | getRotation (USGE_Float3 &pRotation)
| Accès à la rotation actuelle du modèle.
USGE_Float3 | getRotation ()
| Accès à la rotation actuelle du modèle.
void | getScale (USGE_Float3 &pScale)
| Copie de l'échelle dynamique actuelle du modèle.
USGE_Float3 | getScale ()
| Accès à l'échelle dynamique actuelle du modèle.

## Static Public Member Functions

static void | setDefaultSmooth (bool activate)
| Choix d'un rendu doux ou brut par défaut.
static bool | getDefaultSmooth ()
| État du choix d'un rendu doux ou brut par défaut.

## Public Attributes

Object3DParentAttach | parentAttach
| La contrainte sur l'attachement de l'objet courant à un éventuel parent.
USGE_Vertex * | vertices
| Liste des points 3D du modèle.
unsigned long int | verticesCount
| Le nombre de points 3D dans le modèle.
Material * | material
| Le materiau à appliquer.
bool | smooth
| Affichage doux des polygones.
USGE_Float3 | translation
| Translation à effectuer avant le rendu.
USGE_Float3 | rotation
| Rotation à effectuer avant le rendu.
USGE_Float3 | scale
| Mise à l'échelle à effectuer avant le rendu.
Physic::PhysicState * | physicState
| État physique de l'objet.
struct USpeedGameEngine::Object3D::StructBoundinBox | boundingBox
| La boîte d'encadrement du modèle.
struct USpeedGameEngine::Object3D::StructBoundinSphere | boundingSphere
| La sphère d'encadrement du modèle.

## Detailed Description

Classe d'objets 3D (modèles 3D).

Author:
  U.Speed

## Constructor & Destructor Documentation

Object3D::~Object3D | ( |  | ) |

Destructeur par défaut.

Author:
  U.Speed

Object3D::Object3D | ( |  | ) |

Constructeur par défaut.

Author:
  U.Speed

## Member Function Documentation

void Object3D::attachTo | ( | Object3D * | parent,
|  | USGE_Float3 const & | translate |
| ) |  |  |

Définition de la dépendance à un parent.

Author:
  U.Speed

Parameters:

  | parent | Object3D* : l'objet parent
  | translate | USGE_Float const& : la translation par rapport au parent

void Object3D::clear | ( |  | ) |

Remise à zéro de l'instance de la classe.

Author:
  U.Speed

Reimplemented in USpeedGameEngine::Surface2D.

void Object3D::computeBB | ( |  | ) |

Calcul de la Bounding Box (boîte d'encadrement).

Author:
  U.Speed

void Object3D::detach | ( |  | ) |

Suppression du lien d'ancrage à un parent.

Author:
  U.Speed

bool Object3D::getDefaultSmooth | ( |  | ) | `[static]`

État du choix d'un rendu doux ou brut par défaut.

Author:
  U.Speed

Returns:
  bool : l'état

Physic::PhysicState * Object3D::getPhysicState | ( |  | ) |

Accès à l'état physique de l'objet.

Author:
  U.Speed

Returns:
  Physic::PhysicState* : le pointeur de l'état physique de l'objet

void Object3D::getRotation | ( | USGE_Float3 & | pRotation | ) |

Accès à la rotation actuelle du modèle.

Author:
  U.Speed

Parameters:

  | pRotation | USGE_Float3& : la rotation du modèle

USGE_Float3 Object3D::getRotation | ( |  | ) |

Accès à la rotation actuelle du modèle.

Author:
  U.Speed

Returns:
  USGE_Float3 : la rotation du modèle

void Object3D::getScale | ( | USGE_Float3 & | pScale | ) |

Copie de l'échelle dynamique actuelle du modèle.

Author:
  U.Speed

Parameters:

  | pScale | USGE_Float3& : l'échelle dynamique du modèle

USGE_Float3 Object3D::getScale | ( |  | ) |

Accès à l'échelle dynamique actuelle du modèle.

Author:
  U.Speed

Returns:
  USGE_Float3 : l'échelle dynamique du modèle

bool Object3D::getSmooth | ( |  | ) |

État du choix d'un rendu doux ou brut.

Author:
  U.Speed

Returns:
  bool : l'état

USGE_Float3 Object3D::getTranslation | ( |  | ) |

Accès à la translation actuelle du modèle.

Author:
  U.Speed

Returns:
  USGE_Float3 : la translation (position par rapport au point (0, 0) du modèle)

void Object3D::getTranslation | ( | USGE_Float3 & | pTranslation | ) |

Copie de la translation actuelle du modèle.

Author:
  U.Speed

Parameters:

  | pTranslation | USGE_Float3& : la translation (position par rapport au point (0, 0) du modèle)

USGE_Vertex * Object3D::getVertex | ( | unsigned long int | num | ) |

Retourne le "Vertex" demandé.

Si le vertex demandé n'existe pas, un vertex inutile est retourné pour éviter les pointeurs nuls.

Author:
  U.Speed

Parameters:

  | num | unsigned long int : le numéro du vertex basé en zéro (0 <= .. < Nombre de vertex)

Returns:
  USGE_Vertex* : le vertex demandé ou un vertex inutile pour éviter les pointeurs nuls

unsigned long int Object3D::getVerticesCount | ( |  | ) |

Retourne le nombre de "Vertex" que contient l'objet 3D.

Author:
  U.Speed

Returns:
  unsigned long int : le nombre de vertex qui composent l'objet 3D

bool Object3D::hasPhysicState | ( |  | ) |

Permet de savoir si l'objet a un état physique défini.

Si l'état physique de l'objet est valide (chargé), les translations et rotations de l'objet sont écrasées par celles calculées par le moteur physique en fonction de l'état physique de cet objet.

Author:
  U.Speed

Returns:
  bool : `true` si l'état physique de l'objet est valide

bool Object3D::load3D | ( | const char * | filename | ) |

Chargement de la géométrie depuis un fichier.

Author:
  U.Speed

See also:
  bool Object3D::load3DFromBuffer(const char *data)

Parameters:

  | filename | const char* : nom d'un fichier ASE à ouvrir et charger

Returns:
  bool : l'état du chargement. `true` pour un chargement réussi

bool Object3D::load3DFromBuffer | ( | const char * | data,
|  | unsigned long int | dataSize |
| ) |  |  |

Chargement de la géométrie depuis un tampon mémoire.

      Format de modèle 3D (géométrie) :
          16 : "USpeed3D - Model"
           1 : Octet d'information ("0000 0001" pour activer les coordonnées de texture", "0000 0010" pour activer les normales)
           4 : Nombre de points
              x : Liste des points au format suivant : (22 ou 43 octets)
                  "v"     : identifiant de vertex
                  "~" + 6 : Position x
                  "~" + 6 : Position y
                  "~" + 6 : Position z           _
                  "~" + 6 : Texture u (S)         |
                  "~" + 6 : Texture v (T)         |- Seulement si les coordonnées de textures sont activées
                  "~" + 6 : Texture w (R)        _|      _
                  "~" + 6 : Normale du point A selon x    |
                  "~" + 6 : Normale du point A selon y    |- Seulement si les normales sont activées
                  "~" + 6 : Normale du point A selon z   _|

     Légende :
          "~"  = "+" ou "-" pour le signe du nombre

Author:
  U.Speed

Parameters:

  | data | const char* : les données à charger (contenu d'un fichier "USpeed 3D Model")
  | dataSize | unsigned long int : la taille des données

Returns:
  bool : l'état du chargement. `true` pour un chargement réussi

bool Object3D::loadBox | ( | USGE_Float3 const & | min,
|  | USGE_Float3 const & | max,
|  | std::vector< float * > * | uvMap |
| ) |  |  |

Chargement d'un parallèlépipède rectangle à partir de deux points.

Author:
  U.Speed

Parameters:

  | min | USGE_Float3 const& : le permier point (coordonnées minimum comme pour la "bouding box")
  | max | USGE_Float3 const& : le second point (coordonnées maximum comme pour la "bouding box")
  | uvMap | std::vector<float*>* : liste (éventuelle) des coordonnées de mapping de chaque face.
  - uvMap[0][...] : coordonnées de la face 1
  - uvMap[...][0] : uA
  - uvMap[...][1] : vA
  - uvMap[...][2] : uB
  - uvMap[...][3] : vB

Returns:
  `true` si le parallèlépipède rectangle est chargé

bool Object3D::loadBox | ( | USGE_Float3 const & | min,
|  | USGE_Float3 const & | max |
| ) |  |  |

Chargement d'un parallèlépipède rectangle à partir de deux points.

Author:
  U.Speed

See also:
  bool Object3D::loadBox(USGE_Float3 const &min, USGE_Float3 const &max, std::vector<float[4]> uvMap)

Parameters:

  | min | USGE_Float3 const& : le permier point (coordonnées minimum comme pour la "bouding box")
  | max | USGE_Float3 const& : le second point (coordonnées maximum comme pour la "bouding box")

Returns:
  `true` si le parallèlépipède rectangle est chargé

bool Object3D::loadBox | ( | USGE_Float3 const & | dim | ) |

Chargement d'un parallèlépipède rectangle dont on précise la demi-section.

Author:
  U.Speed

See also:
  bool Object3D::loadBox(USGE_Float3 const &min, USGE_Float3 const &max)

Returns:
  bool : `true` si le cube est chargé

bool Object3D::loadCube | ( |  | ) |

Chargement d'un cube.

Author:
  U.Speed

See also:
  bool Object3D::loadBox(USGE_Float3 dim)

Returns:
  bool : `true` si le cube est chargé

void Object3D::render | ( |  | ) |

Effectue le rendu de l'objet.

Prend en compte la caméra courante.

See also:
  void Object3D::render(bool noCamera)

Author:
  U.Speed

void Object3D::render | ( | bool | noCamera | ) |

Effectue le rendu de l'objet.

Il est possible d'ignorer la caméra de manière à afficher des objets fixes par rapport à la caméra. (Ex: l'arme du joueur dans un FPS)

Author:
  U.Speed

Parameters:

  | noCamera | bool : `true` pour ne pas prendre en compte la position de la caméra.

void Object3D::renderShadow | ( | USGE_Float3 const & | lightPosition | ) |

Effectue le rendu de l'ombre de l'objet en fonction de la position de la lumière spécifiée.

Author:
  U.Speed

Parameters:

  | lightPosition | USGE_Float3 : la position de la lumière

void Object3D::scaleTo | ( | float | scale | ) |

Modifie la géométrie du modèle actuellement en mémoire qu'il tienne dans une boîte de "A x A x A".

Author:
  U.Speed

See also:
  void Object3D::scaleTo(USGE_Float3 scale)

Parameters:

  | scale | float : l'échelle selon X, Y et Z (1.0f si pas de changement)

void Object3D::scaleTo | ( | USGE_Float3 const & | scale | ) |

Modifie la géométrie du modèle actuellement en mémoire qu'il tienne dans une boîte de "X x Y x Z".

Si une seule composante vaut "0.0f", elle est remplacée par 1.0f.
Il est possible d'effectuer un "scaleTo" avec des composantes négatives.

Author:
  U.Speed

Parameters:

  | scale | USGE_Float3 : l'échelle selon X, Y et Z (1.0f si pas de changement)

void Object3D::scaleToUnit | ( |  | ) |

Modifie la géométrie du modèle actuellement en mémoire qu'il tienne dans une boîte de "1 x 1 x 1".

Author:
  U.Speed

See also:
  void Object3D::scaleTo(USGE_Float3 const &scale)

void Object3D::setDefaultSmooth | ( | bool | activate | ) | `[static]`

Choix d'un rendu doux ou brut par défaut.

Par défaut, le rendu est "doux" : smooth.

Author:
  U.Speed

Parameters:

  | activate | bool : `true` pour avoir un rendu doux

void Object3D::setMaterial | ( | Material * | pMat | ) |

Affectation d'un matériau à appliquer au modèle 3D.

Author:
  U.Speed

Parameters:

  | pMat | Material* : le pointeur d'un matériau valide ou 0 si pas de matériau

void Object3D::setPhysicState | ( | Physic::PhysicState * | phyState | ) |

Affectation d'un état physique à l'objet.

Author:
  U.Speed

Parameters:

  | phyState | Physic::PhysicState* : le pointeur de l'état physique à affecter

void Object3D::setRotation | ( | USGE_Float3 const & | rot | ) |

Permet de définir la rotation à effectuer sur modèle avant le rendu.

Affectation uniquement.

Author:
  U.Speed

See also:
  void Object3D::setRotation(USGE_Float3 const &rot, bool add)

Parameters:

  | rot | USGE_Float3 : rotations selon X, Y et Z

void Object3D::setRotation | ( | USGE_Float3 const & | rot,
|  | bool | add |
| ) |  |  |

Permet de définir la rotation à effectuer sur modèle avant le rendu.

Ajout ou affectation possibles.

Author:
  U.Speed

Parameters:

  | rot | USGE_Float3 : rotations selon X, Y et Z
  | add | bool : `true` pour ajouter au lieu d'affecter

void Object3D::setScale | ( | USGE_Float3 const & | scale | ) |

Définit l'échelle d'affichage du modèle.

Cette fonction va recalculer la taille position des points par rapport à zéro. Une échelle de "0" n'est pas valide. Si une seule composante vaut 0, elle est mise à 1.0f pour ne pas affecter la mise à l'échelle de cette composante.

Author:
  U.Speed

Parameters:

  | scale | USGE_Float3 : l'échelle selon X, Y et Z (1.0f si pas de changement)

void Object3D::setScale | ( | float | scale | ) |

Définit l'échelle d'affichage du modèle.

Modification de l'échelle de la même manière sur les 3 composantes X, Y et Z.

Author:
  U.Speed

See also:
  void Object3D::setScale(USGE_Float3 const &scale)

Parameters:

  | scale | float : l'échelle selon X, Y et Z (1.0f si pas de changement)

void Object3D::setSmooth | ( | bool | activate | ) |

Choix d'un rendu doux ou brut.

Par défaut, le rendu vaut la valeur affectée par "setDefaultSmooth()".

Author:
  U.Speed

Parameters:

  | activate | bool : `true` pour avoir un rendu doux

void Object3D::setTranslation | ( | USGE_Float3 const & | trans | ) |

Permet de définir la translation à effectuer sur modèle avant le rendu.

Affectation uniquement.

Author:
  U.Speed

See also:
  void Object3D::setTranslation(USGE_Float3 const &trans, bool add)

Parameters:

  | trans | USGE_Float3 : translations selon X, Y et Z

Reimplemented in USpeedGameEngine::Surface2D.

void Object3D::setTranslation | ( | USGE_Float3 const & | trans,
|  | bool | add |
| ) |  |  |

Permet de définir la translation à effectuer sur modèle avant le rendu.

Ajout ou affectation possibles.

Author:
  U.Speed

Parameters:

  | trans | USGE_Float3 : translations selon X, Y et Z
  | add | bool : `true` pour ajouter au lieu d'affecter

Reimplemented in USpeedGameEngine::Surface2D.

bool Object3D::setVertices | ( | USGE_Vertex * | vList,
|  | unsigned long int | vCount,
|  | bool | copy |
| ) |  |  |

Affectation d'une liste de Vertex (par copie ou non).

Author:
  U.Speed

Parameters:

  | vList | USGE_Vertex* : la liste des nouveaux vertex
  | vCount | unsigned long int* : le nombre de nouveaux vertex
  | copy | bool : `false` si le pointeur est affecté directement. ATTENTION Dans le cas d'une affectation directe, les données sont supprimées par la méthode "clear()" (delete). Il ne faut donc pas faire de "delete" sur le pointeur fourni.

Returns:
  bool : `true` si la copie ou l'affectation a réussie (et si les données fournies sont valides !!)

bool Object3D::setVertices | ( | USGE_Vertex * | vList,
|  | unsigned long int | vCount |
| ) |  |  |

Affectation d'une liste de Vertex par copie.

Author:
  U.Speed

See also:
  bool Object3D::setVertices(USGE_Vertex *vList, unsigned long int vCount, bool copy)

Parameters:

  | vList | USGE_Vertex* : la liste des nouveaux vertex
  | vCount | unsigned long int* : le nombre de nouveaux vertex

Returns:
  bool : `true` si la copie a réussie (et si les données fournies sont valides !!)

## Member Data Documentation

struct USpeedGameEngine::Object3D::StructBoundinBox USpeedGameEngine::Object3D::boundingBox

La boîte d'encadrement du modèle.

La boîte d'encadrement du modèle

struct USpeedGameEngine::Object3D::StructBoundinSphere USpeedGameEngine::Object3D::boundingSphere

La sphère d'encadrement du modèle.

La sphère d'encadrement du modèle

The documentation for this class was generated from the following files:

- src/Object3D/Object3D.hpp
- src/Object3D/Object3D.cpp
- src/Object3D/Object3D_attachTo.cpp
- src/Object3D/Object3D_clear.cpp
- src/Object3D/Object3D_computeBB.cpp
- src/Object3D/Object3D_detach.cpp
- src/Object3D/Object3D_getDefaultSmooth.cpp
- src/Object3D/Object3D_getPhysicState.cpp
- src/Object3D/Object3D_getRotation.cpp
- src/Object3D/Object3D_getScale.cpp
- src/Object3D/Object3D_getSmooth.cpp
- src/Object3D/Object3D_getTranslation.cpp
- src/Object3D/Object3D_getVertex.cpp
- src/Object3D/Object3D_getVerticesCount.cpp
- src/Object3D/Object3D_hasPhysicState.cpp
- src/Object3D/Object3D_load3D.cpp
- src/Object3D/Object3D_load3DFromBuffer.cpp
- src/Object3D/Object3D_loadBox.cpp
- src/Object3D/Object3D_loadCube.cpp
- src/Object3D/Object3D_processParentTransform.cpp
- src/Object3D/Object3D_render.cpp
- src/Object3D/Object3D_renderShadow.cpp
- src/Object3D/Object3D_scaleTo.cpp
- src/Object3D/Object3D_scaleToUnit.cpp
- src/Object3D/Object3D_setDefaultSmooth.cpp
- src/Object3D/Object3D_setMaterial.cpp
- src/Object3D/Object3D_setPhysicState.cpp
- src/Object3D/Object3D_setRotation.cpp
- src/Object3D/Object3D_setScale.cpp
- src/Object3D/Object3D_setSmooth.cpp
- src/Object3D/Object3D_setTranslation.cpp
- src/Object3D/Object3D_setVertices.cpp