algorithmique et programmation -...

61
Venceslas BIRI Venceslas BIRI LIGM LIGM Université Paris-Est Marne-La-Vallée Université Paris-Est Marne-La-Vallée Infographie 3D Infographie 3D

Upload: phungtu

Post on 14-Sep-2018

241 views

Category:

Documents


2 download

TRANSCRIPT

Venceslas BIRIVenceslas BIRILIGMLIGMUniversité Paris-Est Marne-La-ValléeUniversité Paris-Est Marne-La-Vallée

Infographie 3DInfographie 3D

2

Concept du coursConcept du cours

Ce que vous apprendrezCe que vous apprendrez– TD machineTD machine

• Modélisation d'objetModélisation d'objet• Modélisation et visualisation de scèneModélisation et visualisation de scène• Création d'IHM et de moteur 3D simpleCréation d'IHM et de moteur 3D simple

– Cours avant chaque TDCours avant chaque TD• Outils mathématiques de l'imageOutils mathématiques de l'image• Fondement de la synthèse d'imagesFondement de la synthèse d'images• Le principe général de la création d’une image de Le principe général de la création d’une image de

synthèsesynthèse

3

Concept du coursConcept du cours

Ce que vous n'apprendrez pasCe que vous n'apprendrez pas– Les logiciels de modélisation 3DLes logiciels de modélisation 3D

• 3DSmax, Maya, Blender …3DSmax, Maya, Blender …• Vu dans d'autres coursVu dans d'autres cours

– Certaines techniques temps réelsCertaines techniques temps réels– Les algorithmes d'illumination globale & Les algorithmes d'illumination globale &

techniques avancéestechniques avancées

– La conception artistiqueLa conception artistique

4

Concept du coursConcept du cours

Évaluation : selon mon humeurÉvaluation : selon mon humeur– TD (TP) à rendreTD (TP) à rendre

• Selon mon humeur du chargé de TDSelon mon humeur du chargé de TD• Au bout des 2h ou « travaux à la maison »Au bout des 2h ou « travaux à la maison »

– ProjetProjet– Examen finalExamen final

• Peu probable mais on ne sait jamaisPeu probable mais on ne sait jamais

Proposition non contractuelle Proposition non contractuelle

Venceslas BIRIVenceslas BIRILIGMLIGMUniversité Paris-Est Marne-La-ValléeUniversité Paris-Est Marne-La-Vallée

Infographie 3DInfographie 3D

IntroductionIntroduction

6

Plan du coursPlan du cours

I.I. IntroductionIntroduction

1.1. État des lieuxÉtat des lieux

2.2. La réalitéLa réalité

3.3. Domaine et applicationDomaine et application

4.4. Les mathématiques de la 3DLes mathématiques de la 3D

Venceslas BIRIVenceslas BIRILIGMLIGMUniversité Paris-Est Marne-La-ValléeUniversité Paris-Est Marne-La-Vallée

La synthèse d'imagesLa synthèse d'images

IntroductionIntroduction

État des lieuxÉtat des lieux

8

État des lieuxÉtat des lieux

Historique de l’image numérique Historique de l’image numérique – La visualisation d'image apparaît tardivement dans La visualisation d'image apparaît tardivement dans

l'histoire de l'informatique (ligne année 50, année 60-70)l'histoire de l'informatique (ligne année 50, année 60-70)– Initialement, dessin vectorielInitialement, dessin vectoriel

• Recréation de dessin à partir d'outils (tracer une droite…)Recréation de dessin à partir d'outils (tracer une droite…)• À cause des problèmes de mémoire, de vitesse de À cause des problèmes de mémoire, de vitesse de

processeurprocesseur– Puis affichage d'images :Puis affichage d'images :

• Images de fondImages de fond• Dans les jeux : des sprites mobilesDans les jeux : des sprites mobiles

– Calcul direct de scènes 3D :Calcul direct de scènes 3D :• Quake est le premier jeu en 3D intégral (1997)Quake est le premier jeu en 3D intégral (1997)

– Apparition de véritables moteurs de rendu physiqueApparition de véritables moteurs de rendu physique• Half LifeHalf Life

9

État des lieuxÉtat des lieux

Évolution des cartes graphiquesÉvolution des cartes graphiques– Nvidia GeForce 256 : BubbleNvidia GeForce 256 : Bubble

– Nvidia GeForce 2 MX : Gothic ChapelNvidia GeForce 2 MX : Gothic Chapel

– Nvidia GeForce 3 Ti : ChameleonNvidia GeForce 3 Ti : Chameleon

– Nvidia GeForce 4 Ti : Tidepool / GrassNvidia GeForce 4 Ti : Tidepool / Grass

– Nvidia GeForce 5200 : DawnNvidia GeForce 5200 : Dawn

– Nvidia GeForce 5900 : Last Chance GazNvidia GeForce 5900 : Last Chance Gaz

– Nvidia GeForce 6600 : NaluNvidia GeForce 6600 : Nalu

– Nvidia GeForce 7800 : Mad Mood MikeNvidia GeForce 7800 : Mad Mood Mike

– ......

Un exemple : Island...Un exemple : Island...

10

État des lieuxÉtat des lieux

Quelques exemples sur l'état des lieux par Quelques exemples sur l'état des lieux par domainedomaine

Capacité temps réel :Capacité temps réel :– Rendu pur : qq millions de pointsRendu pur : qq millions de points– > 92 milliards de pixels> 92 milliards de pixels

Mais …Mais …– Confrontation Temps réel Confrontation Temps réel ⇔⇔ Réalisme Réalisme

jeu vidéojeu vidéo filmfilm applicationapplication

Venceslas BIRIVenceslas BIRILIGMLIGMUniversité Paris-Est Marne-La-ValléeUniversité Paris-Est Marne-La-Vallée

Infographie 3DInfographie 3D

IntroductionIntroduction

Partons de la réalitéPartons de la réalité

12

L'image "réelle"L'image "réelle"

La formation d'une image :La formation d'une image :

Interaction Interaction lumière matièrelumière matière

Interaction Interaction lumière matièrelumière matière

Source lumineuseSource lumineuseSource lumineuseSource lumineuse

La projectionLa projectionLa projectionLa projection

La perceptionLa perceptionLa perceptionLa perception

13

L'image "réelle"L'image "réelle"

Les sources de lumière :Les sources de lumière :– Sans elles, pas d'image !Sans elles, pas d'image !– Souvent contiennent toutes Souvent contiennent toutes

les couleursles couleurs– Naturelles ou artificiellesNaturelles ou artificielles

• Lumières naturelles : soleil, Lumières naturelles : soleil, ciels, feux …ciels, feux …

Difficile à quantifierDifficile à quantifier Riche en couleurRiche en couleur

• Lumières artificielles :Lumières artificielles : Mieux connuesMieux connues Caractéristiques Caractéristiques

quantifiablesquantifiables

14

L'image "réelle"L'image "réelle"

Interaction lumière matière :Interaction lumière matière :– Les rayons lumineux entre dans la matière !Les rayons lumineux entre dans la matière !– Certains ressortent, d'autres nonCertains ressortent, d'autres non

• Dépend de la longueur d'onde des rayonsDépend de la longueur d'onde des rayons• Donne la couleur à l'objet !Donne la couleur à l'objet !

AbsorptionAbsorption

RéflexionRéflexion

MatériauxMatériaux

15

L'image "réelle"L'image "réelle"

La projectionLa projection– Faire une image c'est projeter le monde sur un plan ou la Faire une image c'est projeter le monde sur un plan ou la

rétinerétine– Passage de la 3 dimension à la 2 dimensionPassage de la 3 dimension à la 2 dimension– Plusieurs façons de projeter :Plusieurs façons de projeter :

• Projection orthographiqueProjection orthographique

• Projection perspectiveProjection perspective

16

L'image "réelle"L'image "réelle"

L'espace des couleursL'espace des couleurs– Dans l'œil :Dans l'œil :

• Iris + corné + cristallinIris + corné + cristallin Appareil de prise de vueAppareil de prise de vue Appareil optiqueAppareil optique

• Rétine :Rétine : C'est la pellicule !C'est la pellicule ! Cônes : pour les Cônes : pour les

couleurscouleurs Bâtonnets : pour Bâtonnets : pour

l'intensité lumineusel'intensité lumineuse

• Cônes : 3 fonctions de Cônes : 3 fonctions de réceptionréception

– On travaille en RVB !On travaille en RVB !

17

Les images numériquesLes images numériques

Par échantillonnage de la Par échantillonnage de la réalité : photo numériqueréalité : photo numérique– La nature s’occupe :La nature s’occupe :

• De la création de la lumièreDe la création de la lumière• Des interactions lumières Des interactions lumières

matièresmatières

– Le système optique s’occupe Le système optique s’occupe de la projectionde la projection

– La matrice LCD s’occupe de La matrice LCD s’occupe de la perceptionla perception

18

L'image de synthèseL'image de synthèse

Les images de synthèse :Les images de synthèse :– On tente de recréer le processus précédentOn tente de recréer le processus précédent– Tout est calculé sur ordinateurTout est calculé sur ordinateur

• Affichage via l'écran toujours en RVBAffichage via l'écran toujours en RVB

– Importance des modèlesImportance des modèles• D'éclairageD'éclairage• D'interaction avec la matièreD'interaction avec la matière• De projectionDe projection• De choix des couleursDe choix des couleurs

– De nombreux autres facteurs interviennentDe nombreux autres facteurs interviennent• Dépend des applicationsDépend des applications• Ex : Contrainte temps réel, fidélité des calculs …Ex : Contrainte temps réel, fidélité des calculs …

Venceslas BIRIVenceslas BIRILIGMLIGMUniversité Paris-Est Marne-La-ValléeUniversité Paris-Est Marne-La-Vallée

La synthèse d'imagesLa synthèse d'images

IntroductionIntroduction

Domaines et applicationsDomaines et applications

20

Domaines & applicationsDomaines & applications

Permet de simuler un univers virtuelPermet de simuler un univers virtuel Nombreuses applications Nombreuses applications

– Simulateurs (conduites, centrales Simulateurs (conduites, centrales nucléaires…)nucléaires…)

• Étude des comportements humainsÉtude des comportements humains

– Modélisation et visualisation scientifiqueModélisation et visualisation scientifique• Simuler sans expérimenter (moindre coût)Simuler sans expérimenter (moindre coût)• Mieux comprendre les résultats des Mieux comprendre les résultats des

expériencesexpériences

– Domaine médicalDomaine médical• Aider / guider les chirurgiens dans leur gesteAider / guider les chirurgiens dans leur geste• Adapter des applications à des handicapésAdapter des applications à des handicapés

– CAO & IndustrieCAO & Industrie• Visualisation pour le design, contrainte Visualisation pour le design, contrainte

matérielles matérielles

21

Domaines & applicationsDomaines & applications

Nombreuses applications Nombreuses applications – Jeux vidéoJeux vidéo

• Simuler pour divertir. ImmersionSimuler pour divertir. Immersion

– Réalité virtuelleRéalité virtuelle• Nouvelle application innovanteNouvelle application innovante

– Effets spéciaux au cinémaEffets spéciaux au cinéma• Compositing d'imageCompositing d'image

– ArchitectureArchitecture• Résistance des matériauxRésistance des matériaux• Simulation des transferts de chaleurSimulation des transferts de chaleur• Visualisation du bâtiment fini sur le siteVisualisation du bâtiment fini sur le site

– Internet 3D …Internet 3D …

22

Domaines & applicationsDomaines & applications

Problématique différente suivant les domainesProblématique différente suivant les domaines– Jeux vidéo : Jeux vidéo :

• le temps réelle temps réel– Réalité virtuelle : Réalité virtuelle :

• interactivitéinteractivité– Visualisation scientifique : Visualisation scientifique :

• Fidélité au modèle physiqueFidélité au modèle physique• Gérer de grandes quantités de donnéesGérer de grandes quantités de données

– CAO et industrieCAO et industrie• Gérer de grandes quantités de donnéesGérer de grandes quantités de données• Extraire les bons modèles / Extraire les bons modèles /

les bons paramètresles bons paramètres– SimulateursSimulateurs

• Respecter au plus proche le réalisme cognitifRespecter au plus proche le réalisme cognitif

23

Domaines & applicationsDomaines & applications

Problématique différente suivant les domainesProblématique différente suivant les domaines– Domaine médical :Domaine médical :

• Sécurité de l'applicationSécurité de l'application• Aide au chirurgienAide au chirurgien

– Effets spéciaux au cinéma :Effets spéciaux au cinéma :• Cohérence des images (compositing)Cohérence des images (compositing)

• RéalismeRéalisme

– Architecture :Architecture :• Coller au modèle physiqueColler au modèle physique• EsthétismeEsthétisme

– Internet 3D :Internet 3D :• Compréhension des donnéesCompréhension des données

24

Domaines & applicationsDomaines & applications

jeux vidéojeux vidéo

Visu scientifiqueVisu scientifique

ArchitectureArchitecture

SimulateursSimulateurs

CAOCAO

Réalité virtuelleRéalité virtuelle

Imagerie médicaleImagerie médicale

Effets spéciauxEffets spéciaux

Internet 3DInternet 3D Temps réelTemps réel

RéalismeRéalisme

Venceslas BIRIVenceslas BIRILIGMLIGMUniversité Paris-Est Marne-La-ValléeUniversité Paris-Est Marne-La-Vallée

La synthèse d'imagesLa synthèse d'images

IntroductionIntroduction

Quelques mathématiquesQuelques mathématiques

26

DimensionsDimensions

Dimension = nombre de paramètres Dimension = nombre de paramètres indépendantsindépendants pour représenter l'espace de travailpour représenter l'espace de travail

En synthèse d'images :En synthèse d'images :– Dimension 1 :Dimension 1 :

• Étude de trajectoire, spline …Étude de trajectoire, spline …

– Dimension 2 :Dimension 2 :• Surfaces (eau, terrain)Surfaces (eau, terrain)

• Textures & ImagesTextures & Images

– Dimension 3 :Dimension 3 :• Organisation des surfaces dans l'espaceOrganisation des surfaces dans l'espace

• Milieu participant, particulesMilieu participant, particules

– Dimension 4 :Dimension 4 :• Animation temporelleAnimation temporelle

27

Les vecteursLes vecteurs

28

Notion de vecteurNotion de vecteur

Vecteur :Vecteur :– Ensemble de n coordonnéesEnsemble de n coordonnées

• n = 2, 3 mais aussi 4, 10 000 etc.n = 2, 3 mais aussi 4, 10 000 etc.

– Dans l'espace 3D réel : ensemble de 3 Dans l'espace 3D réel : ensemble de 3 coordonnéescoordonnées

• Noté :Noté :

– Représente une direction / un déplacementReprésente une direction / un déplacement• Ex :Ex :

u [u xu yuz]

u [205] = 2 unités sur l'axe 1 et 5 unités sur l'axe 5= 2 unités sur l'axe 1 et 5 unités sur l'axe 5

29

Notion de vecteurNotion de vecteur

Attention à ne pas confondre point et Attention à ne pas confondre point et vecteur !vecteur !– Même nombre de coordonnée mais objets Même nombre de coordonnée mais objets

différentsdifférents– Vecteur non dépendant d'une "origine"Vecteur non dépendant d'une "origine"– Vecteur insensible aux déplacementsVecteur insensible aux déplacements

décalage versdécalage versla droitela droite Le vecteur n'a Le vecteur n'a

pas changépas changé

30

Produit scalaireProduit scalaire

Propriété du produit scalaire :Propriété du produit scalaire :– Soit u et v deux vecteurs :Soit u et v deux vecteurs :

Dans notre cas :Dans notre cas :– Produit scalaire canoniqueProduit scalaire canonique

u . v = 0 ⇒u e tv s o n to r t h o g o n a u x

u . v = u . v = [u xu yuz] . [

v xv yv z

] = u x v x u y v y u z v z

31

Produit scalaireProduit scalaire

Norme et distanceNorme et distance– Introduction d’une notion de taille, de longueur : Introduction d’une notion de taille, de longueur :

la normela norme– Norme naturelle Norme naturelle

• Doit satisfaire des conditions précisesDoit satisfaire des conditions précises Séparation : norme nulle d’un vecteur => vecteur nulSéparation : norme nulle d’un vecteur => vecteur nul Homogénéité : mult. par un scalaireHomogénéité : mult. par un scalaire Inégalité triangulaire : norme d’un couple de vecteurInégalité triangulaire : norme d’un couple de vecteur

• Aussi appelée norme Aussi appelée norme euclidienneeuclidienne Rapport à la géométrie du même nom = notre casRapport à la géométrie du même nom = notre cas

∥u ∥ = u .u

Vecteur normé Vecteur normé ⇔⇔ u ∥ u ∥ = 1

32

Produit scalaireProduit scalaire

Notion de distanceNotion de distance– Norme d’un vecteur = distance du Norme d’un vecteur = distance du

« déplacement »« déplacement »

ProjectionProjection– Le produit scalaire d’un vecteur u par un vecteur Le produit scalaire d’un vecteur u par un vecteur

v peut aussi se voir comme la projection de u v peut aussi se voir comme la projection de u sur v (et vice versa) :sur v (et vice versa) :u

v

( )vu . = = ± ± longueur verte * longueur rouge longueur verte * longueur rouge

u

v

33

Base vectorielleBase vectorielle

Création d'une base vectorielleCréation d'une base vectorielle– Les coordonnées des vecteurs sont définis par Les coordonnées des vecteurs sont définis par

rapport à ces axesrapport à ces axes– Tous les axes sont orthogonaux 2 à 2Tous les axes sont orthogonaux 2 à 2

• Les vecteurs sont dit « indépendants »Les vecteurs sont dit « indépendants »

– Les vecteurs ont une norme égale à 1Les vecteurs ont une norme égale à 1• Forme une base orthonormaleForme une base orthonormale

i

jk v ∀v ∈ E , ∃ α , β , γ ∈ℜ v = α i β j γ k

et on a :et on a : v [αβγ ]

34

Espace vectoriel & dimensionEspace vectoriel & dimension

Coordonnées et produit scalaireCoordonnées et produit scalaire– En fait on aEn fait on a

– Donc :Donc :

v . i = αv . j = βv . k = γ

∀v ∈ E , v = v . i i v . j j v . k k

i

jk v

35

Produit vectorielProduit vectoriel

Produit vectoriel : calculProduit vectoriel : calcul

vuw ∧=

=

z

y

x

z

y

x

vvv

uuu

=

yzzy vuvu −zxxz vuvu −xyyx vuvu −

36

Notre espaceNotre espace

Et au fait les points ?Et au fait les points ?– Ne sont pas des vecteursNe sont pas des vecteurs– Relatifs à une origineRelatifs à une origine– Voyons la théorie ...Voyons la théorie ...

C'est un espace affineC'est un espace affine

37

Notre espaceNotre espace

Coordonnées et vecteursCoordonnées et vecteurs– Soit deux points A et B, on a :Soit deux points A et B, on a :

– Les coordonnées des vecteurs dépendent de la Les coordonnées des vecteurs dépendent de la base choisiebase choisie

– Les coordonnées des points dépendent de la Les coordonnées des points dépendent de la base choisie et de l’originebase choisie et de l’origine

– Repère = base vectorielle + origineRepère = base vectorielle + origine

−−−

=ab

ab

ab

zzyyxx

AB

38

Résumons ...Résumons ...

L’espace dans lequel nous vivonsL’espace dans lequel nous vivons– Espace euclidienEspace euclidien– Espace affineEspace affine

• Contient des points et des vecteursContient des points et des vecteurs• Contient un espace vectoriel de dimension 3Contient un espace vectoriel de dimension 3• Choix d’une base vectorielle orthonormaleChoix d’une base vectorielle orthonormale

Défini les coordonnées des vecteursDéfini les coordonnées des vecteurs

• Choix d’un point d’origineChoix d’un point d’origine Défini les coordonnées des pointsDéfini les coordonnées des points

• Distances mesurées par le produit scalaireDistances mesurées par le produit scalaire Norme euclidienneNorme euclidienne

Venceslas BIRIVenceslas BIRILIGMLIGMUniversité Paris-Est Marne-La-ValléeUniversité Paris-Est Marne-La-Vallée

La synthèse d'imagesLa synthèse d'images

Rendu & AffichageRendu & Affichage

IntroductionIntroduction

40

IntroductionIntroduction

ObjectifObjectif– Réaliser une image …Réaliser une image …

• Nécessité de choix d’un point de vueNécessité de choix d’un point de vue CaméraCaméra

– … … d’un environnement virtuel …d’un environnement virtuel …• Nécessité de modéliser le monde virtuelNécessité de modéliser le monde virtuel

ObjetsObjets

– … … éclairé (réaliste)éclairé (réaliste)• Nécessité de concevoir de l’éclairageNécessité de concevoir de l’éclairage

LumièresLumières

41

IntroductionIntroduction

RenduRendu

A l’aide d’une caméra, d’objets et de A l’aide d’une caméra, d’objets et de lumière, dessiner une image des objets lumière, dessiner une image des objets

visibles éclairévisibles éclairépar les lumières.par les lumières.

Interaction Interaction lumière matièrelumière matière

Interaction Interaction lumière matièrelumière matière

Source Source lumineuselumineuse

Source Source lumineuselumineuse

La projectionLa projectionLa projectionLa projection

La perceptionLa perceptionLa perceptionLa perception

42

IntroductionIntroduction

Le coté caméraLe coté caméra– Position d’une caméra Position d’une caméra

dans l’environnement dans l’environnement virtuelvirtuel

– Association d’un écran Association d’un écran (virtuel) à la caméra(virtuel) à la caméra

– Cet écran est constitué Cet écran est constitué de pixelde pixel

– Appelé « buffer » ou Appelé « buffer » ou « framebuffer »« framebuffer »

– Souvent en RGBSouvent en RGB

43

IntroductionIntroduction

L’environnement virtuel / les objetsL’environnement virtuel / les objets– Modélisation géométriqueModélisation géométrique– Positionnement dans la scènePositionnement dans la scène– Modélisation colorimétriqueModélisation colorimétrique– Modélisation physiqueModélisation physique

44

IntroductionIntroduction

Les lumièresLes lumières– A positionner dans la scèneA positionner dans la scène– Peuvent être de tout type :Peuvent être de tout type :

• Ponctuelle Ponctuelle • Surfacique voire volumiqueSurfacique voire volumique• DirectionnelleDirectionnelle• Isotrope ou anisotropeIsotrope ou anisotrope

45

IntroductionIntroduction

Cas d’étude :Cas d’étude :– Illumination locale :Illumination locale :

La couleur d’un objet ne dépend que des La couleur d’un objet ne dépend que des caractéristiques (locales) de celui-ci et caractéristiques (locales) de celui-ci et

des lumières de la scène.des lumières de la scène.– Modèle d’illumination simpleModèle d’illumination simple

Possibilité d’illumination plus complexePossibilité d’illumination plus complexe– Réflexion & réfractionRéflexion & réfraction– OmbresOmbres

46

IntroductionIntroduction

Deux grandes approchesDeux grandes approches– RasterisationRasterisation– Lancer de rayonsLancer de rayons

2 philosophies :2 philosophies :– Rasterisation : polygone par polygoneRasterisation : polygone par polygone

– Lancer de rayons : pixel par pixelLancer de rayons : pixel par pixel

47

IntroductionIntroduction

Rasterisation : Rasterisation : On part de la scène, et on envoieOn part de la scène, et on envoiesur la camérasur la caméra

Lancer de rayon :Lancer de rayon :On part de la caméra, et on envoieOn part de la caméra, et on envoie

sur la scène virtuellesur la scène virtuelle

Venceslas BIRIVenceslas BIRILIGMLIGMUniversité Paris-Est Marne-La-ValléeUniversité Paris-Est Marne-La-Vallée

La synthèse d'imagesLa synthèse d'images

Rendu & AffichageRendu & Affichage

RasterisationRasterisation

49

RasterisationRasterisation

Rasterisation ou algorithme du Z-bufferRasterisation ou algorithme du Z-buffer Fondé sur :Fondé sur :

– Algorithme de remplissage des polygonesAlgorithme de remplissage des polygones• Quels pixels sont concernés par la projection d’un Quels pixels sont concernés par la projection d’un

triangle (ou autre polygone convexe) sur un écran 2D ?triangle (ou autre polygone convexe) sur un écran 2D ?

– Algorithme du Z-bufferAlgorithme du Z-buffer– En anglais : to rasterizeEn anglais : to rasterize

Omniprésent dans les applications temps Omniprésent dans les applications temps réelréel– Jeux vidéoJeux vidéo– Simulateurs & RVSimulateurs & RV

50

Rasterisation : principeRasterisation : principe

Idée généraleIdée générale– Chaque polygone convexe est projeté sur Chaque polygone convexe est projeté sur

l’écran (image de pixels)l’écran (image de pixels)– Les occlusions sont gérées grâce à une image Les occlusions sont gérées grâce à une image

de profondeur : le Z-bufferde profondeur : le Z-buffer

Philosophie orienté objetPhilosophie orienté objet– La complexité est dépendante du nombre de La complexité est dépendante du nombre de

primitiveprimitive

51

Rasterisation : algorithmeRasterisation : algorithme

Transformation repère caméraTransformation repère caméra Déterminer les Déterminer les coordonnées des points coordonnées des points relativement à la camérarelativement à la caméra

IlluminationIlluminationÉventuellement, Éventuellement,

déterminer la couleur des déterminer la couleur des sommets par rapport aux sommets par rapport aux

lumièreslumièresProjection des primitivesProjection des primitives

Projeter les sommets des Projeter les sommets des primitives sur l’image 2D. primitives sur l’image 2D.

Comprend le cullingComprend le culling

RasterisatioRasterisationn

Gestion occlusionGestion occlusion

Déterminer les pixels Déterminer les pixels recouvert par la primitiverecouvert par la primitive

Utilisation du Z-buffer Utilisation du Z-buffer pour comparer les pour comparer les

profondeursprofondeurs

Insertion dans l’imageInsertion dans l’image

Écriture des couleurs des Écriture des couleurs des pixels dans l’image finalepixels dans l’image finale

52

Rasterisation : le Z-bufferRasterisation : le Z-buffer

Précision sur le Z-bufferPrécision sur le Z-buffer– Principe simple : on conserve la plus proche Principe simple : on conserve la plus proche

profondeur dans le bufferprofondeur dans le buffer– Si on veut insérer un nouveau pixel dans l’image Si on veut insérer un nouveau pixel dans l’image

finale, on compare sa « profondeur » à celle finale, on compare sa « profondeur » à celle présente dans le Z-bufferprésente dans le Z-buffer

• Plus proche, on insére dans l’image finale et on stocke Plus proche, on insére dans l’image finale et on stocke la nouvelle profondeur dans le Z-bufferla nouvelle profondeur dans le Z-buffer

• Plus loin, on écarte le pixelPlus loin, on écarte le pixel

Nécessité de transmettre, pour chaque pixel à insérer,Nécessité de transmettre, pour chaque pixel à insérer,sa profondeur vis-à-vis de la camérasa profondeur vis-à-vis de la caméra

53

Rasterisation : pipelineRasterisation : pipeline

54

OpenGLOpenGL

Cartes graphiques implémentent le pipeline Cartes graphiques implémentent le pipeline graphiquegraphique

OpenGL : API C (C++)OpenGL : API C (C++)– Permet de contrôler / diriger les cartes Permet de contrôler / diriger les cartes

graphiques :graphiques :• Fourni les données d’entrées (géométrie / matériaux)Fourni les données d’entrées (géométrie / matériaux)• Fixe les transformations et la (les) projection(s)Fixe les transformations et la (les) projection(s)• Détermine les paramètres de l’illuminationDétermine les paramètres de l’illumination• Gère le rendu final dans l’imageGère le rendu final dans l’image• Fixe l’ensemble des « états internes » de la carte Fixe l’ensemble des « états internes » de la carte

graphiquegraphique

55

Primitives et transformationPrimitives et transformation

But de la première étape :But de la première étape :– Charger les donnéesCharger les données– Transformer ces données dans le référentiel de Transformer ces données dans le référentiel de

la camérala caméra• Ce référentiel mets la camera à l’origine et son axe de Ce référentiel mets la camera à l’origine et son axe de

visée sur l’axe z vers les z négatifsvisée sur l’axe z vers les z négatifs

56

Primitives graphiques OpenGLPrimitives graphiques OpenGL

Données d’entrée :Données d’entrée :– Points ou lignesPoints ou lignes– Polygones : triangles, quads ou polygonesPolygones : triangles, quads ou polygones

• Ils seront transformés en trianglesIls seront transformés en triangles• En général, il vaut mieux envoyer des triangles car on En général, il vaut mieux envoyer des triangles car on

maîtrise le « découpage »maîtrise le « découpage »

– Données envoyées par bloc de primitives :Données envoyées par bloc de primitives :glBegin(glBegin(primitiveprimitive););

......// bloc de primitives// bloc de primitives......

glEnd();glEnd();

glBegin(glBegin(primitiveprimitive););......// bloc de primitives// bloc de primitives......

glEnd();glEnd();

primitiveprimitive peut être : peut être :• GL_POINTSGL_POINTS• GL_LINESGL_LINES• GL_LINE_STRIPGL_LINE_STRIP• GL_LINE_LOOPGL_LINE_LOOP• GL_TRIANGLESGL_TRIANGLES• GL_TRIANGLE_FANGL_TRIANGLE_FAN• GL_TRIANGLE_STRIPGL_TRIANGLE_STRIP• GL_QUADGL_QUAD• GL_QUAD_STRIPGL_QUAD_STRIP• GL_POLYGONGL_POLYGON

57

Primitives graphiques OpenGLPrimitives graphiques OpenGL

58

Primitives graphiques OpenGLPrimitives graphiques OpenGL

Dans le bloc de primitives Dans le bloc de primitives – On injecte des points avec On injecte des points avec glVertex*(…)glVertex*(…)– On peut mettre du code C normalOn peut mettre du code C normal

• Notamment des boucles : for, while ...Notamment des boucles : for, while ...

– On est limité dans les instructions OpenGLOn est limité dans les instructions OpenGL• Seules sont Seules sont pris en comptepris en compte les instructions : les instructions :

glVertexglColorglSecondaryColorglIndexglNormalglFogCoord

glTexCoordglMultiTexCoordglVertexAttribglArrayElementglEvalCoordglEvalPoint

glMaterialglCallListglCallListsglEdgeFlag

Sinon génération d’une erreur GL : GL_INVALID_OPERATIONSinon génération d’une erreur GL : GL_INVALID_OPERATION

59

Primitives graphiques OpenGLPrimitives graphiques OpenGL

Dans le bloc de primitivesDans le bloc de primitives– On peut donc spécifier :On peut donc spécifier :

• Les normales avec : Les normales avec : glNormalglNormal• La couleur du point : La couleur du point : glColor / glColor / glSecondaryColor / glMaterialglSecondaryColor / glMaterial

• Les coordonnées de textures : Les coordonnées de textures : glTexCoord / glTexCoord / glMultiTexCoordglMultiTexCoord

• Les paramètres shader : Les paramètres shader : glVertexAttribglVertexAttrib• ......

A savoirA savoir– Les vertex (et toutes autres données) sont Les vertex (et toutes autres données) sont

transformés en vecteurs de 4 flottantstransformés en vecteurs de 4 flottants

60

Les transformationsLes transformations

Opérations courantes sur la pile de matriceOpérations courantes sur la pile de matrice– glMatrixMode(glMatrixMode(modemode)) : fixe la pile courante, : fixe la pile courante,

mode prend les valeurs mode prend les valeurs MODELVIEWMODELVIEW, , PROJECTIONPROJECTION, , COLORCOLOR ou ou TEXTURETEXTURE

– glPushMatrix()glPushMatrix() : recopie de la matrice : recopie de la matrice haut de haut de pilepile au sommet de la pile au sommet de la pile

– glPopMatrix()glPopMatrix() : enlève la matrice : enlève la matrice haut de pilehaut de pile– glLoadIdentity()glLoadIdentity() : remplace la matrice : remplace la matrice haut haut

de pilede pile par la matrice identité par la matrice identité– glLoadMatrix*(...)glLoadMatrix*(...) : idem avec une matrice : idem avec une matrice

spécifiée par l’utilisateurspécifiée par l’utilisateur

61

Les transformationsLes transformations

Fixer des transformations :Fixer des transformations :– Opérateur calculant une matrice et la multipliant Opérateur calculant une matrice et la multipliant

à la matrice à la matrice haut de pilehaut de pile– Opérateurs :Opérateurs :

• glTranslateglTranslate{fd}{fd}(T x,T y,T z)(T x,T y,T z) : Translation (x,y,z) : Translation (x,y,z)• glRotateglRotate{fd}{fd}(T (T θθ,T x,T y,T z),T x,T y,T z) : Rotation d’angle : Rotation d’angle

θθ et d’axe (x,y,z) et d’axe (x,y,z)• glScaleglScale{fd}{fd}(T x,T y, T z)(T x,T y, T z) : Homothétie de : Homothétie de

rapport x, y et zrapport x, y et z