| TD Fichiers
    VRML OpenGL,
    fonctions basiques pour la modélisation Auxiliary library d'OpenGLProgrammation au moyen de fonctions C
 Animations
    RETOUR
   Dernière modification16/11/09 07:03:33
 |  | Travaux dirigés TD 1: Les
    fichiers VRML Programmer les scènes suivantes: 
      Scène (1): Quartes cubes de coté
        1.0 aux positions (1.5,0.0,1.5), (1.5,0.0,-1.5), (-1.5,0.0,1.5), (-1.5,0.0,-1.5).   
 
      Scène (2): Même scène que
        précédemment, mais le cube de position (1.5,0.0,1.5) subit une rotation de 45° autour
        de l'axe y passant par son centre.   
 
      Scène (3): Même scène que
        précédemment, mais le cube de position (-1.5,0.0,1.5) possède une dimension en z égale
        à 2.   
 
      Scène (4): Même scène que
        précédemment, mais le cube de position (-1.5,0.0,-1.5) subit une rotation de 40° autour
        de l'axe y passant par son centre et une dimension en z égale à 2.   
 
      Scène (5): Même scène que la
        scène (3), mais le cube de position (-1.5,0.0,-1.5) subit une rotation de 30° autour de
        l'axe y passant par le centre de sa base de z maximum.   
 On se donne les instructions
    mini-langage supplémentaires suivantes: 
      
     Réécrire la scène (5) en exploitant
    ces deux nouvelles instructions et en rendant les objets indépendants les uns des autres. Programmer la scène (6) suivante: Un bras robot compose d'un avant-bras,
    d'un bras, et d'une paire de pinces. L'avant bras est articulé pour tourner autour de
    l'axe y d'un angle r1. Il s'agit d'un parallélépipède rectangle de dimension (3,1,1)
    (rouge). Le bras est articulé autour de l'axe y au bout de l'avant bras pour un angle r2.
    Il s'agit d'un parallélépipède rectangle de dimension (3,0.8,0.8) (vert). La pince est
    située au bout du bras. Elle peut tourner autour de l'axe du bras pour un angle r3. Le
    montant de la paire de pinces est un parallélépipède rectangle de dimension
    (0.6,1.2,1.8) (bleu). Chacune des mâchoires est un parallélépipède rectangle de
    dimension (1.0,1.2,0.4) (jaune) à même de se déplacer longitudinalement d'une valeur d
    pour réaliser une ouverture totale de 2xd. 
 
 
 Solutions TD 2: OpenGL pour le dessin de scènesFonctions à utiliser pour la modélisation d'une scène
 
      Reprendre les scènes du TD
        précédent et les programmer en OpenGL.Soit une scène composée de 3
        parallélépipèdes rectangles posés les un sur les autres. Celui du bas est centré sur
        l'origine du repère et a pour dimensions (2,0.6,2), l'intermédiaire a pour dimension
        (1.2,3,1.2), le supérieur a pour dimension (2,0.4,2). Le repère est orienté avec x à
        droite, y en haut, et z vers l'observateur. Écrire une fonction C+OpengL modélisant
        cette scène.   
 
 
 
 On s'efforcera d'écrire des fonctions
    C destinées à être utilisées au sein de fonctions display. Solutions TD 3: L'Auxiliary library d'OpenGLProgrammation OpenGL au moyen de fonctions C
 Réalisation d'animations
 
   
 
      Programmer une scène composée
        d'une unique sphère de rayon 1.0 subissant des déformations suivant l'axe x la portant
        à la forme d'un ellipsoïde de demis grands axes 3.0, 1.0 et 1.0. Elle reste centrée sur
        l'origine.L'animation est réalisée à raison de 50 images pour passer de 1.0 à 3.0, puis 50
        images pour revenir à 1.0, et ainsi de suite cycliquement. Les déformations sont
        réalisées régulièrement.
 
 
 Solutions TD 4: Utilisation des ensembles de facettes pour la programmation d'une
    fonction de modélisation d'un cylindre On souhaite modéliser un cylindre de
    rayon r et de hauteur h centré sur l'origine. 
      Écrire une fonction OpenGL
        réalisant la génération de ce cylindre par calcul des positions des sommets des
        facettes et création de ces facettes.Modifier la fonction précédente
        pour intégrer le calcul des normales aux sommets utilisées pour les calculs
        d'illumination.   
 Solution 
      
        |  | Aux | GLUt |  
        | Le cylindre par ensemble de facettes | 
 | 
 | 
 | 
 | TD 5: La gestion des lumières en VRML et OpenGL Soit une scène composée d'un cône de
    rayon 1 et de hauteur 2 placé en position (2.0, 0.0, 0.0) et d'une sphère de rayon 1
    placée en position (-2.0, 0.0, 0.0). La sphère est diffusante dans le cyan et
    réfléchissante dans le rouge. Le cône est diffusant dans le magenta et non
    réfléchissant. Ces deux objets sont éclairés par trois
    sources lumineuses: 
      
        une source ponctuelle de couleur jaune placée en
          position (4.0, 0.0, O.0),une source directionnelle de couleur cyan orientée
          selon la direction (1.0, 0.0, -1.0).un  spot de couleur bleue située en position
          (-2.0, 0.0, 5.0) éclairant selon l'axe -z avec 0.15 radians comme angle d'ouverture. 
      Écrire le fichier VRML correspondant à cette scène. 
 
      
        |  Lumière 1
 |  Lumière 2
 |  Lumière 3
 |  
 Solutions TD 6: Mathématiques pour l'Infographie: Outils élémentaires Exercice 1 Soient deux vecteurs V1 et V2 de R3. 
      Définir une structure de données
        permettant de stocker un vecteur de R3 (Solution).Ecrire une fonction calculant le produit
        scalaire de ces deux vecteurs (Solution).Ecrire une fonction calculant le produit
        vectoriel de ces deux vecteurs (Solution). 
 Soit une facette triangulaire. 
 Exercice 2 Soient les matrices de transformation
    canoniques Rx et Ry associées respectivement à la rotation par rapport à l'axe Ox et la
    rotation par rapport à l'axe Oy. 
      Calculer le produit matriciel Rx.Ry (Solution).Calculer le produit matriciel Ry.Rx (Solution).Établir la non commutativité du
        produit matriciel (Solution). 
 
 Solutions TD 7: Les
    lumières en Infographie: Modélisation mathématique par la formule de Lambert 
      Question 1: Définir une structure de
        données permettant de représenter une lumière directionnelle caractérisée par:- une intensité,
 - une couleur,
 - une direction de propagation (Solution).
Question 2: Définir une structure de
        données permettant de représenter un matériau du seul point de vue de la lumière
        diffuse (Solution)Question 3: Ecrire une fonction
        calculant au moyen de la formule de Lambert la quantité d'énergie diffusée en chaque
        point d'une facette triangulaire plane éclairée par une source lumineuse directionnelle
        et affectée d'un matériau (Solution). 
 
      Question 4: Définir une structure de
        données permettant de représenter une lumière ponctuelle caractérisée par:- une intensité,
 - une couleur,
 - une position (Solution).
Question 5: Ecrire une fonction
        calculant au moyen de la formule de Lambert la quantité d'énergie diffusée en un point
        particulier d'une facette triangulaire plane éclairée par une source lumineuse
        ponctuelle et affectée d'un matériau. On ignorera l'atténuation de la lumière en
        fonction de la distance à la source d'émission (Solution). 
 
 Solutions 
      
        |  | GLUt |  
        | Structure lumière
        directionnelle | 
 | 
 |  
        | Structure matériau | 
 | 
 |  
        | Energie diffusée sur lumière
        directionnelle | 
 | 
 |  
        | Structure lumière ponctuelle | 
 | 
 |  
        | Energie diffusée sur lumière
        ponctuelle | 
 | 
 |  
        | Energie diffusée sur lumière
        ponctuelle avec atténuation | 
 | 
 | TD 8: DEF, USE, WWWInline et WWWAnchor en VRML Voir dans le cours l'utilisation de: Soit une scène composée de 4
    parallélipipèdes rectangles disposés en 2x2 objets le tailles (3, 1, 1) et (1, 3, 3)
    placés en positions centrées sur (1.5, 0, 0) et (3.5, 0, 0) pour le premier couplet et
    (-1.5, 0, 0) et (-3.5, 0, 0) pour le deuxième couplet. 
 
   
 Soit la scène constituée de 16 sphères
    de rayon 2.5 placées régulièrement sur un cercle de rayon 20 centré sur l'origine et
    situé dans le plan xOy. 
 Solutions TD 9: Le placage de texture en VRML et OpenGL Voir dans les cours: 
      le noeud VRML utilisé pour le plaçage de texture,les fonctions OpenGL utilisées pour le plaçage de
        texture   
      Ecrire une fonction C générant un tableau de pixels à
        même d'être utilisé comme paramètre dans la fonction de définition d'une texture 2D
        en OpenGL.Le motif est composé de 16 sur 16 pixels définissant un damier de 16 cases blanches
        et noires de 4x4 pixels chacune. Le tableau contient des valeurs RVB codées en octets.
 
 
      Ecrire un programme OpenGL utilisant cette fonction pour
        texturer un quadrilatère de coordonnées {(-4,1,-2),
        (2,4,3), (5,-1,-1), (-3,-2,4)} utilisant les coordonnées {(0,0), (0,2), (1,2), (1,0)}
        pour le placage de la texture.   
 Solutions 
 Travaux
    pratiques TP 1-2: Conception
    d'un programme C mettant en uvre des instructions OpenGLÉcriture et visualisation de quelques fichiers VRML
 
      Construction
        d'un projet VC++ autorisant la compilation d'instructions OpenGL par ajout des
        librairie OpenGL32.lib, Glu32.lib, Glaux.lib et Glut32.lib dans la liste des librairies
        utilisées au linkage.Compilation et exécution de certains
        exemples du cours.Écriture d'un programme OpenGL complet
        dessinant une scène composée d'une sphère de rayon 0.1 centrée sur l'origine et d'un
        cylindre de rayon 1.0, de hauteur 0.5 et centré sur l'origine, introduisant deux
        contrôles claviers permettant de tourner la scène autour de l'axe Ox et
        d'augmenter/réduire la hauteur du cylindre. Vérification des placement et orientation du
        cylindre.   
 
   
   
 Solutions TP 3-4: Les caméras en VRML et en OpenGL Soit la scène constituée d'une sphère,
    d'un cube, d'un cylindre et d'un cône placés respectivement centrés sur les positions
    (-3, 3, 0), (3, 3, 0), (3, -3, 0) et (-3, -3, 0). 
      Écrire un fichier VRML visualisant en
        gros plan la scène selon un point de vue placé en position (0, 0, 20) visant l'origine:
        axe de visée (0,0,-1). 
 
      Écrire un fichier VRML visualisant en
        gros plan la scène selon un point de vue placé en position (20, 0, 0) visant l'origine:
        axe de visée (-1,0,0). 
 
      Écrire un fichier VRML visualisant en
        gros plan la scène selon un point de vue placé en position (0, 20, 0) visant l'origine:
        axe de visée (0,-1,0). 
 
      Écrire les fichiers VRML visualisant en
        gros plan la scène selon les points de vue (0, 20, 20), (20, 0, 20) et (20, 20, 0) visant
        l'origine: axe de visée (0,-1,-1), (-1,0,-1) et (-1,-1,0).   
 
 
      Écrire un fichier VRML visualisant en
        gros plan la scène selon un point de vue placé en position (20, 20, 20) visant
        l'origine: axe de visée (-1,-1,-1).   
   
 Solutions TP 5: Les
    lumières et matériaux en OpenGL Soit la scène constituée d'une sphère
    centrée sur l'origine et de deux lumières. Les caractéristiques de ces objets sont les
    suivantes:- La sphère est diffusante et réfléchissante dans le blanc.
 - La première lumière éclaire en diffusion dans le rouge et en spéculaire dans le
    vert. Elle est directionnelle et est orientée selon l'axe -x.
 - La première lumière éclaire en diffusion dans le bleu et en spéculaire dans le vert.
    Elle est directionnelle et est orientée selon l'axe x.
 
      Écrire un programme OpenGL affichant
        cette scène.Écrire un second programme OpenGL
        animant cette scène par rotation des deux sources lumineuses autour de l'axe Oy tandis
        que la sphère reste immobile.Écrire un dernier programme OpenGL tel
        que les sources lumineuses sont transformées en sources de type spot placées à deux
        rayons de la sphère et éclairant vers son centre. L'angle d'ouverture est choisi de
        manière à ce que la sphère ne soit pas entièrement éclairée. L'affichage reste
        animé.   
  
   Solution TP 6: Le
    clipping par une méthode dichotomique Au moyen du codage employé dans la
    méthode de clipping de Cohen-Sutherland, on peut détecter qu'un segment rectiligne est
    intégralement dans un rectangle ou intégralement à l'extérieur d'un rectangle dans le
    seul cas où il est totalement au dessus, en dessous, à droite ou à gauche. 
      Écrire un programme permettant de
        clipper un segment de droite dans un rectangle. Le segment est défini par ses deux
        sommets extrémités.La méthode employée sera dichotomique. C'est à dire que si le segment à clipper
        répond à l'un des deux cas précédemment énoncés, il est dessiné. S'il n'y répond
        pas, il est décomposé en deux sous-segments par séparation au niveau du point milieu
        entre les deux extrémités et l'algorithme est lancé récursivement sur chacun de ces
        deux sous-segments.
   
 
 Solution TP7: Le
    dessin de segments par l'algorithme de Bresenham L'algorithme de Bresenham est un
    algorithme générique pour le tracé de segments de droites sur écran bitmap.Les affichages demandés sont réalisés dans des fenêtres OpenGL où les pixels sont
    matérialisés par des carrés de coté de dimension supérieure à 1 pixel (10 pixels par
    exemple) de manière à mettre en évidence les pixels affichés et le fait qu'ils sont
    bien dessinés par recouvrement du segment continu.
 
 
 
 Solution TP8: DEF,
    USE, WWWInline et WWWAnchor |