GRAPHISME PAR ORDINATEUR

Slides:



Advertisements
Présentations similaires
Formation Niv. 4 LA VISION DANS L'EAU
Advertisements

Z y x Repère des objets (repère de modélisation) x z y Repère du monde.
The Reyes Image Rendering Architecture
Synthèse d’images.
Modèles empiriques d’éclairement
IMAGIS-GRAVIR / IMAG Rendu de forêts en temps-réel iMAGIS / GRAVIR Franck Sénégas DEA IVR Tuteur: Fabrice Neyret.
Etude d’un instrument d’observation astronomique
Lumière et couleurs.
Les lois de la réflexion et la formation d’images par les miroirs
12 novembre 2012 Grégory Petit
RETOUCHE DE PHOTOS ET PEINTURE AVEC LES STYLES DE CALQUE
Vérification d ’une compensation astigmate avec les cylindres croisés par retournement (CCR) CCR Paul JEAN.
ANIMATION PAR JEUX DE LUMIERE
Réalisation dun travail concret avec des matrices Afficher un objet 3D sur une surface Lui appliqué des transformations Le voir se transformer suivant.
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.
GRAPHISME PAR ORDINATEUR
B. Les messages de la lumière
Modélisation géométrique à l’aide d’un maillage
IFT3730: Infographie 3D Illumination locale
Chapitre 8: Lentilles minces
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
Découpage des objets selon le volume de vue
Éclairage en OpenGL.
Messages de la lumière 1. Le prisme : un système dispersif
l’algorithme du simplexe
Transformations visuelles des objets
Géométrie épipolaire (deux vues)
Les mouvements sur la Sphère
Powerpoint Powerpoint est un logiciel de présentation du
Cour : Microsoft excel FACULTE DES SCIENCES AGADIR
GRAPHISME PAR ORDINATEUR
La réflexion de la lumière
Action La réfr.
Physique 3 Vibrations linéaires et ondes mécaniques
Synthèse d’images 2. illumination
OPTIQUE GÉOMETRIQUE.
Daniel Lafontaine CRIS 2014
Les images de synthèses Duprat Anatole. Les images de synthèses consistent en la création assistée par ordinateur, d'images numériques. Il existe différentes.
Travaux Pratiques de Physique
OBSERVER COULEURS ET IMAGES.
Création en images de Synthèse Modèles de rendu d’une scène 3D
GRAPHISME PAR ORDINATEUR
LES LENTILLES CONVERGENTES
P O V est l'acronyme de Persistence Of Vision appelé aussi Pov-Ray pour Persistence Of Vision Ray-Tracer.
GRAPHISME PAR ORDINATEUR
Projet Lancer de Rayons
Les bases de la modélisation Primitives simples et CSG.
CHAPITRE III Calcul vectoriel
Credits : Joëlle Thollot, Hector Briceño, Edmond Boyer
GRAPHISME PAR ORDINATEUR SIF Contenu du cours 10 Textures –Définir la texture –Superposition d’une texture sur une surface plane –Superposition.
Les lois de la réflexion et les images formés dans des miroirs simples
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.
Centre Régional des Métiers de l‘Education et de la Formation
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.
Synthèse d’images Introduction Doc. non diffusé En cours d’élaboration.
Les propriétés de la lumière visible
GRAPHISME PAR ORDINATEUR
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
FLASH MX : séance 1 Sandrine Rabin Nicolas Mollet SI28.
Environnement Flash MX
UNIVERS – chap 8 REFRACTION DE LA LUMIERE.
GRAPHISME PAR ORDINATEUR
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)

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:

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)