GRAPHISME PAR ORDINATEUR

Slides:



Advertisements
Présentations similaires
GRAPHISME PAR ORDINATEUR
Advertisements

Les dessins techniques
Géométrie Différentielle – Cubiques d'Hermite Introduction aux courbes paramétriques et à la géométrie différentielle.
22/10/2011 Inkscape Le dessin vectoriel à portée de tous INKSCAPE Aru2L 22 octobre 2011.

Réalisé par R. MARRAKHA. KHAYAR Khayar-marrakh Université Hassan-II Faculté des sciences Aïn chock Casablanca Professeurs assistants - département de physique.
Grilles 3D Les grilles 3D. Grilles 3D Plan ● Les grilles 3D – Grille 3D ? – Reconstruction de continuité C 0 – Octree min/max – Visualisation d'une iso-surface.
Sommaire : I.Introduction II.Fibre optique (pr é sentation g é n é ral de la fibre) III.Les techniques de transmissions -Multiplexage temporelle (TDM)
Calcul de probabilités
Voyage dans le logiciel de présentation de la suite libre.
LUMIERE ET PHOTOMETRIE
Créer et optimiser un diaporama
La Photo Les bases techniques
Les lentilles minces convergentes
COURS DE CRISTALLOGRAPHIE
Synthése additive et soustractive de la lumière
Visite guidée - session 2
Chapitre 2 La réflexion.
Importation des données satellite: SST/SSS (NetCDF; HDF)
Javadoc et débogueur Semaine 03 Version A16.
L'oeil, système optique.
On se déplace 12m [O] ensuite 8m [N]. Quel est notre déplacement?
Plans d’expériences: Plans factoriels
Chapitre 7: L’algèbre des vecteurs
dans le triangle rectangle
Homographies Patrick Hébert & Denis Laurendeau (Dernière révision : septembre 2016)
La perspective Les projections parallèles et centrales.
Chapitre 4 : Couleur des objets Les objectifs de connaissance :
GRAPHISME PAR ORDINATEUR
INTELLIGENCE ARTIFICIELLE
GRAPHISME PAR ORDINATEUR
UNITÉ DE FORMATION PAR APPRENTISSAGE DU LYCEE VIRGINIA HENDERSON
GRAPHISME PAR ORDINATEUR
GRAPHISME PAR ORDINATEUR
Stabilité des porteurs horizontaux (Poutres)
Miroirs Rédacteur : J.Mourlhou Lycée Toulouse-Lautrec Toulouse.
Chantal LeBel, Cégep Limoilou
Création Et Modification De La Structure De La Base De Données
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II
GRAPHISME PAR ORDINATEUR
Le code à l’école Qu’est-ce que le codage informatique ?
Formation sur les bases de données relationnelles.
Chantal LeBel, Cégep Limoilou
SIMPLIFICATION D’UNE RACINE CARREE.
LA PHOTO Lumière, ouverture, vitesse, sensibilité.
Révision sur la lumière
Transformation linéaires
La projection orthogonale à vues multiples
La force.
Un ordinateur avec un œil !!
03- Evaluation Access 2003 Cette évaluation comporte des QCM (1 seule réponse) et des Zones à déterminer dans des copies d’écran.
Chapitre 4: Les graphiques
Présentation 9 : Calcul de précision des estimateurs complexes
MATHÉMATIQUES FINANCIÈRES I
Travailler une luminance en FITS sur photoshop
Reconnaissance de formes: lettres/chiffres
Logiciel de présentation
Projection, cosinus et trigonométrie.
SUJETS SPÉCIAUX EN INFORMATIQUE II
GEOMETRIE VECTORIELLE
Programmation Scratch
GRAPHISME PAR ORDINATEUR
Conseils techniques pour votre PPT
Audrey Gervereau, Métis, stage M2
Smart Graphic Layout SUJET déclaration
INTELLIGENCE ARTIFICIELLE
Fonctions.
STS Web Services libres Gérer les services libres
Ahmed katif La lumière et les couleurs La dispersion de la lumière -l’arc- en- ciel est un phénomène naturel qu’on observe parfois dans le ciel ? Comment.
Activités mentales rapides Faire le point sur le cours
Transcription de la présentation:

GRAPHISME PAR ORDINATEUR SIF-1032

Contenu du cours 9 Création de SPOTLIGHT Ombrage Transparence Création de l’ombrage par projection Transparence Composition d’images (blending) Effet de brouillard (Fog) Lectures (Chapitres 8,10) Site NeHe: Leçon 28 (Ombrage), Leçon 08 (Transparence) http://www.gametutorials.com/Tutorials/opengl/OpenGL_Pg3.htm (Fog) Transparence avec OpenGL 3.3+

Rendu de surfaces

Rendu de surfaces et ombrages

// Specific spot effects Création de SPOTLIGHT Un "spotlight" est une lumière qui éclaire à l'intérieur d'un cône délimitant la zone éclairée: par exemples, un laser ou une lumière de rue. Les lignes suivantes ont été ajoutées au projet Spot, chap. 6, de la Super Bible: // Specific spot effects // Cut off angle is 60 degrees glLightf(GL_LIGHT0,GL_SPOT_CUTOFF,60.0f); // Fairly shiny spot glLightf(GL_LIGHT0,GL_SPOT_EXPONENT,100.0f);

Création de SPOTLIGHT Dans les lignes précédentes, l'angle (60o) est l'ouverture du cône d'éclairage. GL_SPOT_EXPONENT (1 à 128) est l'exposant à donner au cosinus de l'angle entre la direction de l'éclairage et la position d’un sommet d’un objet par rapport à la position de la lumière. 128 correspond à faisceau concentré. Le projet Spot montre aussi comment changer la position de la lumière et modifie avec un menu contextuel la finesse de la discrétisation d'une sphère (nombre de divisions en longitude et en latitude). La position de la lumière est montrée avec un cône rouge, et une lumière jaune. Cette lumière éclaire une sphère au centre avec plus ou moins de facettes.

Création de SPOTLIGHT Voici le résultat avec un rendu "flat shading" et une faible discrétisation de la sphère (VL Tess):

Création de SPOTLIGHT Voici le résultat avec un rendu "smooth shading" et une faible discrétisation de la sphère:

Création de SPOTLIGHT Voici le résultat avec un rendu "smooth shading" et une meilleure discrétisation de la sphère:

Création de SPOTLIGHT Code de la fonction RenderScene():

Création de SPOTLIGHT Code de la fonction RenderScene():

Création de SPOTLIGHT Dans le code précédent, on sauvegarde la matrice courante (model view) avec glPushMatrix(), on positionne ensuite la lumière et on ramène la matrice originale avec glPopMatrix(). Aussi glPushAttrib() permet de sauvegarder l'état de la lumière avant de modifier l'éclairage, puis on utilise glPopAttrib() pour ramener l'éclairage à son état normal. Comme OpenGL applique les transformations dans l’ordre inverse, la position et la direction de la lumière subissent une rotation en X suivie par une rotation en Y

Positionnement initiale de la lumière: Création de SPOTLIGHT Positionnement initiale de la lumière: glRotatef(yRot, 0.0f, 1.0f, 0.0f); glRotatef(xRot, 1.0f, 0.0f, 0.0f); glLightfv(GL_LIGHT0,GL_POSITION,lightPos); glLightfv(GL_LIGHT0,GL_SPOT_DIRECTION,spotDir); Ensuite, un cône rouge et une petite sphère sont dessinés et positionnés pour représenter la lumière. glTranslatef(lightPos[0],lightPos[1],lightPos[2]);

Ombrage L’ajout de l’ombrage à une scène améliore grandement son réalisme L’ombrage est produit lorsqu’un objet masque d’autres objets empêchant ainsi la lumière de les illuminer

Ombrage Création de l’ombrage par projection La création de l’ombrage est basée sur la projection des sommets d’un polygone dans un plan de référence (sol) Nous cherchons alors la position des sommets projetés dans le plan de référence Sommet projeté

Ombrage Création de l’ombrage par projection La position des sommets projetés est donnée par:

Ombrage Création de l’ombrage par projection D’où provient l’expression de V’ Ce que nous cherchons en fait c’est l’intersection entre la droite projetée dans la direction du vecteur (V-S) à partir du point S (source lumineuse) et le plan définit par un point A et sa normale n Utilisons alors la forme paramétrée pour définir la droite passant par le point S dans la direction (V-S)

Ombrage Création de l’ombrage par projection Droite L(t) L(t)

Ombrage Création de l’ombrage par projection Maintenant, définissons le plan de projection définit par deux points P et B dans ce plan et la normale n au plan Plan définit dans sa forme normale  P

Ombrage Création de l’ombrage par projection Plan définit dans sa forme normale  P

Ombrage Création de l’ombrage par projection Maintenant, cherchons l’intersection V’ (sommet V projeté)

Ombrage Création de l’ombrage par projection L’intersection V’ est déduite à l’aide des relations suivantes Dans le plan Sur la droite Sol’n de la dernière équation

Ombrage Création de l’ombrage par projection L’intersection V’ donnée sous forme matricielle

Ombrage Création de l’ombrage par projection Création d’ombrage avec OpenGL (Voir projet Shadow)

Ombrage Création de l’ombrage par projection Dans les figures précédentes, la lumière est représentée par un petit point lumineux. La position de la lumière est donnée par: GLfloat lightPos[] = { -75.0f, 150.0f, -50.0f, 0.0f }; Avec la 4ième composante w=0, la lumière est supposée à l'infini (comme le soleil), les 3 premières composantes correspondent alors à la direction de l’illumination. L’illumination est alors considérée parallèle donc l’ombrage des objets est projeté de façon orthographique. Cela veut dire que l'ombre de l'avion doit être de la même taille.

Ombrage Création de l’ombrage par projection Notez que la lumière étant à l'infini, le point jaune ne représente pas la position de la lumière, mais sa direction En fait, on ne devrait pas voir le point jaune, car la lumière est à l'infini. Si on remplace la composante w=0 par w=1, dans: GLfloat lightPos[] = { -75.0f, 150.0f, -50.0f, 1.0f };

Ombrage Création de l’ombrage par projection

Ombrage Création de l’ombrage par projection La position de la lumière est alors celle montrée par le point jaune. On remarque que l'ombre est 2 fois plus grand que l'avion. Ceci découle du même effet découlant des triangles semblables, comme décrit dans la transformation en perspective. La lumière est à 150 en Y. L'avion est localisée à 0 en Y (au milieu) et le plancher en vert est à -150 en Y.

Ombrage (Shadow Matrix)

Ombrage Ajout dans SetupRC()

Ombrage Ajout dans RenderScene()

Ombrage Fonction DrawJet()

Transparence Une surface transparente réfléchie et transmet la lumière La contribution de la lumière transmise est fonction du degré de transparence de la surface, et de la présence d’une source lumineuse ou d’une surface illuminée en arrière de la surface transparente

Transparence Pour obtenir des effets de transparence réaliste nous devons considérer la réfraction de la lumière Quand la lumière incidente frappe une surface transparente, une partie est réfléchie et une autre est réfractée selon les propriétés de réfraction de la surface (indice de réfraction)

Transparence Surface d’un verre (Par ray-tracing)

Transparence Trajet de la lumière Un rayon de lumière émergeant d’une surface en verre voyage selon un axe parallèle à la direction incidente

Transparence Pour éviter une trop grande complexité de calcul de la transparence, nous pouvons ignorer le déphasage du rayon dans la surface transparente (i=r) (1-kt) est le coefficient d’opacité kt est le coefficient de transparence  = (1-kt) est le coefficient d’opacité (1-)Itrans Irefl

Transparence Utilisation de la transparence avec OpenGL (Voir projet blendpot, fonction Redraw())

Transparence Utilisation de la transparence avec OpenGL (Voir projet blendpot, fonction Redraw()) (Rd, Gd, Bd) (Rs, Gs, Bs)

Transparence Utilisation de la transparence avec OpenGL (Voir projet blendpot, fonction Redraw()) La fonction glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA) permet de superposer un objet transparent d’opacité  (GL_SRC_ALPHA) sur un autre objet d’opacité (1- ) (GL_ONE_MINUS_SRC_ALPHA) . Cette fonction indique à OpenGL de faire le calcul de couleur suivant

Transparence Utilisation de la transparence avec OpenGL (Voir projet blendpot)

Transparence Utilisation de la transparence avec OpenGL (Voir projet blendpot, fonction Redraw()) Pas de transparence L’opacité est négligée

Transparence Utilisation de la transparence avec OpenGL (Voir projet blendpot, fonction Redraw()) Transparence avec opacité maximale de l’objet source

Transparence Utilisation de la transparence avec OpenGL (Voir projet blendpot, fonction Redraw()) Pas de transparence L’opacité de l’objet source (avant plan) est nulle

Fog Essentiellement, l’effet de brouillard consiste à additionner (mélanger) une couleur prédéfinie aux sommets des polygones de notre scène ou aux textures et ce en fonction de la distance par rapport à l’observateur Type de brouillard GL_LINEAR: permet aux objets s’éloignant de l’observateur de se fondre graduellement à l’arrière plan GL_EXP: permet l’ajout de brouillards épais ou des nuages GL_EXP2: permet l’ajout de fumée ou de smog La commande OpenGL, glFogi() permet de spécifier le type de brouillard glFogi(GL_FOG_MODE, GL_EXP2);

Fog Ensuite, nous devons choisir la couleur associée au brouillard qui sera mélangée à notre scène. Le choix de cette couleur est fait par la commande glfogfv() ou glfogiv() GLFLOAT fog_color[4] = {r, g, b, a}; glFogfv(GL_FOG_COLOR, fog_color); GLINT fog_color[4] = {r, g, b, a}; glFogiv(GL_FOG_COLOR, fog_color); Pour épaissir le brouillard nous pouvons utiliser la commande: glFogf(GL_FOG_DENSITY, density); // ex: density = 0.25

Fog Pour spécifier la profondeur de l’effet de brouillard nous devons utiliser les appels suivants: glFogf(GL_FOG_START, 0); // debut du brouillard glFogf(GL_FOG_END, 10.0f); // fin du brouillard Nous pouvons aussi exiger que le calcul du brouillard soit fait sur chaque pixel au lieu de chaque sommet. Il faut alors utiliser la commande: glHint(GL_FOG_HINT, GL_NICEST); glHint(GL_FOG_HINT, GL_DONT_CARE); // OpenGl peut // choisir la qualité du fog qu’il veut Pour activer le mode fog il faut faire l’appel: glEnable(GL_FOG);

Fog (projet Fog_OGL)

Fog (projet Fog_OGL)

Fog (projet Fog_OGL)

Fog (projet Fog_OGL)

Fog (projet Fog_OGL)

Ombrage avec OpenGL 3.3+ Voir le site: http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-16-shadow-mapping/ Voir le code: http://code.google.com/p/opengl-tutorial-org/source/browse/#hg%2Ftutorial16_shadowmaps

Ombrage avec OpenGL 3.3+ L’algorithme de création de l’ombrage consiste: La scène est générée en utilisant la lumière, la profondeur de chaque fragment est calculée La scène est régénérée mais avec un test pour savoir si le fragment est dans l’ombrage

Ombrage avec OpenGL 3.3+ L’algorithme de création de l’ombrage basé sur la notion de projection de texture (analogie avec le projecteur de diapositives

Ombrage avec OpenGL 3.3+ L’algorithme de création de

Ombrage avec OpenGL 3.3+ La shadow map est stockée dans une texture ( voir le code du programme: http://code.google.com/p/opengl-tutorial-org/source/browse/tutorial16_shadowmaps/tutorial16_SimpleVersion.cpp

Ombrage avec OpenGL 3.3+ La shadow map est créée par une projection orthographique

Ombrage avec OpenGL 3.3+ Vertex Shader (ShadowMapping_SimpleVersion.vertexshader)

Ombrage avec OpenGL 3.3+ Fragment Shader (ShadowMapping_SimpleVersion.fragmentshader)

Ombrage avec OpenGL 3.3+ Texture (shadow map) générée

Ombrage avec OpenGL 3.3+ La matrice depthBiasMVP permet de transformer les coordonnées d’un fragment en coordonnées de texture du shadow map (ex: 0, 0 fragment centré devient 0.5, 0.5 centre de la texture shadow map)

Ombrage avec OpenGL 3.3+ Sélection des textures Texture contenant les propriétés de surfaces Texture contenant la carte de profondeur

Ombrage avec OpenGL 3.3+ Critère de visibilité texture( shadowMap, ShadowCoord.xy ).z est la distance entre la lumière et l’objet le plus proche générant de l’ombrage ShadowCoord.z est la distance entre la lumière et le fragment actuel

Ombrage avec OpenGL 3.3+ Calcul de la couleur en considérant l’ombrage

Ombrage avec OpenGL 3.3+ Résultats

Ombrage avec OpenGL 3.3+ Résultats (corrigé)

Transparence avec OpenGL 3.3+ Voir le site: http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-10-transparency/ Voir le code: http://code.google.com/p/opengl-tutorial-org/source/browse/tutorial10_transparency/tutorial10.cpp Modifications à apporter pour implémenter la transparence

Transparence avec OpenGL 3.3+ Sélection de la fonction de gestion de la profondeur et désactivation du culling Activation de la transparence et sélection de la fonction de transparence

Transparence avec OpenGL 3.3+ Fragment shader

Transparence avec OpenGL 3.3+ Application de la transparence