Aucun de ces logiciels n'utilisait de librairie graphique 3D et les machines utilisées étaient des Suns IPX équipés de cartes graphiques très lentes. Malgré tout les résultats étaient satisfaisants (une vingtaine d'images par secondes avec texture mapping et éclairages colorés, lissage de surface, pour les versions en C, quelques images secondes pour les version Java).
Les groupes ayant choisi le C ont avancé beaucoup plus lentement que les autres mais leurs programmes allaient plus vite. Les groupes java ont implanté beaucoup plus de fonctionnalités, de manière plus propre, et ont eu le temps de faire une interface graphique. Voici une photo d'écran d'un de ces logiciels :
Comme vous pouvez le voir, il s'agit d'une application multi-fenetres, possèdant une barre de menu et un tableau de controle pour les objets, les lumières et les caméras associées à chaque objet.
Chaque fenetre présentant un objet 3D est une vue d'un modèle 3D de l'objet, modèle composé de sommets, de faces et de divers attributs comme la couleur, les caractéristiques de la surface de l'objet, etc...
Ca ne vous rappelle rien.... modèle, vue... MVC !
Peandant les cours de synthèse d'image du second semestre vous allez dans un premièr temps écrire le code magique permettant de visualiser en 3D un objet. On ne codera que les modes de rendus simples (fil de fer, faces cachées...) mais on aura de quoi faire une fenetre de visualisation... mais au fait, c'est quoi exactement ces fenetres ?
Et bien imaginez un java bean correspondant à chacune de ces fenetres... le panneau de controle, construit à partir d'un outil visuel, permet de configurer les attributs du bean séléctionné (celui sur lequel on a cliqué en dernier).
Dans une seconde partie on refera la meme chose mais en utilisant la
librairie java3D, capable d'exploiter les cartes 3D équipant les
PCs modernes. On pourra ainsi dans une meme application avoir des fenetres
effectuant le rendu 3D en utilisant des cartes 3D et des fenetres visualisant
le meme objet de manière 100 % logicielle.
Aide : vous aurez besoin des classes SWING suivantes : JFrame pour la fenetre principale, JDesktopPane pour le panneau (invisible) qui contient les fenetres, JMenuBar, JMenu, JMenuItem pour les menus, JInternalFrame pour les fenetres internes, JPanel, JTabbedPane, JSlider, JRadioButton, JComboBox et plein d'autres trucs pour le panneau de controle, FileDialog pour la fenetre de selection de fichier, JOptionPane pour les messages d'erreur (fichier inexistant, etc...), JViewport pour dessiner les objets dans les fenetres...
Voici d'autres vues du panneau de controle :