Viewer 3d et générateur 2d win32 opengl vc++7

Description

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

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.