Gestion des ressources
Jeudi, 02 Juillet 2009 09:56

Généralités

Les ressources sont des fichiers de données chargés par le moteur. Ces données peuvent permettre de créer un maillage, une animation, une texture, un sprite ou un shader.

  • Un maillage est un ensemble de faces formées chacune par trois points positionnés en trois dimensions. Cela permet de représenter un objet en 3D.
  • Un fichier d’animation contient des données décrivant le mouvement d’un objet.
  • Une texture est une image utilisée pour habiller un maillage.
  • Un sprite est également une image mais exclusivement destinée à un rendu en 2D. Il peut aussi être animé.
  • Un shader est un programme pouvant être utilisé par la carte graphique. Il permet de personnaliser le rendu d’un objet.

Skinning

Le skinning est une technique d’animation qui permet de modifier un maillage à l’aide d’un squelette. Ce squelette est composé de plusieurs os qui vont être animés. De cette manière même un maillage composé de beaucoup de points peut être animé assez facilement.

Squelette utilisé pour l’animation d’un maillage

Squelette utilisé pour l’animation d’un maillage.

Le squelette est d’abord créer en lien avec le maillage sous un logiciel de modélisation (3DS Max …). Chaque os de ce squelette va influencer plus ou moins un certain nombre de points. Un point du maillage va donc être animé en suivant le déplacement d’un ou plusieurs os avec un coefficient d’influence pour chaque os.

Pour utiliser un objet animé dans le moteur il faut donc exporter un maillage qui va contenir les positions de chaque point mais aussi les données liées au skinning, c'est-à-dire les indices de tous les os qui l’influence et le poids de cette influence.

Il faut ensuite exporter le mouvement de chaque os. L’animation d’un os est représentée par une suite de matrice de transformation, c'est-à-dire des matrices permettant de positionner et orienter l’os dans l’espace. L’animation étant exportée à un certain nombre d’images par seconde, une matrice de transformation est enregistrée à chaque image pour chaque os.

Il existe une hiérarchie entre les différents os, par exemple, pour un squelette humain, même si la main n’est pas animée elle devra bouger si le bras bouge. Pour afficher l’objet animé cette hiérarchie est supprimée en appliquant à un os les transformations des autres os dont il dépend.

Manager de ressources (ResourceManager)

Le ResourceManager est un module du moteur qui permet de gérer facilement des ressources, il permet d’éviter la duplication des données. Pour cela il contient une liste des ressources chargées ainsi que leur nom. Lorsqu’une demande de ressource est faite au ResourceManager il vérifie que celle-ci n’ait pas encore été chargée. Si elle n’est pas dans sa liste, il va la charger, sinon il renvoi celle déjà chargée.