Rapport sur le cour de
SYNTHESE D"IMAGES
Durant le cour de Synthese d'images cette annee nous avons appris et applique differentes methodes de synthese d'images.
Pour ma part, le logiciel qui en est sorti a les caracteristiques suivantes:
- Dessin en fil de fer des objets
- Dessin en face pleine
- Gestion des lumieres
- Lissage de Gouraud
- Lissage de Phong
- Clipping des polygones
- Tri des faces (Algoritme du peintre)
Fil de fer :
Faces pleines:
Lissage de Gouraud:
Lissage de Phong:
Ici la difference entre le lissage de Gouraud et le lissage de Phong est difficile a voir. Mais cette difference est flagrante sur des objets ayant des faces plus grandes.
Telechargement et mode d'emploi:
Vous pouvez telecharger un fichier visu.tar comprenant tous les sources et l'executable.
Pour lancer le logiciel tapez sur la ligne de commande :
visu -obj object.obj [ -light lumiere.obj ] [ -cam camera.obj ]
Pour utiliser le logiciel il vous faut le mode d'emploi:
Touche L : Passe en mode face cachee et passe en fil de fer
Touche W : Annule le mode face cachee et passe en fil de fer
Touche F : Passe en mode face pleine
Touche G : Change la technique de lissage (flat shading->Gouraud->Phong->flat shading)
Touche C : Change l'objet actif (Objet->Lumiere->Camera->Objet)
Touche K : Arrette ou demarre le clipping des polygones
Bouton Droit de la souris: Boule virtuelle permettant de tourner l'objet autour de son centre (si l'objet est l'objet actif) ou de tourner la lumiere autour de l'objet (Si la lumiere est lobjet actif).
Bouton Gauche de la souris : Deplacement de l'objet actif selon les axes X et Y de la camera.
Bouton Central de la souris : Deplacement de lobjet actif selon l'axe des z de la camera (Zoom)
Touche R: Replace l'objet actif en face de la camera (Si l'objet actif est la camera elle est placee de maniere a voir l'objet) .
Touche 1 et 2 : Diminue et augmente le coefficient de reflection de la lumiere ambiante de l'objet
Touche 3 et 4 : Diminue et augmente le coefficient de reflection de la lumiere diffuse de l'objet
Touche 5 et 6 : Diminue et augmente le coefficient de reflection de la lumiere speculaire de l'objet
Touche 7 et 8 : Diminue et augmente le facteur m de la specularite de l'objet
Touche Q : Quitte le programme
Seul les fichiers Object.c , Graphics.c , Graphic.h et Param.h on ete modifies. Le fichier Graphics.c est celui qui a ete modifie le plus : il contient les fonctions permettant d'allouer une zone de memoire partagee avec le serveur X , celles correspondant au calcul des projections et aussi celle qui gere l'interface avec l'utilisateur.
Deux nouveaux fichiers (Clipping.c et Clipping.h) sont apparus. Comme leur nom l'indique il contiennent les fonctions relatives au "clipping" des polygones. Mais, ils contiennent aussi les fonctions permettant le dessin d'une ligne dans un buffer et le dessin d'un polygone lisse dans un buffer. Un type polygone a ete cree pour l'occasion, qui utilise une structure point et des tableaux de points statiques pour optimiser les temps de calculs. L'optimisation du temps de calcul d'un polygone a ete soignee au detriment de la clartee et de l'espace pris.
Bon nombres d'ameliorations sont a venir:
- Gestion de plusieurs objets (hierarchises)
- Gestion de plusieurs lumieres
- Melange des techniques de lissages (On lisse les objet rond / On laisse en flat shading les objets plats)
- Creation d'un arbre BSP (Projet juin 97)
- Texture Mapping
- Gestion de la couleur face par face
- Z-buffer
- etc...