GRAPHISME PAR ORDINATEUR SIF1032 Contenu du cours 3

  • Slides: 94
Download presentation
GRAPHISME PAR ORDINATEUR SIF-1032

GRAPHISME PAR ORDINATEUR SIF-1032

Contenu du cours 3 • Autres outils de dessin (Suite) – Découpage 2 D

Contenu du cours 3 • Autres outils de dessin (Suite) – Découpage 2 D • Modélisation d ’objets 3 D sous forme de maille polygonale • Open. GL dans une application Dialogue • Autres éléments d’interface • Introduction aux transformations 3 D (Open. GL 3. x) • LECTURES: Chapitres 3 et 6

Découpage 2 D (clipping) • Une procédure qui identifie les portions d’une image qui

Découpage 2 D (clipping) • Une procédure qui identifie les portions d’une image qui sont à l’intérieur ou à l’extérieur d’une fenêtre (window) donnée, est appelée procédure de découpage (clipping) • Les portions d’image à l’extérieur de la fenêtre sont alors éliminées et seulement l’intérieur de la fenêtre est conservé pour l’affichage • L’algorithme de découpage est appliqué aux coordonnées du monde. Seul le contenu de la fenêtre est converti en coordonnées du dispositif d’affichage (Viewport)

Découpage 2 D (clipping) • L’image en coordonnées du monde peut être convertie en

Découpage 2 D (clipping) • L’image en coordonnées du monde peut être convertie en coordonnées du viewport et ensuite découpée par rapport aux contours du port de visualisation (Viewport) • Le découpage est cependant plus performant quand il est appliqué directement à la fenêtre en coordonnées du monde • Dans un environnement OPENGL, le découpage des objets (2 D ou 3 D) est effectué automatiquement

Découpage de lignes • Une procédure de découpage de lignes comportent plusieurs étapes –

Découpage de lignes • Une procédure de découpage de lignes comportent plusieurs étapes – Nous déterminons d’abord si une ligne est contenue complètement dans la fenêtre de découpage – Si elle ne l’est pas, nous déterminons si elle est complètement à l’extérieur de la fenêtre – Si elle n’est ni complètement à l’extérieur ou l’intérieur nous devons déterminer les intersections avec les bordures de la fenêtre de découpage – Les extrémités des lignes sont utilisées pour déterminer si une ligne est complètement à l’intérieur ou l’extérieur

Découpage de lignes

Découpage de lignes

Découpage de lignes • Les autres droites traversent au moins une bordure • Pour

Découpage de lignes • Les autres droites traversent au moins une bordure • Pour minimiser le nombre d’intersections à calculer il faut éliminer le plus de lignes extérieures possibles • Pour déterminer les intersections nous utilisons la représentation paramétrique de la droite avec comme points d’extrémité (x 1, y 1) et (x 2, y 2)

Découpage de lignes • Si la valeur de u pour une intersection avec une

Découpage de lignes • Si la valeur de u pour une intersection avec une des bordures de la fenêtre de découpage est hors de l’intervalle 0. . 1, la ligne n’entre pas dans la fenêtre par cette bordure. Point d’intersection avec u > 1

Découpage de lignes • Si au contraire la valeur de u est dans l’intervalle

Découpage de lignes • Si au contraire la valeur de u est dans l’intervalle 0. . 1 la ligne croise une des bordures de la fenêtre de découpage 0 < u < 1

Découpage de lignes • Nous devons répéter cette opération pour chaque bordure • Cette

Découpage de lignes • Nous devons répéter cette opération pour chaque bordure • Cette méthode est onéreuse en temps machine

Algorithme Cohen-Sutherland (p. 99 Hill) • Cette méthode est plus rapide puisque le nombre

Algorithme Cohen-Sutherland (p. 99 Hill) • Cette méthode est plus rapide puisque le nombre d’intersections à calculer est réduit à l’aide d’une phase de test initial sur les droites • Les points d’extrémités des lignes sont associés à un code de 4 bits appelé code de région (region code). Ce code permet d’identifier la position des points par rapport aux bordures de la fenêtre de découpage • Chaque bit détermine la position relative d’un point par rapport à la fenêtre de découpage, à gauche (bit 1), à droite (bit 2), en bas (bit 3) et en haut (bit 4)

Algorithme Cohen-Sutherland • Codes de région

Algorithme Cohen-Sutherland • Codes de région

Algorithme Cohen-Sutherland • L’assignation des codes de régions s’effectue en comparant les points d’extrémités

Algorithme Cohen-Sutherland • L’assignation des codes de régions s’effectue en comparant les points d’extrémités des droites chacun représenté par ses coordonnées (x, y) aux bordures de la fenêtre de découpage – Bit 1 = 1 SI x < xwmin – Bit 2 = 1 SI x > xwmax – Bit 3 = 1 SI y < ywmin – Bit 4 = 1 SI y > ywmax • Si les deux extrémités d’une droite possèdent un code 0000 cette ligne est complètement dans la fenêtre de découpage (trivial accept)

Algorithme Cohen-Sutherland • Si les extrémités possèdent un code avec des bits à 1

Algorithme Cohen-Sutherland • Si les extrémités possèdent un code avec des bits à 1 aux mêmes positions, la droite est complètement hors de la fenêtre de découpage et nous rejetons (trivial reject) cette droite • Si aucun des tests précédents n’est satisfait nous devons alors cher si il existe des intersections • Le découpage d’une ligne consiste à déterminer le segment de droite pouvant être découpé • A partir d’une extrémité nous cherchons les segments hors de la fenêtre de découpage et conservons le segment à l’intérieur

Algorithme Cohen-Sutherland

Algorithme Cohen-Sutherland

Algorithme Cohen-Sutherland • • P 1 est sous la bordure inférieure L’intersection P’ 1

Algorithme Cohen-Sutherland • • P 1 est sous la bordure inférieure L’intersection P’ 1 est trouvée Le segment P 1 P’ 1 est éliminé A partir de P 2 nous trouvons l’intersection P’ 2 (bordure gauche) Le segment P 2 P’ 2 est éliminé A partir de P’ 2 nous trouvons l’intersection P’’ 2 Le segment P’ 2 P’’ 2 est éliminé Le segment P’ 1 P’’ 2 est conservé

Algorithme Cohen-Sutherland • Les points d’intersections avec la fenêtre de découpage sont déterminés en

Algorithme Cohen-Sutherland • Les points d’intersections avec la fenêtre de découpage sont déterminés en utilisant une forme particulière de l’équation de la droite • Avec une droite ayant comme points d’extrémité (x 1, y 1) et (x 2, y 2) la coordonnée y d’un point d’intersection avec une bordure verticale est

Algorithme Cohen-Sutherland • La coordonnée x d’un point d’intersection avec une bordure horizontale est

Algorithme Cohen-Sutherland • La coordonnée x d’un point d’intersection avec une bordure horizontale est

Découpage de polygones • Les contours d’un polygone traité par un algorithme de découpage

Découpage de polygones • Les contours d’un polygone traité par un algorithme de découpage de ligne peu produire un ensemble de segments de droites non connectés

Découpage de polygones • Nous devrions par contre observer un ensemble de surfaces fermées.

Découpage de polygones • Nous devrions par contre observer un ensemble de surfaces fermées. La sortie d’un algorithme de découpage de polygone devrait être une suite de sommets composant les contours du polygone découpé.

Algorithme Sutherland-Hodgeman • Le découpage de polygone s’effectue en traitant chaque sommet du polygone

Algorithme Sutherland-Hodgeman • Le découpage de polygone s’effectue en traitant chaque sommet du polygone par rapport aux bordures de la fenêtre • L’ensemble des sommets originaux sont en premier lieu utilisés pour découper le polygone par rapport à la bordure de gauche de la fenêtre • Les sommets qui restent sont par la suite utilisés pour découper le nouveau polygone par rapport à la bordure de droite • Le même principe s’applique aux bordures inférieures et supérieures

Algorithme Sutherland-Hodgeman • Découpage successif

Algorithme Sutherland-Hodgeman • Découpage successif

Algorithme Sutherland-Hodgeman • Chaque paire de sommets adjacents est traitée selon les 4 situations

Algorithme Sutherland-Hodgeman • Chaque paire de sommets adjacents est traitée selon les 4 situations suivantes: – SI le sommet de départ du segment est hors de la fenêtre et le sommet final à l’intérieur ALORS l’intersection et le sommet final sont ajoutés à la liste des sommets de sortie – SI les 2 sommets sont à l’intérieur de la fenêtre ALORS seul le sommet final est ajouté à la liste des sommets de sortie – SI le sommet de départ du segment est dans la fenêtre et le sommet final à l’extérieur ALORS seule l’intersection est ajouté à la liste des sommets de sortie – SI les 2 sommets sont hors de la fenêtre ALORS aucun sommet n’est ajouté à la liste des sommets de sortie

Algorithme Sutherland-Hodgeman • Chaque paire de sommets adjacents est traitée selon les 4 situations

Algorithme Sutherland-Hodgeman • Chaque paire de sommets adjacents est traitée selon les 4 situations suivantes:

Algorithme Sutherland-Hodgeman • Autre exemple en mettant en valeur la pipeline de découpage de

Algorithme Sutherland-Hodgeman • Autre exemple en mettant en valeur la pipeline de découpage de polygone BORDURE SOMMETS RÉSULTANTS gauche V 1’ V 2’ V 3 droite V 1’ V 2’ V 3 bas V 2’’ V 2’ V 3’ haut V 2’’ V 2’ V 3’

Modélisation d’objets 3 D • Une maille polygonale peut servir à modéliser les formes

Modélisation d’objets 3 D • Une maille polygonale peut servir à modéliser les formes 3 D • Une maille polygonale est constituée d ’une liste de polygones • Chaque polygone est représenté par ses sommets • De plus, chaque polygone est caractérisé par son orientation spatiale donnée souvent par la normale au plan dans lequel se trouve le polygone

Modélisation d ’objets 3 D • Représentation d’objet 3 D en fil-de-fer

Modélisation d ’objets 3 D • Représentation d’objet 3 D en fil-de-fer

Modélisation d ’objets 3 D • Représentation d’objet 3 D en fil-de-fer avec les

Modélisation d ’objets 3 D • Représentation d’objet 3 D en fil-de-fer avec les normales

Modélisation d ’objets 3 D • Calcul des normales – Si chaque polygone est

Modélisation d ’objets 3 D • Calcul des normales – Si chaque polygone est une surface plane • Sélectionner trois sommets adjacents du polygone, P 1, P 2, P 3 et calculer le produit vectoriel N = V 1 X V 2 = (P 1 - P 2) X (P 3 - P 2)

Modélisation d ’objets 3 D • Calcul des normales

Modélisation d ’objets 3 D • Calcul des normales

Modélisation d ’objets 3 D • Calcul des normales

Modélisation d ’objets 3 D • Calcul des normales

Modélisation d ’objets 3 D • Calcul des normales – Si chaque polygone est

Modélisation d ’objets 3 D • Calcul des normales – Si chaque polygone est une surface plane • Sélectionner trois sommets adjacents du polygone, P 1, P 2, P 3 et calculer le produit vectoriel N = V 1 X V 2 = (P 1 - P 2) X (P 3 - P 2)

Modélisation d ’objets 3 D • Calcul des normales – Si chaque polygone est

Modélisation d ’objets 3 D • Calcul des normales – Si chaque polygone est une surface plane • Sélectionner trois sommets adjacents du polygone, P 1, P 2, P 3 et calculer le produit vectoriel N = V 1 X V 2 = (P 1 - P 2) X (P 3 - P 2)

Modélisation d ’objets 3 D • Calcul des normales – Si chaque polygone est

Modélisation d ’objets 3 D • Calcul des normales – Si chaque polygone est une surface plane • Sélectionner trois sommets adjacents du polygone, P 1, P 2, P 3 et calculer le produit vectoriel N = V 1 X V 2 = (P 1 - P 2) X (P 3 - P 2)

Modélisation d ’objets 3 D • Calcul des normales – Si chaque polygone est

Modélisation d ’objets 3 D • Calcul des normales – Si chaque polygone est une surface pas strictement plane constitué de n sommets

Open. GL dans une application Dialogue • Cette section explique comment intégrer Open. GL

Open. GL dans une application Dialogue • Cette section explique comment intégrer Open. GL à une application Dialogue développée en VC++. • Le chapitre 17 de la Super Bible explique qu'il faut créer un contexte de périphérique compatible avec Open. GL. Ce contexte est représenté par un handle Windows noté "HWGL". • L'exemple no. 1 dans Samples Open. GL de la documentation Visual Studio est utilisé comme référence pour expliquer ces notions d’intégration.

Open. GL dans une application Dialogue • Notez que la documentation des fonctions Open.

Open. GL dans une application Dialogue • Notez que la documentation des fonctions Open. GL se trouve comme suit (no filter):

Open. GL dans une application Dialogue • La classe de base de toutes les

Open. GL dans une application Dialogue • La classe de base de toutes les fenêtres sous Windows est CWnd. • Pour utiliser une fenêtre de dialogue, la méthode la plus simple est de créer une nouvelle classe dérivée de CWnd. Les objets de cette classe seront responsables dessins Open. GL. • Le programme suivant montre comment définir cette fenêtre.

Open. GL dans une application Dialogue

Open. GL dans une application Dialogue

Open. GL dans une application Dialogue • Au bas de l’interface on retrouve des

Open. GL dans une application Dialogue • Au bas de l’interface on retrouve des scrollbars qui contrôlent l'ouverture de la caméra synthétique et les déplacements de la scène. • La partie supérieure de l’interface correspond à la fenêtre spéciale dédiée à l’affichage des opérations graphiques en Open. GL. • Cette application est basée sur la réutilisation du code de l'exemple "Triangle" dans lequel on a standardisé l’environnement au mode CCW (counter clockwise règle de la main droite). Un menu principal est aussi intégré à l’interface.

Open. GL dans une application Dialogue • Menu principal • On peut charger et

Open. GL dans une application Dialogue • Menu principal • On peut charger et sauvegarder les positions des scrollbars et réinitialiser la position de tous les scrollbars.

Open. GL dans une application Dialogue • Un dialogue est aussi disponible pour la

Open. GL dans une application Dialogue • Un dialogue est aussi disponible pour la sélection des propriétés de l'affichage:

Open. GL dans une application Dialogue • Les options par défaut exposées dans la

Open. GL dans une application Dialogue • Les options par défaut exposées dans la figure précédente sont celles qui sont utilisées dans la majorité des cas. • La seule option supplémentaire qui peut être intéressante est la vue en fils de fer (décocher Fill Polygon). • Voir le site ftp du cours pour accéder au code de ce projet: ftp: //dmiftp. uqtr. ca/FMeunier/sif 1032/opengl/Projet. Triangle. Fan

Open. GL dans une application Dialogue • Présentation sommaire du programme:

Open. GL dans une application Dialogue • Présentation sommaire du programme:

Open. GL dans une application Dialogue • La classe "c. Draw. Win" offre des

Open. GL dans une application Dialogue • La classe "c. Draw. Win" offre des objets qui permettent de dessiner en mode Open. GL. • La classe c. Ma. HScroll gère les scrollbars • La classe c. Dia. Proprietes gère le dialogue qui permet d’établir les propriétés d'affichage. • L’objet "m_graphe" représente la fenêtre Open. GL (fond noir). • L’objet "dia. Prop" représente la fenêtre des propriétés. • Au début du fichier de code du dialogue, un pointeur sur le dialogue des propriétés permet à la fonction de dessin (draw()) d’accéder aux options de dessin.

Open. GL dans une application Dialogue • Code du dialogue:

Open. GL dans une application Dialogue • Code du dialogue:

Open. GL dans une application Dialogue • Code du dialogue:

Open. GL dans une application Dialogue • Code du dialogue:

Open. GL dans une application Dialogue • Code du dialogue:

Open. GL dans une application Dialogue • Code du dialogue:

Open. GL dans une application Dialogue • Code du dialogue:

Open. GL dans une application Dialogue • Code du dialogue:

Open. GL dans une application Dialogue • Code du dialogue:

Open. GL dans une application Dialogue • Code du dialogue:

Open. GL dans une application Dialogue • Code du dialogue:

Open. GL dans une application Dialogue • Code du dialogue:

Open. GL dans une application Dialogue • Code du dialogue:

Open. GL dans une application Dialogue • Code du dialogue:

Open. GL dans une application Dialogue • Dans la fonction On. Init. Dialog(), la

Open. GL dans une application Dialogue • Dans la fonction On. Init. Dialog(), la fenêtre Open. GL est créée avec l’appel "m_graphe. my. Create(this, &rd, draw); ". • Ensuite, les scrollbars sont initialisés. • Notez que les valeurs des scrollbars comme "ouverture, angle. X, etc" sont placés dans autre fichier appelé "draw. cpp" et qui contient tout le code Open. GL. • Les méthodes qui permettent de gérer les scrollbars, le menu contextuel et le clavier sont aussi présentés.

Open. GL dans une application Dialogue • La fenêtre Open. GL (classe c. Draw.

Open. GL dans une application Dialogue • La fenêtre Open. GL (classe c. Draw. Win) est présentée dans "c. Draw. Win. h":

Open. GL dans une application Dialogue • Au moment de la création de cette

Open. GL dans une application Dialogue • Au moment de la création de cette fenêtre avec "my. Create", la fenêtre-parent (le dialogue principal) et la fonction responsable dessins de type "Draw. Func. Type" sont passés en argument de la méthode. • Le handle spécial qui s'occupe du contexte de périphérique associé à Open. GL est stocké dans "m_hrc".

Open. GL dans une application Dialogue • Code de c. Draw. Win. cpp (L'élément

Open. GL dans une application Dialogue • Code de c. Draw. Win. cpp (L'élément le plus important de la gestion d'Open. GL consiste à choisir le type des pixels): Cette classe ne devrait pas être modifiée

Open. GL dans une application Dialogue • Code de c. Draw. Win. cpp

Open. GL dans une application Dialogue • Code de c. Draw. Win. cpp

Open. GL dans une application Dialogue • Code de c. Draw. Win. cpp

Open. GL dans une application Dialogue • Code de c. Draw. Win. cpp

Open. GL dans une application Dialogue • Code de c. Draw. Win. cpp

Open. GL dans une application Dialogue • Code de c. Draw. Win. cpp

Open. GL dans une application Dialogue • Code de c. Draw. Win. cpp

Open. GL dans une application Dialogue • Code de c. Draw. Win. cpp

Open. GL dans une application Dialogue • Code de c. Draw. Win. cpp

Open. GL dans une application Dialogue • Code de c. Draw. Win. cpp

Open. GL dans une application Dialogue • Code de c. Draw. Win. cpp

Open. GL dans une application Dialogue • Code de c. Draw. Win. cpp

Open. GL dans une application Dialogue • Les fichiers draw. h et draw. cpp

Open. GL dans une application Dialogue • Les fichiers draw. h et draw. cpp contiennent toutes les opérations Open. GL Le premier (draw. h) ne contient que les variables servant aux options et aux scrollbars:

Open. GL dans une application Dialogue • Le code Open. GL est dans le

Open. GL dans une application Dialogue • Le code Open. GL est dans le fichier draw. cpp

Open. GL dans une application Dialogue • Le code Open. GL est dans le

Open. GL dans une application Dialogue • Le code Open. GL est dans le fichier draw. cpp

Open. GL dans une application Dialogue • Fichier draw. cpp: Création du cornet (triangle

Open. GL dans une application Dialogue • Fichier draw. cpp: Création du cornet (triangle fan)

Open. GL dans une application Dialogue • Fichier draw. cpp: Création du fond (triangle

Open. GL dans une application Dialogue • Fichier draw. cpp: Création du fond (triangle fan)

Open. GL dans une application Dialogue • Fichier draw. cpp: Fonction setup. GL()

Open. GL dans une application Dialogue • Fichier draw. cpp: Fonction setup. GL()

Open. GL dans une application Dialogue • Fichier draw. cpp: Fonction draw()

Open. GL dans une application Dialogue • Fichier draw. cpp: Fonction draw()

Open. GL dans une application Dialogue • Dans le code précédent, on a fait

Open. GL dans une application Dialogue • Dans le code précédent, on a fait les changements nécessaires pour observer la règle de la main droite (CCW). • La projection orthogonale est remplacée par une projection en perspective qui est plus réaliste • Finalement, on montre comment réaliser les déplacements de la scène. • Notez que l'observateur est placé à l'origine et regarde du côté négatif de l'axe z.

Autres éléments d’interface • L’utilisation d’un timer peut être requise quand nous voulons animer

Autres éléments d’interface • L’utilisation d’un timer peut être requise quand nous voulons animer une scène • La classe du dialogue étant dérivée de CWnd, on peut utiliser les fonctions de gestion du temps Set. Timer, Kill. Timer et On. Timer. • La fonction Set. Timer() définit la durée des intervalles de temps en milli-secondes entre les événements WM_TIMER. • À chaque durée de temps écoulée, on traite le message WM_TIMER avec la fonction On. Timer().

Autres éléments d’interface • D'abord, on doit définir un timer comme suit dans la

Autres éléments d’interface • D'abord, on doit définir un timer comme suit dans la fonction Init. Dialog(): int r=Set. Timer(1, 100, NULL); // définir un timer no. 1, // intervalle: 100 milli. sec

Autres éléments d’interface • Ensuite, la fonction Destroy. Window() est redéfinit dans les Overrides

Autres éléments d’interface • Ensuite, la fonction Destroy. Window() est redéfinit dans les Overrides du dialogue:

Autres éléments d’interface • Ensuite, la fonction Destroy. Window() est redéfinit dans les Overrides

Autres éléments d’interface • Ensuite, la fonction Destroy. Window() est redéfinit dans les Overrides du dialogue:

Autres éléments d’interface • Ensuite, la fonction Destroy. Window() est redéfinit dans les Overrides

Autres éléments d’interface • Ensuite, la fonction Destroy. Window() est redéfinit dans les Overrides du dialogue:

Autres éléments d’interface • La fonction On. Timer() est ensuite définit et sera alors

Autres éléments d’interface • La fonction On. Timer() est ensuite définit et sera alors associée avec le message WM_TIMER du dialogue:

Autres éléments d’interface • La fonction On. Timer() est ensuite définit et sera alors

Autres éléments d’interface • La fonction On. Timer() est ensuite définit et sera alors associée avec le message WM_TIMER du dialogue:

Autres éléments d’interface • La fonction On. Timer() est ensuite définit et sera alors

Autres éléments d’interface • La fonction On. Timer() est ensuite définit et sera alors associée avec le message WM_TIMER du dialogue:

Autres éléments d’interface • La fonction On. Timer() est ensuite définit et sera alors

Autres éléments d’interface • La fonction On. Timer() est ensuite définit et sera alors associée avec le message WM_TIMER du dialogue:

Autres éléments d’interface • Notez dans le code précédent que 2 fenêtres Open. GL,

Autres éléments d’interface • Notez dans le code précédent que 2 fenêtres Open. GL, m_graphe et m_graph 2, sont déclarées. • La zone de dessin est donc séparée en 2 sections. • La méthode Init. Dialog() (cube. Dlg. cpp) permet de créer ces deux fenêtres. • Il faut donc ajouter la variable "m_graph 2" au fichier cube. Dlg. h du dialogue. • Les fonctions d'affichage draw 1() et draw 2() permettent d’afficher les objets graphiques Open. GL dans chacune des fenêtres:

Autres éléments d’interface • La fonction Init. Dialog() (cube. Dlg. cpp) permet la création

Autres éléments d’interface • La fonction Init. Dialog() (cube. Dlg. cpp) permet la création des fenêtres:

Autres éléments d’interface • Ajout de la variable "m_graph 2"

Autres éléments d’interface • Ajout de la variable "m_graph 2"

Autres éléments d’interface • Fonctions draw 1() et draw 2() (draw. cpp):

Autres éléments d’interface • Fonctions draw 1() et draw 2() (draw. cpp):

Autres éléments d’interface • Exécution du projet

Autres éléments d’interface • Exécution du projet

Autres éléments d’interface • Voir le site ftp du cours pour accéder au code

Autres éléments d’interface • Voir le site ftp du cours pour accéder au code de ce projet: ftp: //dmiftp. uqtr. ca/FMeunier/sif 1032/opengl/Projet. Triangle. Fan 2 Fenetres

Introduction aux transformations 3 D (open. GL 3. x) • Voir le tutoriel: http:

Introduction aux transformations 3 D (open. GL 3. x) • Voir le tutoriel: http: //www. opengl-tutorial. org/beginnerstutorials/tutorial-3 -matrices/ • Installer la librairie mathématique GLM https: //www. opengl. org/sdk/libs/ 4 X 4 4 X 1 Matrice de Vecteur à transformation transformer Vecteur transformé

Introduction aux transformations 3 D (open. GL 3. x) • Transformation 3 D en

Introduction aux transformations 3 D (open. GL 3. x) • Transformation 3 D en C++ avec GLM • Transformation 3 D avec GLSL

Introduction aux transformations 3 D (open. GL 3. x) • Transformation 3 D (translation)

Introduction aux transformations 3 D (open. GL 3. x) • Transformation 3 D (translation) • Exemple de translation (10, 0, 0, 1), d’un sommet (10, 10, 1)

Introduction aux transformations 3 D (open. GL 3. x) • Transformation 3 D (translation:

Introduction aux transformations 3 D (open. GL 3. x) • Transformation 3 D (translation: en C++ avec GLM) • Translation avec GLSL

Introduction aux transformations 3 D (open. GL 3. x) • Transformation 3 D (Matrice

Introduction aux transformations 3 D (open. GL 3. x) • Transformation 3 D (Matrice identité) • Initialisation de la matrice identité (C++)

Introduction aux transformations 3 D (open. GL 3. x) • Transformation 3 D (Changement

Introduction aux transformations 3 D (open. GL 3. x) • Transformation 3 D (Changement d’échelle) a b c • Agrandissement de 2 • Transformation 3 D (Changement d’échelle en C++ avec GLM)

Introduction aux transformations 3 D (open. GL 3. x) • Transformation 3 D (Rotation

Introduction aux transformations 3 D (open. GL 3. x) • Transformation 3 D (Rotation C++ avec GLM) • Transformation 3 D (Succession de transformations) Ordre d’exécution

Introduction aux transformations 3 D (open. GL 3. x) • Transformation 3 D (Succession

Introduction aux transformations 3 D (open. GL 3. x) • Transformation 3 D (Succession de transformations, C++ avec GLM) • Avec GLSL

 • • • Projet de session (Rappel) Constitution des équipes Choix du projet

• • • Projet de session (Rappel) Constitution des équipes Choix du projet (animation, image de synthèse, objets impliqués) Choix du modèle de représentation des objets Répartition initiale des tâches (important) Premier échéancier (25 février 2019) – objets modélisés – visualisation des objets – animation simple dans l’espace