Modèle 3d texturé [opengl & ase & raw & devcpp]

Description

Modèles/Objets 3D au format ASE texturés en OpenGL (GLUT). J'ai voulu faire quelque chose de compréhensible par tout le monde.

Gestion de fichiers 3D au format ASE (exporté de 3DSMax ou autre)
_ chargement / déchargement
_ rendu classique / fil de fer / normales / vertex
_ texturé

Gestion de deux textures au format RAW (format BMP sans entête, brut)
_ spécification de la taille obligatoire

Gestion du clavier
_ F1 : Antialiasing (on/off)
_ F2 : Informations (messagebox)
_ F3 : Blending (on/off)
_ F4 : Eclairage (on/off)
_ F5 : Rendu Faces (on/off)
_ F6 : Rendu Wireframe (on/off)
_ F7 : Rendu Normales Faces (on/off)
_ F8 : Rendu Vertex (on/off)
_ F9 : Rendu Normales Vertex (on/off)
_ Echap : Quitter =)

Contient :
_ 3 fichiers ASE (une voiture, une roue et un carré)
_ 2 fichiers RAW

Source / Exemple :


struct point {
    float x, y, z;
};

struct mesh_struct {
    int nb_points;
    int nb_faces;
    int nb_uv;
    int nb_uvfaces;    
    struct point * liste_de_points;
    struct point ** liste_de_faces;
    struct point * liste_uv;    
    struct point ** liste_uvfaces;
    struct point * liste_points_normales;
    struct point * liste_faces_normales;
};

int AffichageASE ( struct mesh_struct, int idTex );
int AffichageASE_wireframe ( struct mesh_struct );
int AffichageASE_points ( struct mesh_struct );
int AffichageASE_normales_faces ( struct mesh_struct );
int AffichageASE_normales_points ( struct mesh_struct );
int LoadASE ( char[255], struct mesh_struct* );
int FreeASE ( struct mesh_struct );
int LoadRAW ( char[255], int taille, int id );

Conclusion :


Modèles 3D : Le format ASE est le plus facile à maitriser car il est lisible sous le notepad (ouvrez carre.ase). Il faut savoir lire un fichier texte en C et reconnaitre des motifs. Rien de bien compliqué.

Texture 2D : Le format RAW ne contient que les données de couleurs (longueur * largeur * 3 = nb octets). Pas d'entête, pas de compression. Un format basique.

Au fait, pour les gens qui utilisent 3DSMax, l'exportateur ASE est buggé (les normales Y et Z sont mal exportées). Voici le hack qu'il faut réaliser lors de l'affichage ou du chargement des normales des faces :

t=norm_y;
norm_y=-norm_z;
norm_z=t;

Plus d'info, plus de codes, http://belzel.free.fr

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.