Bonjour,
Pour un petit projet, j'ai été amené à créer un chargeur de modèles ASE (je n'en trouvais aucun qui correspondait à mes goûts ^^ ).
Il est écrit en C++, et utilise la libraire OpenGL pour gérer et afficher ce modèle.
Il permet de charger des fichiers ASE de tout genre. Cependant il ne gère pas les matériaux multitexturés, ni les animations (car je n'en avait pas besoin). Toutefois si quelqu'un veut le faire pas de soucis, à mon avis il manque pas grand chose ^^.
Les textures appliquées au modèle doivent être des images TGA. J'ai également fournis un chargeur de TGA et un gestionnaire de fichiers TGA. (Créés (ou copier coller, je m'en rappelles plus ^^) à partir des tutoriaux présents sur developpez.com). Moyennant une petite modification du source, on peut utiliser d'autres formats pour les textures.
Le source se décompose en deux principales classes.
MeshASE :
- Permet de lire 1 mesh (~~ objet) présent dans le fichier.
- Lui appliquer un matériel.
- Le dessiner.
ModelASE :
- Permet de lire et charger un fichier ASE (pouvant comporter plusieurs meshes)
- Le compiler en une liste OpenGL.
- Afficher cette liste OpenGL à l'écran.
- Récupèrer la hauteur / Largeur et rayon moyen de l'ensemble de l'objet (utile pour les collisions simples).
La déclaration des structures primitives (vertex, faces, matériaux, ...) se trouve dans MeshASE.hpp.
Ensuite il y a d'autres classes pour l'environnements :
TextureTGA : Pour charger un fichier TGA
TextureManager : Gestionnaire de ressources pour les textures
Singleton : Pour que le gestionnaire soit un singleton ^^
Main : Simple main initialisant OpenGL / SDL pour avoir un exemple d'utilisation du chargeur ASE.
Voici le code source, avec le fichier projet utilisable sous code::block (pas tester sous linux).
N'hesitez pas si vous avez des remarques, si vous trouvez des erreurs, etc.
Merci !
Partager