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

Soyez le premier à donner votre avis sur cette source.

Vue 13 648 fois - Téléchargée 1 624 fois

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

Ajouter un commentaire

Commentaires

Utilisateur anonyme -
ok merci mais dans cette source alors comment charger les textures ?
BeLZeL
Messages postés
110
Date d'inscription
mardi 10 octobre 2000
Statut
Membre
Dernière intervention
20 décembre 2005
-
C'est sûr, on peut tjrs créer son propre format, mais de mémoire, il ne doit pas exister de format standard comme ca :)
Funto66
Messages postés
1267
Date d'inscription
mercredi 1 janvier 2003
Statut
Membre
Dernière intervention
28 février 2007
3 -
A moins de créer son propre format ^^
(ou de tout mettre dans un fichier archive, genre un .tar, ou un .zip...
BeLZeL
Messages postés
110
Date d'inscription
mardi 10 octobre 2000
Statut
Membre
Dernière intervention
20 décembre 2005
-
Ce programme le fait. C'est un ASE texturé.
J'ai peut être mal compris au départ ce que tu voulais me dire.

Le format ASE et 3DS contiennent également des informations sur l'emplacement et la position d'une texture (texture uniforme ou texture au format BMP/JPEG/TGA/etc., et qu'il faut alors charger à part).

Ce qui n'est pas possible, c'est de tout avoir dans un seul fichier.
Funto66
Messages postés
1267
Date d'inscription
mercredi 1 janvier 2003
Statut
Membre
Dernière intervention
28 février 2007
3 -
Regarde du côté du site de NeHe (http://nehe.gamedev.net)

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.