Sujets et Corrections |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
TD n°1 TD n°2 TP n°1 TD n°3 TP n°2 TD n°4 TP n°3 TD n°5 TP n°4 TD n°6 TP n°5 TP n°6 TP n°7 TD n°7 TP n°8 TD n°8 TP n°10
Dernière modification |
Quatre sphères de rayon 1.0 aux positions (2.0,0.0,2.0), (2.0,0.0,-2.0), (-2.0,0.0,2.0) et (-2.0,0.0,-2.0).e suivante sans utiliser le nud Separator ailleurs que pour le Separator d'encadrement global du fichier: Quatre sphères de rayon 1.0 aux positions (2.0,0.0,2.0), (2.0,0.0,-2.0), (-2.0,0.0,2.0) et (-2.0,0.0,-2.0). (2) Reprogrammer en VRML la scène de la question (1) en utilisant le nud Separator pour rendre les objets indépendants les uns des autres. (3) Reprogrammer en VRML la scène en apportant les modifications suivantes:
Solutions TD n°2: Premières scènes OpenGL Exercice 1 Implanter en OpenGL la question n°3 du TD n°1. Exercice 2 Programmer la scène modélisant un bras robot composé d'un avant-bras et
d'un bras. TP n°1: Prise en mains d'un environnement de programmation VRML Les viewers disponibles sont:
Travail demandé:
Solutions
Exercice 1: Modélisation à base d'objets canoniques Dans le cadre d'un programme informatique de simulation d'un accélérateur de particules développé pour le CERN (Centre Européen pour la Recherche Nucléaire), on souhaite concevoir une fonction permettant de dessiner un assemblage de parallélipipèdes rectangles selon les caractéristiques suivantes:
Dans la figure ci-dessous, n est égal à 10 (l'affichage est réalisé en projection en perspective). Développer une fonction void scene(int n) réalisant la modélisation géométrique de ces 2*n "cubes". Exercice 2: Modélisation par facettes La fonction void glutSolidCube(double c) de la librairie glut modélise un
cube de largeur, hauteur et profondeur identiques égales à la valeur c. TP n°2: Prise en mains d'un environnement de programmation OpenGL
Exécutable compilé avec Visual C++ et l'OpenGL de Visual C++ Exécutable compilé avec Visual C++ et l'OpenGL Mesa3D
TD n°4: Gestion des caméras en VRML Exercice n°1 On considère une scène quelconque centrée sur l'origine du repère. Définir la rotation à réaliser pour chacun des 4 points de vue
(position de la caméra) suivants:
Exercice n°2 On souhaite implanter les 4 points de vue de l'exercice n°1 dans le cadre
de 4 fichiers VRML. Définir les noeuds caméra que vous utiliseriez. Solutions TP n°3: Programmation événementielle en OpenGL avec GLUT Fichier pdf des spécifications de GLUt version 3 : GLUt.pdf Le programme OpenGL-GLUt.cpp intègre la gestion d'une fenêtre d'affichage, d'une animation, du clavier, des touches de curseur du clavier ainsi que de la souris.
Solutions
TD n°5: Gestion des caméras en OpenGL On dispose d'une scène modélisée au sein d'une fonction void scene(void). Cette scène est modélisée centrée sur le repère courant et occupe un "volume sphérique" de rayon 12.0. Exercice n°1 Implanter la fonction reshape d'un programme OpenGL + GLUt permettant de visualiser cette scène au moyen d'une caméra de visualisation en perspective placée à l'origine, orientée selon la direction -z en respectant une distance de 100.0 entre la caméra et la scène. Exercice n°2 Modifier la fonction reshape précédente pour que la caméra reste placée à l'origine, mais regarde la scène déplacée en position (-100.0,-100.0,-100.0).
Exrecice n°3 Modifier la fonction reshape précédente pour transformer la caméra en une caméra de
visualisation en projection parallèle orthographique définie selon les mêmes
caractéristiques de placement et d'orientation. Solutions
TP n°4: Gestion des caméras en OpenGL Exercice n°1 Le fichier Scene.cpp (décrit par le fichier d'entête Scene.h) contient une fonction void scene(int l) de modélisation d'une scène composée d'une surface plane carrée de diagonale (-10.0, 0.0, -10.0) - (10.0, 0.0, 10.0) sur laquelle sont posés aléatoirement 100 "poteaux" parallélipipédiques. L'éclairage de cette scène est activé/désactivé par le paramètre "booléen" l. Implanter le dessin de cette scène par une caméra de visualisation en perspective placée en position (0.0, 0.5, 0.0) orientée selon la direction de visualisation (0.0, 0.0, 1.0). L'ouverture verticale de la caméra est de 60°. Les plans cmin est cmax sont aux distances 0.1 et 100.0. La taille de la fenêtre d'affichage est 450 sur 200 pixels. Exercice n°2 Modifier le programme précédent pour autoriser le déplacement de la caméra au moyen des touches up et down de manière à avancer et reculer dans la scène dans l'axe de la caméra. Exercice n°3 Modifier le programme précédent pour autoriser l'utilisation des touches right et left de manière à faire tourner la caméra vers la droite et vers la gauche tout en continuant à pourvoir utiliser les touches up et down pour avancer et reculer. Exercice n°4 Modifier le programme précédent pour autoriser l'utilisation de la souris de manière à tourner la caméra vers la droite et vers la gauche et à la faire avancer vers l'avant et vers l'arrière. Solution
TD n°6: Matériaux et lumières en VRML Si le viewer VRML utilisé ne fournit pas des résultats jugés comme étant de qualité suffisante, WRL2OGL peut être utilisé à la place. Les deux fichiers suivants contiennent des scènes minimum constituées pour la premiére d'une caméra et d'un cube après une rotation, et pour la seconde, d'une caméra et d'une sphère. Exercice n°1 : Diffusion Modifier chacun des deux fichiers pour y ajouter 3 lumières et un matériel selon les caractéristiques suivantes:
Exercice n°2 : Réflexion spéculaire Modifier le matériel de chacun des deux fichiers selon les caractéristiques suivantes:
Exercice n°3 : Fusion des deux composantes "diffusion" et "réflexion spéculaire" Modifier le matériel de chacun des deux fichiers précédents pour reprendre coefficients de diffusion et de réflexion spéculaire et laisser l'ambient et l'émission à zéro. Exercice n°4 : Ajout de composantes ambiente et en émission Modifier une dernière fois les fichiers précédents pour définir la composante ambiente du matériel avec la valeur (0.1, 0.1, 0.1) et la composante émissive avec la valeur (0.1, 0.2, 0.1). Tourner la scène pour visualiser l'influence de ces composantes sur les zones non éclairées par les trois lumières. Solutions TP n°5: Matériaux et lumières en OpenGL Matériaux et lumières en OpenGL Implanter en OpenGL les exercices du TD n°5. Solution
TP n°6: Mathématiques de l'Infographie : Mathématiques matricielles Ce TP est à réaliser en C++ ou en Java. Exercice n°1
Exercice n°2
Exercice n°3
TP n°7: Mathématiques de l'Infographie : Implantation de transformations géométriques de visualisation Exercice n°1 Les classes Java suivantes vous sont fournies: Pages WEB de référence au format Javadoc pour ces classes
Pages WEB de référence au format Javadoc pour ces classes Les 4 premières implante la gestion des coordonnées homogènes 3D et les
transformations géométriques sur ces coordonnées homogènes. La classe AfficheurProjectionOrthographique fait appel à une classe appelée Ortho non fournie. Le but de l'exercice consiste à développer cette classe par dérivation de la classe TransformationGeometrique3D de manière qu'elle assure le calcul de la matrice de transformation de mise en projection orthographique définie par les conditions initiales suivantes:
Exercice n°2 Dans l'exercice précédent, la méthode public void paint(Graphics g,int numeroImage,int tx,int ty) de la classe AfficheurProjectionOrthographique réalise les opérations nécessaires au dessin d'une image de l'animation (hors effacement du canvas réalisé automatiquement par ailleurs). Elle pourrait être vue comme l'équivalent des fonctions reshape et display d'un programme OpenGL+GLUt écrites en une seule fonction. Vous disposez seulement de la classe principale suivante: La classe AfficheurProjectionPerspective ne vous est pas fournie. Le but de l'exercice
consiste à développer cette classe (elle doit implanter l'interface Afficheur) dans le
but de dessiner la même scène que celle de l'exercice n°1 animée selon le même
déplacement de caméra que l'exercice n°1 mais en réalisant un affichage par projection
en perspective. Solutions TD n°7: Algorithmique de l'Infographie : Dessin d'un segment de droite Exercice n°1 L'algorithme suivant rastérise le segment de droite 2D défini par les extrémités (xi,yi) et (xf,yf) sur un écran 2D en 8-connexité.
Modifier cet algorithme pour qu'il dessine en 4-connexité. Solution imparfaite : Les pixels ajoutés le sont Meilleure solution : Les pixels ajoutés sont placés Exercice n°2 Reprendre l'algorithme initial de l'exercice n°1 pour le généraliser à la rastérisation d'un segment de droite 3D dans un espace voxel 3D en 26-connexité. Solutions
TP n°8: Algorithmique de l'Infographie : Remplissage d'une facette triangulaire On souhaite réaliser le remplissage d'une facette triangulaire 2D dont les trois sommets sont situés aux positions (5, 17), (2, 2) et (21, 13). Sur la base du framework proposé en solution du TP n°7, développer un Afficheur réalisant le dessin de cette facette. Une première approche de ce problème pourra consister à dessiner la facette en fil de fer, puis à modifier le programme obtenu pour opérer le remplissage. Solutions
TD n°8: Calcul de l'intersection entre une sphère et un rayon, des rayons réfléchi et transmis dans le cadre de l'implantation d'un algorithme de lancer de rayons Le TD est réalisé en langage C. Les structures suivantes devront être utilisées:
a) Implanter une fonction permettant de tester l'existence d'une intersection entre un rayon lumineux et une sphère. b) Implanter une fonction permettant de déterminer, si elle existe, la distance entre le point d'émission d'un rayon lumineux et l'intersection entre ce rayon et une sphère. c) Implanter une fonction permettant de calculer la direction du rayon réfléchi créé par un rayon incident à l'interface entre deux milieux. d) Implanter une fonction permettant de calculer la direction du rayon transmis créé par un rayon incident à l'interface entre deux milieux. TP n°9: Le plaçage de texture en OpenGL Exercice Implanter un programme OpenGL réalisant l'affichage d'une facette carrée de coté de
longueur 8.0 centrée sur l'origine du repère de modélisation.
Solution
TD n°9: Courbes lissées Les courbes et surfaces lissées Exercice n°1 On donne les 8 sommets suivants définis en 3D:
Ecrire un programme calculant et affichant la courbe de Bezier correspondant à cette suite de sommets.
Exercice n°2 On considère les 8 sommets de l'exercice n°1. Ecrire un programme calculant et affichant les courbes B-Splines NRU et Catmull-Romm correspondant aux 5 quadruplets de sommets consécutifs extraits de cette suite de sommets.
Solution
TP n°10: Calcul de l'intersection entre une sphère et un rayon, des rayons réfléchi et transmis dans le cadre de l'implantation d'un algorithme de lancer de rayons Le fichier RayTracing.zip contient un
programme de calcul et d'affichage de scènes représentées en lancer de rayons.
Solution |