graphisme par ordinateur sif-1032. contenu du cours 3 autres outils de dessin (suite) –découpage...
TRANSCRIPT
![Page 1: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/1.jpg)
GRAPHISME PAR ORDINATEUR
SIF-1032
![Page 2: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/2.jpg)
Contenu du cours 3• Autres outils de dessin (Suite)
– Découpage 2D
• Modélisation d ’objets 3D sous forme de maille polygonale
• OpenGL dans une application Dialogue
• Autres éléments d’interface
• LECTURES: Chapitres 3 et 6
![Page 3: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/3.jpg)
Découpage 2D (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)
![Page 4: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/4.jpg)
Découpage 2D (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 (2D ou 3D) est effectué automatique-ment
![Page 5: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/5.jpg)
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
![Page 6: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/6.jpg)
Découpage de lignes
![Page 7: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/7.jpg)
Découpage de lignes
• Les autres droites traversent au moins une bordure
• Pour minimiser le nombre d’intersections à calcu-ler 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é (x1,y1) et (x2,y2)
10
)(
)(
121
121
u
yyuyy
xxuxx
![Page 8: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/8.jpg)
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
![Page 9: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/9.jpg)
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
![Page 10: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/10.jpg)
Découpage de lignes
• Nous devons répéter cette opération pour chaque bordure
• Cette méthode est onéreuse en temps machine
![Page 11: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/11.jpg)
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)
![Page 12: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/12.jpg)
Algorithme Cohen-Sutherland
• Codes de région
![Page 13: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/13.jpg)
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)
![Page 14: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/14.jpg)
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 chercher 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
![Page 15: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/15.jpg)
Algorithme Cohen-Sutherland
![Page 16: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/16.jpg)
Algorithme Cohen-Sutherland
• P1est sous la bordure inférieure
• L’intersection P’1 est trouvée
• Le segment P1 P’1 est éliminé
• A partir de P2 nous trouvons l’intersection P’2 (bordure gauche)
• Le segment P2 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é
![Page 17: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/17.jpg)
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é (x1,y1) et (x2,y2) la coordonnée y d’un point
d’intersection avec une bordure verticale est
12
12
max
min
11 )(
xx
yym
xw
xwx
xxmyy
![Page 18: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/18.jpg)
Algorithme Cohen-Sutherland
• La coordonnée x d’un point d’intersection avec une bordure horizontale est
max
min
11
yw
ywy
m
yyxx
![Page 19: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/19.jpg)
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
![Page 20: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/20.jpg)
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é.
![Page 21: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/21.jpg)
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
![Page 22: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/22.jpg)
Algorithme Sutherland-Hodgeman• Découpage successif
![Page 23: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/23.jpg)
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
![Page 24: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/24.jpg)
Algorithme Sutherland-Hodgeman• Chaque paire de sommets adjacents est traitée selon les 4
situations suivantes:
![Page 25: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/25.jpg)
Algorithme Sutherland-Hodgeman• Autre exemple en mettant en valeur la pipeline de
découpage de polygone
BORDURE SOMMETS RÉSULTANTSgauche V1 V1’ V2’ V3
droite V1 V1’ V2’ V3
bas V2’’ V2’ V3 V3’haut V2’’ V2’ V3 V3’
![Page 26: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/26.jpg)
Modélisation d’objets 3D• Une maille polygonale peut servir à modéliser les formes
3D• 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 orienta-
tion spatiale donnée souvent par la normale au plan dans lequel se trouve le polygone
![Page 27: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/27.jpg)
Modélisation d ’objets 3D• Représentation d’objet 3D en fil-de-fer
![Page 28: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/28.jpg)
Modélisation d ’objets 3D• Représentation d’objet 3D en fil-de-fer avec les
normales
![Page 29: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/29.jpg)
Modélisation d ’objets 3D• Calcul des normales
– Si chaque polygone est une surface plane• Sélectionner trois sommets adjacents du polygone, P1, P2, P3 et
calculer le produit vectoriel N = V1 X V2 = (P1 - P2) X (P3 - P2)
),,(
),,(
1111
2121211
211
zyx VVVV
zzyyxxV
PPV
![Page 30: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/30.jpg)
Modélisation d ’objets 3D• Calcul des normales
![Page 31: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/31.jpg)
Modélisation d ’objets 3D• Calcul des normales
![Page 32: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/32.jpg)
Modélisation d ’objets 3D• Calcul des normales
– Si chaque polygone est une surface plane• Sélectionner trois sommets adjacents du polygone, P1, P2, P3 et
calculer le produit vectoriel N = V1 X V2 = (P1 - P2) X (P3 - P2)
),,(
),,(
1111
2121211
211
zyx VVVV
zzyyxxV
PPV
![Page 33: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/33.jpg)
Modélisation d ’objets 3D• Calcul des normales
– Si chaque polygone est une surface plane• Sélectionner trois sommets adjacents du polygone, P1, P2, P3 et
calculer le produit vectoriel N = V1 X V2 = (P1 - P2) X (P3 - P2)
1
1
11 1
1 1 1
2 2 21 1 1 1
( , , )
( , , )
yx z
x y z
Vw
V
VV Vw
V V V
w a b c
V V V V
![Page 34: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/34.jpg)
Modélisation d ’objets 3D• Calcul des normales
– Si chaque polygone est une surface plane• Sélectionner trois sommets adjacents du polygone, P1, P2, P3 et
calculer le produit vectoriel N = V1 X V2 = (P1 - P2) X (P3 - P2)
),,(
sin
21212121212121
21
21
2121
2121
xyyxzxxzyzzy VVVVVVVVVVVVVV
uVV
VV
VVuVV
VVuVV
![Page 35: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/35.jpg)
Modélisation d ’objets 3D• Calcul des normales
– Si chaque polygone est une surface pas strictement plane constitué de n sommets
),,(
))((
))((
))((
1
0mod)1(mod)1(
1
0mod)1(mod)1(
1
0mod)1(mod)1(
yyx
n
iniiniiz
n
iniiniiy
n
iniiniix
NNNN
yyxxN
xxzzN
zzyyN
![Page 36: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/36.jpg)
OpenGL dans une application Dialogue
• Cette section explique comment intégrer OpenGL à 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 OpenGL. Ce contexte est représenté par un handle Windows noté "HWGL".
• L'exemple no. 1 dans Samples OpenGL de la documentation Visual Studio est utilisé comme référence pour expliquer ces notions d’intégration.
![Page 37: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/37.jpg)
OpenGL dans une application Dialogue
• Notez que la documentation des fonctions OpenGL se trouve comme suit (no filter):
![Page 38: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/38.jpg)
OpenGL 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 des dessins OpenGL.
• Le programme suivant montre comment définir cette fenêtre.
![Page 39: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/39.jpg)
OpenGL dans une application Dialogue
![Page 40: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/40.jpg)
OpenGL 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 OpenGL.
• 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.
![Page 41: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/41.jpg)
OpenGL dans une application Dialogue
• Menu principal
• On peut charger et sauvegarder les positions des scrollbars et réinitialiser la position de tous les scrollbars.
![Page 42: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/42.jpg)
OpenGL dans une application Dialogue
• Un dialogue est aussi disponible pour la sélection des propriétés de l'affichage:
![Page 43: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/43.jpg)
OpenGL 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://www.uqtr.ca/pub/dmat/meunier/sif1032/opengl/ProjetTriangleFan
![Page 44: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/44.jpg)
OpenGL dans une application Dialogue
• Présentation sommaire du programme:
![Page 45: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/45.jpg)
OpenGL dans une application Dialogue
• La classe "cDrawWin" offre des objets qui permettent de dessiner en mode OpenGL.
• La classe cMaHScroll gère les scrollbars• La classe cDiaProprietes gère le dialogue qui permet
d’établir les propriétés d'affichage. • L’objet "m_graphe" représente la fenêtre OpenGL (fond
noir). • L’objet "diaProp" 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.
![Page 46: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/46.jpg)
OpenGL dans une application Dialogue
• Code du dialogue:
![Page 47: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/47.jpg)
OpenGL dans une application Dialogue
• Code du dialogue:
![Page 48: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/48.jpg)
OpenGL dans une application Dialogue
• Code du dialogue:
![Page 49: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/49.jpg)
OpenGL dans une application Dialogue
• Code du dialogue:
![Page 50: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/50.jpg)
OpenGL dans une application Dialogue
• Code du dialogue:
![Page 51: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/51.jpg)
OpenGL dans une application Dialogue
• Code du dialogue:
![Page 52: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/52.jpg)
OpenGL dans une application Dialogue
• Code du dialogue:
![Page 53: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/53.jpg)
OpenGL dans une application Dialogue
• Dans la fonction OnInitDialog(), la fenêtre OpenGL est créée avec l’appel "m_graphe.myCreate(this,&rd,draw);".
• Ensuite, les scrollbars sont initialisés.
• Notez que les valeurs des scrollbars comme "ouverture, angleX, etc" sont placés dans autre fichier appelé "draw.cpp" et qui contient tout le code OpenGL.
• Les méthodes qui permettent de gérer les scrollbars, le menu contextuel et le clavier sont aussi présentés.
![Page 54: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/54.jpg)
OpenGL dans une application Dialogue
• La fenêtre OpenGL (classe cDrawWin) est présentée dans "cDrawWin.h":
![Page 55: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/55.jpg)
OpenGL dans une application Dialogue
• Au moment de la création de cette fenêtre avec "myCreate", la fenêtre-parent (le dialogue principal) et la fonction responsable des dessins de type "DrawFuncType" sont passés en argument de la méthode.
• Le handle spécial qui s'occupe du contexte de périphérique associé à OpenGL est stocké dans "m_hrc".
![Page 56: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/56.jpg)
OpenGL dans une application Dialogue
• Code de cDrawWin.cpp (L'élément le plus important de la gestion d'OpenGL consiste à choisir le type des pixels):
Cette classe nedevrait pas êtremodifiée
![Page 57: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/57.jpg)
OpenGL dans une application Dialogue
• Code de cDrawWin.cpp
![Page 58: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/58.jpg)
OpenGL dans une application Dialogue
• Code de cDrawWin.cpp
![Page 59: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/59.jpg)
OpenGL dans une application Dialogue
• Code de cDrawWin.cpp
![Page 60: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/60.jpg)
OpenGL dans une application Dialogue
• Code de cDrawWin.cpp
![Page 61: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/61.jpg)
OpenGL dans une application Dialogue
• Code de cDrawWin.cpp
![Page 62: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/62.jpg)
OpenGL dans une application Dialogue
• Code de cDrawWin.cpp
![Page 63: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/63.jpg)
OpenGL dans une application Dialogue
• Les fichiers draw.h et draw.cpp contiennent toutes les opérations OpenGL Le premier (draw.h) ne contient que les variables servant aux options et aux scrollbars:
![Page 64: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/64.jpg)
OpenGL dans une application Dialogue
• Le code OpenGL est dans le fichier draw.cpp
![Page 65: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/65.jpg)
OpenGL dans une application Dialogue
• Le code OpenGL est dans le fichier draw.cpp
![Page 66: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/66.jpg)
OpenGL dans une application Dialogue
• Fichier draw.cpp: Création du cornet (triangle fan)
![Page 67: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/67.jpg)
OpenGL dans une application Dialogue
• Fichier draw.cpp: Création du fond (triangle fan)
![Page 68: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/68.jpg)
OpenGL dans une application Dialogue
• Fichier draw.cpp: Fonction setupGL()
![Page 69: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/69.jpg)
OpenGL dans une application Dialogue
• Fichier draw.cpp: Fonction draw()
![Page 70: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/70.jpg)
OpenGL 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.
![Page 71: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/71.jpg)
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 SetTimer, KillTimer et OnTimer.
• La fonction SetTimer() 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 OnTimer().
![Page 72: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/72.jpg)
Autres éléments d’interface
• D'abord, on doit définir un timer comme suit dans la fonction InitDialog():
int r=SetTimer(1,100,NULL); // définir un timer no. 1,
// intervalle: 100 milli. sec
![Page 73: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/73.jpg)
Autres éléments d’interface
• Ensuite, la fonction DestroyWindow() est redéfinit dans les Overrides du dialogue:
![Page 74: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/74.jpg)
Autres éléments d’interface
• Ensuite, la fonction DestroyWindow() est redéfinit dans les Overrides du dialogue:
![Page 75: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/75.jpg)
Autres éléments d’interface
• Ensuite, la fonction DestroyWindow() est redéfinit dans les Overrides du dialogue:
![Page 76: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/76.jpg)
Autres éléments d’interface
• La fonction OnTimer() est ensuite définit et sera alors associée avec le message WM_TIMER du dialogue:
![Page 77: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/77.jpg)
Autres éléments d’interface
• La fonction OnTimer() est ensuite définit et sera alors associée avec le message WM_TIMER du dialogue:
![Page 78: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/78.jpg)
Autres éléments d’interface
• La fonction OnTimer() est ensuite définit et sera alors associée avec le message WM_TIMER du dialogue:
![Page 79: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/79.jpg)
Autres éléments d’interface
• La fonction OnTimer() est ensuite définit et sera alors associée avec le message WM_TIMER du dialogue:
![Page 80: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/80.jpg)
Autres éléments d’interface
• Notez dans le code précédent que 2 fenêtres OpenGL, m_graphe et m_graph2, sont déclarées.
• La zone de dessin est donc séparée en 2 sections.
• La méthode InitDialog() (cubeDlg.cpp) permet de créer ces deux fenêtres.
• Il faut donc ajouter la variable "m_graph2" au fichier cubeDlg.h du dialogue.
• Les fonctions d'affichage draw1() et draw2() permettent d’afficher les objets graphiques OpenGL dans chacune des fenêtres:
![Page 81: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/81.jpg)
Autres éléments d’interface
• La fonction InitDialog() (cubeDlg.cpp) permet la création des fenêtres:
![Page 82: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/82.jpg)
Autres éléments d’interface
• Ajout de la variable "m_graph2"
![Page 83: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/83.jpg)
Autres éléments d’interface
• Fonctions draw1() et draw2() (draw.cpp):
![Page 84: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/84.jpg)
Autres éléments d’interface
• Exécution du projet
![Page 85: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/85.jpg)
Autres éléments d’interface
• Voir le site ftp du cours pour accéder au code de ce projet: ftp://www.uqtr.ca/pub/dmat/meunier/sif1032/opengl/ProjetTriangleFan2Fenetres
![Page 86: GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 3 Autres outils de dessin (Suite) –Découpage 2D Modélisation d ’objets 3D sous forme de maille polygonale](https://reader035.vdocuments.mx/reader035/viewer/2022062622/551d9dde497959293b8e9734/html5/thumbnails/86.jpg)
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 (12 mars 2012)– objets modélisés– visualisation des objets– animation simple dans l’espace