( Application Programming Interface)

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

PC / Traitement numérique / Contrôle Environnement logiciel
Z y x Repère des objets (repère de modélisation) x z y Repère du monde.
Chaîne de Synthèse Réel Modélisation Rendu Image Fichier Scène
Module 5 : Implémentation de l'impression
Hierarchical Z-Buffer Visibility
La Gestion de la Configuration
Tous droits réservés. Reproduction intégrale ou partielle interdite sans autorisation écrite de la partdu titulaire des droits dauteur. Institut de Formation.
Technique des Surfels Surfels: Surface Elements as Rendering Primitives SIGGRAPH 2000 H.Pfiste, J.van Baar, M.Zwicker, M.Gross.
Les erreurs types à ne pas commettre OpenGL Carina Portella Jean-Philippe Reynier DESS TNI – IDI Année
Excel 2007 et les services Excel. Pourquoi Excel ? Outil privilégié danalyse des données issues des bases multidimensionnelles Ergonomie connue des outils.
IMAGIS-GRAVIR / IMAG Rendu de forêts en temps-réel iMAGIS / GRAVIR Franck Sénégas DEA IVR Tuteur: Fabrice Neyret.
FLSI602 Génie Informatique et Réseaux
Architecture de machines Principes généraux
1 Visualisation avec OpenGL Jérémie Allard 4 Novembre 2002.
Réalité virtuelle et interactions avec un individu
Programmation des logiciels infographiques interactifs 2D et 3D, et le OpenGL.
INF-1019 Programmation en temps réel
Images de Synthèse Animées
Monique THONNAT et Nathanaël ROTA Projet ORION
Structures de données linéaires
Programmation graphique
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
Administration de bases de données spatiales avec SavGIS
Interface CWIPI Thierry Morel Formation OpenPALM avril 2012
SUJETS SPÉCIAUX EN INFORMATIQUE I PIF Contenu du cours Transformations géométriques des objets –Transformations 2D –Transformations entre systèmes.
Créer une interface graphique avec Photoshop.
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Gestion des événements liés à la fenêtre et aux périphériques dentrée.
Plan de l’exposé Présentation de l’équipe Présentation du stage
Modélisation géométrique à l’aide d’un maillage
Ombres en temps-réel Nicolas Holzschuch Cours dOption Majeure 2
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
IFT3730 : Infographie 3D Plan de cours
IFT3355: Infographie Visualisation
Standard Template Library
Application de texture en OpenGL
Découpage des objets selon le volume de vue
Représentation et traitement des images en OpenGL
IFT3730: Infographie Projections
PROTOTYPE D’UN PROGRAMME ÉCRIT EN C++ BASÉ SUR OPENGL
Listes d’affichage.
Traitement d’images sur carte 3D
Modélisation Géométrique et Synthèse d’image Sandrine LANQUETIN Marc NEVEU 1.
Projet Télédétection Vidéo Surveillance Deovan Thipphavanh – Mokrani Abdeslam – Naoui Saïd Master 2 Pro SIS / 2006.
Supports de formation au SQ Unifié
Création en images de Synthèse Modèles de rendu d’une scène 3D
GRAPHISME PAR ORDINATEUR
GRAPHISME PAR ORDINATEUR
Projet Lancer de Rayons
OpenGL Shading Language Introduction. But de ce cours  Non-buts  Spécialistes GLSL  Experts en GLSL  Exploration du pipeline graphique  Séparation.
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.
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.
Architecture et Fonctionnement d’un GPU Géométrie Rendu.
Introduction à SVG Scalable Vector Graphic. Informations ● Plus d'informations ici (draft, tutoriaux, outils... ): –
Introduction à la programmation graphique
GRAPHISME PAR ORDINATEUR
GRAPHISME PAR ORDINATEUR
Éclairage, ombrage Fiat lux !.
Introduction aux technologies du jeux-vidéo Steve Gury
GRAPHISME PAR ORDINATEUR SIF Contenu du cours 10 Textures –Définir la texture –Superposition d’une texture sur une surface plane –Superposition.
Premières notions de la 3D
OSSIA Open Scenario Systems for Interactive Application Contrôle de paramètres spatiaux Jean-Michel Couturier, Blue Yeti, mai 2014.
Transcription de la présentation:

( Application Programming Interface) API graphique ( Application Programming Interface) Couche entre le programmeur et le matériel (ou d’autres programmes) Environ 250 procédures et fonctions Définition des objets Opérations pour applications interacives

Application Application Graphics Package OpenGL API Matériel et programmes Périphérique de sortie Périphérique d’entrée Périphérique d’entrée

Machine à états reconfigurable En entrée, données 2D ou 3D En sortie un tampon image On modifie l’état pour changer les fonctionnalités

Largement utilisé et maintenu Très bien documenté : www.opengl.org Facile à utiliser Traitement de la géométrie et des pixels

Développé par SGI au début des années 90 SGI n’est plus propriétaire License gratuite

Evolution controlée par OpenGL ARB (architecture review board) Une voix par société Microsoft (parti en mars 2003), Dell, IBM, Intel, Matrox, 3Dlabs, Apple, Sun Microsystems, HP, SGI, nVidia, ATI, Evans & Sutherland It is up to other companies such as Microsoft and SUN to implement the OpenGL specification for thier operating system and up to the card manufacturers such as nVidia to create hardware which runs OpenGL.

Applications temps réel (3D Studio Max, Maya, Blender, …) Environnements virtuels interactifs Jeux videos (Quake, Warcraft 3, Medal of Honor, Doom 3, …)

Interprétation client / serveur Le programme (client) invoque des commandes Eg.activation des lumières, rendu de triangles, etc. Les commandes sont interprétées et traités par le serveur “GL”

Ne fournit pas le moyen de construire des scènes complexes Utiliser pour cela une API plus haut-niveau (OpenInventor, Java3D) Ne gère pas les périphériques Souris, son... Ne gère pas l’interface-homme-machine Pour cela nous utiliserons la GLUT (Graphics Library Utility Toolkit)

#include <GL/gl.h> #include <GL/glu.h> #include <GL/glut.h>

OpenGL est indépendant des plateformes Un système de fenêtrage est nécessaire pour Interaction Ouverture / fermeture fenêtres Gestion des événements Options: GLX (*nix) WGL (windows) GLUT (indépendant du système de fenêtrage)

glutInitWindowSize glutInitDisplayMode glutCreateWindow

Dans un tampon d’images Primitives OpenGL Un ensemble de sommets Un sommet définit: Un point L’extrémité d’un segment Le sommet d’un polygone

Données associées à un sommet coordonnées couleur normale coordonnées de texture

Points Ligne Polygone Triangle Quad Quad strip Triangle strip Triangle Fan

Interpolé (Smooth, Gouraud) Plaquage de textures Fil de fer (Wireframe) Plat (Flat Shading) Une seule couleur par polygone Interpolé (Smooth, Gouraud) Interpolation des couleurs des sommets sur le polygone Plaquage de textures La couleur de chaque pixel est récupérée dans une image

glEnable, glDisable, glCullFace, glPolygonMode, glLightModel, etc.

Operations sur primitives Géométriques Conversion en mode Point Operations sur les fragments Sommets Mémoire tampon Images ou Pixels Opérations Sur pixels Mémoire texture

Manipulation de rectangles de pixels glDrawPixels, glReadPixels, glCopyPixels déplacent des rectangles de pixels de et vers le tampon image glBitmap prend en entrée une image binaire dont les pixels à 1 sont dessinés dans la mémoire image (utile pour dessiner du texte)

Soit zj la valeur présente dans le z-buffer A chaque fois qu’un fragment i est dessiné, le zi (distance au point de vue) est comparé et peut-être stocké dans le tampon de profondeur (Z-buffer) Soit zj la valeur présente dans le z-buffer Si zj > zi le fragment est dessiné Sinon rien n’est fait

Spécifier l’utilisation d’un tampon de profondeur: glutInitDisplayMode(GLUT_DEPTH); A la mise à jour s’assurer que : glClear(GL_DEPTH_BUFFER_BIT); glEnable(GL_DEPTH_TEST);

glBegin() glEnd() termine une liste de sommets et de ses attributs Les coordonnées d’une primitive sont données dans le sens inverse des aiguilles d’un montre

glBegin(GL_POINTS); glVertex3f(0.0f, 0.0f, 0.0f); glEnd();

glBegin(GL_TRIANGLES); glVertex3f(0.0f, 1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 0.0f); glVertex3f(1.0f, -1.0f, 0.0f); glEnd();

glBegin(GL_TRIANGLES);. glColor3f(1. 0f, 0. 0f, 0. 0f); //pure red glBegin(GL_TRIANGLES); glColor3f(1.0f, 0.0f, 0.0f); //pure red glVertex3f(0.0f, 1.0f, 0.0f); glColor3f(0.0f, 1.0f, 0.0f); //pure green glVertex3f(-1.0f, -1.0f, 0.0f); glColor3f(0.0f, 0.0f, 1.0f); //pure blue glVertex3f(1.0f, -1.0f, 0.0f); glEnd();

Couleur indexée (Indexed Color) RGBA Red, Green, Blue, Alpha Un canal pour chaque couleur 8 bits/canal = 16 million de couleurs Couleur indexée (Indexed Color) Un petit nombre de couleur accédées grâce à un indice dans une table de couleurs 8 bits = 256 colors

Deux objets de couleurs (Cs, Cf) sont composés au moment du rendu Utilisation d’un modèle RGBA, ma 4ème composante (alpha) spécifie la transparence Alpha = 0 ; polygone complètement transparent Alpha = 1 ; polygone opaque Deux objets de couleurs (Cs, Cf) sont composés au moment du rendu C = alpha*Cs + (1 - alpha) Cf Cs est la couleur du nouveau fragment transparent Cf est la couleur déjà présente dans la mémoire tampon

La visualisation est réalisée en 2 étapes Positionnement des objets Matrice de transformation : model view Projection dans la vue matrice de transformation projection OpenGL fournit des matices de projection perspectives et parallèles (orthographic) La caméra par défaut est toujours située à l’origine et pointe vers la direction des z négatifs

Positionne les objets dans la scène Formée par la concaténation de transformations simples glRotate(theta, x,y,z) glTranslate(x,y,z) glScale(x,y,z) L’ordre est important

glColor3f(1.0f, 0.0f, 0.0f); glVertex3f(0.0f, 1.0f, 0.0f); glTranslatef(0.0f, 0.0f, -10.0f); glRotatef(45.0f, 0.0f, 1.0f, 0.0f); glBegin(GL_TRIANGLES); glColor3f(1.0f, 0.0f, 0.0f); glVertex3f(0.0f, 1.0f, 0.0f); glColor3f(0.0f, 1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 0.0f); glColor3f(0.0f, 0.0f, 1.0f); glVertex3f(1.0f, -1.0f, 0.0f); glEnd();

Projection orthographique Projection parallèle, le volume de vue est un cube glOrtho(left, right, bottom, top, front, back)

Projection perspective glFrustum, gluPerspective Le volume de vue et de découpage est une pyramide

gluLookAt spécifie gluLookAt(10,10,10,1,2,3,0,0,1); La position de la caméra (position de l’oeil) Le point visé (look at) L’orientation de la caméra (vecteur vertical, up) gluLookAt(10,10,10,1,2,3,0,0,1); Oeil en (10,10,10) Point visé (1,2,3) Up (0,0,1)

//Projection glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(60, 1, 1, 100); gluLookAt(10,10,10,1,2,3,0,0,1) //Transformations sur les objets glMatrixMode(GL_MODELVIEW) glLoad Identity(); glTranslate(1,1,1); glRotatef(90, 1,0,0); DrawObject();

glPushMatrix retourne une copie du sommet de la matrice glPopMatrix détruit le sommet de la matrice

En C, si l’on déclare la matrice m[4][4], l’élément m[I][j] est sur la ième ligne et la jème colonne. Avec OpenGL, l’élément m[I][j] correspond à la ième colonne et à la jème ligne de la matrice de transformation. Pour éviter les erreurs une méthode consiste à déclarer les matrices sous la forme m[16]

m0 m4 m8 m12 m1 m5 m9 m13 m2 m6 m10 m14 m3 m7 m11 m15