Cours 3
Charger et afficher un object en 3D
Les textures
Un object, ou autrement appelé un Mesh 3D est un fichier qui contient une suite de coordonnées dans l'espace (X,Y,Z), une liste de textures en format image (PNG,BMP,TGA,JPEG), des coordonnés UV de texture pour définir comment chaque texture s'appliquer sur chaque facette de l'object, et une liste de propriétés de surface ( Brillance, Couleur, Reflet, Bump mapping, etc ).
La première mission de notre code 3D est donc de tout simplement charger les différents formats de fichiers images ou textures en BMP, TGA, PNG compressé ou non compressé.
Le fichier Mesh
Notre object 3D , ou bien Mesh, est un fichier qui est exporté de plusieurs éditeurs 3D : Blender, ou bien encore 3D Studio Max.
Nous exporterons le mesh en format OBJ (.obj) et (.ASE) car ces fichiers sont au format ASCII ce qui facilite grandement la lecture dans un bloc note en vue de mettre en place le chargement des données et ensuite l'affichage 3D.
Par la suite nous pourrons relire les fichiers binaires (.3ds) ou (.max) ou .blender. Cependant il faut faire attention car ces formats contiennents par juste un mesh mais une liste de meshs, de scenes, les caméras, les lumières et tout l'environnement 3D possible depuis ces éditeurs 3D évolués.
Notre code 3D
Nous allons charger et afficher une arbalette médiévale, les textures sont fourni avec le ZIP de l'exemple ci-dessous, à part du fichier mesh ASCII qui contient que les coordonnées et noms de textures ainsi que les propiétés des matières (materials).
// BRUSH
MeshManager * cube = new MeshManager(Renderer);
bool res = cube->loadMeshFromFile("gun1.ase", true);
vec3_t p = {0, -3, 0};
vec3_t s = {0.2f, 0.2f, 0.2f};
cube->SetPos(p);
cube->SetSize(s);
// SCENE
scene = new Scene(Renderer);
scene->addCamera(camera);
scene->addBrush(cube); // Ajoute notre Objet à la scene du Jeu
scene->addLight(light1);
Nous allons charger 3 fichiers (.ase) ainsi qu'une simple sphere au format (.obj) sans texture mais avec une couleur rouge.


