begin process at 2010 09 09 14:56:29
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

OpenGL

 > MODÈLE 3D TEXTURÉ [OPENGL & ASE & RAW & DEVCPP]

MODÈLE 3D TEXTURÉ [OPENGL & ASE & RAW & DEVCPP]


 Information sur la source

Note :
9,5 / 10 - par 2 personnes
9,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :OpenGL Niveau :Initié Date de création :02/10/2004 Date de mise à jour :29/10/2004 23:38:56 Vu / téléchargé :9 728 / 1 307

Auteur : BeLZeL

Ecrire un message privé
Site perso
Commentaire sur cette source (37)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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

  • 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 );
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

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • ase.cTélécharger ce fichier [Réservé aux membres club]Voir ce fichier11 783 octets
  • ase.hTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 686 octets
  • capture.jpgTélécharger ce fichier [Réservé aux membres club]Voir ce fichier72 147 octets
  • carre.aseTélécharger ce fichier [Réservé aux membres club]3 080 octets
  • main.cTélécharger ce fichier [Réservé aux membres club]Voir ce fichier11 281 octets
  • OpenGL & ASE.devTélécharger ce fichier [Réservé aux membres club]1 167 octets
  • OpenGL & ASE.exeTélécharger ce fichier [Réservé aux membres club]48 037 octets
  • readme.txtTélécharger ce fichier [Réservé aux membres club]Voir ce fichier912 octets
  • roue.aseTélécharger ce fichier [Réservé aux membres club]345 391 octets
  • roue_128.rawTélécharger ce fichier [Réservé aux membres club]49 152 octets
  • voiture.aseTélécharger ce fichier [Réservé aux membres club]897 589 octets
  • voiture_256.rawTélécharger ce fichier [Réservé aux membres club]196 608 octets

Télécharger le zip


 Historique

29 octobre 2004 23:38:57 :
Bug allocation mémoire corrigé (cf commentaires)

 Sources du même auteur

Source avec Zip Source avec une capture VORTEX [OPENGL DEVCPP]
Source avec Zip Source avec une capture LIMITER NOMBRE FPS [OPENGL & QUERYPERFORMANCE & DEVCPP]
Source avec Zip [HOOK CLAVIER] FICHIER TEXTE AVEC GESTION DES DEAD KEYS [DEV...
Source avec Zip Source avec une capture LOAD TGA / OPENGL [DEV-C++ 4.9.5.0]
Source avec Zip Source avec une capture LOAD JPG / OPENGL [DEV-C++ 4.9.5.0]

 Sources de la même categorie

Source avec Zip CUBE 3D GLUT32 VC++ ET DEVC++ par bobby03
Source avec Zip Source avec une capture LEÇON MDL HALF-LIFE OPENGL VISUAL C++ par bobby03
Source avec Zip Source avec une capture SCREENSAVER OPENGL DEV C++ par bobby03
Source avec Zip Source avec une capture LEÇON 13 NEHE EN FRANÇAIS OPENGL DEV C++ par bobby03
Source avec Zip JEU DE DAMES 3D par vbclaude

Commentaires et avis

Commentaire de khayyam le 02/10/2004 16:42:05

très bon code qui peut servir ! (et qui servira surement d'ailleurs ;-) )
enfin un code utile, et bien écrit en plus.
en voyant le screen j'avais peur que ça ne soit une usine à gaz, et même pas.

euh, juste une question, les 2 loaders pour ase et raw, tu les as trouvés où ?

Commentaire de BeLZeL le 02/10/2004 17:19:51

Merci :)

C'est ce que j'explique au début. Je veux que ce soit accessible à tous, ou en tout cas, à tous ceux qui connaissent les bases de l'OpenGL :)

Les deux loaders, c'était un TD dans mon option imagerie numérique, à l'IUT. Je l'ai fait en 2-3h. Ce sont les deux formats les plus simples que je connaisse. Charger un JPG et un 3DS, c'est déjà une autre paire de manches.

Tu peux modifier le loader ASE si tu n'as pas besoin de tout (par exemple les normales, si tu n'as pas besoin de l'éclairage, ou les UV si tu n'as pas de texture). C'est ca aussi qui est pratique.

Commentaire de Funto66 le 03/10/2004 00:39:27

Code intéressant et surtout utile ;)
Seulement là où est le pb : quel modeleur gratuit et simple d'utilisation est capable de créer des fichiers ASE?

Commentaire de BeLZeL le 03/10/2004 00:52:39

Ce que je vais écrire est à prendre avec des pincettes parce que je n'ai pas le temps de vérifier, mais je crois que Blender le fait avec un filtre d'export et GMax aussi.

Commentaire de Funto66 le 03/10/2004 16:54:26

Blender je veux bien te croire, mais j'ai bien dit "simple d'utilisation"...^^
Pour gmax, li n'y a pas de fonction de sortie de fichier dans son interpréteur MAXScript (c'est volontaire), donc ça m'étonnerait qu'il soit possible de produire un fichier ASE (autrement que par un copier-coller).
Les seules autres façons que gmax pourrait avoir d'enregistrer en ASE seraient :
-que ça soit natif (ça n'est pas le cas)
-que ça fasse partie d'un des packs que l'on peut lui associer, et qui sont créés par les entreprises de jeux vidéos pour leurs jeux.

Commentaire de BeLZeL le 03/10/2004 17:30:30

GMax n'exporte que dans un seul format (*.pls), dommage pour un prog pour développeur amateur. Je vois pas trop l'intérêt pour un jeu vidéo.

Sinon ca marche pour Blender (http://users.durge.org/~andyc/3d/ase-export-filter.html). Je n'ai jamais utilisé Blender, je ne sais pas s'il est difficile à utiliser.

Donc il n'existe pas bcp de modeleurs 3D gratuits facilement utilisables et qui exportent dans des formats facilement utilisables. Si tu connais d'autres formats, pourquoi pas. Sinon, il faut acheter une licence de 3DSMax ou trouver un site proposant des modèles ASE (il en existe surement des gratuits).

Commentaire de Kleidp le 03/10/2004 18:34:05

Pour importer et exporter dans presque tout les formats 3D, il y a le logiciel "3D exploration", pour le télécharger faites une petite recherche sur Google

Commentaire de Funto66 le 03/10/2004 20:18:22

Le format *.pls, jamais entendu parler de ça, je ne connais que le *.gmax...faudra que je voie ça :) (et tant qu'à faire si on pouvait créer un chargeur de fichiers PLS ce serait le top non? ;)).

En ce qui concerne Blender, je confirme : C'EST compliqué, même si soi-disant c'est "logique"...ben non dsl, j'ai beau avoir testé, re-testé, lu des 10aines de tutoriaux...j'aime pas.

Pour 3D Exploration, je connais, mais c'est payant (et crackable mais je préfère pas).
Sinon y'en a un autre qui est soi-disant shareware mais sans date d'expiration, c'est 3DWin Converter si je me souviens bien.

Commentaire de gagah1 le 03/10/2004 20:55:56

Galère pas Funto66, Je vais créer un modeleur gratuit pour toi.

Commentaire de Funto66 le 03/10/2004 21:49:07

euh...t'es vraiment sérieux gagah1? Parce que si c'est le cas, sache que j'avais commencé (juste commencé hein) à en écrire un...
Si tu veux on pourrait le faire ensemble.

Maintenant si t'as juste dit ça comme ça...

Commentaire de gagah1 le 04/10/2004 14:49:16

C'est sérieux Funto66. J'aimerais bien qu'on le fait ensemble. Moi aussi j'ai déjà essayé de créer un mais comme le projet est volumineux, j'ai laissé.

Commentaire de Funto66 le 04/10/2004 20:01:54

Yeaah super ça :)
Faudra qu'on en discute, ailleurs ;)
On en parlera en messages privés sur le forum de Coder-Studio ok? Faudrait pas polluer les commentaires de la source de BeLZeL, que je salue au passage...;)

Commentaire de BeLZeL le 08/10/2004 23:20:14

Merci les gars, c'est gentil de penser à moi :)
Je vais regarder ces deux programmes.

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;

Commentaire de LordBob le 09/10/2004 21:27:31

juste une question avec quoi je peux éditer les fichiers raw?

Commentaire de Funto66 le 09/10/2004 21:43:55

Avec Paint Shop Pro notamment, il me semble par contre que GIMP ne le supporte pas :(
Faut lui préciser à l'ouverture comment sont organisées les données (RGB, BGR, RGBA, noir&blanc...) et quelles sont les dimensions du l'image et ça marche ^^

Commentaire de blh_ind le 28/10/2004 11:32:14

Boulette je crois

ligne 46 :
mesh->liste_points_normales = (struct point *) malloc (mesh->nb_uv * sizeof(struct point));

remplacer par :

mesh->liste_points_normales = (struct point *) malloc (mesh->nb_points * sizeof(struct point));

Je crois !

Commentaire de BeLZeL le 29/10/2004 19:51:01

Exact ! Merci pour l'info. Bug d'allocation mémoire.

Je ne mets pas à jour le prog, il suffit juste de modifier cette ligne.

Sinon, la boucle d'affichage est bonne :
    for ( i=0 ; i<mesh.nb_points ; i++)

Commentaire de Funto66 le 29/10/2004 21:22:24

Euuh, à ta place je mettrais à jour...
Parce qu'à mon avis ceux qui voudront télécharger le prog n'iront pas forcément lire les commentaires ^^

Commentaire de BeLZeL le 29/10/2004 23:41:45

Voilà voilà, le programme est mis à jour.

C'est que je suis fainéant moi ;)

Commentaire de Nico5779 le 06/11/2004 18:20:28

Bonjour,
tout d'abord merci pour ce code, qui m'as permis de commencer un projet que j'avais entete.
Ensuite j'ai deux ptites question:
1°) j'ai supprimer tout le glut du code pour le remplacer par du sdl, j'obtiens une version qui compile et fonctionne, mais toutefois , il semble persiter un problème, lors de la rotation de la honda, tout les points ne s'affiche pas, la "zone du fond" est noir, comme si il y avait de l'ombre, pourtant si je "fixe" la voiture elle apparait bien en entier, serait-ce un problème de lumière du fait que la fenetre est gerer par sdl? (le fichier executable livré ds le zip ne pose pas ce problème)
Quelqu'un voit t'il une solutions?
2°)est ce que quelqu'un pourrait m'expliquer comment compiler du glut sous dev-cpp, car j'ai beau marcher sur les mains et j'obtiens systematiquement des erreur de linkage, genre :

Compiler: Default compiler
Building Makefile: "C:\Dev-Cpp\Makefile.win"
Executing  make...
make.exe -f "C:\Dev-Cpp\Makefile.win" all
gcc.exe main.o ase.o  -o "Project1.exe" -L"C:/Dev-Cpp/lib" -lmingw32 -lSDLmain -lSDL -lopengl32 -lglu32 -lglut32 -I"C:/Dev-Cpp/include"  

main.o(.text+0x17):main.c: undefined reference to `__glutInitWithExit@12'
main.o(.text+0x37):main.c: undefined reference to `__glutCreateWindowWithExit@8'
main.o(.text+0x5b):main.c: undefined reference to `__glutCreateMenuWithExit@8'

make.exe: *** [Project1.exe] Error 1

Execution terminated

Quelqu'un peut t'il m'aider?
Merci d'avance :-)

Commentaire de Funto66 le 06/11/2004 22:29:22

Pour ton problème avec la Honda faudrait voir une image si possible, mais vu ce que tu décris je pencherais pour le plan de clipping (les 2 dernières valeurs de gluPerspective()) mais bon ce n'est qu'une supposition...

Pour compiler avec GLUT sous Dev-C++, ton problème vient du fait que tu utilises un header propre à une version "hackée" de GLUT (on peut le dire d'ailleurs : illégale ^^); en effet, le code de GLUT est dispo mais on n'a pas officiellement le droit de le modifier. Il y a un petit groupe (ou une personne je ne sais pas) qui l'a pourtant modifié pour rajouter un callback qui correspond à quand la fenêtre est quittée (alors que c'est inutile grâce à la fonction standard atexit() enfin...).
En revanche, le fichier libglut32.a que tu utilises est le fichier officle, donc : problème ^^

Je te renvoie ici pour l'install : http://site.voila.fr/allbrain/inigl.htm

Commentaire de BeLZeL le 12/11/2004 23:32:58

Sont fous les gens, ils n'ont rien d'autres à faire que modifier GLUT :)

Commentaire de frantz03 le 18/12/2004 11:44:23

salut super code il m'a aide pour un projet a faire mais je voulais savoir ce que tu passais en option pour lance le programme chez moi quand je le compile puis que je l execute il ne ce passe rien!!
merci

Commentaire de frantz03 le 18/12/2004 11:44:33

salut super code il m'a aide pour un projet a faire mais je voulais savoir ce que tu passais en option pour lance le programme chez moi quand je le compile puis que je l execute il ne ce passe rien!!
merci

Commentaire de BeLZeL le 18/12/2004 21:08:39

Il n'y a pas d'options à passer. Il faut juste s'assurer que les fichiers ASE et les textures RAW sont placées dans le même répertoire que l'exe.

Commentaire de timf1 le 28/08/2005 15:45:30

salut tout le monde

Tout d'abord bravo c’est un super code.
Mais j'ai une erreur lorsque je conpil "[Build Error] ["OpenGL] Error 1" ??
si quel'un pourait m'aider sa serait cool
Merci.

a juste une remarque pour ameliorer le programme sa serait bien de limiter le nombre de FPS
Le ventilateur de la carte graph il aime pas trop(je peut eventuelement donner un coup de main sur se point la).

Commentaire de Funto66 le 28/08/2005 16:42:00

Pour limiter les FPS tu peux le faire hors-prog, avec la fonction dite du "V-Sync" normalement...

Commentaire de BeLZeL le 28/08/2005 17:21:43

Pour limiter les FPS sous OpenGL, regarde mon code :
http://belzel.free.fr/framerate/index.html

Commentaire de maladedede le 04/07/2006 16:00:19

Salut mais aprés c'est quand eme la galère de texturé un objet 3D chargé. sauf si c'est une couleur uniforme ( rouge pour la voiture).
Quelqu'un aurait un conseil a me donné svp ???

Commentaire de maladedede le 04/07/2006 18:41:37

y'a t'il d'autre format d'obejt 3d que l'on charge et qui son deja texturé au préalable avec un logiciel ?

Commentaire de BeLZeL le 09/07/2006 00:12:48

Non, les objets 3D sont des objets 3D, c'est-à-dire une suite de coordonnées de points dans l'espace (avec quelques trucs en plus).

Commentaire de maladedede le 09/07/2006 00:28:40

Mais je sais que le format ase contient des info de texturage et l'emplace des texture 3d qui texture l'objet.

Parceque j'ai un objet 3D ase avec une texture que j'ai fait avec 3dmax studio.
Et lorsque j'ouvre cette objet avec une autre logiciel(3D Exploration) bin l'objet au format esa m'apparait texturé avec e bmp choisi sous 3Dsmax.

Sinon sait tu ou je peux trouvé un loader de ase qui load l'objet avec les infos de texturage ?

Commentaire de Funto66 le 10/07/2006 00:16:14

Regarde du côté du site de NeHe (http://nehe.gamedev.net)

Commentaire de BeLZeL le 10/07/2006 13:55:30

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.

Commentaire de Funto66 le 10/07/2006 14:20:05

A moins de créer son propre format ^^
(ou de tout mettre dans un fichier archive, genre un .tar, ou un .zip...

Commentaire de BeLZeL le 10/07/2006 19:19:10

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 :)

Commentaire de maladedede le 12/07/2006 07:14:25

ok merci mais dans cette source alors comment charger les textures ?

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales