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

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)
Premier programme en C :
Cours de C – Séance dexercices 12 Octobre Exercice 5 Idem quexercice 1 : lire une ligne au clavier Sans limitation de la longueur de la ligne (utilisez.
Hierarchical Z-Buffer Visibility
Interactivé: L'Action Script.
Augmented Reality Toolkit
TP 7.1 synchronized et join Écrire un programme Java qui crée 1000 threads et maintient un compteur nb du nombre de threads créés jusque-là. Le thread.
contrat Creative Commons Paternité-Pas d'Utilisation Commerciale- Partage des Conditions Initiales à l'Identique.
Assistance à distance Parfois on se sent bien seul face à un problème informatique surtout si on n’est qu’un simple utilisateur. Lorsqu'un problème survient.
1 Visualisation avec OpenGL Jérémie Allard 4 Novembre 2002.
Programmation des logiciels infographiques interactifs 2D et 3D, et le OpenGL.
Regrouper des éléments de même type et pouvoir y accéder à laide dun identificateur et dun indice. Objectif des tableaux.
Langage C Révision.
Programmation événementielle et composants dinterface (« widgets »)
Real-time Shadows Xavier Décoret Cours d’option Majeure 2.
Récursivité.
Créer une animation simple Gif avec ImageReady.
La souris.
MPI (Message Passing Interface)
Python Interfaces graphiques
Programmation graphique
GRAPHISME PAR ORDINATEUR
1 Transformations affines But: fixer le positionnement et lorientation des objets de la scène.
Transformations de visualisation en OpenGL
Création d'un diaporama Création d'un diaporama
SUJETS SPÉCIAUX EN INFORMATIQUE I PIF Contenu du cours Transformations géométriques des objets –Transformations 2D –Transformations entre systèmes.
Gestion des événements liés à la fenêtre et aux périphériques dentrée.
Les structure d’un programme :
FICHIERS : Définition : Algorithme général:
Modélisation géométrique à l’aide d’un maillage
Nicolas Holzschuch Cours d’Option Majeure 2
Ombres en temps-réel Nicolas Holzschuch Cours dOption Majeure 2
Images synthètiques de haute qualité
Instruction sélective switch-case Instruction répétitive do-while For
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
IFT 6800 Atelier en Technologies d’information
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Application de texture en OpenGL
Plan troisième cours Instruction sélective Instruction répétitive
Découpage des objets selon le volume de vue
Techniques de points de contrôle en OpenGL : formes de Bézier
Représentation et traitement des images en OpenGL
PROTOTYPE D’UN PROGRAMME ÉCRIT EN C++ BASÉ SUR OPENGL
Listes d’affichage.
EXERCICE D'ANIMATION AVEC POWER POINT
Modélisation Géométrique et Synthèse d’image Sandrine LANQUETIN Marc NEVEU 1.
Synthèse d’images 2. illumination
La notion de type revisitée en POO
Les adresses des fonctions
Création en images de Synthèse Modèles de rendu d’une scène 3D
Outil de capture d’images.  Pour appeler l’outil de capture à partir de la fenêtre principale, son icône doit avoir été rendu actif à partir de "Outils.
Synthèse d’images 4. Animation
Les surcharges d'opérateurs
POWERPOINT.
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 8 Rendu de surfaces –Modèles de rendu de surfaces –Illumination de la scène –Sources lumineuses –Composante.
Introduction à la programmation graphique
Éclairage, ombrage Fiat lux !.
Programmation événementielle et composants d’interface (« widgets »)
Premières notions de la 3D
PROCESSING Semaine 03. PLAN DE LEÇON Interaction avec un programme Gestion de la souris Gestion du clavier.
** Flash séance 2 Action script. ** Action Script Ajoute de l’interactivité Permet de contrôler les clips  Langage de programmation orienté objet.
Dreamweaver 2 Feuilles de Style CSS Formulaires Calques Comportements
Programmation événementielle. Logiciel traditionnel, sans interface utilisateur { Lire les entrées d’un fichier Effectuer des calculs Écrire les sorties.
Les vues O.Legrand G.Seront. Les vues Dans Android, une ihm est composée de vues. Ces vues.
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.
Transcription de la présentation:

Tous droits réservés. Reproduction intégrale ou partielle interdite sans autorisation écrite de la partdu titulaire des droits dauteur. Institut de Formation OpenGL Programmation Sébastien Kuntz Institut de Formation

Tous droits réservés. Reproduction intégrale ou partielle interdite sans autorisation écrite de la partdu titulaire des droits dauteur. Institut de Formation 1OpenGL Programmation OpenGL Plan Glut Glut : Exemple Glut : Gerer les évenements Dessiner en 3D Animations & Depth Buffer

Tous droits réservés. Reproduction intégrale ou partielle interdite sans autorisation écrite de la partdu titulaire des droits dauteur. Institut de Formation Programmation OpenGL Glut Programmation simplifiée Indépedant de l'OS Ne fait pas officiellement partit d'OpenGL Gestion des fenetres, clavier et souris Quelques primitives : Cube, sphere..

Tous droits réservés. Reproduction intégrale ou partielle interdite sans autorisation écrite de la partdu titulaire des droits dauteur. Institut de Formation Programation OpenGL Structure d'un programme Glut : Configurer et ouvrir une fenêtre Initialiser OpenGL Enregistrer les fonctions de traitement d'évènement (callbacks) Fonction de rendu d'image Fonction de gestion de fenetre Interaction avec l'utilisateur : clavier, souris, etc.. Entrer dans la boucle de traitement d'évènements

Tous droits réservés. Reproduction intégrale ou partielle interdite sans autorisation écrite de la partdu titulaire des droits dauteur. Institut de Formation Programmation OpenGL Glut : Exemple void main( int argc, char** argv ){ glutInitDisplayMode( GLUT_RGB|GLUT_DOUBLE ); glutCreateWindow( OpenGL window ); initOpenGL(); glutDisplayFunc( display ); glutReshapeFunc( resize ); glutKeyboardFunc( key ); glutIdleFunc( idle ); glutMainLoop(); } void initOpenGL( void ) { glClearColor( 0.0, 0.0, 0.0, 1.0 ); glClearDepth( 1.0 ); glEnable( GL_LIGHT0 ); glEnable( GL_LIGHTING ); glEnable( GL_DEPTH_TEST ); }

Tous droits réservés. Reproduction intégrale ou partielle interdite sans autorisation écrite de la partdu titulaire des droits dauteur. Institut de Formation Programmation OpenGL / Glut Glut : Gerer les évenements La gestion se fait au moyen de callbacks Ce sont des fonctions qui sont appelées quand : Une fenetre est redimensionnée ou redessinée L'utilisateur agit sur le programme On veut animer un ou des objets

Tous droits réservés. Reproduction intégrale ou partielle interdite sans autorisation écrite de la partdu titulaire des droits dauteur. Institut de Formation Programmation OpenGL / Glut On enregistre les callbacks : glutDisplayFunc() : appelé quand des pixels d'une fenetre doivent etre rafraichis glutReshapeFunc(): appelé quand une fenetre change de taille glutKeyboardFunc(): appelé lors d'une frappe sur le clavier glutMouseFunc(): appelé lors d'un click sur la souris glutMotionFunc(): appelé lorsque l'utilisateur bouge la souris tout en appuyant sur un bouton glutPassiveMouseFunc(): appelé quand la souris bouge, quelque soit l'état des boutons glutIdleFunc(): appelé quand rien ne se passe. Très utile pour les animations.

Tous droits réservés. Reproduction intégrale ou partielle interdite sans autorisation écrite de la partdu titulaire des droits dauteur. Institut de Formation Programmation OpenGL / Glut Le callback de rendu : C'est là qu'on dessine en 3D glutDisplayFunc( display ); void display( void ) { glClear( GL_COLOR_BUFFER_BIT ); glBegin( GL_TRIANGLE_STRIP ); glVertex3fv( v[0] ); glVertex3fv( v[1] ); glVertex3fv( v[2] ); glVertex3fv( v[3] ); glEnd(); glutSwapBuffers(); }

Tous droits réservés. Reproduction intégrale ou partielle interdite sans autorisation écrite de la partdu titulaire des droits dauteur. Institut de Formation Programmation OpenGL / Glut Entrées au clavier : glutKeyboardFunc( keyboard ); void keyboard( char key, int x, int y ) { switch( key ) { case q : case Q : exit( EXIT_SUCCESS ); break; case r : case R : rotate = GL_TRUE; break; }

Tous droits réservés. Reproduction intégrale ou partielle interdite sans autorisation écrite de la partdu titulaire des droits dauteur. Institut de Formation Programmation OpenGL / Glut Idle Callback Que faire quand rien il n'y'a pas d'évènements? Utilisé pour les animations ou les mises à jour fréquentes : glutIdleFunc( idle ); void idle( void ) { t += dt; glutPostRedisplay(); }

Tous droits réservés. Reproduction intégrale ou partielle interdite sans autorisation écrite de la partdu titulaire des droits dauteur. Institut de Formation Programmation OpenGL / Glut Animation et Depth Buffer Comment utiliser le Double Buffering pour les animations ? Comment utiliser le depth buffer pour éliminer les surfaces cachées

Tous droits réservés. Reproduction intégrale ou partielle interdite sans autorisation écrite de la partdu titulaire des droits dauteur. Institut de Formation Programmation OpenGL / Glut Double Buffering et les animations Animation avec un seul buffer : scintillement Deux buffers identiques : Front et Back On rend l'image dans le Back Buffer, et on bascule l'affichage quand tout est prêt Les deux buffers sont interchangés : le Back Buffer est affiché, et le Front Buffer devient le nouveau Back Buffer

Tous droits réservés. Reproduction intégrale ou partielle interdite sans autorisation écrite de la partdu titulaire des droits dauteur. Institut de Formation Programmation OpenGL / Glut Comment utiliser le Double Buffering ? 1/ Demander un double buffe r glutInitDisplayMode ( GLUT_RGB | GLUT_DOUBLE ); 2/ Efface le buffer d'affichage glClear ( GL_COLOR_BUFFER_BIT ); 3/ Rendre la scene 4/ Demander le basculement des Front & Back buffers glutSwapBuffers(); Répèter 2-4 pour faire l'animation

Tous droits réservés. Reproduction intégrale ou partielle interdite sans autorisation écrite de la partdu titulaire des droits dauteur. Institut de Formation Programmation OpenGL Le Depth Buffer Par défaut, OpenGL dessine les primitives dans l'ordre précisé Le Depth Buffer stocke une information de profondeur pour chaque pixel Pour chaque pixel d'une primitive à afficher : if ( pixel->z z ) { depthBuffer(x,y)->z = pixel->z; colorBuffer(x,y)->color = pixel->color; }

Tous droits réservés. Reproduction intégrale ou partielle interdite sans autorisation écrite de la partdu titulaire des droits dauteur. Institut de Formation Programmation OpenGL Comment utiliser le Depth Buffer ? 1/ Demander un depth buffer : glutInitDisplayMode( GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH ); 2/ Activer le test avec le depth buffer : glEnable( GL_DEPTH_TEST ); 3/ Effacer le buffer d'affichage et le depth buffer : glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); 4/ Rendre la scène 5/ Echanger le Front et Back buffer

Tous droits réservés. Reproduction intégrale ou partielle interdite sans autorisation écrite de la partdu titulaire des droits dauteur. Institut de Formation Programmation OpenGL Un modèle de programme : void main( int argc, char** argv ) { glutInit( &argc, argv ); glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); glutCreateWindow( OpenGL ); init(); glutDisplayFunc( display ); glutMainLoop(); } void init( void ) { glClearColor( 0.0, 0.0, 1.0, 1.0 ); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f); glMatrixMode(GL_MODELVIEW); }

Tous droits réservés. Reproduction intégrale ou partielle interdite sans autorisation écrite de la partdu titulaire des droits dauteur. Institut de Formation Programmation OpenGL (Suite du modèle) void drawScene( void ) { glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glLoadIdentity() glBegin( … ); /* appels à glColor*() et glVertex*() */ glEnd(); glutSwapBuffers(); glutPostRedisplay(); }

Tous droits réservés. Reproduction intégrale ou partielle interdite sans autorisation écrite de la partdu titulaire des droits dauteur. Institut de Formation Programmation OpenGL A vous de jouer!

Tous droits réservés. Reproduction intégrale ou partielle interdite sans autorisation écrite de la partdu titulaire des droits dauteur. Institut de Formation TP 1 Exercice 1: Dessiner un triangle Vous aurez besoin de : –glBegin() / glEnd() –glVertex3f(); –glColor3f(); –glTranslatef();

Tous droits réservés. Reproduction intégrale ou partielle interdite sans autorisation écrite de la partdu titulaire des droits dauteur. Institut de Formation TP 1 Exercice 2.1: Dessiner un cube Vous aurez besoin de : –glBegin() / glEnd() –glVertex3f() –glColor3f() –glTranslatef() Exercice 2.2 : Le faire tourner Exercice 2.3 : Rajouter des contrôles de caméra