Introduction à la programmation graphique

Slides:



Advertisements
Présentations similaires
Tous droits réservés. Reproduction intégrale ou partielle interdite sans autorisation écrite de la partdu titulaire des droits dauteur. Institut de Formation.
Advertisements

Z y x Repère des objets (repère de modélisation) x z y Repère du monde.
( Application Programming Interface)
Introduction au Langage C,C++
Tous droits réservés. Reproduction intégrale ou partielle interdite sans autorisation écrite de la partdu titulaire des droits dauteur. Institut de Formation.
ISOSTATISME DEFINITION
Objectif : Lors de l'étude ou de la conception de la partie opérative d'un système, il est nécessaire de traduire le cahier des charges par un schéma précisant.
1 Visualisation avec OpenGL Jérémie Allard 4 Novembre 2002.
Programmation des logiciels infographiques interactifs 2D et 3D, et le OpenGL.
1 Une introduction à Java IFT 287 (Semaine 1). 2 Java - Historique Développé par Sun Microsystems en 1994 –Inventeur James Gosling (canadien!) Objectif.
INF-1019 Programmation en temps réel
Réalisation dun travail concret avec des matrices Afficher un objet 3D sur une surface Lui appliqué des transformations Le voir se transformer suivant.
Images de Synthèse Animées
Création d’un programme :
Bibliothèque standard du C++
GRAPHISME PAR ORDINATEUR
IFT3730: Infographie 3D Transformations Géométriques
1 Transformations affines But: fixer le positionnement et lorientation des objets de la scène.
Transformations de visualisation en OpenGL
SUJETS SPÉCIAUX EN INFORMATIQUE I PIF Contenu du cours Transformations géométriques des objets –Transformations 2D –Transformations entre systèmes.
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
Gestion des événements liés à la fenêtre et aux périphériques dentrée.
Leçon 2 : Surcharge des opérateurs IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Modélisation géométrique à l’aide d’un maillage
Projet Image en C++ Composition du trinôme : DUPONT Thomas MEHAULT Maxime NICOLAS Rémi L3 MI - Année
Images synthètiques de haute qualité
IFT3730 : Infographie 3D Systèmes et modèles graphiques Pierre Poulin, Derek Nowrouzezahrai Hiver 2013 DIRO, Université de Montréal.
IFT2740 : Outils de l'infographie 3D Systèmes et modèles graphiques
1. 2 Toolkits Il existe 4 principales boites à outils (toolkits) graphiques : –Xt / Motif –Gtk –Windows –Qt Seul certaines fonctionnent sur toutes les.
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Application de texture en OpenGL
Texture 2D en PGC++.
Découpage des objets selon le volume de vue
Techniques de points de contrôle en OpenGL : formes de Bézier
IFT3355: Infographie Transformations Géométriques
Représentation et traitement des images en OpenGL
PROTOTYPE D’UN PROGRAMME ÉCRIT EN C++ BASÉ SUR OPENGL
Éclairage en OpenGL.
Une introduction à Java
Listes d’affichage.
Modélisation Géométrique et Synthèse d’image Sandrine LANQUETIN Marc NEVEU 1.
La notion de type revisitée en POO
et quelques rappels sur certains éléments du langage C
Argc et argv Utilisation des paramètres de la ligne de commande.
Autres éléments du langage
GRAPHISME PAR ORDINATEUR
ISBN Chapitre 10 L'implémentation des sous- programmes.
8PRO100 Éléments de programmation Les pointeurs de caractères.
Cours LCS N°4 Présenté par Mr: LALLALI
GRAPHISME PAR ORDINATEUR SIF Contenu du cours 10 Textures –Définir la texture –Superposition d’une texture sur une surface plane –Superposition.
GRAPHISME PAR ORDINATEUR SIF Contenu du cours 6 Transformation et animation de plusieurs modèles 3D avec XNA –Chargement des modèles 3D (modèle.
Les classes Introduction aux Langages Orientés Objets
Conception de Programmes - IUT de Paris - 1ère année – Cours 6 - Les opérateurs L’amitié Les opérateurs –Introduction –Surcharge par fonction.
3D MEsh Processing Platform
Conception de Programmes - IUT de Paris - 1ère année Cours 2 – Références et passage de paramètres Les Références –Introduction aux références.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O. et au.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
Architecture et Fonctionnement d’un GPU Géométrie Rendu.
Modeleur de courbes SPLINE Projet n°3 : 28 mars 2003 Tuteur : Éric BITTAR.
GRAPHISME PAR ORDINATEUR SIF Contenu du cours 1 Ressources disponibles sur l’INTERNET Introduction au graphisme par ordinateur Survol des systèmes.
GRAPHISME PAR ORDINATEUR
Éclairage, ombrage Fiat lux !.
GRAPHISME PAR ORDINATEUR SIF Contenu du cours 10 Textures –Définir la texture –Superposition d’une texture sur une surface plane –Superposition.
OSSIA Open Scenario Systems for Interactive Application Contrôle de paramètres spatiaux Jean-Michel Couturier, Blue Yeti, mai 2014.
M. BENJELLOUN : 2005 Le but final est de programmer un jeu où l'ordinateur choisira un nombre aléatoire entre 0 et 100 que vous devez deviner.
Les Processeurs Graphiques Programmables
OpenGL et WebGL, comparaison de performances dans le framework Geant4
Programmation graphique
Transcription de la présentation:

Introduction à la programmation graphique A. Benassarou IUT Reims-Châlons-Charleville

Introduction à la programmation graphique - A. Benassarou Généralités La programmation graphique fait appel à de nombreuses techniques dont la finalité est de permettre de visualiser des scènes 3D et/ou 2D. Les deux principales bibliothèques (OpenGL et Direct3D) réunissent plusieurs phases distinctes : Transformations géométriques (vecteurs & matrices) Rasterization Textures, shaders OpenGL est une interface de programmation développée, à l’origine, par Silicon Graphics. Direct3D, sous-ensemble de DirectX, est l’interface développée par Microsoft. 2006 / 2007 Introduction à la programmation graphique - A. Benassarou

Présentation d’OpenGL Introduction Présentation d’OpenGL Langage C Pas de classes ! OpenGL fonctionne uniquement par états. glEnable / glDisable / glGetInteger / etc. Pas de surcharge des fonctions ! Nom différent selon le type des paramètres. Exemple : glVertex3d vs. glVertex3f Chargement dynamique des extensions ! Automatique sous Linux wglGetProcAddress sous Windows OpenGL Utility Library (GLU) Ensemble de fonctions de plus haut niveau censées faciliter l’utilisation du cœur d’OpenGL. GLUT / GLUI / GTK+ / wxWidgets / Qt La plupart des toolkits supportent nativement OpenGL. 2006 / 2007 Introduction à la programmation graphique - A. Benassarou

Introduction à la programmation graphique - A. Benassarou Pipe-line 2006 / 2007 Introduction à la programmation graphique - A. Benassarou

Primitives géométriques Introduction Primitives géométriques glBegin (GLenum mode) Annonce le début d’une série de sommets 3D. La nature des primitives générées varie en fonction du mode choisi : GL_POINTS GL_LINES GL_LINE_STRIP GL_LINE_LOOP GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN GL_QUADS GL_QUAD_STRIP GL_POLYGON glEnd () 2006 / 2007 Introduction à la programmation graphique - A. Benassarou

Introduction à la programmation graphique - A. Benassarou Couleurs Niveaux de gris (8 bits) Mode inexistant. RGB(n, n, n) Couleurs indexées (8 bits) Remonte à l’époque où les ordinateurs ne géraient pas plus de 256 couleurs à la fois. Indices en référence à une palette. True-color (24 ou 32 bits) glColor3f (GLfloat r, GLfloat g, GLfloat b) Définition des 3 composantes R, G & B (RGB). glColor4f (GLfloat r, GLfloat g, GLfloat b, GLfloat a) Canal alpha optionnel détermine le niveau d’opacité (RGBA). 2006 / 2007 Introduction à la programmation graphique - A. Benassarou

GLUT : OpenGL Utility Toolkit Introduction GLUT : OpenGL Utility Toolkit Initialisation glutInit (int * argc, char ** argv) glutInitDisplayMode (unsigned int mode) glutInitWindowPosition (x, y) / glutInitWindowSize (w, h) int glutCreateWindow (char * title) Affichage glutDisplayFunc (void (*f)()) glutPostRedisplay () glutSwapBuffers () Gestion des événements glutReshapeFunc (void (*f)(int w, int h)) glutKeyboardFunc (void (*f)(unsigned char key, int x, int y)) glutMouseFunc (void (*f)(int button, int state, int x, int y)) glutMotionFunc (void (*f)(int x, int y)) glutIdleFunc (void (*f)()) glutMainLoop () 2006 / 2007 Introduction à la programmation graphique - A. Benassarou

Mon premier programme OpenGL Introduction Mon premier programme OpenGL #include <GL/glut.h> void display () { // Un peu de ménage ! glClear (GL_COLOR_BUFFER_BIT); // Rectangle blanc. glBegin (GL_POLYGON); glColor3f (1.0, 1.0, 1.0); glVertex3f (0.25, 0.25, 0.0); glVertex3f (0.75, 0.25, 0.0); glVertex3f (0.75, 0.75, 0.0); glVertex3f (0.25, 0.75, 0.0); glEnd (); // Échange des buffers. glutSwapBuffers (); } void init () { // Couleur du fond. glClearColor (0.0, 1.0, 0.0, 0.0); // Projection orthogonale. glMatrixMode (GL_PROJECTION); glLoadIdentity (); glOrtho (0.0, 1.0, 0.0, 1.0, -1.0, 1.0); } int main (int argc, char ** argv) glutInit (&argc, argv); glutInitDisplayMode (GLUT_DOUBLE|GLUT_RGB); glutInitWindowSize (512, 512); glutInitWindowPosition (64, 64); glutCreateWindow ("hello"); init (); glutDisplayFunc (display); glutMainLoop (); return 0; 2006 / 2007 Introduction à la programmation graphique - A. Benassarou

Système de vision Caméras, matrices, etc.

Analogies avec la photographie Système de vision Analogies avec la photographie 1 Arranger les éléments de la scène à capturer Composer une scène virtuelle Transformation de modélisation 2 Positionner l'appareil photo Positionner la caméra virtuelle Transformation de vision 3 Régler la focale de l'appareil photo Configurer une projection Transformation de projection 4 Choisir la taille des tirages photographiques Choisir les dimensions de l’image video Transformation de cadrage 2006 / 2007 Introduction à la programmation graphique - A. Benassarou

Transformation de modélisation Système de vision Transformation de modélisation glMatrixMode (GL_MODELVIEW) Active la matrice de modélisation. glTranslate (GLdouble tx, GLdouble ty, GLdouble tz) Effectue une translation de vecteur [tx ty tz]. glRotate (GLdouble a, GLdouble rx, GLdouble ry, GLdouble rz) Rotation d’angle a autour du vecteur [rx ry rz]. glScale (GLdouble sx, GLdouble sy, GLdouble sz) Échelle de facteurs sx, sy et sz. Y X Y X Y X 2006 / 2007 Introduction à la programmation graphique - A. Benassarou

Transformation de vision Système de vision Transformation de vision glMatrixMode (GL_MODELVIEW) Il s’agit de la même matrice ! Aucune différence entre vision et modélisation. Position relative de la caméra. gluLookAt (px,py,pz, cx,cy,cz, ux,uy,uz) Positionne la caméra au point [px py pz], oriente les Z vers la cible [cx cy cz] et les Y selon le vecteur [ux uy uz]. 2006 / 2007 Introduction à la programmation graphique - A. Benassarou

Transformation de projection Système de vision Transformation de projection glMatrixMode (GL_PROJECTION) Active la matrice de projection. glFrustum (left,right, bottom,top, near,far) gluPerspective (fovy, aspect, near,far) Définit le volume de projection perspective. glOrtho (left,right, bottom,top, near,far) Définit le volume de projection orthogonale. 2006 / 2007 Introduction à la programmation graphique - A. Benassarou

Transformation de cadrage Système de vision Transformation de cadrage glViewport (GLint x, GLint y, GLsizei w, GLsizei h) Cadre la fenêtre de visualisation OpenGL. 2006 / 2007 Introduction à la programmation graphique - A. Benassarou

Pile de transformations Système de vision Pile de transformations Modélisation hiérarchique Modélisation récursive Graphe de scène (DAG) glPushMatrix () Enregistre la matrice actuelle (du mode actuel) et prépare un nouveau contexte (avec la même matrice). glPopMatrix () Restaure le contexte précédent. glLoadIdentity () glLoadMatrix (const GLdouble [16]) glMultMatrix (const GLdouble [16]) glTranslate / glRotate / glScale La multiplication n’est pas commutative ! 2006 / 2007 Introduction à la programmation graphique - A. Benassarou