begin process at 2012 02 13 02:51:21
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

OpenGL

 > VIEWER 3D ET GÉNÉRATEUR 2D WIN32 OPENGL VC++7

VIEWER 3D ET GÉNÉRATEUR 2D WIN32 OPENGL VC++7


 Information sur la source

Note :
9,6 / 10 - par 5 personnes
9,60 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :OpenGL Niveau :Initié Date de création :23/01/2005 Vu / téléchargé :17 893 / 2 413

Auteur : shenron666

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

 Description

Cliquez pour voir la capture en taille normale
Il s'agit d'un logiciel de visualisation d'objets 3D supportant les textures
Il peut lire 3 formats et on peux facilement en ajouter :
- Wavefront OBJ (format texte)
- 3D Studio
- Milkshape (au format binaire)

Il y a des options d'affichage, il supporte le glisser/déplacer (drag'n drop), il calcule et peut afficher les bouding boxes, si l'objet est composé de plusieurs parties on peut en désactiver, on peux visualiser d'un simple clic une partie de l'objet, l'arborescence de l'objet sert d'interface aux manipulations, une fonction permet de "poser l'objet au sol" (pas de coordonnées en dessous de la verticale 0), fonction d'optimisation de l'objet retirant les vertices en doubles et les faces qui ont 2 points communs, fonction de génération de silhouette, pas de fonction de sauvegarde : à vous de d'intégrer celle que vous voulez

Vous pouvez donc trouver dans le code des tas de trucs qui peuvent vous plaire :
- des fonctions de math (vecteurs, matrices, ...)
- une classe de gestion de textures
- une classe de gestion de fichier log
- une classe de gestion d'objet 3D
- de la gestion de fenêtre en Win32
- une fonction de chargement JPEG !!
- une classe de gestion du temps (basique)
- une classe de chargement 3DS (pas de moi)
- une classe de chargement milkshape (pas de moi à la base mais un peu modifiée)
- une fonction de chargement wavefront
- du treeview
- gestion d'un fichier .ini (sauvegarde/chargement) pour conserver les préférences
- et bien d'autres ...

bon "amusement"
Shenron

PS: un grand merci à http://nehe.gamedev.net de m'avoir permis d'en arriver là, il est ma principale source d'apprentissage OpenGL


 Conclusion

Quelques petites explications sur le fonctionnement :
La partie gauche affiche la 3D, à droite la 2D
si vous avez un objet 3D vous le déplacez et le déposez dans l'application, il se charge, sinon menu "Fichiers" -> "Charger 3D" (vous aviez devinés ?__?)

Dans "Affichage 3D" vous pouvez activer/désactiver/modifier des options d'affichage pour la 3D
l'option "Afficher uniquement la sélection" permet de n'afficher que les éléments qui sont actifs (j'explique un peu plus loin)

Dans "Affichage 2D" vous pouvez activer/désactiver/modifier des options d'affichage pour la 2D cette fois
la première possibilité lance le générateur de silhouette et celle-ci est automatiquement affichée dans la partie 2D
l'option "Silhouette unicolore" affiche la silhouette d'une seule couleur (modifiable) si elle est désactivée alors chaque élément de la 2D est affiché avec la couleur de l'élément 3D correspondant

Dans le menu "Options" se trouve la fonction d'optimisation de la 3D qui consiste à relier les points qui sont confondus et qui peut rendre la 2D plus légère (tout comme la 3D)
Je vous conseille de générer une première fois la 2D puis d'optimiser la 3D et de régénérer encore une fois la 2D en regardant la différence
"Options" contient aussi la fonction (simple" qui va poser l'objet à 0 d'altitude

Les manipulations en 2D et 3D sont les mêmes :
clic gauche maintenu, déplacer la souris pour faire tourner l'objet
clic droit maintenu, déplacer la souris pour (dé)zoomer
clic avec le bouton du milieu, déplacer la souris pour déplacer la vue (en 3D elle ne se déplace pas
erticalement)

Pour terminer, lorsqu'un objet est chargé, une fenêtre apparait avec un "treeview" (un arbre façon windows explorer)
ce treeview contient le nom du fichier 3D chargé suivi de tous les éléments qui composent l'objet
le clic gauche sélectionne l'élément, un clic sur le nom du fichier sélectionne l'objet complet (selon  les éléments actifs)
le clic droit (dés)active un élément, cliquer sur le nom de l'objet inverse l'état de chaque élément (les actifs se désactivent et vice versa), cliquer sur un élément inverse sont état 3D et 3D, cliquer sur le + pour voir l'état de la 2D et de la 3D séparément et un clic droit sur létat de la 2D ou de la 3D permet de le modifier indépendamment
la fonction "Afficher uniquement la sélection" de la 2D et de la 3D tiens compte de ces états et il faut que l'objet général (clic gauche sur le nom de fichier) soit sélectionné

j'espère que mes explications sont assez claires, bon courage pour la compréhension du code
une dernière chose : si vous supprimez le fichier .ini ou s'il n'y en a pas, le programme le recrée automatiquement quand vous quittez

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip CLASSE DE GESTION DE FICHIER DE TYPE INI (CHARGEMENT/SAUVEGA...
CSORTEDARRAY<TEMPLATE> VISUAL C++ MFC
Source avec Zip Source avec une capture EXTRACTEUR / ANALYSEUR DE COMBOS (MFC)
Source avec Zip Source avec une capture OMBRES VOLUMÉTRIQUES D'OBJETS 3D EN UTILISANT LE STENCIL (C+...
Source avec Zip Source avec une capture OMBRE PORTÉE ET UTILISATION STENCIL SOUS OPENGL

 Sources de la même categorie

Source avec Zip Source avec une capture AFFICHER DES COURBES DE BEZIER par shorzy
Source avec Zip Source avec une capture BASE/MOTEUR 3D EN QT/OPENGL (COMPLET ET FONCTIONNEL!) POUR U... par envi33
Source avec Zip Source avec une capture CLASSE AVEC OPENGL - OBJETS 3D ET ANIMATIONS par rasta63
Source avec Zip Source avec une capture LETTRES 3D AVEC OPENGL ET QT par opossum_farceur
Source avec Zip CUBE 3D GLUT32 VC++ ET DEVC++ par bobby03

Commentaires et avis

Commentaire de Afyn le 23/01/2005 21:43:11

C'est géant !

Bravo

Afyn
Navedac

Commentaire de shenron666 le 24/01/2005 13:01:39

Pour ceux qui ne savent pas où trouver des objets 3D (3DS et obj en autres) :

http://www.3dcafe.com/asp/freestuff.asp

Si vous en avez d'autres ca m'intéressent (3D, textures, sons, ..., tout ce qui peut etre utile pour la création d'une démo ou d'un jeu)

Commentaire de NoRabbit le 24/01/2005 16:19:54

bien sympa !

et très intéressant

merci !

Commentaire de Zazour le 24/01/2005 17:40:08

Bon projet,plein d'idées utiles.

merci!

Commentaire de Kirua le 24/01/2005 17:47:33

Impressionnant! C'est le 10/10 quoi :)

Commentaire de LordBob le 25/01/2005 15:11:47

impressionnant !!!
formidable source !

Commentaire de shenron666 le 25/01/2005 16:39:06

Pour ceux que cela intéresse, la procédure de génération de la silhouette est quasi identique à la procédure de calcul de silhouette destiné à la génération d'ombres volumétrique (dans le style doom3)
Il y a ps mal de boulot à faire tout de même mais si vous arrivez à comprendre le principe appliqué ici vous êtes en bonne voie

Commentaire de Funto66 le 26/01/2005 20:00:43

Le fichier LoadJPEG.cpp....c'est de toi??

Franchement rien que ça ça vaut le détour lol, qd on voit la complexité du chergement des fichiers JPEG et que tu les charges sans utiliser de jpeglib ni rien...franchement rien que pour ça ça vaut un 10/10 lol

Commentaire de shenron666 le 27/01/2005 09:40:34

Le chargement JPEG vient d'une source en C que j'ai récupéré et réadapté pour plus de clarté (je suis pas encore satisfait)
c'est limité, il ne lit pas certains formats de JPEG (regardes la fonction "jpeg_readmarkers") mais il lit au moins les jpeg standart et en niveau de gris

si je ne me trompe pas, la source originale se trouve ici : http://www.wotsit.org/search.asp?page=5&s=graphics
le premier lien (un download de 39k) contient un encodeur et un décodeur

c'est que du code récup, je n'ai pas tout le mérite que tu m'accordes mais merci pour ton commentaire très sympathique :-)

Commentaire de Zazour le 27/01/2005 16:15:00

j'ai une question qui n'a pas directement rapport avec la source,mais...
J'ai un bug graphique qui apparait a chaque fois que j'utilise l'API OpenGL quel que soit le taux de rafraichissement du moniteur et ca résolution.Mais cela seulement en mode fenetre et pas de probleme en plein écran.
Quelqu'un a t'il rencontré ce genre de problème?
Pourquoi cela n'est qu'en mode fenetré?
Comment OpenGL est "connecté" a Windows?

Commentaire de alpha le 27/01/2005 16:52:47

Super 10/10 c'est vraiment trés trés bien...

Commentaire de Funto66 le 27/01/2005 18:50:01

Zazour pour ce genre de questions y'a le forum...

shenron666 >> ah dommage :( Enfin ta source est quand même bien lol (même si là aussi les chargeurs de fichiers 3D sont piqués de GameTutorials (enfin sauf un non?)).

Commentaire de shenron666 le 27/01/2005 21:16:13

Le loader 3DS vient de gametutorials (avant qu'il ne devienne payant snif l'appat du gain...)

Le Loader MS3D vient d'un pote qui a dû le récupérer je ne sais où (le site officiel probablement)

Le Loader Wavefront est 100% maison (facile dans le sens où les objets Wavefront sont des fichiers textes)

Zazour -> tu as aussi ce problème avec ma source ?

Commentaire de Zazour le 28/01/2005 06:15:56

Milles excuses Funto66,j'ai essayé le forum,mais les questions que je pose ne passe pas.Mais je vais réessayer de poster.

Commentaire de acrcorp le 07/02/2005 22:31:31

Mes respects capitaine !

Commentaire de Mattpbem le 10/12/2005 16:25:48

je ne sais pas pourquoi mais OpenGl me fait le Z-ordering à l'envers, j'ai une vue sur l'interieur des objets seulement et il me le fait sur plusieurs sources (jai une NVIDIA geForce 2 MX 400)

Commentaire de shenron666 le 12/12/2005 13:41:03

Tu as des objets qui s'affichent correctement ?
si c'est le cas c'est peut-etre un problème avec l'objet, l'ordre les vertices est inversé par rapport à ce dont s'attend le programme

Commentaire de the_king2 le 15/05/2006 17:34:31

je suis débiteur et j'ai 2 probleme pour votre programme
+ je ne peut pas le compiler sur vc++6 (pas de workspace)
+ l'exécutable me fait un erreur lors du chargement du fichier 3d avec extension .obj alors que les fichiers 3ds fonctionnent trés bien
+est ce tu peut me donner un fichier .obj parfaitement éxécutable (n'importe quel objet)
Merciiiiiiiiii d'avence pour vos réponses

Commentaire de shenron666 le 15/05/2006 19:35:53

sur http://www.3dcafe.com tu vas dans "free stuffs" ("3dcafe main menu" à droite)
puis dans "3D models", la section "MOTORCYCLES, BICYCLES, ATV" contient un monocycle en obj (le fichier est "unicycle2.zip")
je ne peux pas donner le lien direct car le site le génère "au clic"
bon courage ;)

Commentaire de achref_2005 le 16/05/2006 19:11:28

l'executable fonctionne parfaitement avec les fichiers obj et 3ds mais j'ai pas pu compiler de nouveau les fichiers avec vc++ ou devc++ .pourquoi? je vous attend Svp

Commentaire de shenron666 le 17/05/2006 15:27:32

si tu as des problèmes pour compiler, dis moi au moins quel problème, si tu as une erreur alors laquelle, parceque le projet vc7 est inclus dans l'archive et fonctionne
si tu compiles sous vc6, tu as juste à créer un projet win32 et y mettre tous les fichiers

Commentaire de the_king2 le 17/05/2006 16:07:08

c'est ca mon probleme je n'arrive pas a ouvrir le projet
je vai essayer ta réponse
merci

Commentaire de the_king2 le 18/05/2006 11:59:39

ca y est j'ai pu compiler avec visuel8 et ca tourne mais il y'a des warning que j'ai pas compris:
'3DViewer.exe': Loaded 'C:\WINDOWS\system32\samlib.dll', No symbols loaded.
'3DViewer.exe': Loaded 'C:\WINDOWS\system32\davclnt.dll', No symbols loaded.
'3DViewer.exe': Loaded 'C:\WINDOWS\system32\shgina.dll', No symbols loaded.
'3DViewer.exe': Loaded 'C:\WINDOWS\system32\msgina.dll', No symbols loaded.
et boucoup d'autre (a peu près 60)
une autre question est ce que vous avez une chose sur le calcul de volume des objet 3D.
je vous attend Merci

Commentaire de shenron666 le 18/05/2006 23:45:41

a mon avis les warning sont générés parcequ'une lib est inclue alors que pas besoin
désolé mais je n'ai rien au sujet du calcul de volume, un forum où il est question d'algorithmes serait plus approprié pour trouver des réponses à ce sujet

Commentaire de the_king2 le 20/05/2006 11:05:57

Merci

Commentaire de the_king2 le 23/05/2006 18:39:52

pour les fichiers .obj les facettes sont disposée de la façon suivante:
f 1/1/1 1/3/6 12/4/4
f 1/1/1 1/8/6 1/4/5 etc....
alors que d'autre ficher déclare les facette de la facon suivante:
f 1 5 6
f 4 2 8 etc...
et ce dernier type provoque une erreur lors de l'importation du fichier sur le viewer
quelle est la différence entre les 2?
et pourquoi l'erreur
Merci d'avence parceque vous m'avez boucoup aidé

Commentaire de shenron666 le 24/05/2006 09:22:45

dans le premier cas, tu as 3 séries de 3 valeurs, 3 vertex, 3 normales et 3 coordonnées de texture
dans le second cas, tu as 1 série de 3 valeurs, les 3 vertex
je n'ai pas prévu que le fichier ne contienne pas les normales -_-

Commentaire de the_king2 le 24/05/2006 13:21:25

c'est quoi les coordonné de texture

Commentaire de shenron666 le 29/05/2006 09:32:45

ce sont des coordonnées qui indiquent quelle portion de la texture est alignée avec le point
avec une 1 texture 2D il y a 2 coordonnées par point
les coordonnées varient entre 0 et 1 et ne se soucient pas de la taille de la texture
il vaut mieux connaitre pour faire de la 3D

Commentaire de coaben le 12/06/2007 17:15:23

A quant la version pou autocad et archicad.

Commentaire de Shromilder le 05/01/2010 12:15:44

bah moi mon fichier obj (maya 2010) fait planter ton soft =(
C'est domage je voulais utiliser tes sources pour mon soft mais je crois que je vais devoir me faire un parser de .obj tout seul =(
C'est surement du à ton commentaire "je n'ai pas prévu que le fichier ne contienne pas les normales -_-"

Commentaire de Shromilder le 05/01/2010 17:28:17 8/10

Bon deja on peut pas editer des commentaires c'est un peu embetant mais ca à rien à voir avec ton soft :)

Pour ton soft, en fait il y a un bug au niveau du chargement du fichier .mtl car si les fichiers obj et mtl ne se trouvent pas dans le répertoire du soft, lors du chargement du .mtl, vu que le lien qui est spécifié dans le fichier .obj est du style 'cercle.mtl', ton soft essaie de charger le fichier cercle.mtl dans le répertoire du logiciel au lieu d'aller dans celui du .obj.
De plus, le logiciel Maya génére des fichiers au format UNIX donc il n'y a pas de \r\n à la fin des lignes donc à prioris ca fait planter ton soft lors du parcours du fichier.
De plus, ton soft ne gère que les face à 3 vertex alors qu'on peut faire des face à plus que ca.
Je vais donc quand même me baser sur ca (même si ca vient de glm.c) pour parcer les .obj.
Merci :)

Commentaire de shenron666 le 05/01/2010 22:17:10

Salut Shromilder, c'est vrai que ce vieux bout de code aurait bien besoin d'un rafraichissement pour mieux gérer les obj et les fichiers "non DOS" ^^
pour les face à plus de 3 vertex, le problème c'est de vérifier que les points sont bien coplanaires, ce qui est toujours le cas avec un triangle

par contre, pas certain de comprendre ce que tu veux dire par "même si ca vient de glm.c"
si tu pouvais me dire ce qu'est "glm.c" et où le trouver
le parser obj date de 2004 et est basé sur les specs wavefront trouvables sur www.wotsit.org (encore valable aujourd'hui)

Commentaire de imenrahoui le 27/06/2011 13:06:23

Bon travail, Bravo,
Est-il possible de modifier le code pour afficher un nuage de points, les vertex sont enregistrés dans un fichier csv ou txt.
Merci

Commentaire de shenron666 le 28/06/2011 10:00:45

il est possible de modifier le code comme bon vous semble
bon courage ;)

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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,640 sec (4)

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