GRAPHISME PAR ORDINATEUR SIF-1032. Contenu du cours 8 Rendu de surfaces –Modèles de rendu de surfaces –Illumination de la scène –Sources lumineuses –Composante.

Slides:



Advertisements
Présentations similaires
( Application Programming Interface)
Advertisements

Tous droits réservés. Reproduction intégrale ou partielle interdite sans autorisation écrite de la partdu titulaire des droits dauteur. Institut de Formation.
La réflexion de la lumière
The Reyes Image Rendering Architecture
Efficient Simplification of Point-Sampled Surfaces
Synthèse d’images.
Modèles empiriques d’éclairement
Lumière et couleurs.
Programmation des logiciels infographiques interactifs 2D et 3D, et le OpenGL.
Chapitre 7: Miroirs sphériques
Transformations de visualisation en OpenGL
Miroirs courbes Miroirs concaves Miroirs convexes Rayons
1. LIER ANATOMIE ET COULEURS PRIMAIRES
Électricité et magnétisme (203-NYB) Chapitre 2: Le champ électrique
VOXPOP Questions de concepts en vrac…. Voxpop Deux sphères uniformément chargées sont fixées solidement à des rondelles (tout en étant électriquement.
SUJETS SPÉCIAUX EN INFORMATIQUE I PIF Contenu du cours Transformations géométriques des objets –Transformations 2D –Transformations entre systèmes.
Modélisation géométrique à l’aide d’un maillage
IFT3730: Infographie 3D Illumination locale
Nicolas Holzschuch iMAGIS-GRAVIR/IMAG
Chapitre 4: Objets et Images
Images synthètiques de haute qualité
OBJETS ÉLÉMENTAIRES DANS L’ESPACE À TROIS DIMENSIONS
IFT3730: Infographie 3D Textures
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
SUJETS SPÉCIAUX EN INFORMATIQUE I
La polarisation Section 7.9.
Découpage des objets selon le volume de vue
Électricité et magnétisme (203-NYB) Chapitre 2: Le champ électrique
PROTOTYPE D’UN PROGRAMME ÉCRIT EN C++ BASÉ SUR OPENGL
Éclairage en OpenGL.
Chapitre 7: L’optique physique II
IFT3355: Infographie Illumination locale
GRAPHISME PAR ORDINATEUR
La réflexion de la lumière
Synthèse d’images 2. illumination
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.
GRAPHISME PAR ORDINATEUR
Création en images de Synthèse Modèles de rendu d’une scène 3D
GRAPHISME PAR ORDINATEUR
Chapitre 4 Réflexion et réfraction de la lumière
TP2 synthèse additive, synthèse soustractive
GRAPHISME PAR ORDINATEUR
Projet Lancer de Rayons
La Science – 8ème année Unité 2- L’optique
Par Youssef Mardini et Mahmoud Samhat École La Dauversière, Montréal, juin 2000 Validation du contenu et r é vision linguistique: St é phane LamarcheSt.
L’étude du mouvement.
Électricité et magnétisme (203-NYB) Chapitre 2: Le champ électrique
CHAPITRE III Calcul vectoriel
Électricité et magnétisme (203-NYB) Chapitre 4: Le potentiel électrique Le champ électrique donne la force agissant sur une unité de charge en un point.
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.
Equipe SIMM Signaux et Image Multisources Multicomposantes
Synthèse d’images Introduction Doc. non diffusé En cours d’élaboration.
Architecture et Fonctionnement d’un GPU Géométrie Rendu.
Sciences 8 Unité 2: L’Optique
Visualisation des flots optiques en 3D
GRAPHISME PAR ORDINATEUR
GRAPHISME PAR ORDINATEUR
Illumination des objets
É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.
GRAPHISME PAR ORDINATEUR SIF Contenu du cours 7 Introduction à l’illumination avec XNA Voir le tutoriel:
Électricité et magnétisme (203-NYB) Chapitre 2: Le champ électrique
Électricité et magnétisme (203-NYB) Chapitre 2: Le champ électrique.
Transcription de la présentation:

GRAPHISME PAR ORDINATEUR SIF-1032

Contenu du cours 8 Rendu de surfaces –Modèles de rendu de surfaces –Illumination de la scène –Sources lumineuses –Composante spéculaire –Surfaces cachées Lectures (Chapitre 8)

Rendu de surfaces Les méthodes de rendu de surfaces permettent d’ajouter les surfaces, leurs propriétés ainsi que leurs interactions avec les sources lumineuses Rendu uniforme (flat shading)

Rendu de surfaces Rendu lisse (Smooth shading)Rendu lisse avec composante spéculaire

Rendu de surfaces Modèles de rendu de surfaces –L ’utilisation de la commande glColor() sans modèle de rendu de surface évolué, permet d ’établir la couleur courante avec laquelle les objets sont dessinés (lignes, points, polygones) –glColor (r,g,b,alpha); x: nombre d ’arguments du glColor (3 ou 4) t: type des arguments (b, d, f, i …) –glColor3f(1.0,0.0,0.0) (ROUGE) –glColor3ub(0,255,0) (VERT)

La commande glColor() permet d ’établir la couleur courante utilisée pour dessiner chaque sommet d ’un polygone, les droites qui forment son contour et sa surface, et ce avec la couleur spécifiée avec la commande glColor() Si nous spécifions une couleur différente à chaque sommet et un modèle de rendu lisse (smooth shading), la surface d ’un polygone sera alors colorée avec un dégradé de couleur Pour une droite, sa couleur sera dégradée linéairement entre les couleurs des extrémités Rendu de surfaces

Exemple Triangle (voir projet Triangle) Rendu de surfaces

Exemple Triangle (voir projet Triangle) Rendu de surfaces

Exemple Triangle (voir projet Triangle, GL_FLAT) Rendu de surfaces

Exemple Jet (voir projet Jet, couleur) Rendu de surfaces

Illumination de la scène –Pour permettre l ’illumination de la scène il faut inclure la commande: glEnable(GL_LIGHTING); –Indique à OpenGL d ’utiliser les propriétés matérielles et d ’illumination pour déterminer les couleurs de chaque sommet des polygones –Sans GL_LIGHTING, les objets sont sombres

Rendu de surfaces Illumination de la scène –Exemple Lighted Jet (projet Litjet)

Rendu de surfaces Illumination de la scène –Exemple Lighted Jet (projet Litjet)

Rendu de surfaces Illumination de la scène –Établir le modèle d ’illumination Lumière ambiante (Voir projet Ambient) –Permet d ’établir l ’intensité RGB de la lumière ambiante Modèle d ’illumination, intensité RGB ambiante

Rendu de surfaces Illumination de la scène –Établir le modèle d ’illumination Lumière ambiante (Exemple Ambient Lighted Jet, projet Ambient) Lumière ambiante d ’intensités différentes, sans propriétés matérielles

Rendu de surfaces Illumination de la scène –Établir le modèle d ’illumination Lumière ambiante (Exemple Ambient Lighted Jet, projet Ambient) Lumière ambiante d ’intensités différentes, avec propriétés matérielles

Rendu de surfaces Illumination de la scène –Établir les propriétés matérielles des surfaces Le color tracking est le plus souvent utilisé pour établir les propriétés des surfaces La commande glColor() permet alors d ’établir les propriétés matérielles des surfaces La commande glEnable(GL_COLOR_MATERIAL) permet d ’établir le mode color tracking La commande: glColorMaterial(GL_FRONT,GL_AMBIENT_AND_DIFFUSE), permet d’établir les propriétés de réflexion ambiante et diffuse des portions frontales des surfaces. Ces commandes indiquent que les propriétés ambiante et diffuse des surfaces seront déterminées par les coefficients K d et K a passés en arguments de la commande glColor(). Dans le cas du projet Ambient, le coefficient K a est fixé avec: glColor3ub(128, 128, 128);

Rendu de surfaces Illumination de la scène –Établir les propriétés matérielles des surfaces (Exemple Ambient Lighted Jet, projet Ambient)

Rendu de surfaces Illumination de la scène –Établir les propriétés matérielles des surfaces (Exemple Ambient Lighted Jet, projet Ambient) K a = K d = (0,1,0)

Rendu de surfaces Illumination de la scène –Établir les propriétés matérielles des surfaces Source ambiante à (1.0, 1.0, 1.0, 1.0)

Rendu de surfaces Illumination de la scène –Établir les propriétés matérielles des surfaces Source ambiante à (0.5, 0.5, 0.5, 1.0)

Rendu de surfaces Source lumineuse –L’ajout de sources lumineuses permet de reproduire des scènes avec beaucoup plus de réalisme –Une source lumineuse possède une direction, une position, et une intensité RGB –OpenGL supporte huit sources lumineuse pouvant être localisées à n ’importe quelle position dans la scène et même à l ’infini (rayons lumineux parallèles)

Rendu de surfaces Source lumineuse –Exemple Lighted Jet (voir projet Litjet)

Rendu de surfaces Source lumineuse –Exemple Lighted Jet (voir projet Litjet, pas de lumière)

Rendu de surfaces Source lumineuse –Exemple Lighted Jet (voir projet Litjet)

Rendu de surfaces Source lumineuse –Spécification de la position d’une lumière: GLfloat lightPos[] = { 0.0f, 100.0f, 0.0f, 0.0f }; –Notez la composante w=1 (4 ième argument) de la position. w=1 indique une lumière localisée, avec atténuation, omni-directionnelle. Dans ce cas w=0, on obtient une lumière à l'infinie, directionnelle. –Une lumière (GL_LIGHT0) est ensuite ajoutée: glLightfv(GL_LIGHT0,GL_AMBIENT, ambientLight); –Cette lumière est ensuite positionnée: glLightfv(GL_LIGHT0,GL_POSITION, lightpos);

Rendu de surfaces Source lumineuse –Exemple Lighted Jet (voir projet Litjet)

Rendu de surfaces Source lumineuse –Exemple Lighted Jet (voir projet Litjet)

Rendu de surfaces Source lumineuse –Exemple Lighted Jet (voir projet Litjet)

Rendu de surfaces Source lumineuse –Le calcul de l ’intensité lumineuse diffuse doit tenir compte de l ’orientation de chaque surface (polygone) et de la position de la source lumineuse

Rendu de surfaces Source lumineuse –Exemple Lighted Jet (voir projet Litjet) La fonction calcNormal() permet de calculer la normale d ’un polygone et ce à partir de trois de ces sommets donnés en sens anti-horaire

Rendu de surfaces Source lumineuse –Exemple Lighted Jet (voir projet Litjet)

Rendu de surfaces Source lumineuse –Exemple Lighted Jet (voir projet Litjet) glNormal3 (): permet de spécifier la normale d ’une surface et de l ’associée à un ou plusieurs sommets t: type des arguments (b, d, f, i, s, bv, dv, fv, …) glNormal3f(0.0f, -1.0f, 0.0f) glNormal3fv(normal) // normal est un vecteur

Rendu de surfaces Source lumineuse –Exemple Lighted Jet (voir projet Litjet)

Rendu de surfaces Composante spéculaire –Lorsque nous visualisons des surfaces métalliques il faut alors considérer ses propriétés de brillance (spéculaire)

Rendu de surfaces Composante spéculaire –Lorsque nous visualisons des surfaces métalliques il faut alors considérer ses propriétés de brillance (spéculaire)

Rendu de surfaces Composante spéculaire –Exemple Shiny Jet (voir projet Shinyjet) Spécification d ’une composante de lumière spéculaire Spécification des propriétés de réflexion spéculaire des surfaces Spécification de l ’exposant spéculaire (n s ) qui permet de déterminer l ’ouverture du faisceau lumineux spéculaire réfléchit

Rendu de surfaces Composante spéculaire –Exemple Shiny Jet (voir projet Shinyjet)

Rendu de surfaces Composante spéculaire –Une composante spéculaire (GL_SPECULAR) est ajoutée à la lumière. –Les lignes suivantes spécifient les propriétés spéculaires des surfaces: glMaterialfv(GL_FRONT, GL_SPECULAR,specref); glMateriali(GL_FRONT,GL_SHININESS,128); –La mesure "GL_SHININESS" doit être entre 0 et 128. Elle donne l’ouverture du faisceau réfléchis (point fortement lumineux), et 128 est le plus petit (concentré).

Rendu de surfaces Composante spéculaire –Exemple Shiny Jet (voir projet Shinyjet)

Rendu de surfaces Composante spéculaire –Exemple Shiny Jet (voir projet Shinyjet)

Rendu de surfaces Composante spéculaire –Exemple Shiny Jet (voir projet Shinyjet)

Rendu de surfaces Composante spéculaire –Exemple Shiny Jet (voir projet Shinyjet)

Rendu de surfaces Composante spéculaire –Dans le projet Shiny Jet, les surfaces des triangles sont grandes, la normale est donc constante sur ces surfaces, donc le calcul spéculaire est constant sur toute la grandeur de ces surfaces. –Nous pouvons observer néanmoins des variations d'intensités, qui peuvent être dues à l'atténuation. L'intensité de l'éclairage dépend aussi de la distance entre la position de la lumière et la position des sommets. L’orientation du vecteur de réflexion R varie aussi avec la position. –L'effet spéculaire est plus évident dans le cas d'objets présentant beaucoup de surfaces courbes, comme des sphères ou une théière.

Rendu de surfaces Composante spéculaire –Normales pour les sommets Modifier les couleurs des sommets n'est pas toujours facile pour implémenter les effets de lumières comme le "smooth shading". Comme la couleur réfléchie au niveau de chaque sommet est déduite à partir de la normale de sa surface, nous pourrions alors donner une normale à chaque sommet, ce qui permettrait de varier les couleurs sur une surface planaire. En général, la normale donnée à un sommet serait la moyenne des normales des surfaces extérieures adjacentes (ou incidentes) à un sommet. C'est-à-dire, la moyenne des normales des facettes qui sont connexes à un sommet. Ceci améliore la visualisation en enlevant l'effet de transition brusque entre les facettes.

Rendu de surfaces Composante spéculaire –Exemple Shiny Jet (voir projet Shinyjet)

Rendu de surfaces Surfaces cachées –Exemple Shiny Jet (voir projet Shinyjet, sans surfaces cachées)

Rendu de surfaces Surfaces cachées –Exemple Shiny Jet (voir projet Shinyjet, sans surfaces cachées)

Rendu de surfaces Surfaces cachées –Exemple Shiny Jet (voir projet Shinyjet, sans surfaces cachées)

Rendu de surfaces Surfaces cachées –Exemple Shiny Jet (voir projet Shinyjet, sans surfaces cachées)

Détection des faces arrières (back face) –Cette méthode espace-objet est rapide et simple –Elle permet d’identifier les faces arrières (cachées) d’un polyèdre –Si nous connaissons la normale N d’une surface d’un polygone et V un vecteur dans la direction de visuali- sation –La surface (face) du polygone sera cachée si

Détection des faces arrières (back face) –Si l’objet est déjà en coordonnées de projection et que V = (0,0,V z ) – où C est la composante en z de la normale N – Le signe de C permet alors de déterminer la visibilité d’un polygone

Détection des faces arrières (back face) –Avec un système de visualisation dont la direction de visualisation est la direction négative sur l’axe Z v une surface d’un polygone est cachée si C  0 –Cette méthode est aussi efficace pour une scène avec plusieurs polyèdres non superposés

Détection des faces arrières (back face) –Calcul de la normale N à un plan en utilisant trois sommets d’un plan (x 1,y 1,z 1 ), (x 2,y 2,z 2 ) et (x 3,y 3,z 3 ) Calcul des coefficients A, B, C et D de l’équation d’un plan Déduire N

Méthode tampon-profondeur (depth buffer) –Cette méthode espace-image est basée sur la compa- raison des profondeurs des surfaces à chaque position dans le plan de projection –Cette méthode est aussi appelée tampon-z (z-buffer) puisque les profondeurs sont mesurées sur l’axe z du système de coordonnées de visualisation –Chaque surface de la scène est traitée séparément point à point (pixel) –Avec les coordonnées de projection de chaque objet, les coordonnées (x,y,z) de leurs surfaces correspondent à la projection orthographique d’un point (x,y) sur le plan de visualisation

Méthode tampon-profondeur (depth buffer) –Pour chaque position (x,y), la profondeur des surfaces des objets peut être comparée par la coordonnée z –L’intensité (couleur) de la surface la plus proche à chaque point (x,y) est conservée pour l’affichage

Méthode tampon-profondeur (depth buffer) –Algorithme depth-buffer Initialisation des tampons de profondeur et d’intensité depth(x,y) = Z back refresh(x,y) = Ibackgroud Pour chaque position (x,y) de chaque surface polygonale –Calculer la profondeur z –Si z > depth(x,y) Alors depth(x,y) = z refresh(x,y) = Isurface(x,y) Affichage du tampon refresh(x,y) –La profondeur d’un point de position (x,y) sur une surface est calculée par