algorithmique graphique

525
Algorithmique graphique Algorithmique graphique Algorithmique graphique Algorithmique graphique M. AMMI M. AMMI [email protected] [email protected] 2009 2009

Upload: theyacine

Post on 17-May-2015

784 views

Category:

Education


4 download

DESCRIPTION

Ce cours englobe la majorité des concepts du domaine de graphisme.

TRANSCRIPT

Page 1: Algorithmique graphique

Algorithmique graphiqueAlgorithmique graphiqueAlgorithmique graphiqueAlgorithmique graphique

M. AMMIM. [email protected]@limsi.fr

20092009

Page 2: Algorithmique graphique

HistoriqueHistorique•• 19441944 :: LeLe premierpremier ordinateurordinateur électriqueélectrique etet programmableprogrammable estest construitconstruit auxaux ÉtatsÉtats--UnisUnis

•• 19501950 :: MIT,MIT, premierpremier écranécran (vectoriel)(vectoriel) contrôlécontrôlé parpar ordinateurordinateur

•• 19621962 :: PP.. BezierBezier (Renault)(Renault) metmet auau pointpoint uneune méthodeméthode pourpour tracertracer desdes courbescourbes ouou desdessurfacessurfaces

•• 19631963 :: SketchpadSketchpad (thèse(thèse dede IvanIvan Sutherland),Sutherland), proposepropose unun premierpremier modèlemodèle completcomplet dedesystèmesystème graphiquegraphique interactifinteractif (sélectionner,(sélectionner, pointer,pointer, dessiner,dessiner, éditer)éditer);; identifieidentifie leslesstructuresstructures dede donnéesdonnées etet algorithmesalgorithmes nécessairesnécessaires.. AvancéeAvancée majeuremajeure dansdans lele domainedomainedudu graphismegraphisme

19651965 :: JJ.. BresenhamBresenham metmet auau pointpoint unun algorithmealgorithme efficaceefficace pourpour lele tracétracé dede ligneslignes•• 19651965 :: JJ.. BresenhamBresenham metmet auau pointpoint unun algorithmealgorithme efficaceefficace pourpour lele tracétracé dede ligneslignes

•• 19691969 :: JJ.. WarnockWarnock proposepropose unun algorithmealgorithme dede subdivisionsubdivision pourpour lala suppressionsuppression desdes facesfacescachéescachées

•• 19711971 :: HH.. GouraudGouraud faitfait uneune thèsethèse avecavec EvansEvans àà l’Universitél’Université d’Utahd’Utah oùoù ilil metmet auau pointpointunun algorithmealgorithme dede lissagelissage d’ombresd’ombres

•• 19711971 :: RR.. GoldsteinGoldstein etet RR.. NagelNagel posentposent lesles basesbases dede lala CSGCSG (Constructive(Constructive SolidSolidGeometryGeometry))

•• 19721972 :: RR.. ShoupShoup (Xerox)(Xerox) metmet auau pointpoint lele premierpremier frameframe--bufferbuffer 88 bitsbits

•• 19741974 :: EE.. CatmullCatmull (Utah)(Utah) soutientsoutient sasa thèsethèse sursur lele placageplacage dede texture,texture, lele ZZ--bufferbuffer etet lelerendurendu dede surfacessurfaces courbescourbes

•• 19741974 :: BB.. PhongPhong (Utah)(Utah) inventeinvente unun nouvelnouvel algorithmealgorithme dede lissagelissage d’ombresd’ombres

•• 19741974 :: SutherlandSutherland etet HodgmanHodgman développentdéveloppent unun algorithmealgorithme dede clippingclipping dede polygonespolygones

•• 19771977 :: JJ.. BresenhamBresenham metmet auau pointpoint unun algorithmealgorithme efficaceefficace pourpour lele tracétracé dede cerclescercles

•• 19781978 :: CyrusCyrus etet BeckBeck proposentproposent unun algorithmealgorithme dede clippingclipping dede segmentssegments

Page 3: Algorithmique graphique

HistoriqueHistorique

•• 1979 : James H. Clark conçoit le premier processeur 1979 : James H. Clark conçoit le premier processeur programmable dédié au graphisme 3Dprogrammable dédié au graphisme 3D

•• 19821982 :: créationcréation dede SiliconSilicon GraphicsGraphics,, d’Adobed’Adobe etet d’d’AutoDeskAutoDesk•• 19841984 :: premierspremiers travauxtravaux sursur lala radiositéradiosité àà CornellCornell UniversityUniversity•• 1985 : création de ATI : conception de circuits intégrés 1985 : création de ATI : conception de circuits intégrés

graphiquesgraphiques•• 19871987 :: créationcréation dede lala 11èreère cartecarte graphiquegraphique•• 19871987 :: créationcréation dede lala 11èreère cartecarte graphiquegraphique

•• 1987 : 1987 : MarchingMarching Cubes : A High Cubes : A High ResolutionResolution 3D Surface 3D Surface Construction Construction AlgorithmAlgorithm, par , par LorensenLorensen et et ClineCline (GE)(GE)

•• 19921992 :: OpenGLOpenGL 11..00•• 19931993 :: créationcréation dede NVIDIANVIDIA•• 19931993 :: JurassicJurassic parkpark•• 19941994 :: standardstandard VRMLVRML•• 19961996 :: MicrosoftMicrosoft lancelance DirectXDirectX•• 19971997 :: SunSun lancelance JavaJava 33DD•• 19981998 :: logiciellogiciel AliasAlias MayaMaya•• 20072007 :: SpécificationsSpécifications d’d’OpenGLOpenGL 33..00

PourPour plusplus dede détailsdétails :: httphttp:://accad//accad..osuosu..edu/~waynec/history/timelineedu/~waynec/history/timeline..htmlhtml

Page 4: Algorithmique graphique

Domaines d’applicationDomaines d’application

•• Art & divertissementArt & divertissement• Films d’animation,

Effets spéciaux• Jeux (Temps réel,• Jeux (Temps réel,

Interaction)

Page 5: Algorithmique graphique

Domaines d’applicationDomaines d’application

•• Suivi de processus et Téléopération (online) Suivi de processus et Téléopération (online)

Page 6: Algorithmique graphique

Domaines d’applicationDomaines d’application

•• Simulateurs (offline)Simulateurs (offline)•• Conduite/Pilotage, Processus, Conduite/Pilotage, Processus,

Téléopération, Jeux!Téléopération, Jeux!

Page 7: Algorithmique graphique

Domaines d’applicationDomaines d’application

•• Visualisation de donnéesVisualisation de données•• MédicalesMédicales•• GéophysiquesGéophysiques•• BiologiquesBiologiques•• BiologiquesBiologiques

Page 8: Algorithmique graphique

Domaines d’applicationDomaines d’application

•• Conception assistée par ordinateurConception assistée par ordinateur•• Immersive ou pasImmersive ou pas

Page 9: Algorithmique graphique

DéfinitionsDéfinitions

•• DéfinitionDéfinition officielleofficielle dede l’infographiel’infographie (office(office dede lala languelanguefrançaisefrançaise

•• «« ApplicationApplication dede l’informatiquel’informatique àà lala création,création, auau traitement,traitement,•• «« ApplicationApplication dede l’informatiquel’informatique àà lala création,création, auau traitement,traitement,etet àà l’exploitationl’exploitation desdes imagesimages numériquesnumériques »»

•• InfographieInfographie estest unun motmot forméformé àà partirpartir dede d’d’INFOrmatiqueINFOrmatiqueetet GRAPHIqueGRAPHIque

•• AppellationAppellation déposéedéposée parpar lala sociétésociété BensonBenson enen 19741974

Page 10: Algorithmique graphique

•• LaLa géométriegéométrie estest l’élémentl’élément constitutifconstitutif essentielessentiel dede toutetoute imageimage dede synthèsesynthèse

•• LesLes objetsobjets présentsprésents dansdans uneune imageimage dede synthèsesynthèse sontsont toujourstoujours définisdéfinis àà partirpartird’objetsd’objets géométriquesgéométriques dontdont l’expressionl’expression mathématiquemathématique estest connueconnue..

DéfinitionsDéfinitions

d’objetsd’objets géométriquesgéométriques dontdont l’expressionl’expression mathématiquemathématique estest connueconnue..

•• CesCes objetsobjets ainsiainsi queque l’organisationl’organisation spatialespatiale dede cesces objetsobjets lesles unsuns parpar rapportrapport auxauxautresautres formentforment unun modèlemodèle géométriquegéométrique completcomplet dede lala scènescène virtuellevirtuelle àà représenterreprésenteretet constituentconstituent unun prépré--requisrequis essentielessentiel..

•• L’imageL’image dede synthèsesynthèse obtenueobtenue estest lele résultatrésultat dede l’interactionl’interaction entreentre lesles différentesdifférentessourcessources dede lumièrelumière dede lala scènescène etet lesles objetobjet.. CetteCette interactioninteraction s’évalues’évalue àà partirpartir desdescaractéristiquescaractéristiques physiquesphysiques desdes objetsobjets etet desdes sourcessources dede lumières,lumières, etet desdes propriétéspropriétésgéométriquesgéométriques localeslocales enen touttout pointpoint dede lala scènescène (géométrie(géométrie locale)locale) etet globalesglobales(chaque(chaque objetobjet interagitinteragit avecavec uneune partiepartie ouou lala totalitétotalité dede lala scène)scène)..

Page 11: Algorithmique graphique

Pipeline GraphiquePipeline Graphique

Page 12: Algorithmique graphique

Pipeline Graphique Pipeline Graphique Transformations de

modélisation

Illumination(Shading)

Transformations

Modèle de la Modèle de la scènescène

Transformationsd’affichage

Clipping

Transformation écran((Projection)

Pixelisation(Rasterization)

Visibilité / Affichage Image 3DImage 3D

Page 13: Algorithmique graphique

Transformations de modélisationTransformations de modélisation

•Application des transformations decomposition de scène : Passage dusystème de coordonnées local dechaque objet 3D (object space) vers

Transformations demodélisation

Illumination(Shading)

Transformations chaque objet 3D (object space) versun repère global (world space)

Object space World space

Transformationsd’affichage

Clipping

Transformation écran((Projection)

Pixelisation(Rasterization)

Visibilité / Affichage

Page 14: Algorithmique graphique

IlluminationIllumination

•Les primitives sont éclairées selonleur matériau, le type de surface et lessources de lumière.

•Les modèles d’illumination sont

Transformations demodélisation

Illumination(Shading)

Transformations •Les modèles d’illumination sontlocaux (pas d’ombres) car le calcul esteffectué par primitive : diffus, ambiant,Gouraud, Phong, etc.

Transformationsd’affichage

Clipping

Transformation écran((Projection)

Pixelisation(Rasterization)

Visibilité / Affichage

Page 15: Algorithmique graphique

Transformations d’affichageTransformations d’affichage

•Passe des coordonnées du monde à celles du point de vue (repère caméra ou eye space).•En général le repère est aligné selon z.

Transformations demodélisation

Illumination(Shading)

Transformations

The image cannot be displayed. Your computer may not have enough memory to open the image, or the image may have been corrupted. Restart your computer, and then open the file again. If the red x still appears, you may have to delete the image and then insert it again.

Eye space

World space

Transformationsd’affichage

Clipping

Transformation écran((Projection)

Pixelisation(Rasterization)

Visibilité / Affichage

Page 16: Algorithmique graphique

ClippingClipping

•Passage en coordonnées normalisées (NDC : normalized device coordinates)

Transformations demodélisation

Illumination(Shading)

Transformations

Eye space NDC

•Suppression des parties hors du volume de vision.

Transformationsd’affichage

Clipping

Transformation écran((Projection)

Pixelisation(Rasterization)

Visibilité / Affichage

Page 17: Algorithmique graphique

Transformation écran Transformation écran

•Les primitives 3D sont projetées sur l'espace image 2D (screen space)

Transformations demodélisation

Illumination(Shading)

Transformations

NDC Screen Space

Transformationsd’affichage

Clipping

Transformation écran((Projection)

Pixelisation(Rasterization)

Visibilité / Affichage

Page 18: Algorithmique graphique

RasterisationRasterisation

•Découpe des primitives 2D en pixels

• Interpole les valeurs connues aux sommets : couleur, profondeur, etc. pour chaque fragment affiché

Transformations demodélisation

Illumination(Shading)

Transformations pour chaque fragment affichéTransformationsd’affichage

Clipping

Transformation écran((Projection)

Pixelisation(Rasterization)

Visibilité / Affichage

Page 19: Algorithmique graphique

Visibilité et affichageVisibilité et affichage

•Élimination des parties cachées

•Remplissage du frame buffer avec le bon format de couleur.

Transformations demodélisation

Illumination(Shading)

TransformationsTransformationsd’affichage

Clipping

Transformation écran((Projection)

Pixelisation(Rasterization)

Visibilité / Affichage

Page 20: Algorithmique graphique

Système de coordonnéesSystème de coordonnées

Repère objet

Repère scène

Transformations demodélisation

Illumination(Shading)

Transformations

Repère caméra

Espace écran

Repère caméra normalisé (NDC)

Transformationsd’affichage

Clipping

Transformation écran((Projection)

Pixelisation(Rasterization)

Visibilité / Affichage

Page 21: Algorithmique graphique

Le pipeline graphiqueLe pipeline graphique

•Modèle géométrique : objets, surfaces, sources de lumière…

•Modèle d’illumination : calcul des interactions lumineuses

Transformations demodélisation

Illumination(Shading)

Transformations

•Caméra : point de vue et ouverture (frustum)

•Fenêtre (viewport) : grille de pixel sur laquelle on plaque l’image

•Couleurs, intensités convenant à l’afficheur (ex : 24 bits, RVB)

Transformationsd’affichage

Clipping

Transformation écran((Projection)

Pixelisation(Rasterization)

Visibilité / Affichage

Page 22: Algorithmique graphique

Le pipeline graphiqueLe pipeline graphique

•Chaque primitive passe successivement par toutes les étapes

•Le pipeline peut être implémenté de

Transformations demodélisation

Illumination(Shading)

Transformations •Le pipeline peut être implémenté de diverses manières avec des étapes en hardware et d’autres en software

•A certaines étapes on peut disposer d’outils de programmation (ex : vertex ou pixel program)

Transformationsd’affichage

Clipping

Transformation écran((Projection)

Pixelisation(Rasterization)

Visibilité / Affichage

Page 23: Algorithmique graphique

ImplémentationImplémentationTransformations de

modélisation

Illumination(Shading)

Transformations

Softwareconfigurable

Sans carte graphique 3DTransformations

d’affichage

Clipping

Transformation écran((Projection)

Pixelisation(Rasterization)

Visibilité / Affichage

Page 24: Algorithmique graphique

ImplémentationImplémentationTransformations de

modélisation

Illumination(Shading)

Transformations Softwareconfigurable

Hardware

Cartes graphiques première génération

Transformationsd’affichage

Clipping

Transformation écran((Projection)

Pixelisation(Rasterization)

Visibilité / Affichage

configurable

Page 25: Algorithmique graphique

ImplémentationImplémentationTransformations de

modélisation

Illumination(Shading)

Transformations

Cartes graphiques deuxième génération

Transformationsd’affichage

Clipping

Transformation écran((Projection)

Pixelisation(Rasterization)

Visibilité / Affichage

Hardwareconfigurable

Page 26: Algorithmique graphique

ImplémentationImplémentationTransformations de

modélisation

Illumination(Shading)

Transformations

Cartes graphiques troisième génération

Transformationsd’affichage

Clipping

Transformation écran((Projection)

Pixelisation(Rasterization)

Visibilité / Affichage

Hardwareprogrammable

Page 27: Algorithmique graphique

Rappels mathématiquesRappels mathématiques

Page 28: Algorithmique graphique

ScalaireScalaire

•• Un scalaire est une grandeur totalement définie par un nombre Un scalaire est une grandeur totalement définie par un nombre et une unité. et une unité.

•• Il a une valeur numérique mais pas d'orientation. Il a une valeur numérique mais pas d'orientation. •• Ex : Ex : •• Ex : Ex :

•• MasseMasse•• DistanceDistance•• TempératureTempérature•• VolumeVolume•• DensitéDensité•• Etc.Etc.

•• Les scalaires obéissent aux lois de l'algèbre ordinaireLes scalaires obéissent aux lois de l'algèbre ordinaire

Page 29: Algorithmique graphique

ScalaireScalaire

•• Opérations élémentaires:Opérations élémentaires:•• Addition & multiplicationAddition & multiplication•• PropriétésPropriétés

•• Commutativité Commutativité αββα

αββα⋅=⋅+=+

•• Associativité Associativité

•• Distributivité Distributivité

•• IdentitéIdentité•• Addition : 0Addition : 0•• Multiplication : 1Multiplication : 1

αββα ⋅=⋅

( ) ( )( ) ( ) γβαγβα

γβαγβα⋅⋅=⋅⋅

++=++

( ) ( ) ( )γαβαγβα ⋅+⋅=+⋅

ααα =+=+ 00

ααα =⋅=⋅ 11

Page 30: Algorithmique graphique

VecteurVecteur

•• Un vecteurUn vecteur est une entité mathématique définie par n valeurs numériques est une entité mathématique définie par n valeurs numériques extraites du même ensemble E (par exemple N, Z, R, C,…)extraites du même ensemble E (par exemple N, Z, R, C,…)

•• Ces valeurs numériques décrivent le moduleCes valeurs numériques décrivent le module et l'orientation du vecteuret l'orientation du vecteur•• n est appelé la dimension du vecteur.n est appelé la dimension du vecteur.

On dit que le vecteur est défini dans En. On dit que le vecteur est défini dans En. •• On dit que le vecteur est défini dans En. On dit que le vecteur est défini dans En. •• En est un espace de dimension n.En est un espace de dimension n.•• Exemple : dans Z2 , dans R3.Exemple : dans Z2 , dans R3.

•• Ex : Ex :

•• DéplacementDéplacement•• VitesseVitesse•• AccélérationAccélération•• ForceForce

32

RZ z

y

x

y

x

Page 31: Algorithmique graphique

Vecteurs unitairesVecteurs unitaires

•• Dans un repère les vecteurs sont décrit dans une base (unités de l’ensemble)Dans un repère les vecteurs sont décrit dans une base (unités de l’ensemble)

•• généralement unitairegénéralement unitaire•• Le vecteur est représenté par l’addition des vecteurs unitaires à chaque axe Le vecteur est représenté par l’addition des vecteurs unitaires à chaque axe

de coordonnées, en multipliant chacun par la projection (composante) de coordonnées, en multipliant chacun par la projection (composante) respective du vecteur.respective du vecteur.respective du vecteur.respective du vecteur.

kzjyixVrrrr

''' ++=

Page 32: Algorithmique graphique

VecteurVecteur

•• Les vecteurs obéissent aux lois de l'algèbre vectorielleLes vecteurs obéissent aux lois de l'algèbre vectorielle•• Opérations élémentairesOpérations élémentaires

•• Produit scalaire Produit scalaire •• Produit vectorielProduit vectoriel•• Produit vectorielProduit vectoriel•• Addition de vecteursAddition de vecteurs•• Produit vecteurProduit vecteur--scalairescalaire•• NormalisationNormalisation

Page 33: Algorithmique graphique

Produit scalaireProduit scalaire

• Le produit scalaire de deux vecteurs est le produit du module du premier par la composante du second dans la direction du premier

Br

Br

θcosA

•• Produit scalaire en fonctionProduit scalaire en fonction•• du module et de l’angle :du module et de l’angle :•• des composantes :des composantes :

Ar

θ

Ar

θ

θcosB

θcos. BABA =rr

zzyyxx BABABABA ++=rr

.

Page 34: Algorithmique graphique

Produit scalaireProduit scalaire

•• Propriétés :Propriétés :•• Commutativité Commutativité

DistributivitéDistributivité par l’addition par l’addition wvwuwvu ...)( +=+

uvvu .. =

•• DistributivitéDistributivité par l’addition par l’addition

•• Distributivité par un scalaireDistributivité par un scalaire

wvwuwvu ...)( +=+

).()(. vukvku ×=×

Page 35: Algorithmique graphique

Produit scalaireProduit scalaire

•• Angle entre deux vecteursAngle entre deux vecteurs

θcos. BABArrrr

=

zzyyxx BABABABA ++=rr

. BA

BABABA zzyyxxrr

++=⇒ θcos

•• Signe du produit scalaireSigne du produit scalaire

zzyyxx BABABABA ++=.

°<<°−⇒> 90900. θBArr

°±=⇒= 900. θBArr

°<<°°−<<°−⇒< 18090901800. θθ ouBArr

Page 36: Algorithmique graphique

Produit scalaireProduit scalaire

•• ApplicationApplication•• Projection d’un vecteur sur un autreProjection d’un vecteur sur un autre

•• Élimination des faces cachéesÉlimination des faces cachées

•• Calcul d’angle entre deux vecteursCalcul d’angle entre deux vecteurs•• Calcul de la quantité de lumière perçue par une faceCalcul de la quantité de lumière perçue par une face

•• OmbrageOmbrage

•• Etc. Etc.

Page 37: Algorithmique graphique

Produit vectorielProduit vectoriel

• Le module du produit vectoriel de deux vecteurs est le produit du module du premier par la composante du second qui est perpendiculaire au premier.

θθθrrrrrrrr

===×

Ar

Br

θθsinB

Ar

Br

θ

θsinA

• Le produit vectoriel est un vecteur perpendiculaire à A et à B dont le sens est donné par la règle de la main droite.

• Le produit vectoriel est nul si les deux vecteur sont parallèles et maximal s’ils sont perpendiculaires.

θθθ sin)sin()sin( BAABBABArrrrrrrr

===×

nuBABArrrrr

)sin( θ=× Ar

Br

θ

BArr

×

nur

Page 38: Algorithmique graphique

Produit vectoriel en fonction des composantes:

Produit vectorielProduit vectoriel

yx

yx

zx

zx

zy

zy

zyx BB

AAk

BB

AAj

BB

AAi

BBB

AAA

kji

BArrr

rrr

rr+−+==×

( ) ( )( ) ( )( ) ( )( )

:

2 4 1 4 1 21 2 4

1 5 3 5 3 13 1 5

2 5 1 4 1 5 3 4 1 1 3 2

6 17 7

Exemple

i j k

A B i j k

A B i j k

A B i j k

− −× = − = + − +

− −−

× = × − − × − − × − × − + × − − ×

× = − −

rr r

rr r r r

rr r r r

rr r r r

yxzxzy

zyx BBB

)()()( yxyxzxzxzyzy ABBAkABBAjABBAiBA −+−−−=×rrrrr

Page 39: Algorithmique graphique

Produit vectorielProduit vectoriel

•• PropriétésPropriétés•• Anticommutativité Anticommutativité

•• Distributivité sur l'addition Distributivité sur l'addition

)()( uvvu ×−=×

wvwuwvu ×+×=×+ )(•• Distributivité sur l'addition Distributivité sur l'addition

•• Distributivité par un scalaireDistributivité par un scalaire

•• NonNon--associativitéassociativité

wvwuwvu ×+×=×+ )(

kvkukvu ...)( +=+

)()( wvuwvu ××≠××

Page 40: Algorithmique graphique

Produit vectorielProduit vectoriel

•• ApplicationApplication•• Calcul de la normale à un planCalcul de la normale à un plan

Page 41: Algorithmique graphique

Addition de deux vecteursAddition de deux vecteurs

•• L’addition de deux vecteurs obéit à la règle du parallélogramme.L’addition de deux vecteurs obéit à la règle du parallélogramme.

Ar

BArr

+

•• Algébriquement cela se met en oeuvre en additionnant les Algébriquement cela se met en oeuvre en additionnant les composantes individuellement.composantes individuellement.

Br

kbjbibB

kajaiaA

zyx

zyx rrrr

rrrr

++=++=

kbajbaibaBA zzyyxx

rrrrr)()()( +++++=+

Page 42: Algorithmique graphique

Addition de deux vecteursAddition de deux vecteurs

Un vecteur A peut être décomposé en ses composantes rectangulaires Ax et Ay.

cos

sinx A

y A

A A

A A

θθ

==

Il est possible d’additionner des vecteurs en additionnant les composantes de ces vecteur.

2 2

cos sin

cos sinx A y A

x B y B

x x x y y y

yx y R

x

A A A A

B B B B

R A B R A B

RR R R tg

R

θ θθ θ

θ

= =

= =

= + = +

= + =

Page 43: Algorithmique graphique

NormeNorme

•• La norme d’un vecteur est sa taille.La norme d’un vecteur est sa taille.•• Cette taille est calculée par le théorème de Pythagore, puisque les composantes Cette taille est calculée par le théorème de Pythagore, puisque les composantes

d’un vecteur forment toujours des triangles rectangles deux à deux.d’un vecteur forment toujours des triangles rectangles deux à deux.

jyixVrrr

'' +=

•• Pour la dimension n on applique le même principe, en faisant que les deux côtés du Pour la dimension n on applique le même principe, en faisant que les deux côtés du triangle rectangle soient les projections du vecteur dans un soustriangle rectangle soient les projections du vecteur dans un sous--espace de dimension espace de dimension nn––1 et dans l’axe de la dimension manquante.1 et dans l’axe de la dimension manquante.

•• La norme d'un vecteur AB est la distance de A à BLa norme d'un vecteur AB est la distance de A à B

ixr

'

jyr

'

Vr

22 )'()'( yxV +=r

222 )'()'()'( zyxV ++=r

Page 44: Algorithmique graphique

Normalisation d’un vecteurNormalisation d’un vecteur

•• La normalisation fait qu’un vecteur devienne unitaire, c’estLa normalisation fait qu’un vecteur devienne unitaire, c’est--àà--dire, avec dire, avec la norme 1.la norme 1.

•• Pour normaliser un vecteur il suffit de diviser toutes ses composantes Pour normaliser un vecteur il suffit de diviser toutes ses composantes par sa norme.par sa norme.

222 )'()'()'(

'''

zyx

kzjyix

V

V

++++=

rrr

r

r

))'()'()'(

',

)'()'()'(

',

)'()'()'(

'(

222222222 zyx

z

zyx

y

zyx

xVn

++++++=

r

)'()'()'( zyxV ++

Vr

nVr

nVVVrrr

.=

Page 45: Algorithmique graphique

Matrice Matrice

•• On appelle matrice M un tableau à deux indices de n*m valeurs On appelle matrice M un tableau à deux indices de n*m valeurs numériques extraites du même ensemble E.numériques extraites du même ensemble E.

mmmmm

mmmmm

1514131211

•• Exemple : Exemple : n = 4, m = 5. n = 4, m = 5.

•• Usuellement n et m sont le nombre de lignes et le nombre de colonnes Usuellement n et m sont le nombre de lignes et le nombre de colonnes de la matrice.de la matrice.

•• Si n = m la matrice est dite carrée.Si n = m la matrice est dite carrée.

Rmmmmm

mmmmm

mmmmm

4444434241

3434333231

2424232221

Page 46: Algorithmique graphique

MatriceMatrice

•• Opération possibleOpération possible•• AdditionAddition

•• MatriceMatrice--matricematrice•• ScalaireScalaire--matricematrice

MultiplicationMultiplication•• MultiplicationMultiplication•• MatriceMatrice--matricematrice•• MatriceMatrice--vecteurvecteur•• ScalaireScalaire--matricematrice

•• InversionInversion•• TranspositionTransposition

Page 47: Algorithmique graphique

Produit matrice par vecteurProduit matrice par vecteur

•• Soient :Soient :•• un vecteur de dimension n (vi, 1 <= i <= n) un vecteur de dimension n (vi, 1 <= i <= n) •• une matrice carrée de dimension m x n (mij, 1 <= i <= m, 1 <= j <= n).une matrice carrée de dimension m x n (mij, 1 <= i <= m, 1 <= j <= n).

•• Le vecteur produit de par est :Le vecteur produit de par est :

•• On calcule le produit de chaque ligne de la matrice par le vecteur colonne.On calcule le produit de chaque ligne de la matrice par le vecteur colonne.

VMWrr

.=Wr

M Vr

Vr

M

•• On calcule le produit de chaque ligne de la matrice par le vecteur colonne.On calcule le produit de chaque ligne de la matrice par le vecteur colonne.

nivmwn

k kiki ≤≤=∑ =1.

1

m x nm x n n x 1n x 1 m x 1m x 1

Page 48: Algorithmique graphique

Produit matrice par vecteurProduit matrice par vecteur

•• Exemple Exemple

Page 49: Algorithmique graphique

Produit matrice par matriceProduit matrice par matrice

•• Soient deux matrices et de dimensions respectives :Soient deux matrices et de dimensions respectives :

•• n x m (m1ij, 1 <= i <= n, 1 <= j <= m) n x m (m1ij, 1 <= i <= n, 1 <= j <= m) •• m x p (m2ij, 1 <= i <= m, 1 <= j <= p)m x p (m2ij, 1 <= i <= m, 1 <= j <= p)

•• La matrice M produit de M1 par M2 est de dimension n x p est calculée par la formule La matrice M produit de M1 par M2 est de dimension n x p est calculée par la formule suivante :suivante :

1M 2M

suivante :suivante :

)1,1(2.11

pjnimmmm

k kjikij ≤≤≤≤=∑ =

n x mn x m m x pm x p n x pn x p

Page 50: Algorithmique graphique

Produit matrice par matriceProduit matrice par matrice

•• Exemple Exemple

Page 51: Algorithmique graphique

Espace vectoriel Espace vectoriel -- Espace affineEspace affine

•• UnUn espaceespace vectorielvectoriel estest l’espacel’espace oùoù viventvivent lesles vecteursvecteurs (déplacements(déplacements ououdirections)directions).. SesSes principalesprincipales propriétéspropriétés sontsont l’existencel’existence d’und’un vecteurvecteur nulnul etet lala stastabilitébilité dede l’espacel’espace pourpour toutetoute combinaisoncombinaison linéairelinéaire dede vecteursvecteurs..bilitébilité dede l’espacel’espace pourpour toutetoute combinaisoncombinaison linéairelinéaire dede vecteursvecteurs..

•• UnUn espaceespace affineaffine estest l’espacel’espace dansdans lequellequel viventvivent lesles pointspoints àà partirpartir desquelsdesquelsonon définitdéfinit lesles objetsobjets géométriquesgéométriques usuelsusuels (droites,(droites, ......)).. IlIl sese construitconstruit àà partirpartird’und’un pointpoint dede référenceréférence (l’origine)(l’origine) etet d’und’un espaceespace vectorielvectoriel (déplacements(déplacementsautorisésautorisés àà partirpartir dede cece point)point)..

Page 52: Algorithmique graphique

TransformationsTransformations

Linéaire

Affine

Projective

Similitude

Translation Rotation

Rigide / EuclidienneLinéaire

Similitude

Homothétieisotrope Homothétie

Reflection

Perspective

Identité

Page 53: Algorithmique graphique

TransformationsTransformations

Linéaire

Affine

Projective

Similitude

Translation Rotation

Rigide / EuclidienneLinéaire

Similitude

Homothétieisotrope Homothétie

Reflection

Perspective

Identité

Page 54: Algorithmique graphique

TransformationsTransformations

•• Transformations Euclidiennes rigides : 6 DDLTransformations Euclidiennes rigides : 6 DDL•• Rotation (3DDL), Translation (3DDL).Rotation (3DDL), Translation (3DDL).

•• PropriétésPropriétésPréservent les angles.Préservent les angles.•• Préservent les angles.Préservent les angles.

•• Préservent les distances.Préservent les distances.

Page 55: Algorithmique graphique

TransformationsTransformations

Linéaire

Affine

Projective

Similitude

Translation Rotation

Rigide / EuclidienneLinéaire

Similitude

Homothétieisotrope Homothétie

Reflection

Perspective

Identité

Page 56: Algorithmique graphique

TransformationsTransformations

•• Similitudes : 7 DDLSimilitudes : 7 DDL•• Rotation (3DDL), Translation (3DDL), Homothétie Rotation (3DDL), Translation (3DDL), Homothétie

isotrope (1DDL)isotrope (1DDL)

•• PropriétésPropriétés•• Préservent les anglesPréservent les angles•• Préservent les anglesPréservent les angles•• Préservent lPréservent les rapports de longueurs•• Préservent Préservent les rapports de surfaces•• Préservent lPréservent le parallélisme• Préservent les formes (un cercle reste un cercle, un

carré reste un carré, etc.)

• Généralisation des transformations Euclidiennes et Homothétie

Page 57: Algorithmique graphique

TransformationsTransformations

Linéaire

Affine

Projective

Similitude

Translation Rotation

Rigide / EuclidienneLinéaire

Similitude

Homothétieisotrope Homothétie

Reflection

Perspective

Identité

Page 58: Algorithmique graphique

TransformationsTransformations

•• Transformations linéaires : 9DDLTransformations linéaires : 9DDL

•• Rotation (3DDL), Homothétie (3DDL), Rotation (3DDL), Homothétie (3DDL), Reflection Reflection (3DDL)(3DDL)

•• PropriétésPropriétés• Préservent les rapports de longueurs sur une droite• Préservent les parallèles• Préservent le centre de gravité• Préservent le plan à l’infini• Préservent le rapports d’aire

•• Transformations dans espace vectorielTransformations dans espace vectoriel

Page 59: Algorithmique graphique

TransformationsTransformations

Linéaire

Affine

Projective

Similitude

Translation Rotation

Rigide / EuclidienneLinéaire

Similitude

Homothétieisotrope Homothétie

Reflection

Perspective

Identité

Page 60: Algorithmique graphique

TransformationsTransformations

• Transformations affines : 12 DDL•• Rotation (3DDL), Translation (3DDL), Homothétie (3DDL), Rotation (3DDL), Translation (3DDL), Homothétie (3DDL), ReflectionReflection

(3DDL)(3DDL)

• PropriétésPréservent les rapports de longueurs sur une droite• Préservent les rapports de longueurs sur une droite

• Préservent les parallèles• Préservent le centre de gravité• Préservent le plan à l’infini• Préservent le rapports d’aire

• Transformation dans un espace affine

Page 61: Algorithmique graphique

TransformationsTransformations

Linéaire

Affine

Projective

Similitude

Translation Rotation

Rigide / EuclidienneLinéaire

Similitude

Homothétieisotrope Homothétie

Reflection

Perspective

Identité

Page 62: Algorithmique graphique

TransformationsTransformations•• Transformations projectives ou homographie : 15 DDLTransformations projectives ou homographie : 15 DDL

•• Rotation (3DDL), Translation (3DDL), Homothétie (3DDL), Rotation (3DDL), Translation (3DDL), Homothétie (3DDL), ReflectionReflection (3DD(3DDL), Projection (3DDL)L), Projection (3DDL)

•• PropriétésPropriétés•• Préservent les droites (Colinéarité)Préservent les droites (Colinéarité)Préservent les droites (Colinéarité)Préservent les droites (Colinéarité)•• Préservent le birapportPréservent le birapport•• Préservent les intersectionsPréservent les intersections•• Préservent l’incidencePréservent l’incidence

Page 63: Algorithmique graphique

Transformations de modélisationTransformations de modélisation

•Application des transformations decomposition de scène : Passage dusystème de coordonnées local dechaque objet 3D (object space) vers

Transformations demodélisation

Illumination(Shading)

Transformations chaque objet 3D (object space) versun repère global (world space)

Object space World space

Transformationsd’affichage

Clipping

Transformation écran((Projection)

Pixelisation(Rasterization)

Visibilité / Affichage

Page 64: Algorithmique graphique

Les transformations élémentairesLes transformations élémentairesLes transformations élémentairesLes transformations élémentaires

Page 65: Algorithmique graphique

TransformationsTransformations

•• Utilisations :Utilisations :

•• Déplacement d'un objet dans une scèneDéplacement d'un objet dans une scène

•• Déplacement d'un observateur par rapport a une scèneDéplacement d'un observateur par rapport a une scène

•• Réplication d'un motif ou d'un objetRéplication d'un motif ou d'un objet

•• Déformation d'un objetDéformation d'un objet

•• ProjectionProjection

•• etc.etc.

Page 66: Algorithmique graphique

TransformationsTransformations

•• Un objet est décrit par un ensemble de sommetsUn objet est décrit par un ensemble de sommets

•• Appliquer une transformation à un objet revient à l’appliquer à tous Appliquer une transformation à un objet revient à l’appliquer à tous ses sommetsses sommets

T+RT+R

Page 67: Algorithmique graphique

TransformationsTransformations

•• On utilise la notation vectorielle On utilise la notation vectorielle •• Les sommets sont représentés sous forme de vecteursLes sommets sont représentés sous forme de vecteurs

= i

i

i y

x

p

=

i

ii

z

yp

Page 68: Algorithmique graphique

TransformationsTransformations

•• Translation :Translation :•• Ajouter aux coordonnées du sommet la valeur de la translationAjouter aux coordonnées du sommet la valeur de la translation

ixi

yTy

xTx

+=+=

'

'

•• Notation matricielleNotation matricielle•• Addition du vecteur de translationAddition du vecteur de translation

+

=

i

i

i

z

y

x

i

i

i

z

y

x

T

T

T

z

y

x

'

'

'

izi

iyi

zTz

yTy

+=+=

'

'

T

p(x,y)

p’(x’,y’)

Tx

Ty

Page 69: Algorithmique graphique

TransformationsTransformations

•• Rotation par rapport à l’origine autour de l’axe ZRotation par rapport à l’origine autour de l’axe Z•• Calcul à l’aide de l’algèbre vectorielle Calcul à l’aide de l’algèbre vectorielle

zizii

yxy

yxx

−=−=

cos.sin.'

sin.cos.'

θθθθ

•• Notation matricielle Notation matricielle •• Multiplication par la matrice de rotationMultiplication par la matrice de rotation

ii

zizii

zz

yxy

=−=

'

cos.sin.' θθ

−=

i

i

i

zz

zz

i

i

i

z

y

x

z

y

x

100

0cossin

0sincos

'

'

'

θθθθ

p(x,y)

p’(x’,y’)

xx’

y’

y

θz

Page 70: Algorithmique graphique

TransformationsTransformations

•• HomothétieHomothétie•• Multiplication par les facteurs d’échelles Multiplication par les facteurs d’échelles

iyi

ixi

ySy

xSx

.'

.'

==

•• Notation matricielleNotation matricielle•• Multiplication par la matrice d’Homothétie Multiplication par la matrice d’Homothétie

=

i

i

i

z

y

x

i

i

i

z

y

x

S

S

S

z

y

x

00

00

00

'

'

'

izi zSz .' =

p(x,y)

p’(x’,y’)

xSx. x

Sy. y

y

Page 71: Algorithmique graphique

TransformationsTransformations

•• La notation matricielleLa notation matricielle•• Permet une notation simple, concisePermet une notation simple, concise•• Mais pas vraiment unifiéeMais pas vraiment unifiée

•• Addition ou bien multiplication en fonction de la transformation (traAddition ou bien multiplication en fonction de la transformation (translation, rotation…)nslation, rotation…)nslation, rotation…)nslation, rotation…)

•• On veut une notation uniqueOn veut une notation unique•• concaténer plusieurs transformations concaténer plusieurs transformations •• permette de noter aussi les combinaisons de transformationspermette de noter aussi les combinaisons de transformations

Page 72: Algorithmique graphique

Coordonnées homogènesCoordonnées homogènes

•• LesLes coordonnéescoordonnées homogèneshomogènes sontsont utiliséesutilisées enen synthèsesynthèse d'imaged'image afinafin d'unifierd'unifier lele traitementtraitement desdestransformationstransformations géométriquesgéométriques d'uned'une scènescène etet dede lesles regrouperregrouper dansdans uneune seuleseule matricematrice.. EnEn effet,effet,sisi l'onl'on utiliseutilise uneune matricematrice 22**22 pourpour lesles scènesscènes bidimensionnellesbidimensionnelles etet uneune matricematrice 33**33 pourpour leslesscènesscènes tridimensionnelles,tridimensionnelles, cesces matricesmatrices nene peuventpeuvent exprimerexprimer queque desdes rotationsrotations..

•• PourPour exprimerexprimer aussiaussi lesles translations,translations, lesles changementschangements d'échelled'échelle etet lesles projections,projections, onon vava utiliserutiliserdesdes matricesmatrices 44**44 pourpour lesles scènesscènes tridimensionnellestridimensionnelles..

•• OnOn rajouterajoute égalementégalement uneune 44èmeème coordonnéescoordonnées auxaux pointspoints manipulésmanipulés ww ((ww==11)) :: ((x,y,z,x,y,z,ww))

3x33x3

1x31x3

3x13x1

1x11x1

RotationRotationet changement et changement

d’échelle d’échelle PerspectivePerspective Homothétie Homothétie TranslationTranslation

Page 73: Algorithmique graphique

Coordonnées homogènesCoordonnées homogènes

•• Ainsi, si (x,y,z) sont les coordonnées d'un point de la scène à transformer et Ainsi, si (x,y,z) sont les coordonnées d'un point de la scène à transformer et MMHH

la matrice 4*4 de coordonnées homogènes, on effectuera la multiplication : la matrice 4*4 de coordonnées homogènes, on effectuera la multiplication :

MMH H ** [[ x y z x y z 11 ]]

[[•• Ce qui donnera comme résultatCe qui donnera comme résultat [[X Y Z HX Y Z H ].].

•• Les coordonnées du point transformé seront alors (Les coordonnées du point transformé seront alors (x’ y’ z’) = x’ y’ z’) = ((X/H,Y/H,Z/HX/H,Y/H,Z/H).).

•• La matrice 4*4 des coordonnées homogènes peut être considérée comme La matrice 4*4 des coordonnées homogènes peut être considérée comme étant composée de 4 sousétant composée de 4 sous--matrices, chacune d'elle étant associée à un type matrices, chacune d'elle étant associée à un type de transformation.de transformation.

Page 74: Algorithmique graphique

Manipulations géométriquesManipulations géométriques

•• Soit un pointSoit un point

•• Soit une transformation géométrique définie par la matrice donnée en coordonnéeSoit une transformation géométrique définie par la matrice donnée en coordonnées homogènes.s homogènes.

•• Le Point transformé de par la matrice est :Le Point transformé de par la matrice est :

p

M

'p M pMp .'=•• Le Point transformé de par la matrice est :Le Point transformé de par la matrice est :

•• Transformations :Transformations :•• TranslationTranslation•• RotationRotation•• Changements d’échelleChangements d’échelle•• SymétriesSymétries•• ProjectionProjection•• Affinités orthogonalesAffinités orthogonales•• etc.etc.

'p M pMp .'=

Page 75: Algorithmique graphique

TranslationsTranslations

=

×

10100

010

001

31

133 TI

T

T

T

Tz

y

x

1000

PTzT

yT

xT

z

y

x

T

T

T

PTPz

y

x

z

y

x

+=

+++

=

==

11

.

1000

100

010

001

.'

Page 76: Algorithmique graphique

Rotations (angles d’Euler)Rotations (angles d’Euler)

=

××

10

0

1000

0

0

0

31

1333

333231

232221

131211

R

RRR

RRR

RRR

R

−==

1000

0100

00cossin

00sincos

.

1000

0cos0sin

0010

0sin0cos

.

1000

0cossin0

0sincos0

0001

.. zz

zz

yy

yy

xx

xxzyx RRRR

θθθθ

θθ

θθ

θθθθ

==

1

.

1000

0

0

0

.'333231

232221

131211

z

y

x

RRR

RRR

RRR

PRP

Page 77: Algorithmique graphique

Rotations (angles d’Euler)Rotations (angles d’Euler)

•• Règles pour la construction de la matrice de rotation d’angle Règles pour la construction de la matrice de rotation d’angle Ө• Ligne 1 associée à x, ligne 2 à y et ligne 3 à z• 1 sur la diagonale pour l’axe de rotation et la coordonnée

homogénecos(Ө) sur la diagonale pour les deux autres axes• cos(Ө) sur la diagonale pour les deux autres axes

• sin(Ө) sur les diagonales supérieure et inférieure pour “compléter le carré”

• Sur la ligne suivant celle de l’axe de rotation, le sinus est précédé d’un signe ‘-’

Page 78: Algorithmique graphique

Homothétie isotropeHomothétie isotrope

=

××

10

0

1000

000

000

000

31

1333S

S

S

S

R

1000

PSzS

yS

xS

z

y

x

S

S

S

PSP .

1

.

.

.

1

.

1000

000

000

000

.' =

=

==

Page 79: Algorithmique graphique

Homothétie : Affinités orthogonalesHomothétie : Affinités orthogonales

=

××

10

0

1000

000

000

000

31

1333S

S

S

S

Rz

y

x

xSxS .000

PSzS

yS

xS

z

y

x

S

S

S

PSPz

y

x

z

y

x

.

1

.

.

.

1

.

1000

000

000

000

.' =

=

==

1000

0100

0010

000xS

1000

000

0010

0001

zS

1000

0100

000

0001

yS

Affinité d'axe x par rapportAffinité d'axe x par rapportau plan yOzau plan yOz

Affinité d'axe y par rapportAffinité d'axe y par rapportau plan xOz au plan xOz

Affinité d'axe z par rapportAffinité d'axe z par rapportau plan xOy au plan xOy

Page 80: Algorithmique graphique

GlissementGlissement

•• Appelée aussi Appelée aussi shear shear ou cisaillement : étirement suivant un axeou cisaillement : étirement suivant un axe•• La matrice d'un glissement parallèle à x et de rapport k est :La matrice d'un glissement parallèle à x et de rapport k est :

0100

0010

001 k

•• La matrice d'un glissement parallèle à x, de rapport k et de ligne de base y = yLa matrice d'un glissement parallèle à x, de rapport k et de ligne de base y = yrefref est :est :

1000

0100

1000

0100

0010

0.1 refykk

refy

Page 81: Algorithmique graphique

Composition de Transformations

Page 82: Algorithmique graphique

(0,0)

(1,1)(2,2)

(0,0)

(5,3)

(3,1)Scale(2,2) Translate(3,1)

Composition de Transformations

Exemple : Exemple :

(0,0) (0,0)

Multiplication de matrices : Multiplication de matrices : p'p' = = TT .( .( SS ..pp ) = T.S .) = T.S .pp

=

=100

120

302

100

020

002

.

100

110

301

.ST

Page 83: Algorithmique graphique

homothétie puis translation : p' = T .(S .p ) = T.S .p

(1,1)(2,2)

(5,3)

(3,1)Scale(2,2) Translate(3,1)

Non-commutatif

Composition de Transformations

translation puis homothétie : p' = S. (T .p ) = S.T .p

(0,0)

(1,1)(4,2)

(3,1)

(8,4)

(6,2)

(0,0)

(1,1)

(0,0)(3,1)

Scale(2,2) Translate(3,1)

Translate(3,1) Scale(2,2)

Page 84: Algorithmique graphique

=

=100

120

302

100

020

002

.

100

110

301

)2,2().1,3( ST

Composition de Transformations

=

=

100

220

602

100

110

301

.

100

020

002

)1,3().2,2(

100100100

TS

Page 85: Algorithmique graphique

p’ = M . p et p" = M’. p’=>

Cas général

Composition de Transformations

=>p" = M’ . M . p

ou

p" = M" . p avec M" = M’ . M

Page 86: Algorithmique graphique

Ordre d’Application

Composition de Transformations

p" = M’ . M . p => M puis M’

On applique M à P, puis M’ au résultat : On applique M à P, puis M’ au résultat : l’ordre dl’ordre d ’application des transformations se lit de ’application des transformations se lit de droite à gauchedroite à gauche, et non dans le sens de la lecture, et non dans le sens de la lecture

Page 87: Algorithmique graphique

Composition de Transformations

•• Les transformations élémentaires sont définies par Les transformations élémentaires sont définies par rapport à l’origine du repère de la scènerapport à l’origine du repère de la scène

•• Pour se placer d’un points quelconque , on doit :Pour se placer d’un points quelconque , on doit :1.1.Revenir à l’origine du repère (translation) : TRevenir à l’origine du repère (translation) : TPP-->O>O1.1.Revenir à l’origine du repère (translation) : TRevenir à l’origine du repère (translation) : TPP-->O>O

2.2.Faire la(les) transformation(s) voulue(s)Faire la(les) transformation(s) voulue(s)3.3.Se remettre au point de départ (translation) : TSe remettre au point de départ (translation) : TOO-->P>P

Page 88: Algorithmique graphique

Exemple 1 :

On désire établir la transformation consistant à effectuer une rotation de Өz radians autour de l'axe colinéaire à z passant par le point P de coordonnées (Tx,Ty,Tz).

Composition de Transformations

par le point P de coordonnées (Tx,Ty,Tz).

ZZXX

YY

R(θz)

Page 89: Algorithmique graphique

Cette transformation M est réalisée en amenant p à l'origine par une translation T de -p, puis en effectuant une rotation R d'angle Өz autour de l'axe Oz, et enfin en ramenant p à sa position initiale par une translation T'de p :

p’ = (T(x,y,z) . R(θz) . T(-x,-y,-z) ) . p = M . p

Composition de Transformations

ZZXX

YY

( z )

ZZXX

YY

T(-x,-y,-z) T(x,y,z)R(θz)

Page 90: Algorithmique graphique

Composition de Transformations

−−−

=

1000

100

010

001

.

1000

0100

00cossin

00sincos

.

1000

100

010

001

z

y

x

zz

zz

z

y

x

T

T

T

T

T

T

Mθθθθ

++−++−−

=

−+−+−−

=

1000

0100

cossin0cossin

sincos0sincos

1000

100

cossin0cossin

sincos0sincos

.

1000

100

010

001

100010001000

yzyzxzz

xzyzxzz

z

zyzxzz

zyzxzz

z

y

x

TTT

TTT

M

T

TT

TT

T

T

T

M

θθθθθθθθ

θθθθθθθθ

Page 91: Algorithmique graphique

Composition de Transformations

•• Les compositions de transformations servent à Les compositions de transformations servent à

Décrire une hiérarchie de transformations : graphe de scèneDécrire une hiérarchie de transformations : graphe de scène•• Décrire une hiérarchie de transformations : graphe de scèneDécrire une hiérarchie de transformations : graphe de scène

•• Changement de repèreChangement de repère

Page 92: Algorithmique graphique

Modélisation hiérarchique Modélisation hiérarchique

•• Un modèle hiérarchique permet de décrire facilement des Un modèle hiérarchique permet de décrire facilement des objets complexes composés d’objets simplesobjets complexes composés d’objets simples

•• La scène est organisée dans un arbreLa scène est organisée dans un arbre•• Les objets ne sont plus définis par leur transformation absolue Les objets ne sont plus définis par leur transformation absolue

par rapport au repère global, mais par leur transformation par rapport au repère global, mais par leur transformation par rapport au repère global, mais par leur transformation par rapport au repère global, mais par leur transformation relative dans cet arbre :relative dans cet arbre :

•• Le repère associé à la racine est le repère de la scèneLe repère associé à la racine est le repère de la scène•• A chaque nœud est associé un repèreA chaque nœud est associé un repère•• A chaque arc est associée une transformation géométrique qui poA chaque arc est associée une transformation géométrique qui po

sitionne l’objet fils dans le repère de son pèresitionne l’objet fils dans le repère de son père

•• Un objet peut être inclus plusieurs fois dans la hiérarchie :Un objet peut être inclus plusieurs fois dans la hiérarchie :•• la structure de données est un Graphe Orienté Acyclique (DAG)la structure de données est un Graphe Orienté Acyclique (DAG)

Page 93: Algorithmique graphique

Modélisation hiérarchiqueModélisation hiérarchique

Page 94: Algorithmique graphique

Modélisation hiérarchiqueModélisation hiérarchique

•• Construction du graphConstruction du graph•• On commence par un processus descendant ("topOn commence par un processus descendant ("top--down") dans down") dans

lequel on effectue une décomposition récursive du modèle lequel on effectue une décomposition récursive du modèle géométrique en objets plus simples jusqu'à aboutir à des objets géométrique en objets plus simples jusqu'à aboutir à des objets élémentaires (primitives géométriques)élémentaires (primitives géométriques)élémentaires (primitives géométriques)élémentaires (primitives géométriques)

•• On construit la chaine cinématique (graph) depuis la racine pour On construit la chaine cinématique (graph) depuis la racine pour aboutir aux nœuds aboutir aux nœuds

Page 95: Algorithmique graphique

Modélisation hiérarchiqueModélisation hiérarchique

Exemple : MaisonExemple : Maison

Page 96: Algorithmique graphique

Modélisation hiérarchiqueModélisation hiérarchique

Maison

Tm

TcTg

Fenêtre 1Porte

Facade

Garage Corps Principal

Fenêtre 2 Fenêtre 3 Fenêtre 4 Fenêtre 5

Toit

Tva

Tfa

Tf1

Vitre a

Tga Tgb

Page 97: Algorithmique graphique

Modélisation hiérarchiqueModélisation hiérarchique

porte a du garage Tm.Tg.Tga

Pile de transformationsPile de transformations

porte b du garage

vitre a

etc . . . .

Tm.Tg.Tgb

Tm.Tc.Tfa.Tf1.Tva

Page 98: Algorithmique graphique

Changement de repèreChangement de repère

•• Permet de transformer les coordonnées d'un point exprimées Permet de transformer les coordonnées d'un point exprimées dans un premier repère en coordonnées exprimées dans dans un premier repère en coordonnées exprimées dans deuxième repèredeuxième repère

•• Utile lorsque :Utile lorsque :•• Les objets manipulés sont définis dans des repères locauxLes objets manipulés sont définis dans des repères locaux

•• Animation, modélisation, etc.Animation, modélisation, etc.

•• la modélisation des caméras.la modélisation des caméras.

Page 99: Algorithmique graphique

Changement de repèreChangement de repère

•• Soient deux repères Soient deux repères RR11 et et RR22

•• Soit Soit MM la matrice de passage du repère la matrice de passage du repère RR22 au repère au repère RR11

•• Soient Soient (x(x22, y, y22, z, z22, 1), 1) les coordonnées de les coordonnées de pp22 dans dans RR22

•• Soient Soient (x(x11, y, y11, z, z11, 1), 1) les coordonnées de les coordonnées de pp11 dans dans RR11

ZZ XX

RR11

ZZ11

YY11

XX11

RR22

ZZ22

YY22

XX22

MM

Page 100: Algorithmique graphique

Changement de repèreChangement de repère

12 .pMp =

21312111 x xTRRRx

211

.

100012

2

12

333231

232221

1

1

R

z

y

R

z

y

TRRR

TRRR

z

y

=

12

333231

232221

131211

1000 →

=z

y

x

TRRR

TRRR

TRRR

M

Page 101: Algorithmique graphique

Changement de repèreChangement de repère

ZZ11

ZZ22 XX22ӨӨzz 0 RRR

RR11

YY11

XX11

RR22

ZZ22

YY22

XX22ӨӨzz

ӨӨyy

ӨӨxx

12

333231

232221

131211

1000

0

0

0

RRR

RRR

RRR

Page 102: Algorithmique graphique

Changement de repèreChangement de repère

ZZ11

ZZ22 XX22

RR11

YY11

XX11

RR22

YY22

TT

12

333231

232221

131211

1000 →

z

y

x

TRRR

TRRR

TRRR

Page 103: Algorithmique graphique

Changement de repèreChangement de repère

•• Passage du repère R1 au repère R2Passage du repère R1 au repère R2

ZZ11

RR22

ZZ22 XX22

M’M’

RR11

YY11

XX11

RR22

YY22

21

121 .'. pMppMp −=⇒=

11221

.

100011

1

1

1

333231

232221

131211

2

2

2

R

z

y

x

R

z

y

x

TRRR

TRRR

TRRR

z

y

x

=

Page 104: Algorithmique graphique

La projection La projection La projection La projection

Page 105: Algorithmique graphique

Transformation écran Transformation écran

•Les primitives 3D sont projetées sur l'espace image 2D (screen space)

Transformations demodélisation

Illumination(Shading)

Transformations

NDC Screen Space

Transformationsd’affichage

Clipping

Transformation écran((Projection)

Pixelisation(Rasterization)

Visibilité / Affichage

Page 106: Algorithmique graphique

La projectionLa projection

•• La projection est une réduction du nombre de dimensions.La projection est une réduction du nombre de dimensions.•• L’infographie est concernée par les projections de 3L’infographie est concernée par les projections de 3--D vers 2D vers 2--D.D.

AAAA

BBaa

bb

Page 107: Algorithmique graphique

XXXX

•• On note que la projection d'une droite en 3D est une droite en 2D.On note que la projection d'une droite en 3D est une droite en 2D.•• Il est suffisant de projeter les sommets d'une droite 3D et puis de tracer la droite Il est suffisant de projeter les sommets d'une droite 3D et puis de tracer la droite

2D entre ces projections.2D entre ces projections.

Page 108: Algorithmique graphique

La projectionLa projection

•• LesLes projectionsprojections desdes objetsobjets sontsont forméesformées parpar lesles intersectionsintersections dede ligneslignesappeléesappelées projecteursprojecteurs avecavec unun planplan appeléappelé planplan dede vuevue ouou planplan dede projectionprojection..

•• LesLes projecteursprojecteurs sontsont desdes ligneslignes partantpartant d’und’un pointpoint arbitrairementarbitrairement appeléappelécentrecentre dede projectionprojection (CP),(CP), enen traversanttraversant chaquechaque pointpoint d’und’un objetobjet..

SiSi lesles projecteursprojecteurs sontsont desdes ligneslignes droites,droites, etet queque lele planplan dede projectionprojection estest plat,plat,•• SiSi lesles projecteursprojecteurs sontsont desdes ligneslignes droites,droites, etet queque lele planplan dede projectionprojection estest plat,plat,lala projectionprojection estest uneune projectionprojection géométriquegéométrique 22DD..

ProjecteursProjecteurs

Centre de projectionCentre de projection(CP)(CP)

Plan de projectionPlan de projection AA

BBaa

bb

Page 109: Algorithmique graphique

Les projectionsLes projections

•• Si le centre de projection (CP) est localisé à un point fini de l’esSi le centre de projection (CP) est localisé à un point fini de l’espace tridimensionnel, le résultat est une projection en perspectipace tridimensionnel, le résultat est une projection en perspective.ve.

Si le CP est localisé à l’infini, tous les projecteurs sont parallèles Si le CP est localisé à l’infini, tous les projecteurs sont parallèles •• Si le CP est localisé à l’infini, tous les projecteurs sont parallèles Si le CP est localisé à l’infini, tous les projecteurs sont parallèles et le résultat est une projection parallèle.et le résultat est une projection parallèle.

AA

BB

aa

bb

AA

BB

aa

bb

Projection perspectiveProjection perspective projection parallèleprojection parallèle

Page 110: Algorithmique graphique

Les projectionsLes projections

•• Deux familles de projections :Deux familles de projections :

•• Projections parallèles.Projections parallèles.

•• Projections perspectives.Projections perspectives.

1 point 2 points 3 points

Page 111: Algorithmique graphique

Projections parallèlesProjections parallèles

•• Conditions :Conditions :•• La projection se fait dans le plan de projection suivant une direction de La projection se fait dans le plan de projection suivant une direction de

projection (DP). projection (DP). •• Les lignes parallèles restent parallèlesLes lignes parallèles restent parallèles

•• Propriétés Propriétés •• Les projections parallèles conservent les rapports des distances selon une Les projections parallèles conservent les rapports des distances selon une •• Les projections parallèles conservent les rapports des distances selon une Les projections parallèles conservent les rapports des distances selon une

direction donnéedirection donnée•• Pas réaliste mais peut être utilisée pour des mesures exactesPas réaliste mais peut être utilisée pour des mesures exactes

•• Il existe deux types de projections parallèles dépendant du fait que la direction Il existe deux types de projections parallèles dépendant du fait que la direction de projection soit perpendiculaire au plan de projection :de projection soit perpendiculaire au plan de projection :

•• Projections orthographiquesProjections orthographiques•• Projections obliquesProjections obliques

objetobjetprojetéprojeté

projectionprojectionde l’objetde l’objet

DPDP

Page 112: Algorithmique graphique

Projections parallèlesProjections parallèles

•• Projection orthographiqueProjection orthographique•• Projecteurs parallèles entre euxProjecteurs parallèles entre eux•• Projecteurs perpendiculaires au plan imageProjecteurs perpendiculaires au plan image

•• Projection ObliqueProjection Oblique•• Projecteurs parallèles entre euxProjecteurs parallèles entre eux•• Projecteurs NON perpendiculaires au plan imageProjecteurs NON perpendiculaires au plan image

Plan de projectionPlan de projection

Plan de projectionPlan de projection

Page 113: Algorithmique graphique

Projection orthographiqueProjection orthographique

•• Vue de devant, d’en haut, et de côtéVue de devant, d’en haut, et de côté

Page 114: Algorithmique graphique

Projection orthographiqueProjection orthographique

•• La projection orthographique consiste à supprimer une La projection orthographique consiste à supprimer une dimensiondimension

•• La dimension supprimée est celle suivant laquelle on réalise La dimension supprimée est celle suivant laquelle on réalise la projection la projection

Axe de projectionAxe de projection

ZZ

XX

XX

ppP’P’

Plan de projectionPlan de projection

Page 115: Algorithmique graphique

Projection orthographiqueProjection orthographique

•• Forme matricielle :Forme matricielle :

= .' pMp PZ

=

1

.

1000

0000

0010

0001

1

0

'

'

z

y

x

y

x

Page 116: Algorithmique graphique

Projection orthographiqueProjection orthographique

•• Vues de devant, d’en haut et de côté : la projection est faite sur un deVues de devant, d’en haut et de côté : la projection est faite sur un des plans perpendiculaires aux axes des coordonnées en mettant une des plans perpendiculaires aux axes des coordonnées en mettant une des coordonnées du point à 0.s coordonnées du point à 0.

=

=

=

1000

0000

0010

0001

1000

0100

0000

0001

1000

0100

0010

0000

PZPYPX MMM

Elimination de la dimension suivant la quelle nous réalisons la projectionElimination de la dimension suivant la quelle nous réalisons la projection

Page 117: Algorithmique graphique

Projection orthographiqueProjection orthographique

•• Projection orthographique axonométriqueProjection orthographique axonométrique•• Le plan de projection n’est pas perpendiculaire aux axes des Le plan de projection n’est pas perpendiculaire aux axes des

coordonnés, donc plusieurs facettes de l’objet sont montrées en coordonnés, donc plusieurs facettes de l’objet sont montrées en même temps.même temps.même temps.même temps.

Page 118: Algorithmique graphique

Projection obliqueProjection oblique

•• Direction de la projection n’est pas perpendiculaire au plan Direction de la projection n’est pas perpendiculaire au plan de projectionde projection

•• DP coupe le plan de projection en faisant un angle oblique DP coupe le plan de projection en faisant un angle oblique avec celuiavec celui--ci.ci.avec celuiavec celui--ci.ci.

•• Une projection cavalière est obtenue quand l’angle est de 45ºUne projection cavalière est obtenue quand l’angle est de 45º•• Pour une projection cabinet l’angle est de 63.4º.Pour une projection cabinet l’angle est de 63.4º.•• La matrice de projection est une combinaison de transformaLa matrice de projection est une combinaison de transforma--

tions d’étirement et de projection orthographique.tions d’étirement et de projection orthographique.

Page 119: Algorithmique graphique

Projection obliqueProjection oblique

objetobjetprojetéprojeté

projectionprojectionde l’objetde l’objet

DPDP

projetéprojeté

Page 120: Algorithmique graphique

Projection perspectiveProjection perspective

Page 121: Algorithmique graphique

Projection perspectiveProjection perspective

•• Réaliste : La taille de la projection d’un objet varie inversement Réaliste : La taille de la projection d’un objet varie inversement avec sa distance de CPavec sa distance de CP

|ab| = d0 . 1/d . |AB|•• Ne maintient pas la forme et les mesures exactesNe maintient pas la forme et les mesures exactes•• Les projections perspectives ne conservent pas le parallélisme Les projections perspectives ne conservent pas le parallélisme •• Les projections perspectives ne conservent pas le parallélisme Les projections perspectives ne conservent pas le parallélisme des droites non parallèles au plan de projectiondes droites non parallèles au plan de projection

•• La projection de n’importe quel ensemble de lignes parallèles La projection de n’importe quel ensemble de lignes parallèles non parallèles au plan de projection convergent vers un même non parallèles au plan de projection convergent vers un même pointpoint

•• Le point de fuite.Le point de fuite.AA

BB

aa

bb

dd

dd00

Page 122: Algorithmique graphique

Projection perspectiveProjection perspective

•• Point de fuitePoint de fuite•• Si une droite D coupe le plan de projection, il existe un point F, Si une droite D coupe le plan de projection, il existe un point F,

appelé point de fuite appartenant à la projection de toute droite appelé point de fuite appartenant à la projection de toute droite appelé point de fuite appartenant à la projection de toute droite appelé point de fuite appartenant à la projection de toute droite parallèle à D. parallèle à D.

Page 123: Algorithmique graphique

Projection perspectiveProjection perspective

•• On différencie les projections en perspective par le nombre On différencie les projections en perspective par le nombre de points de fuite pour les directions des axes du repère.de points de fuite pour les directions des axes du repère.

Projection à un point de fuiteProjection à un point de fuite Projection à des points de fuiteProjection à des points de fuite Projection à trois points de fuiteProjection à trois points de fuite

Page 124: Algorithmique graphique

Projection perspectiveProjection perspective

•• Calcul d’une perspective de point de fuite uniqueCalcul d’une perspective de point de fuite unique

Page 125: Algorithmique graphique

Projection perspectiveProjection perspective

•• Calcul d’une perspective de point de fuite uniqueCalcul d’une perspective de point de fuite unique

XX Plan de Plan de ⇒+−

=fz

x

f

xp

--zz++dd

xxxxpp

ffzz

ZZ

Plan de Plan de projectionprojection

Centre deCentre deprojectionprojection

1

.

+−=

⇒+−

=

⇒+−

=

f

zx

x

fz

fxx

fzf

p

p

Page 126: Algorithmique graphique

Projection perspectiveProjection perspective

•• Calcul d’une perspective de point de fuite uniqueCalcul d’une perspective de point de fuite unique

YY Plan de Plan de ⇒+−

=fz

y

f

yp

yyyypp

ff--zz++dd

zz

ZZ

Plan de Plan de projectionprojection

Centre deCentre deprojectionprojection

1

.

+−=

⇒+−

=

⇒+−

=

f

zy

y

fz

fyy

fzf

p

p

Page 127: Algorithmique graphique

Projection perspectiveProjection perspective

•• Représentation en forme matricielle :Représentation en forme matricielle :

⇒+−

=+−

=1

,1

f

zy

y

f

zx

x pp

−=

+−+−

1

.

1000

1100

0010

0001

'

'

'

'

11

z

y

x

fw

z

y

x

ff

Page 128: Algorithmique graphique

Projection perspectiveProjection perspective

+−

1f

zx

x

+−

+−=

+−

=

1

1

1

11'

'

'

'

f

zzf

zyf

z

y

x

f

zz

y

x

w

z

y

x

p

p

p

Page 129: Algorithmique graphique

Projection perspectiveProjection perspective

Plan de Plan de projectionprojection

ffzz

ZZ

Centre deCentre deprojectionprojection

z’z’

La taille de la projection varie en fonction de la distance de l’objet au plan de projectionLa taille de la projection varie en fonction de la distance de l’objet au plan de projection

Page 130: Algorithmique graphique

Projection perspectiveProjection perspective

Plan de Plan de projectionprojection

ff22

zz

ZZ

Centre deCentre deprojectionprojection

ff11

La taille de la projection varie en fonction de la distance du centre de projectionLa taille de la projection varie en fonction de la distance du centre de projectionau plan de projectionau plan de projection

Page 131: Algorithmique graphique

Projection perspectiveProjection perspective

• Plus f est large, plus la projection tend vers une projectionparallèle, où la profondeur a un petit effet dans les pointsprojetés et moins de sensation dans la perspective obtenue.

• Plus f est petit, plus la projection diverge de la projectionparallèle. La profondeur a une influence considérable sur lespoints projetés à la limite de créer des effets de perspectiveexagérés.

Page 132: Algorithmique graphique

Projection perspective Projection perspective

•• Transformations nécessairesTransformations nécessaires

Page 133: Algorithmique graphique

Projection perspectiveProjection perspective

=

1

.

1000

0333231

0232221

0131211

.

1000

100

010

001

1w

w

w

z

y

x

c

c

c

z

y

x

rrr

rrr

rrr

t

t

t

z

y

x

Page 134: Algorithmique graphique

Projection perspectiveProjection perspective

=

1

.

11

00

0100

0010

0001

.

1111

111

001

10

0

c

c

c

z

y

x

f

v

u

v

u

Page 135: Algorithmique graphique

Projection perspectiveProjection perspective

Page 136: Algorithmique graphique

Projection perspectiveProjection perspective

01312110010001

cx xrrrt

Passage du repère monde au plan imagePassage du repère monde au plan image

=

1

.

1000

0333231

0232221

0131211

.

1000

100

010

001

.

11

00

0100

0010

0001

.

1111

111

001

10

0

c

c

c

z

y

x

z

y

x

rrr

rrr

rrr

t

t

t

f

v

u

v

u

=

1

.

1000

333231

232221

131211

.

1111

01

00

10

0

c

c

c

z

y

x

z

y

x

trrr

trrr

trrr

vf

uf

v

u

Page 137: Algorithmique graphique

RasterisationRasterisation

•Découpe des primitives 2D en pixels

• Interpole les valeurs connues aux sommets : couleur, profondeur, etc. pour chaque fragment affiché

Transformations demodélisation

Illumination(Shading)

Transformations pour chaque fragment affichéTransformationsd’affichage

Clipping

Transformation écran((Projection)

Pixelisation(Rasterization)

Visibilité / Affichage

Page 138: Algorithmique graphique

RasterisationRasterisation

•• Traçage : Traçage : Segments de droitesSegments de droites•• Segments de droitesSegments de droites

•• CerclesCercles•• EllipsesEllipses

•• Remplissage des primitives projetées Remplissage des primitives projetées

Page 139: Algorithmique graphique

Tracé de segments de droitesTracé de segments de droites

•• Algorithme de base pour beaucoup de traitements de l'Informatique Algorithme de base pour beaucoup de traitements de l'Informatique Graphique:Graphique:

•• dessin en fil de fer, dessin en fil de fer, •• remplissage, remplissage, •• élimination des parties cachées, élimination des parties cachées, •• élimination des parties cachées, élimination des parties cachées, •• ......

Bons tracés Mauvais tracés Mauvais tracés

Page 140: Algorithmique graphique

Tracé de segments de droitesTracé de segments de droites

•• Trois impératifs:Trois impératifs:•• Tout point du segment discret est traversé par le segment continu.Tout point du segment discret est traversé par le segment continu.•• Tout point du segment discret touche au moins un autre point soit Tout point du segment discret touche au moins un autre point soit

par l'un de ses cotés (4par l'un de ses cotés (4--connexité), soit par un de ses sommets connexité), soit par un de ses sommets par l'un de ses cotés (4par l'un de ses cotés (4--connexité), soit par un de ses sommets connexité), soit par un de ses sommets (8(8--connexité).connexité).

•• On trace le moins de points possibles.On trace le moins de points possibles.

4-connexité 8-Connexité

Page 141: Algorithmique graphique

Tracé de segments par l'équation Tracé de segments par l'équation cartésienne cartésienne

•• Le tracé d’un segment entre deux points Le tracé d’un segment entre deux points (x(x11,y,y11)) etet (x(x22,y,y22)) dede RR22..•• On pose comme hypothèse simplificatrice : On pose comme hypothèse simplificatrice :

xx22>x>x11, y, y22>y>y11 etet (x(x22--xx11) >= (y) >= (y22--yy11))

•• Tous les autres cas peuvent s'y rapporter.Tous les autres cas peuvent s'y rapporter.•• Tous les autres cas peuvent s'y rapporter.Tous les autres cas peuvent s'y rapporter.

•• On utilise l’équation cartésienne de la droite : On utilise l’équation cartésienne de la droite :

11

12

12

)(

)(

axyb

xx

yya

avec

baxy

+=−−=

+=

Page 142: Algorithmique graphique

Tracé de segments par l'équation Tracé de segments par l'équation cartésiennecartésienne

DroiteSimple(int xDroiteSimple(int x11,, int xint x22,, int yint y11,, int yint y22)){{

a = ya = y22 –– yy11 / x/ x22 –– xx11 ;;b = yb = y11 ––a . xa . x11 ;;b = yb = y11 ––a . xa . x11 ;;x x <<-- xx11 ;;while (x < xwhile (x < x11))

{{x x <<-- xx11+1 ;+1 ;AfficherPixel(x, (int) a.x+b) ;AfficherPixel(x, (int) a.x+b) ;}}

}}

Page 143: Algorithmique graphique

Tracé de segments par l'équation Tracé de segments par l'équation cartésiennecartésienne

•• Incrémentation suivant l’axe xIncrémentation suivant l’axe xDroiteSimple(int xDroiteSimple(int x11,, int xint x22,, int yint y11,, int yint y22)){{

a = ya = y22 –– yy11 / x/ x22 –– xx11 ; // a = 1.25; // a = 1.25b = yb = y ––a . xa . x ;; // b = // b = --0.250.25

Tracé : (1,1) à (5,6)b = yb = y11 ––a . xa . x11 ;; // b = // b = --0.250.25x x <<-- xx11 ;;while (x < xwhile (x < x22)) // x : 1 // x : 1 -->> 55

{{x x <<-- xx11+1 ;+1 ;AfficherPixel(x, (int) a.x+b) ;AfficherPixel(x, (int) a.x+b) ;}}

}}xx

yy

(1,1)

(2,2)

(3,3)

(4,4)

(5,6)

Page 144: Algorithmique graphique

Tracé de segments par l'équation Tracé de segments par l'équation cartésiennecartésienne

•• Incrémentation suivant l’axe yIncrémentation suivant l’axe yDroiteSimple(int xDroiteSimple(int x11,, int xint x22,, int yint y11,, int yint y22)){{

a = ya = y22 –– yy11 / x/ x22 –– xx11 ; // a = 1.25; // a = 1.25b = yb = y ––a . xa . x ;; // b = // b = --0.250.25

Tracé : (1,1) à (5,6)b = yb = y11 ––a . xa . x11 ;; // b = // b = --0.250.25x x <<-- xx11 ;;while (y < ywhile (y < y22)) // y : 1 // y : 1 -->> 66

{{y y <<-- yy11+1 ;+1 ;AfficherPixel((int) (yAfficherPixel((int) (y--b)/a, y) ;b)/a, y) ;}}

}}xx

yy

(1,1)

(1,2)

(2,3)

(3,4)

(4,5)

(5,6)

Page 145: Algorithmique graphique

Tracé de segments par l'équation Tracé de segments par l'équation cartésiennecartésienne

•• Il faut switcher entre les deux versions en fonction de lIl faut switcher entre les deux versions en fonction de la pente de la droitea pente de la droite

•• Pente < 1 : version xPente < 1 : version x•• Pente > 1 : version yPente > 1 : version y

version : yversion : y

version : xversion : x

Page 146: Algorithmique graphique

Tracé de segments par l'équation Tracé de segments par l'équation cartésiennecartésienne

•• Caractéristiques:Caractéristiques:•• Simplicité algorithmiqueSimplicité algorithmique•• Simplicité algorithmiqueSimplicité algorithmique•• Lenteur due à l'utilisation de réels, d'une division Lenteur due à l'utilisation de réels, d'une division

et de multiplications et d’opérations d’arrondissement (cast)et de multiplications et d’opérations d’arrondissement (cast)

Page 147: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

xk xk+1 xk+2 xk+4xk+3

yk

Jack Bresenham

1962

Page 148: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

d1d1--d2 > 0 ?d2 > 0 ?

xk xk+1 xk+2 xk+4xk+3

ykd1d2

d1d1--d2 > 0d2 > 0

Page 149: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

xk xk+1 xk+2 xk+4xk+3

yk

yk+1d1d2

d1d1--d2 = 0d2 = 0

Page 150: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

d2

xk xk+1 xk+2 xk+4xk+3

yk

d1d2

yk+1

d1d1--d2 < 0d2 < 0

Page 151: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

xk xk+1 xk+2 xk+4xk+3

yk

Page 152: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

DroiteBresenham(int xDroiteBresenham(int x11,, int xint x22,, int yint y11,, int yint y22)){{

dx = / xdx = / x22 –– xx11

dy = ydy = y22 –– yy11

x x <<-- xx11 ;;y y <<-- yy11 ;;e = 2 . dy e = 2 . dy -- dx ;dx ;IncH = 2 . dy ;IncH = 2 . dy ;IncH = 2 . dy ;IncH = 2 . dy ;IncD = 2 . (dy IncD = 2 . (dy –– d x) ;d x) ;while (x < xwhile (x < x22)){{

AfficherPixel(x, y) ;AfficherPixel(x, y) ;x = x + 1;x = x + 1;if (e > 0)if (e > 0){{

y = y + 1;y = y + 1;e = e + IncD ;e = e + IncD ;

}}elseelse

e = e + IncH ;e = e + IncH ;}}

}}

Page 153: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

Principe :• Paramètre de décision : e (distance pixel -> droite)

• Si e < 0.5 pixel = > activer le pixel E• Si e > 0.5 pixel = > activer le pixel NE

Pixel NEPixel NE

Pixel EPixel E

Pixel NEPixel NE

Pixel EPixel Eee ee

Page 154: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

e = 0e = 0x= xx= x11

y= yy= y11

Page 155: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

e = 0e = 0x= xx= x11

y= yy= y11

Page 156: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

e = 0e = 0x= xx= x11

y= yy= y11

Page 157: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

e = dy/dxe = dy/dxx= xx= x11

y= yy= y11

Page 158: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

e = dy/dx ; e<0.5 =>e = dy/dx ; e<0.5 =>x= x+1x= x+1y= yy= y

Page 159: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

e = dy/dx ; e<0.5 =>e = dy/dx ; e<0.5 =>x= x+1x= x+1y= yy= y

Page 160: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

e = dy/dxe = dy/dx

Page 161: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

e = dy/dx + dy/dx ; e>0.5 =>e = dy/dx + dy/dx ; e>0.5 =>x= x+1x= x+1y= y+1y= y+1

Page 162: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

e = dy/dx + dy/dx e = dy/dx + dy/dx –– 1 1 x= x+1x= x+1y= y+1y= y+1

Page 163: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

e = dy/dx + dy/dx e = dy/dx + dy/dx –– 11

Page 164: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

e = dy/dx + dy/dx e = dy/dx + dy/dx –– 11

Page 165: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

e = dy/dx + dy/dx e = dy/dx + dy/dx –– 1 + dy/dx ; e<0.5 =>1 + dy/dx ; e<0.5 =>x= x+1x= x+1y= yy= y

Page 166: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

e = dy/dx + dy/dx e = dy/dx + dy/dx –– 1 + dy/dx1 + dy/dx

Page 167: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

e = dy/dx + dy/dx e = dy/dx + dy/dx –– 1 + dy/dx + dy/dx ; e<0.5 =>1 + dy/dx + dy/dx ; e<0.5 =>x= x+1x= x+1y= yy= y

Page 168: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

e = dy/dx + dy/dx e = dy/dx + dy/dx –– 1 + dy/dx + dy/dx 1 + dy/dx + dy/dx

Page 169: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

e = dy/dx + dy/dx e = dy/dx + dy/dx –– 1 + dy/dx + dy/dx 1 + dy/dx + dy/dx

Page 170: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

e = dy/dx + dy/dx e = dy/dx + dy/dx –– 1 + dy/dx + dy/dx + dy/dx ; e<0.5 =>1 + dy/dx + dy/dx + dy/dx ; e<0.5 =>x= x+1x= x+1y= yy= y

Page 171: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

e = dy/dx + dy/dx e = dy/dx + dy/dx –– 1 + dy/dx + dy/dx + dy/dx1 + dy/dx + dy/dx + dy/dx

Page 172: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

e = dy/dx + dy/dx e = dy/dx + dy/dx –– 1 + dy/dx + dy/dx + dy/dx1 + dy/dx + dy/dx + dy/dx

Page 173: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

e = dy/dx + dy/dx e = dy/dx + dy/dx –– 1 + dy/dx + dy/dx + dy/dx + dy/dx ; e>0.5 =>1 + dy/dx + dy/dx + dy/dx + dy/dx ; e>0.5 =>x= x+1x= x+1y= y+1y= y+1

Page 174: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

e = dy/dx + dy/dx e = dy/dx + dy/dx –– 1 + dy/dx + dy/dx + dy/dx + dy/dx 1 + dy/dx + dy/dx + dy/dx + dy/dx -- 1 ; e>0.5 =>1 ; e>0.5 =>x= x+1x= x+1y= y+1y= y+1

Page 175: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

e = dy/dx + dy/dx e = dy/dx + dy/dx –– 1 + dy/dx + dy/dx + dy/dx + dy/dx 1 + dy/dx + dy/dx + dy/dx + dy/dx -- 11

Page 176: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

e = dy/dx + dy/dx e = dy/dx + dy/dx –– 1 + dy/dx + dy/dx + dy/dx + dy/dx 1 + dy/dx + dy/dx + dy/dx + dy/dx -- 11

Page 177: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham•• Algorithme de baseAlgorithme de baseDroiteBresenham(int xDroiteBresenham(int x11,, int xint x22,, int yint y11,, int yint y22)){{

dx = / xdx = / x22 –– xx11

dy = ydy = y22 –– yy11

a = dy / dx ; a = dy / dx ; x x <<-- xx11 ;;

<<--x x xx ;;y y <<-- yy11 ;;e = 0 ;e = 0 ;while (x < xwhile (x < x22)){{

AfficherPixel(x, y) ;AfficherPixel(x, y) ;e = e + a ;e = e + a ;x= x + 1;x= x + 1;if (e > 0.5)if (e > 0.5){{

y =y + 1;y =y + 1;e =e e =e -- 1;1;

}}}}

}}

Page 178: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham•• supprimer la division par supprimer la division par ddxxDroiteBresenham(int xDroiteBresenham(int x11,, int xint x22,, int yint y11,, int yint y22)){{

dx = / xdx = / x22 –– xx11

dy = ydy = y22 –– yy11

x x <<-- xx11 ;;y y <<-- yy11 ;;e = 0 ;e = 0 ;e = 0 ;e = 0 ;while (x < xwhile (x < x22)){{

AfficherPixel(x, y) ;AfficherPixel(x, y) ;e = e + dy ;e = e + dy ;x = x + 1;x = x + 1;if (e > dx/2)if (e > dx/2){{

y = y + 1;y = y + 1;e = e e = e -- dx;dx;

}}}}

}}

Page 179: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham•• division par 2 à supprimerdivision par 2 à supprimerDroiteBresenham(int xDroiteBresenham(int x11,, int xint x22,, int yint y11,, int yint y22)){{

dx = / xdx = / x22 –– xx11

dy = ydy = y22 –– yy11

x x <<-- xx11 ;;y y <<-- yy11 ;;e = 0 ;e = 0 ;e = 0 ;e = 0 ;while (x < xwhile (x < x22)){{

AfficherPixel(x, y) ;AfficherPixel(x, y) ;e = e + 2 . dy ;e = e + 2 . dy ;x = x + 1;x = x + 1;if (e > dx)if (e > dx){{

y = y + 1;y = y + 1;e = e e = e –– 2 . dx;2 . dx;

}}}}

}}

Page 180: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham•• optimisations pour rendre l'algorithme plus rapide optimisations pour rendre l'algorithme plus rapide : tester le signe de e au lieu de le comparer à : tester le signe de e au lieu de le comparer à

un autre nombreun autre nombreDroiteBresenham(int xDroiteBresenham(int x11,, int xint x22,, int yint y11,, int yint y22)){{

dx = / xdx = / x22 –– xx11

dy = ydy = y22 –– yy11

x x <<-- xx11 ;;y y <<-- yy ;;y y <<-- yy11 ;;e = e = -- dx ;dx ;while (x < xwhile (x < x22)){{

AfficherPixel(x, y) ;AfficherPixel(x, y) ;e = e + 2 . dy ;e = e + 2 . dy ;x = x + 1;x = x + 1;if (e > 0)if (e > 0){{

y = y + 1 ;y = y + 1 ;e = e e = e –– 2 . dx ;2 . dx ;

}}}}

}}

Page 181: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham•• modifier e qu'une seule fois lors de chaque itérationmodifier e qu'une seule fois lors de chaque itérationDroiteBresenham(int xDroiteBresenham(int x11,, int xint x22,, int yint y11,, int yint y22)){{

dx = / xdx = / x22 –– xx11

dy = ydy = y22 –– yy11

x x <<-- xx11 ;;y y <<-- yy11 ;;e = 2 . dy e = 2 . dy -- dx ;dx ;e = 2 . dy e = 2 . dy -- dx ;dx ;while (x < xwhile (x < x22)){{

AfficherPixel(x, y) ;AfficherPixel(x, y) ;x = x + 1;x = x + 1;if (e > 0)if (e > 0){{

y = y + 1;y = y + 1;e = e + 2 . (dy e = e + 2 . (dy –– d x) ;d x) ;

}}elseelse

e = e + 2 . dy ;e = e + 2 . dy ;}}

}}

Page 182: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham•• calculer d'avance les deux incréments possibles pour e : déplacement horizontal ou diagonalcalculer d'avance les deux incréments possibles pour e : déplacement horizontal ou diagonalDroiteBresenham(int xDroiteBresenham(int x11,, int xint x22,, int yint y11,, int yint y22)){{

dx = / xdx = / x22 –– xx11

dy = ydy = y22 –– yy11

x x <<-- xx11 ;;y y <<-- yy11 ;;e = 2 . dy e = 2 . dy -- dx ;dx ;IncH = 2 . dy ;IncH = 2 . dy ;IncH = 2 . dy ;IncH = 2 . dy ;IncD = 2 . (dy IncD = 2 . (dy –– d x) ;d x) ;while (x < xwhile (x < x22)){{

AfficherPixel(x, y) ;AfficherPixel(x, y) ;x = x + 1;x = x + 1;if (e > 0)if (e > 0){{

y = y + 1;y = y + 1;e = e + IncD ;e = e + IncD ;

}}elseelse

e = e + IncH ;e = e + IncH ;}}

}}

Page 183: Algorithmique graphique

Algorithmes de BresenhamAlgorithmes de Bresenham

•• Caractéristiques : Caractéristiques :

•• Plus grande complexité algorithmique.Plus grande complexité algorithmique.

•• Rapidité due à Rapidité due à •• Utilisation exclusive d'entiers courts (valeurs maximales de l'ordre Utilisation exclusive d'entiers courts (valeurs maximales de l'ordre

de la résolution de l'écran de la résolution de l'écran --> petites valeurs) > petites valeurs) •• Opérations arithmétiques simples sur ces entiers (additions, Opérations arithmétiques simples sur ces entiers (additions,

soustractions et comparaisons).soustractions et comparaisons).

Page 184: Algorithmique graphique

Tracé de cerclesTracé de cercles

Page 185: Algorithmique graphique

Tracé de cerclesTracé de cercles

Page 186: Algorithmique graphique

Tracé de cerclesTracé de cercles

Page 187: Algorithmique graphique

Tracé de cerclesTracé de cercles

Page 188: Algorithmique graphique

Tracé de cerclesTracé de cercles

Page 189: Algorithmique graphique

Tracé de cerclesTracé de cercles

Page 190: Algorithmique graphique

Tracé de cerclesTracé de cercles

Page 191: Algorithmique graphique

Tracé de cerclesTracé de cercles

Page 192: Algorithmique graphique

Tracé de cerclesTracé de cercles

d2d2d1d1

d1>d2d1>d2

Page 193: Algorithmique graphique

Tracé de cerclesTracé de cercles

Page 194: Algorithmique graphique

Tracé de cerclesTracé de cercles

d2d2

d1>d2d1>d2

d1d1d2d2

Page 195: Algorithmique graphique

Tracé de cerclesTracé de cercles

Page 196: Algorithmique graphique

Algorithmes de Bresenham Algorithmes de Bresenham pour le tracé de cerclespour le tracé de cercles

• On suppose le centre à l’origine• Le rayon r est un entier• On trace seulement le deuxième octant• Les autres octants tracés par symétrie• Les autres octants tracés par symétrie

(x,y)

(y,x)

(x,-y)

(y,-x)

(-x,y)

(-y,x)

(-y,-x)

(-x,-y)

Page 197: Algorithmique graphique

Algorithmes de Bresenham Algorithmes de Bresenham pour le tracé de cerclespour le tracé de cercles

Page 198: Algorithmique graphique

Algorithmes de Bresenham Algorithmes de Bresenham pour le tracé de cerclespour le tracé de cercles

Page 199: Algorithmique graphique

Algorithmes de Bresenham Algorithmes de Bresenham pour le tracé de cerclespour le tracé de cercles

Page 200: Algorithmique graphique

Algorithmes de Bresenham Algorithmes de Bresenham pour le tracé de cerclespour le tracé de cercles

•• Forme implicite du cercle : Forme implicite du cercle : f(x,y) = x² + y² f(x,y) = x² + y² -- r²r²

0),( >yxf

0),( =yxf

0),( <yxf

Page 201: Algorithmique graphique

Algorithmes de Bresenham Algorithmes de Bresenham pour le tracé de cerclespour le tracé de cercles

•• On calcule la valeur de On calcule la valeur de f(x,y)f(x,y) au point au point MM, noté , noté eei i ::•• eeii = f (x= f (xii + 1, y+ 1, yii --1/2 ) = (x1/2 ) = (xii + 1)² + 1)² -- (y(yii --1/2 )² 1/2 )² -- r²r²

e ≥ 0: M est au-dessus de la droite

(x(xii, y, yii))

• ei ≥ 0: M est au-dessus de la droite• Q est sous M on va à SE

• ei < 0: M est sous la droite• Q est au-dessus de M on va à E

Page 202: Algorithmique graphique

Algorithmes de Bresenham Algorithmes de Bresenham pour le tracé de cerclespour le tracé de cercles

•• On calcule la valeur de On calcule la valeur de f(x,y)f(x,y) au point au point MM, noté , noté eei i ::•• eeii = f (x= f (xii + 1, y+ 1, yii --1/2 ) = (x1/2 ) = (xii + 1)² + 1)² -- (y(yii --1/2 )² 1/2 )² -- r²r²

e ≥ 0: M est au-dessus de la droite MM

E

Q

(x(xii, y, yii))

• ei ≥ 0: M est au-dessus de la droite• Q est sous M on va à SE

• ei < 0: M est sous la droite• Q est au-dessus de M on va à E

MM

SE

Page 203: Algorithmique graphique

Algorithmes de Bresenham Algorithmes de Bresenham pour le tracé de cerclespour le tracé de cercles

•• On calcule la valeur de On calcule la valeur de f(x,y)f(x,y) au point au point MM, noté , noté eei i ::•• eeii = f (x= f (xii + 1, y+ 1, yii --1/2 ) = (x1/2 ) = (xii + 1)² + 1)² -- (y(yii --1/2 )² 1/2 )² -- r²r²

e ≥ 0: M est au-dessus de la droite

(x(xii, y, yii))

• ei ≥ 0: M est au-dessus de la droite• Q est sous M on va à SE

• ei < 0: M est sous la droite• Q est au-dessus de M on va à E

Page 204: Algorithmique graphique

Algorithmes de Bresenham Algorithmes de Bresenham pour le tracé de cerclespour le tracé de cercles

•• On calcule la valeur de On calcule la valeur de f(x,y)f(x,y) au point au point MM, noté , noté eei i ::•• eeii = f (x= f (xii + 1, y+ 1, yii --1/2 ) = (x1/2 ) = (xii + 1)² + 1)² -- (y(yii --1/2 )² 1/2 )² -- r²r²

e ≥ 0: M est au-dessus de la droite MM

E(x(xii, y, yii))

• ei ≥ 0: M est au-dessus de la droite• Q est sous M on va à SE

• ei < 0: M est sous la droite• Q est au-dessus de M on va à E

MM

SE

Q

Page 205: Algorithmique graphique

Algorithmes de Bresenham Algorithmes de Bresenham pour le tracé de cerclespour le tracé de cercles

•• On calcule la valeur de On calcule la valeur de f(x,y)f(x,y) au point au point MM, noté , noté eei i ::•• eeii = f (x= f (xii + 1, y+ 1, yii --1/2 ) = (x1/2 ) = (xii + 1)² + 1)² -- (y(yii --1/2 )² 1/2 )² -- r²r²

e ≥ 0: M est au-dessus de la droite

(x(xii, y, yii))

• ei ≥ 0: M est au-dessus de la droite• Q est sous M on va à SE

• ei < 0: M est sous la droite• Q est au-dessus de M on va à E

Page 206: Algorithmique graphique

Algorithmes de Bresenham Algorithmes de Bresenham pour le tracé de cerclespour le tracé de cercles

•• On calcule la valeur de On calcule la valeur de f(x,y)f(x,y) au point au point MM, noté , noté eei i ::•• eeii = f (x= f (xii + 1, y+ 1, yii --1/2 ) = (x1/2 ) = (xii + 1)² + 1)² -- (y(yii --1/2 )² 1/2 )² -- r²r²

e ≥ 0: M est au-dessus de la droite

(x(xii, y, yii))

• ei ≥ 0: M est au-dessus de la droite• Q est sous M on va à SE

• ei < 0: M est sous la droite• Q est au-dessus de M on va à E

MM

SE

E

Q

Page 207: Algorithmique graphique

Algorithmes de Bresenham Algorithmes de Bresenham pour le tracé de cerclespour le tracé de cercles

•• On calcule la valeur de On calcule la valeur de f(x,y)f(x,y) au point au point MM, noté , noté eei i ::•• eeii = f (x= f (xii + 1, y+ 1, yii --1/2 ) = (x1/2 ) = (xii + 1)² + 1)² -- (y(yii --1/2 )² 1/2 )² -- r²r²

e ≥ 0: M est au-dessus de la droite

(x(xii, y, yii))

• ei ≥ 0: M est au-dessus de la droite• Q est sous M on va à SE

• ei < 0: M est sous la droite• Q est au-dessus de M on va à E

Page 208: Algorithmique graphique

Algorithmes de Bresenham Algorithmes de Bresenham pour le tracé de cerclespour le tracé de cercles

•• Le calcul de l’erreur se fait manière incrémentaleLe calcul de l’erreur se fait manière incrémentale•• Pour chaque pixel activé (en cours de trainement) nous calculons le paramètre de Pour chaque pixel activé (en cours de trainement) nous calculons le paramètre de

décision du pixel suivantdécision du pixel suivant

eeii = f (x= f (xii + 1, y+ 1, yii --1/2 )1/2 )•• Si Si eeii > 0> 0 ((MM à l’extérieur) alors le pixel à afficher est SEà l’extérieur) alors le pixel à afficher est SESi Si ee > 0> 0 ((MM à l’extérieur) alors le pixel à afficher est SEà l’extérieur) alors le pixel à afficher est SE

•• Le prochain point milieu sera Le prochain point milieu sera (x(xii + 2, y+ 2, yii --3/2 ) 3/2 )

•• eei+1 i+1 == f (xf (xii + 2, y+ 2, yii --3/2 ) = e3/2 ) = ei i + 2 . x+ 2 . xii –– 2 . y2 . yii + 5 + 5

•• Si Si eeii < 0< 0 ((MM à l’intérieur) alors le pixel à afficher est Eà l’intérieur) alors le pixel à afficher est E•• Le prochain point milieu sera Le prochain point milieu sera (x(xii + 2, y+ 2, yii --1/2 ) 1/2 )

•• eei+1 i+1 == f (xf (xii + 2, y+ 2, yii --1/2 ) = e1/2 ) = ei i + 2 . x+ 2 . xii + 3 + 3

MM

SE

E

Q

(x(xii, y, yii))

Page 209: Algorithmique graphique

Algorithmes de Bresenham Algorithmes de Bresenham pour le tracé de cerclespour le tracé de cercles

CerclePointMilieu(int r)CerclePointMilieu(int r) // le center du cercle est à l’origine// le center du cercle est à l’origine{{

int x = 0 ;int x = 0 ;int y = rint y = rdouble e = 5.0/4.0 double e = 5.0/4.0 –– r ;r ; // point de départ(0,r) => point intermédiaire (1,r// point de départ(0,r) => point intermédiaire (1,r--1/2)1/2)AfficherPixel(x, y) ;AfficherPixel(x, y) ;AfficherPixel(x, y) ;AfficherPixel(x, y) ;While (y > x) {While (y > x) { // octant 2// octant 2

if(e < 0)if(e < 0) // pixel suivant E// pixel suivant Ee = e + 2 . x + 3 ;e = e + 2 . x + 3 ;

else{else{ // pixel suivant SE// pixel suivant SEe = e + 2 . x e = e + 2 . x –– 2 . y + 5 ;2 . y + 5 ;y = y y = y –– 1 ;1 ;

}}AfficherPixel(x, y) ;AfficherPixel(x, y) ;x = x + 1 ;x = x + 1 ;

} } }}

Page 210: Algorithmique graphique

•• La généralisation aux huit octants se fait en remplaçant la procLa généralisation aux huit octants se fait en remplaçant la procédure AfficherPixel() de l’algorithme par la procédure suivante :édure AfficherPixel() de l’algorithme par la procédure suivante :

AfficherPixelCercle(x, y) AfficherPixelCercle(x, y) {{

(x,y)(-x,y){{

AfficherPixel(x, y) ;AfficherPixel(x, y) ;AfficherPixel(x, AfficherPixel(x, --y) ;y) ;AfficherPixel(AfficherPixel(--x, y) ;x, y) ;AfficherPixel(AfficherPixel(--x, x, --y) ;y) ;AfficherPixel(y, x) ;AfficherPixel(y, x) ;AfficherPixel(y, AfficherPixel(y, --x) ;x) ;AfficherPixel(AfficherPixel(--y, x) ;y, x) ;AfficherPixel(AfficherPixel(--y, xy, x--) ;) ;

}}

(y,x)

(x,-y)

(y,-x)

(-y,x)

(-y,-x)

(-x,-y)

Page 211: Algorithmique graphique

•• OptimisationOptimisation

•• Au départAu départ•• ee00 = 5.0/4.0 = 5.0/4.0 –– r = 1.25 r = 1.25 –– r r

•• Si eSi eii < 0 alors on va à «< 0 alors on va à « EE »»•• eei+1i+1 = e= eii + 2 . x+ 2 . xii + 3 ;+ 3 ;

•• Sinon eSinon eii > 0 alors on va à «> 0 alors on va à « SESE »»•• eei+1i+1 = e= eii + 2 . x+ 2 . xii –– 2 . y2 . yii + 5 ;+ 5 ;

Page 212: Algorithmique graphique

Algorithmes de Bresenham Algorithmes de Bresenham pour le tracé de cerclespour le tracé de cercles

• Si on pose hi = ei – 0.25, on peut remplacer l’initialisation par:

h0 = 1 – r

• On devrait donc aussi modifier la comparaison « if(e < 0)if(e < 0)» » par :if(e < 0)if(e < 0)» »

if (hi < - 0.25){

• Cependant, on remarque que hi sera toujours un entier donc :

hi < - 0.25 => hi < 0

• On peut donc seulement changer l’initialisation et remplacer ei par hi ailleurs

Page 213: Algorithmique graphique

Algorithmes de Bresenham Algorithmes de Bresenham pour le tracé de cerclespour le tracé de cercles

CerclePointMilieu(int r)CerclePointMilieu(int r) // le center du cercle est à l’origine// le center du cercle est à l’origine{{

int x = 0 ;int x = 0 ;int y = rint y = rdouble h = 1 double h = 1 –– r ;r ; // point de départ(0,r) => point intermédiaire (1,r// point de départ(0,r) => point intermédiaire (1,r--1/2)1/2)AfficherPixelCercle(x, y) ;AfficherPixelCercle(x, y) ;AfficherPixelCercle(x, y) ;AfficherPixelCercle(x, y) ;While (y > x) {While (y > x) { // octant 2// octant 2

if(h < 0)if(h < 0) // pixel suivant E// pixel suivant Eh = h + 2 . x + 3 ;h = h + 2 . x + 3 ;

else{else{ // pixel suivant SE// pixel suivant SEh = h + 2 . x h = h + 2 . x –– 2 . y + 5 ;2 . y + 5 ;y = y y = y –– 1 ;1 ;

}}AfficherPixelCercle(x, y) ;AfficherPixelCercle(x, y) ;x = x + 1 ;x = x + 1 ;

} } }}

Page 214: Algorithmique graphique

Anticrenelage (antialiasing)Anticrenelage (antialiasing)

•• LesLes algorithmesalgorithmes dede tracétracé présentésprésentés précédemmentprécédemment ontont unun problèmeproblème communcommundede précisionprécision..

•• LaLa discrétisationdiscrétisation impliqueimplique uneune perteperte d’informationsd’informations quiqui sese traduittraduit parpar desdescontourscontours enen formeforme dede marchesmarches d’escaliersd’escaliers..

•• CetteCette perteperte d’informationsd’informations estest bienbien connuconnu enen traitementtraitement dudu signalsignal (analyse(analyse dedeFourier)Fourier) etet lele termeterme aliasingaliasing quiqui enen estest issuissu estest utiliséutilisé enen graphismegraphisme pourpourcaractérisercaractériser cesces artefactsartefacts dansdans lesles imagesimages produitesproduites :: MoiréesMoiréescaractérisercaractériser cesces artefactsartefacts dansdans lesles imagesimages produitesproduites :: MoiréesMoirées

•• L’antialiasingL’antialiasing consisteconsiste alorsalors àà corrigercorriger (diminuer)(diminuer) cesces effetseffets..

Page 215: Algorithmique graphique

Anticrenelage (antialiasing)Anticrenelage (antialiasing)

Sans correction Avec correction

Page 216: Algorithmique graphique

Anticrenelage (antialiasing)Anticrenelage (antialiasing)

•• Les deux principales solutions : Les deux principales solutions :

•• SurSur--échantillonnage de l’imageéchantillonnage de l’image

•• Algorithmes de tracé de segments corrigésAlgorithmes de tracé de segments corrigés

Page 217: Algorithmique graphique

SurSur--échantillonnage de l’imageéchantillonnage de l’image

•• CetteCette méthodeméthode consisteconsiste àà calculer,calculer, dansdans unun premierpremier temps,temps, uneune imageimagevirtuellevirtuelle àà uneune résolutionrésolution plusplus importanteimportante queque cellecelle dede l’imagel’image désiréedésirée (en(enmémoiremémoire maismais nonnon àà l'écran),l'écran), enen pratiquepratique XX33,, XX55 ouou XX77,, puispuis dede réduireréduirecettecette imageimage parpar filtragefiltrage ::cettecette imageimage parpar filtragefiltrage ::

•• L’intensitéL’intensité dede chaquechaque pixelpixel dede l’imagel’image finalefinale estest déterminéedéterminée parparmoyennagemoyennage pondérépondéré ouou parpar filtragefiltrage (filtre(filtre passepasse--basbas parpar convolution)convolution) dedeplusieursplusieurs pixelspixels dede l’imagel’image sursur--échantillonnéeéchantillonnée..

Page 218: Algorithmique graphique

SurSur--échantillonnage de l’imageéchantillonnage de l’image

SurSur--échantillonnageéchantillonnage

FiltrageFiltrage

Matrice d’origineMatrice d’origine

Retour à la résolution d’origineRetour à la résolution d’origine

Page 219: Algorithmique graphique

SurSur--échantillonnage de l’imageéchantillonnage de l’image

•• ParamètresParamètres•• EchantillonnageEchantillonnage

•• TypeType•• DéterministeDéterministe

RégulierRégulier•• RégulierRégulier•• Adaptatif Adaptatif

•• AléatoireAléatoire•• UniformeUniforme•• Disque de PoissonDisque de Poisson•• JitteringJittering

•• RésolutionRésolution•• FiltreFiltre

•• Forme du filtreForme du filtre•• Taille du filtreTaille du filtre

Page 220: Algorithmique graphique

SurSur--échantillonnage de l’imageéchantillonnage de l’image

Echantillonnage DéterministeEchantillonnage Déterministe•• SuréchantillonnageSuréchantillonnage

•• RégulierRégulier•• images avec des résolutions beaucoup plus grandes images avec des résolutions beaucoup plus grandes

celles nécessaire,celles nécessaire,•• le temps de calcul augmente (au moins d’un facteur n2 si le temps de calcul augmente (au moins d’un facteur n2 si

n est le facteur du suréchantillonnage).n est le facteur du suréchantillonnage).n est le facteur du suréchantillonnage).n est le facteur du suréchantillonnage).•• le suréchantillonnage est loin d’être nécessaire partoutle suréchantillonnage est loin d’être nécessaire partout

•• Adaptatif : raffinement progressif de certaines zones Adaptatif : raffinement progressif de certaines zones particulières du pixelparticulières du pixel

•• Crtiéres Crtiéres •• on se trouve sur un contour.on se trouve sur un contour.•• passage d’un objet à un autre.passage d’un objet à un autre.•• autoauto--occlusion d’un objet complexe.occlusion d’un objet complexe.•• phénomène d’ombrage et de lumièrephénomène d’ombrage et de lumière•• un des phénomènes précédents derriére un objet un des phénomènes précédents derriére un objet

transparent.transparent.•• etc.etc.

Page 221: Algorithmique graphique

SurSur--échantillonnage de l’imageéchantillonnage de l’image

Echantillonnage aléatoireEchantillonnage aléatoire•• l’incohérence d’un bruit est beaucoup moins choquante que la cohérence de l’incohérence d’un bruit est beaucoup moins choquante que la cohérence de

l’aliasingl’aliasing•• l’attention est d’abord attirée par les parties cohérentes d’une scènel’attention est d’abord attirée par les parties cohérentes d’une scène•• les photoles photo--récepteurs de l’oeil humain ne sont pas distribués de maniée récepteurs de l’oeil humain ne sont pas distribués de maniée

uniforme : c’est l’une des raisons pour lesquelles l’oeil humain ne fait pas uniforme : c’est l’une des raisons pour lesquelles l’oeil humain ne fait pas uniforme : c’est l’une des raisons pour lesquelles l’oeil humain ne fait pas uniforme : c’est l’une des raisons pour lesquelles l’oeil humain ne fait pas d’aliasing.d’aliasing.

•• l’échantillonnage aléatoire l’échantillonnage aléatoire •• permet de transformer l’aliasing en bruit tout en perturbant relativement peu permet de transformer l’aliasing en bruit tout en perturbant relativement peu

les parties basse fréquence de l’image.les parties basse fréquence de l’image.

Page 222: Algorithmique graphique

SurSur--échantillonnage de l’imageéchantillonnage de l’image

•• UniformeUniforme•• Le tirage de chaque point est complètement indépendant des autresLe tirage de chaque point est complètement indépendant des autres

•• Possibilité de tirrage prochePossibilité de tirrage proche•• Disque de poisson : inspiré de la répartition des photorécepteurs Disque de poisson : inspiré de la répartition des photorécepteurs

•• Chaque point est placé de façon à ce qu’il soit suffisamment loin de tous Chaque point est placé de façon à ce qu’il soit suffisamment loin de tous les points déjà acceptés.les points déjà acceptés.les points déjà acceptés.les points déjà acceptés.

•• JitteringJittering•• consiste à partir d’une grille régulière et à la perturber avec un bruit consiste à partir d’une grille régulière et à la perturber avec un bruit

aléatoirealéatoire

Déterministe : RégulierDéterministe : Régulier UniformeUniforme Disque de poissonDisque de poisson JitteringJittering

Page 223: Algorithmique graphique

SurSur--échantillonnage de l’imageéchantillonnage de l’image

•• Forme du FiltresForme du Filtres•• BoiteBoite

•• Moyenne des pixel recouvertsMoyenne des pixel recouverts

•• CôneCône•• Moyenne pondérées en fonction Moyenne pondérées en fonction

de la distance du centre de la distance du centre

•• Fonction GaussienneFonction Gaussienne•• Moyenne pondérées suivant la Moyenne pondérées suivant la

fonction gaussiennefonction gaussienne

Page 224: Algorithmique graphique

Filtre GaussienFiltre Gaussien

•• Fonction Gaussienne avec différentes taillesFonction Gaussienne avec différentes tailles

3x33x3

5x55x5

7x77x7

Page 225: Algorithmique graphique

xxxx

Page 226: Algorithmique graphique

SurSur--échantillonnage de l’imageéchantillonnage de l’image

•• Filtrage des images Suréchantillonnées aléatoirementFiltrage des images Suréchantillonnées aléatoirement•• Méthode : MonteMéthode : Monte--Carlo pondéréeCarlo pondérée

•• Subdivisiser l’espace (du pixel) avec un diagramme de VoronoïSubdivisiser l’espace (du pixel) avec un diagramme de Voronoï•• Pondération par l’ aire du point échantillonnéPondération par l’ aire du point échantillonné

Page 227: Algorithmique graphique

SurSur--échantillonnage de l’imageéchantillonnage de l’image

•• Décalage du problème vers les plus hautes fréquencesDécalage du problème vers les plus hautes fréquences

Page 228: Algorithmique graphique

Algorithmes de tracé Algorithmes de tracé de segments corrigésde segments corrigés

•• Une solution, spécifique aux algorithmes de tracé, consiste à réduire l’effet Une solution, spécifique aux algorithmes de tracé, consiste à réduire l’effet de de crénelage crénelage en allumant non pas un seul pixel à chaque itération, mais en allumant non pas un seul pixel à chaque itération, mais plusieurs, avec des intensités différentes suivant la proximité du pixel plusieurs, avec des intensités différentes suivant la proximité du pixel considéré et de la primitive. considéré et de la primitive. considéré et de la primitive. considéré et de la primitive.

•• Les approches diffèrent sur les critères mis en oeuvre pour déterminer Les approches diffèrent sur les critères mis en oeuvre pour déterminer l’intensité d’un pixel.l’intensité d’un pixel.

Page 229: Algorithmique graphique

Algorithmes de tracé Algorithmes de tracé de segments corrigésde segments corrigés

•• Une première approche consiste à considérer un segment Une première approche consiste à considérer un segment d’épaisseur non nulle (1 par exemple) et d’allumer chaque pixel d’épaisseur non nulle (1 par exemple) et d’allumer chaque pixel couvert par le segment en fonction de l’aire de recouvrement couvert par le segment en fonction de l’aire de recouvrement du pixel.du pixel.du pixel.du pixel.

Page 230: Algorithmique graphique

Algorithmes de tracé Algorithmes de tracé de segments corrigésde segments corrigés

•• Surface d'intersection entre la primitive et le pixelSurface d'intersection entre la primitive et le pixel•• Approche nonApproche non--pondérée pondérée

•• Le calcul du niveau de gris est égal au volume d’intersession entre le Le calcul du niveau de gris est égal au volume d’intersession entre le pixel (forme carrée unitaire) et la droite théoriquepixel (forme carrée unitaire) et la droite théorique

•• Approche pondéréeApproche pondérée•• Approche pondéréeApproche pondérée•• Le calcul du niveau de gris intègre cette foisLe calcul du niveau de gris intègre cette fois--ci la distance entre le ceci la distance entre le ce

ntre du pixel (forme circulaire unitaire) et la droite théoriquentre du pixel (forme circulaire unitaire) et la droite théorique

Ligne

Pixel traité

Page 231: Algorithmique graphique

Algorithmes de tracé Algorithmes de tracé de segments corrigésde segments corrigés

Algorithme GuptaAlgorithme Gupta--SproullSproull•• Cette approche considère uniquement la distance entre les pixel et le segment de Cette approche considère uniquement la distance entre les pixel et le segment de

droitedroite•• À chaque itération de l’algorithme de Bresenham on active le pixel en cours À chaque itération de l’algorithme de Bresenham on active le pixel en cours

ainsi que le voisinage : généralement 3x3ainsi que le voisinage : généralement 3x3•• Le niveau de gris est proportionnel à la distance entre le pixel activé et la droite Le niveau de gris est proportionnel à la distance entre le pixel activé et la droite

(y compris le pixel calculé par l’algorithme de Bresenham)(y compris le pixel calculé par l’algorithme de Bresenham)(y compris le pixel calculé par l’algorithme de Bresenham)(y compris le pixel calculé par l’algorithme de Bresenham)

Page 232: Algorithmique graphique

Algorithmes de tracé Algorithmes de tracé de segments corrigésde segments corrigés

Voisinage 3x3Voisinage 3x3

Pixel voisinPixel voisin

²²

..

ba

cybxaD ii

+++=

Pixel en coursPixel en cours

DD

cybxa ++ ..Droite d’équation :Droite d’équation :

Page 233: Algorithmique graphique

Algorithmes de tracé Algorithmes de tracé de segments corrigésde segments corrigés

•• Il est facile de modifier l’algorithme de trace de segments vu précédemmeIl est facile de modifier l’algorithme de trace de segments vu précédemment de manière à prendre en compte cet aspect. nt de manière à prendre en compte cet aspect.

•• La question qui se pose ensuite est comment passer d’une distance à une La question qui se pose ensuite est comment passer d’une distance à une intensité.intensité.

•• Classiquement, on applique une fonction de filtrage GaussienneClassiquement, on applique une fonction de filtrage GaussienneClassiquement, on applique une fonction de filtrage GaussienneClassiquement, on applique une fonction de filtrage Gaussienne

Page 234: Algorithmique graphique

Anticrénelage (résultats)Anticrénelage (résultats)

Tracé sans antialiasing

Tracé avec antialiasing Méthode basée sur les distances des

pixels au segment

Tracé avec antialiasing Méthode basée sur le moyennage

(Gaussien) d’une image de plus grande résolution

Page 235: Algorithmique graphique

Le découpage (Le découpage (clippingclipping))

•• Clipping écranClipping écran•• Traitement permettant de réduire le dessin d'un objet graphique à une Traitement permettant de réduire le dessin d'un objet graphique à une

région de l'écranrégion de l'écran

•• Cette région est classiquement un rectangle mais peut être de toute autre formeCette région est classiquement un rectangle mais peut être de toute autre forme•• Cette région est classiquement un rectangle mais peut être de toute autre formeCette région est classiquement un rectangle mais peut être de toute autre forme•• Carré : ÉcranCarré : Écran•• Trapèze : PareTrapèze : Pare--brise/Rétroviseurbrise/Rétroviseur•• Circulaire : Lunette/JumelleCirculaire : Lunette/Jumelle•• ……

•• Traitement de base de l'Informatique Graphique : Traitement de base de l'Informatique Graphique : •• Économiser des opérations inutilesÉconomiser des opérations inutiles

•• Extension Extension •• en 3D : éliminer les calculs en dehors de l'espace visibleen 3D : éliminer les calculs en dehors de l'espace visible

Page 236: Algorithmique graphique

Le découpage (clipping)Le découpage (clipping)TroisTrois approchesapproches ::

•• AVANTAVANT LALA CONVERSIONCONVERSION•• calculcalcul analytiqueanalytique desdes intersectionsintersections avecavec lala frontièrefrontière dede lala régionrégion dede

découpagedécoupage•• abordableabordable pourpour desdes formesformes simplessimples ((pp..ee.. algorithmealgorithme CohenCohen--SutherlandSutherland

pourpour segmentsegment découpédécoupé parpar régionrégion rectangulaire)rectangulaire)pourpour segmentsegment découpédécoupé parpar régionrégion rectangulaire)rectangulaire)

•• PENDANTPENDANT LALA CONVERSIONCONVERSION•• onon construitconstruit unun masquemasque dede lala régionrégion puispuis onon vérifievérifie queque chaquechaque pixelpixel

devantdevant êtreêtre «« alluméallumé »» yy figurefigure•• permetpermet dede représenterreprésenter desdes régionsrégions dede découpagedécoupage arbitrairementarbitrairement complcompl

exesexes

•• APRÈSAPRÈS LALA CONVERSIONCONVERSION•• onon convertitconvertit touttout l’objetl’objet virtuelvirtuel dansdans unun espaceespace mémoiremémoire temporairetemporaire

puispuis onon copiecopie lele soussous--ensembleensemble d’intérêtd’intérêt (clôture)(clôture)•• efficaceefficace sisi onon faitfait faceface àà unun objetobjet complexecomplexe coûteuxcoûteux àà convertirconvertir etet qu’oqu’o

nn déplacedéplace lala régionrégion dede découpagedécoupage dede façonfaçon interactiveinteractive

Page 237: Algorithmique graphique

Le découpage (clipping)Le découpage (clipping)

Familles d’algorithmesFamilles d’algorithmes•• Clipping Point / FenêtreClipping Point / Fenêtre•• Clipping Segment / FenêtreClipping Segment / Fenêtre

CohenCohen--SutherlandSutherland•• CohenCohen--SutherlandSutherland•• LiangLiang--BarskyBarsky

•• Clipping Polygon / FenêtreClipping Polygon / Fenêtre•• SutherlandSutherland--HodgemanHodgeman

Page 238: Algorithmique graphique

Le découpage (Clipping)Le découpage (Clipping)

•• Clipping de points : Point / FenêtreClipping de points : Point / Fenêtre•• Test : Test :

maxmin

&

yyy

xxx

<<

<<

yymaxmax

maxmin yyy << yymaxmax

yyminmin

xxminmin xxmaxmax

y

xp

Page 239: Algorithmique graphique

Le découpage (Clipping)Le découpage (Clipping)

•• Clipping de segments : Segment / FenêtreClipping de segments : Segment / Fenêtre•• Déterminer les portions de segments à l'intérieur de la fenêtreDéterminer les portions de segments à l'intérieur de la fenêtre

PP44

PP11

PP22

PP77

PP88

PP66

PP55PP33

PP99

PP1010

Page 240: Algorithmique graphique

Le découpage (Clipping)Le découpage (Clipping)

•• Algorithme de Cohen et SutherlandAlgorithme de Cohen et Sutherland•• Traiter les paires de points relativement aux codes des zonesTraiter les paires de points relativement aux codes des zones

PP44

10011001 10001000 10101010bit 4bit 4

00010001PP11

PP22

PP77

PP88

PP66

PP55PP33

PP99

PP1010

00000000 00100010

0100010001010101 01100110

bit 1bit 1 bit 2bit 2

bit 4bit 4

bit 3bit 3

Ivan SutherlandIvan Sutherland

Page 241: Algorithmique graphique

Le découpage (Clipping)Le découpage (Clipping)

•• Cas 1Cas 1•• => segment dans la fenêtre=> segment dans la fenêtre

PP44

10011001 10001000 10101010bit 4bit 4

0)()(65 43214321 == PP bbbbbbbb

00010001PP11

PP22

PP77

PP88

PP66

PP55PP33

PP99

PP1010

00000000 00100010

0100010001010101 01100110

bit 1bit 1 bit 2bit 2

bit 4bit 4

bit 3bit 3

Page 242: Algorithmique graphique

Le découpage (Clipping)Le découpage (Clipping)

•• Cas 2Cas 2•• => segment partiellement dedans=> segment partiellement dedans

PP44

10011001 10001000 10101010bit 4bit 4

0)(&0)(87 43214321 =≠ PP bbbbbbbb

00010001PP11

PP22

PP77

PP88

PP66

PP55PP33

PP99

PP1010

00000000 00100010

0100010001010101 01100110

bit 1bit 1 bit 2bit 2

bit 4bit 4

bit 3bit 3

Page 243: Algorithmique graphique

Le découpage (Clipping)Le découpage (Clipping)

•• Cas 3Cas 3•• => segment entièrement dehors=> segment entièrement dehors

PP44

10011001 10001000 10101010bit 4bit 4

0)(&)(21 43214321 ≠PP bbbbbbbb

00010001PP11

PP22PP88

PP66

PP55PP33

PP99

PP1010

00000000 00100010

0100010001010101 01100110

bit 1bit 1 bit 2bit 2

bit 4bit 4

bit 3bit 3

Page 244: Algorithmique graphique

Le découpage (Clipping)Le découpage (Clipping)

•• Cas 4Cas 4•• => extrémités dans des zones différentes=> extrémités dans des zones différentes

PP44

10011001 10001000 10101010bit 4bit 4

0)(&)( 43214321 =bbbbbbbb

00010001

PP22PP88

PP66

PP55PP33

PP99

PP1010

00000000 00100010

0100010001010101 01100110

bit 1bit 1 bit 2bit 2

bit 4bit 4

bit 3bit 3

Page 245: Algorithmique graphique

Le découpage (Clipping)Le découpage (Clipping)

•• Cas 4Cas 4•• calculs d'intersectioncalculs d'intersection

PP44

10011001 10001000 10101010bit 4bit 4

00010001

PP22PP88

PP66

PP55PP33

PP99

PP1010

00000000 00100010

0100010001010101 01100110

bit 1bit 1 bit 2bit 2

bit 4bit 4

bit 3bit 3

Page 246: Algorithmique graphique

Le découpage (Clipping)Le découpage (Clipping)

•• Réitérer les tests avec les parties restantesRéitérer les tests avec les parties restantes

10011001 10001000 10101010bit 4bit 4

00010001

PP22PP88

PP66

PP55

00000000 00100010

0100010001010101 01100110

bit 1bit 1 bit 2bit 2

bit 4bit 4

bit 3bit 3

Page 247: Algorithmique graphique

Le découpage (Clipping)Le découpage (Clipping)

•• Algorithme de Cohen & SutherlandAlgorithme de Cohen & Sutherland

•• Représentation paramétrique d'un segment de droiteReprésentation paramétrique d'un segment de droite

•• Frontière supérieure de la fenêtreFrontière supérieure de la fenêtre

• Intersection :

• Résultat :

Page 248: Algorithmique graphique

Le découpage (clipping)Le découpage (clipping)

Algorithme de Cohen et Sutherland voir sites :Algorithme de Cohen et Sutherland voir sites :

http://www3.cc.gatech.edu/classes/AY2003/cs4451a_fall/ClippingAhttp://www3.cc.gatech.edu/classes/AY2003/cs4451a_fall/ClippingApplets%20Folder/Cohenpplets%20Folder/Cohen--Sutherland/index.html Sutherland/index.html

Ou encore :Ou encore :

http://www.cs.princeton.edu/~min/cs426/jar/clip.html http://www.cs.princeton.edu/~min/cs426/jar/clip.html

Page 249: Algorithmique graphique

Le découpage (clipping)Le découpage (clipping)

Clipping 3DClipping 3D•• Extension de algorithme de Cohen & SutherlandExtension de algorithme de Cohen & Sutherland

•• 6 Bits pour le outcode6 Bits pour le outcode•• b4b4 : z > zmax: z > zmax•• b4b4 : z > zmax: z > zmax•• b5b5 : z < zmin: z < zmin

•• Nécessite d’autres précalculsNécessite d’autres précalculs

Page 250: Algorithmique graphique

Le découpage (clipping)Le découpage (clipping)

Clipping de segments : Algorithme de Liang et BarskyClipping de segments : Algorithme de Liang et Barsky•• Intersection de la droite (p1 p2) avec les frontières dans l'ordre :Intersection de la droite (p1 p2) avec les frontières dans l'ordre :

•• Bas puis Gauche puis Haut puis DroiteBas puis Gauche puis Haut puis Droite•• Tri des paramètres et comparaison avec l'ordre attenduTri des paramètres et comparaison avec l'ordre attendu

• si (t1 < t2 < t3 < t4) alors segment à conserver• si (t1 < t2 < t3 < t4) alors segment à conserver• sinon segment rejeté

Page 251: Algorithmique graphique

Le découpage (Clipping)Le découpage (Clipping)

•• Clipping de polygonesClipping de polygones•• Déterminer les parties de polygones à l'intérieur de la fenêtreDéterminer les parties de polygones à l'intérieur de la fenêtre

Page 252: Algorithmique graphique

Le découpage (Clipping)Le découpage (Clipping)

•• Algorithme de Sutherland et HodgemanAlgorithme de Sutherland et Hodgeman•• Tester relativement à chaque frontière de la fenêtreTester relativement à chaque frontière de la fenêtre

Page 253: Algorithmique graphique

Le découpage (Clipping)Le découpage (Clipping)

•• Algorithme de Sutherland et HodgemanAlgorithme de Sutherland et Hodgeman•• Tester relativement à chaque frontière de la fenêtreTester relativement à chaque frontière de la fenêtre

Page 254: Algorithmique graphique

Le découpage (Clipping)Le découpage (Clipping)

•• Algorithme de Sutherland et HodgemanAlgorithme de Sutherland et Hodgeman•• Tester relativement à chaque frontière de la fenêtreTester relativement à chaque frontière de la fenêtre

Page 255: Algorithmique graphique

Le découpage (Clipping)Le découpage (Clipping)

•• Algorithme de Sutherland et HodgemanAlgorithme de Sutherland et Hodgeman•• Tester relativement à chaque frontière de la fenêtreTester relativement à chaque frontière de la fenêtre

Page 256: Algorithmique graphique

Le découpage (Clipping)Le découpage (Clipping)

Algorithme de Sutherland et HodgemanAlgorithme de Sutherland et Hodgeman•• Pour chaque frontière et chaque polygone :Pour chaque frontière et chaque polygone :

•• tester l'appartenance sur les deux extrémités des segmentstester l'appartenance sur les deux extrémités des segments•• si cas 2 ou cas 4 calculer l'intersection avec la frontièresi cas 2 ou cas 4 calculer l'intersection avec la frontière

insérer les nouveaux points calculésinsérer les nouveaux points calculés•• insérer les nouveaux points calculésinsérer les nouveaux points calculés•• supprimer les points en dehors de la fenêtresupprimer les points en dehors de la fenêtre

DedansDedans

DehorsDehors

Page 257: Algorithmique graphique

Le découpage (clipping)Le découpage (clipping)

•• Algorithme de Sutherland et Hodgeman voir site Algorithme de Sutherland et Hodgeman voir site

http://www3.cc.gatech.edu/classes/AY2003/cs4451a_fall/Clippinghttp://www3.cc.gatech.edu/classes/AY2003/cs4451a_fall/ClippingApplets%20Folder/CohenApplets%20Folder/Cohen--Sutherland/index.htmlSutherland/index.html

Page 258: Algorithmique graphique

•• Déterminer les lignes, arêtes, surfaces et volumes visibles par un Déterminer les lignes, arêtes, surfaces et volumes visibles par un observateurobservateur

•• Cohérence visuelle de la scèneCohérence visuelle de la scène•• Réduire le nombre de primitives traitées par le pipeline graphiqueRéduire le nombre de primitives traitées par le pipeline graphique

Élimination des parties cachéesÉlimination des parties cachées

•• Algorithme de baseAlgorithme de base•• Équivalent au tri => O(n log n)Équivalent au tri => O(n log n)

•• Deux familles d’algorithme :Deux familles d’algorithme :•• Algorithmes objet : dans l’espace scèneAlgorithmes objet : dans l’espace scène•• Algorithmes image : dans l’espace imageAlgorithmes image : dans l’espace image

Page 259: Algorithmique graphique

Élimination des parties cachéesÉlimination des parties cachées

•• Dans l'espace scène : le masquage se fait sur le modèle de données Dans l'espace scène : le masquage se fait sur le modèle de données physiques => Calcul en coordonnées du monde. le masquage des parties physiques => Calcul en coordonnées du monde. le masquage des parties cachées est valable quelle que soit l'échelle du dessin.cachées est valable quelle que soit l'échelle du dessin.

•• Caractéristiques :Caractéristiques :

•• Test objet par objet (O(n²))Test objet par objet (O(n²))•• Précision dépend de la résolution des objetsPrécision dépend de la résolution des objets•• Techniques relativement complexes à mettre en œuvreTechniques relativement complexes à mettre en œuvre

•• Méthodes :Méthodes :

•• Élimination de faces arrières (Backface Culling)Élimination de faces arrières (Backface Culling)•• Tri des primitives selon leur éloignementTri des primitives selon leur éloignement

•• Algorithme du peintre Algorithme du peintre •• Algorithme de tri par arbre binaire (Algorithme de tri par arbre binaire (BSP TreesBSP Trees))

Page 260: Algorithmique graphique

Élimination des parties cachéesÉlimination des parties cachées

•• Dans l'espace image : le masquage se fait sur les pixels écran => Calcul en Dans l'espace image : le masquage se fait sur les pixels écran => Calcul en coordonnées fenêtrecoordonnées fenêtre

•• Caractéristiques :Caractéristiques :•• Test de visibilité en chaque pixel (O(n x p))Test de visibilité en chaque pixel (O(n x p))•• Précision dépend de la résolution de l'espace imagePrécision dépend de la résolution de l'espace imagePrécision dépend de la résolution de l'espace imagePrécision dépend de la résolution de l'espace image•• Recalculer à chaque changement caméra/scèneRecalculer à chaque changement caméra/scène•• Techniques relativement simplesTechniques relativement simples

•• Méthodes :Méthodes :•• Subdivision récursive de l'image (Warnock)Subdivision récursive de l'image (Warnock)•• Test de profondeurTest de profondeur

•• Ligne de balayage : Ligne de balayage : •• ScanScan--lineline--WatkinsWatkins•• ScanScan--lineline--ZbufferZbuffer

•• Tampon de profondeur Tampon de profondeur -- ZbufferZbuffer•• Lancer de rayons (Whitted)Lancer de rayons (Whitted)

Page 261: Algorithmique graphique

Algorithmes objetAlgorithmes objet

Page 262: Algorithmique graphique

Élimination de faces arrières Élimination de faces arrières (Backface Culling)(Backface Culling)

•• BackfaceBackface CullingCulling : garder les parties de la surface pour lesquelles la normale pointe : garder les parties de la surface pour lesquelles la normale pointe dans la direction opposée au point d'observation. dans la direction opposée au point d'observation.

•• Ces parties, vues du point d'observation, sont occultées par l'objet luiCes parties, vues du point d'observation, sont occultées par l'objet lui--même.même.

•• Conditions : La suppression des faces arrières suffit à éliminer les parties cachéesConditions : La suppression des faces arrières suffit à éliminer les parties cachées ::•• si l'objet est seul dans la scènesi l'objet est seul dans la scène

•• il ne faut pas qu'un objet puisse en masquer un autreil ne faut pas qu'un objet puisse en masquer un autre•• si l'objet est convexesi l'objet est convexe

•• dans un objet concave, des faces avant peuvent être masquées par d'autresdans un objet concave, des faces avant peuvent être masquées par d'autres

Page 263: Algorithmique graphique

Élimination de faces arrières Élimination de faces arrières (Backface Culling)(Backface Culling)

•• Calcul : produit scalaire Calcul : produit scalaire •• (Œil(Œil--Face) . NormaleFace) . Normale

•• < 0 : on garde le polygone< 0 : on garde le polygone•• > 0 : on l’élimine> 0 : on l’élimine

•• Économise 50 % du temps de calculÉconomise 50 % du temps de calcul•• En moyenneEn moyenne

•• Faible coût par polygoneFaible coût par polygone•• Étape préliminaire pour les autres algorithmesÉtape préliminaire pour les autres algorithmes•• Suffisant pour un seul objet convexeSuffisant pour un seul objet convexe

Page 264: Algorithmique graphique

Algorithme du Peintre Algorithme du Peintre

•• Dit aussi «Dit aussi « Algorithme de Tri par la ProfondeurAlgorithme de Tri par la Profondeur » (Newell, » (Newell, Newell & Sancha 1972)Newell & Sancha 1972)

• Peindre les facettes polygonales dans la mémoire vidéo suivant un ordre de distance décroissante au point d'observation.

Page 265: Algorithmique graphique

Algorithme du PeintreAlgorithme du Peintre

•• Principe :Principe :•• Tracé de polygones bien orientés, du plus éloigné au plus procheTracé de polygones bien orientés, du plus éloigné au plus proche•• Tri des polygonesTri des polygones

•• Cas trivial (non chevauchement)Cas trivial (non chevauchement)

YY

XXZZ

XX

Page 266: Algorithmique graphique

Algorithme du PeintreAlgorithme du Peintre

•• Principe :Principe :•• Tracé des polygones «Tracé des polygones « frontfront » du plus éloigné au plus proche» du plus éloigné au plus proche•• Cas ambigu (chevauchement) : Découpage de polygonesCas ambigu (chevauchement) : Découpage de polygones

YY

XXZZ

XX

Page 267: Algorithmique graphique

Algorithme du PeintreAlgorithme du Peintre

•• Algorithme completAlgorithme complet•• Trier les polygones en fonction de leur plus grande coordonnée en Trier les polygones en fonction de leur plus grande coordonnée en zz

•• zz distance à la caméra suivant la direction de viséedistance à la caméra suivant la direction de visée•• Si deux polygones ont des étendues en Si deux polygones ont des étendues en zz qui se recouvrent :qui se recouvrent :

•• On test :On test :•• Si les boites Si les boites englobantesenglobantes de leurs projections sont séparées de leurs projections sont séparées

Si leurs projections ne sont pas séparées : calcul d’intersection de segment de droiteSi leurs projections ne sont pas séparées : calcul d’intersection de segment de droite•• Si leurs projections ne sont pas séparées : calcul d’intersection de segment de droiteSi leurs projections ne sont pas séparées : calcul d’intersection de segment de droite•• Si rien ne marche, on coupe l’un des polygones par le plan de l’autreSi rien ne marche, on coupe l’un des polygones par le plan de l’autre

•• Calcul d’intersection de plansCalcul d’intersection de plans

• Caractéristiques •• Le plus intuitif des algorithmes• Coût en mémoire :

• Affichage direct à l’écran : O(p)• Il faut trier les polygones : O(nlogn)

• Temps de calcul :• On affiche toute la scène • Efficace surtout sur des petites scènes ZZ

XX

ZZ

XX

Page 268: Algorithmique graphique

Partition binaire de l’espace par Partition binaire de l’espace par BSP Trees BSP Trees

•• BSPBSP--tree (Binary Space Partition) : arbre binaire utilisé pour tree (Binary Space Partition) : arbre binaire utilisé pour trier des primitives dans l’espacetrier des primitives dans l’espace

•• Principe (Schumaker 1969, Fluch 1980) :Principe (Schumaker 1969, Fluch 1980) :Choix d’une arête de référenceChoix d’une arête de référence•• Choix d’une arête de référenceChoix d’une arête de référence

•• Partage de l’espace en 2 demiPartage de l’espace en 2 demi--espaces (in et out)espaces (in et out)•• Répartition des objet (& primitives) selon le demiRépartition des objet (& primitives) selon le demi--espace occupéespace occupé•• Les objet (& primitives) à cheval sont découpées selon le plan de Les objet (& primitives) à cheval sont découpées selon le plan de

référenceréférence

•• Réitération dans les deux demiRéitération dans les deux demi--espaces résultantsespaces résultants

Page 269: Algorithmique graphique

Partition binaire de l’espace par Partition binaire de l’espace par BSP Trees BSP Trees

Page 270: Algorithmique graphique

Partition binaire de l’espace par Partition binaire de l’espace par BSP Trees BSP Trees

Page 271: Algorithmique graphique

Partition binaire de l’espace par Partition binaire de l’espace par BSP Trees BSP Trees

Page 272: Algorithmique graphique

Partition binaire de l’espace par Partition binaire de l’espace par BSP Trees BSP Trees

Page 273: Algorithmique graphique

Partition binaire de l’espace par Partition binaire de l’espace par BSP Trees BSP Trees

Page 274: Algorithmique graphique

•• Dans le cas d’une primitives ou objet partagéDans le cas d’une primitives ou objet partagé•• Diviser la primitive en deux en fonction du plan séparateur Diviser la primitive en deux en fonction du plan séparateur •• Répartir l’objet de part et d’autre du plan séparateurRépartir l’objet de part et d’autre du plan séparateur

Partition binaire de l’espace par Partition binaire de l’espace par BSP Trees BSP Trees

Ouch

Page 275: Algorithmique graphique

Parcours du BSP TreesParcours du BSP Trees

•• Utilisation du BSPUtilisation du BSP--tree : tree : •• Parcours récursif de l’arbre à partir de la racine :Parcours récursif de l’arbre à partir de la racine :

•• Déterminer le demiDéterminer le demi--espace où se situe l’observateur, par rapport au espace où se situe l’observateur, par rapport au nœud courant puis (Proche ou Loin) :nœud courant puis (Proche ou Loin) :nœud courant puis (Proche ou Loin) :nœud courant puis (Proche ou Loin) :

•• Traiter le sousTraiter le sous--arbre correspondant au demiarbre correspondant au demi--espace où n’est pas situé espace où n’est pas situé l’observateur (Loin)l’observateur (Loin)

•• Dessiner la primitive correspondant au nœud courantDessiner la primitive correspondant au nœud courant•• Traiter le sousTraiter le sous--arbre correspondant au demiarbre correspondant au demi--espace où est situé espace où est situé

l’observateur (Proche)l’observateur (Proche)

Page 276: Algorithmique graphique

Parcours du BSP TreesParcours du BSP Trees

Algorithme Algorithme

renderBSP(BSPtree *T)renderBSP(BSPtree *T)BSPtree *Proche, *Loin;BSPtree *Proche, *Loin;if (if ( oeil à gauche du Toeil à gauche du T-->>planeplane))

Proche = TProche = T-->>gauche; Loin = Tgauche; Loin = T-->>droite;droite;Proche = TProche = T-->>gauche; Loin = Tgauche; Loin = T-->>droite;droite;else else

Proche = TProche = T-->>droite; Loin = Tdroite; Loin = T-->>gauche;gauche;

renderBSP(Loin);renderBSP(Loin);

if (if ( T est un noeud filsT est un noeud fils))renderObject(T)renderObject(T)

renderBSP(Proche);renderBSP(Proche);

Page 277: Algorithmique graphique

BSP Trees : Viewpoint ABSP Trees : Viewpoint A

Page 278: Algorithmique graphique

BSP Trees : Viewpoint ABSP Trees : Viewpoint A

L P

L

P

Page 279: Algorithmique graphique

BSP Trees : Viewpoint ABSP Trees : Viewpoint A

L PLP

LP LP

Page 280: Algorithmique graphique

BSP Trees : Viewpoint ABSP Trees : Viewpoint A

L P

LLPP

PL

LP

Page 281: Algorithmique graphique

BSP Trees : Viewpoint ABSP Trees : Viewpoint A

L P

LLPP

PL

LP

Page 282: Algorithmique graphique

BSP Trees : Viewpoint ABSP Trees : Viewpoint A

L P

LPL

1

LPP

PL

1

Page 283: Algorithmique graphique

BSP Trees : Viewpoint ABSP Trees : Viewpoint A

L PL

P

LP

1

2 LP

LP PL

2

1 2

Page 284: Algorithmique graphique

BSP Trees : Viewpoint ABSP Trees : Viewpoint A

L P

L

P

LP

1

2 LP

LP

P L

PL

2

1 2

Page 285: Algorithmique graphique

BSP Trees : Viewpoint ABSP Trees : Viewpoint A

L P

L

P

LP

1

2 LP

LP

P L

PL

2

1 2

Page 286: Algorithmique graphique

BSP Trees : Viewpoint ABSP Trees : Viewpoint A

L P

L

P

LP

1

2

3

LP

LP

P L

PL

2

1 2

3

Page 287: Algorithmique graphique

BSP Trees : Viewpoint ABSP Trees : Viewpoint A

L P

LP

1

2

3

4

LP

LP

LP

P L

PL

2

1 2

34

Page 288: Algorithmique graphique

BSP Trees : Viewpoint ABSP Trees : Viewpoint A

L P

LP

1

2

3

4 5

LP

LP

LP

P L

PL

2

1 2

34

5

Page 289: Algorithmique graphique

BSP Trees : Viewpoint ABSP Trees : Viewpoint A

L P

LP

1

2

3

4 5

8LPLP

LP

P L

PL

2

1 2

34

5

6

78

96

7

8

9

LP

LP

LP

Page 290: Algorithmique graphique

BSP Trees : Viewpoint BBSP Trees : Viewpoint B

P L

PL

L P

L

PL

P

LP

L P

LPL P

P L

Page 291: Algorithmique graphique

BSP Trees : Viewpoint BBSP Trees : Viewpoint B

P L

PL

L P

6 5

7

9

L

PL

P

LP

1

34

2

L P

LPL P

P L5

7

891

2

3

4

6

8

Page 292: Algorithmique graphique

Algorithmes imageAlgorithmes image

Page 293: Algorithmique graphique

Subdivision récursive de l’image Subdivision récursive de l’image -- WarnockWarnock

•• Principe «Principe « diviser pour régnerdiviser pour régner » : diviser l’image en quadtree» : diviser l’image en quadtree

Page 294: Algorithmique graphique

Subdivision récursive de l’image Subdivision récursive de l’image -- WarnockWarnock

•• Principe «Principe « diviser pour régnerdiviser pour régner » : diviser l’image en quadtree» : diviser l’image en quadtree

Page 295: Algorithmique graphique

Subdivision récursive de l’image Subdivision récursive de l’image -- WarnockWarnock

•• Principe «Principe « diviser pour régnerdiviser pour régner » : diviser l’image en quadtree» : diviser l’image en quadtree

Page 296: Algorithmique graphique

Subdivision récursive de l’image Subdivision récursive de l’image -- WarnockWarnock

•• Principe «Principe « diviser pour régnerdiviser pour régner » : diviser l’image en quadtree» : diviser l’image en quadtree

Page 297: Algorithmique graphique

Subdivision récursive de l’image Subdivision récursive de l’image -- WarnockWarnock

•• Pour chaque quadrant :Pour chaque quadrant :•• Déterminer la liste des polygones potentiellement visiblesDéterminer la liste des polygones potentiellement visibles•• Tracer le quadrant de l’image directement dans les cas simples :Tracer le quadrant de l’image directement dans les cas simples :

•• Rien dans le quadrantRien dans le quadrant•• Couleur du fondCouleur du fond•• Couleur du fondCouleur du fond

•• Un seul polygone : contenu facile à dessiner avec la couleur du Un seul polygone : contenu facile à dessiner avec la couleur du polygonepolygone

•• Le polygone couvrant le quadrantLe polygone couvrant le quadrant•• PartiellementPartiellement•• TotalementTotalement

Page 298: Algorithmique graphique

Subdivision récursive de l’image Subdivision récursive de l’image -- WarnockWarnock

•• Cas complexes : plusieurs polygones dans le quadrantCas complexes : plusieurs polygones dans le quadrant

Page 299: Algorithmique graphique

Subdivision récursive de l’image Subdivision récursive de l’image -- WarnockWarnock

•• Principe «Principe « diviser pour régnerdiviser pour régner » : diviser l’image en quadtree» : diviser l’image en quadtree•• Cas complexes : plusieurs polygones dans le quadrantCas complexes : plusieurs polygones dans le quadrant

•• Trier les polygones selon la profondeurTrier les polygones selon la profondeur•• Si un polygone masque tous les autres :Si un polygone masque tous les autres :

•• Couvre tout le cadrant et est avant les autres (sans test complexe)Couvre tout le cadrant et est avant les autres (sans test complexe)•• Couvre tout le cadrant et est avant les autres (sans test complexe)Couvre tout le cadrant et est avant les autres (sans test complexe)•• Tracer avec la couleur du polygoneTracer avec la couleur du polygone

•• Sinon subdiviser et itérer le processusSinon subdiviser et itérer le processus

•• Arrêt quand le quadrant est plus petit qu’un pixelArrêt quand le quadrant est plus petit qu’un pixel•• Tracer avec la couleur du polygone en avant des autresTracer avec la couleur du polygone en avant des autres

Page 300: Algorithmique graphique

Subdivision récursive de l’image Subdivision récursive de l’image -- WarnockWarnock

•• Découpage récursif des quadrants contenant plusieurs polygonesDécoupage récursif des quadrants contenant plusieurs polygones

Page 301: Algorithmique graphique

Subdivision récursive de l’image Subdivision récursive de l’image -- WarnockWarnock

•• Problème : plusieurs polygones dans le quadrantProblème : plusieurs polygones dans le quadrant•• S1 masque tous les autres polygones, mais…S1 masque tous les autres polygones, mais…

•• Subdivision (masquage non détecté par les tests simples de profondeur)Subdivision (masquage non détecté par les tests simples de profondeur)

Page 302: Algorithmique graphique

Algorithme de balayage (scanAlgorithme de balayage (scan--line)line)--WatkinsWatkins

•• Principe : éliminer les lignes cachées, ligne par lignePrincipe : éliminer les lignes cachées, ligne par ligne

Page 303: Algorithmique graphique

•• Pour une ligne de balayage donnée :Pour une ligne de balayage donnée :•• Obtention d’un segment par polygoneObtention d’un segment par polygone•• Détermination de la visibilité des segmentsDétermination de la visibilité des segments•• Affichage des segments visibles Affichage des segments visibles

Algorithme de balayage (scanAlgorithme de balayage (scan--line)line)--WatkinsWatkins

•• Différents cas rencontrésDifférents cas rencontrés

Page 304: Algorithmique graphique

•• Obtention d’un segment par polygoneObtention d’un segment par polygone•• Intersection planIntersection plan--segmentsegment

•• Pour un y fixé : on calcul les coordonnées x & z à partir de l’équation Pour un y fixé : on calcul les coordonnées x & z à partir de l’équation du segment traité de la primitivedu segment traité de la primitive

Algorithme de balayage (scanAlgorithme de balayage (scan--line)line)--WatkinsWatkins

Page 305: Algorithmique graphique

•• Détermination de la visibilité Détermination de la visibilité •• Projection sur la ligne de balayage de l’écranProjection sur la ligne de balayage de l’écran

•• Déterminations des intervalles associés aux segments projetés [in, out]Déterminations des intervalles associés aux segments projetés [in, out]

Algorithme de balayage (scanAlgorithme de balayage (scan--line)line)--WatkinsWatkins

11 22

33

44

inin inin outout outout inin inin outout outout

11 2,12,1 11 44 3,43,4 44

Plan de balayagePlan de balayage

EcranEcran

Page 306: Algorithmique graphique

•• Détermination de la visibilitéDétermination de la visibilité•• Superposition d’intervalles Superposition d’intervalles --> plusieurs segments> plusieurs segments

•• Calcul d’intersection : intersection entre segments de droiteCalcul d’intersection : intersection entre segments de droite•• Si intersection Si intersection --> ajout d’un point sur la ligne de balayage> ajout d’un point sur la ligne de balayage

Algorithme de balayage (scanAlgorithme de balayage (scan--line)line)--WatkinsWatkins

11 22

33

44

inin inin outout outout inin inin outout outout

11 2,12,1 11 44 3,43,4 44

Plan de balayagePlan de balayage

2,12,1

EcranEcran

Page 307: Algorithmique graphique

Algorithme de balayage (scanAlgorithme de balayage (scan--line)line)--WatkinsWatkins

•• Affichage des segments visiblesAffichage des segments visibles•• Test de profondeurTest de profondeur•• Affichage de la couleur du segment traitéAffichage de la couleur du segment traité

11 22

33

44

inin inin outout outout inin inin outout outout

11 2,12,1 11 44 3,43,4 44

Plan de balayagePlan de balayage

2,12,1

EcranEcran

Page 308: Algorithmique graphique

Algorithme de balayage : ScanAlgorithme de balayage : Scan--lineline--ZbufferZbuffer

•• Détermination de la visibilitéDétermination de la visibilité•• Tampon de profondeur + mémoire d’image pour la ligne de Tampon de profondeur + mémoire d’image pour la ligne de

balayagebalayage•• Pour chaque élément traité on calcul sa profondeurPour chaque élément traité on calcul sa profondeur

•• Par interpolation bilinéaire voir ZBufferPar interpolation bilinéaire voir ZBuffer•• Par interpolation bilinéaire voir ZBufferPar interpolation bilinéaire voir ZBuffer

11 22

33

44

EcranEcran

Plan de balayagePlan de balayage

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Tampon de profondeurTampon de profondeur

Page 309: Algorithmique graphique

Algorithme de balayage : ScanAlgorithme de balayage : Scan--lineline--ZbufferZbuffer

•• Détermination de la visibilitéDétermination de la visibilité•• Prise en compte du segment 1Prise en compte du segment 1

11 22

33

44

EcranEcran

Plan de balayagePlan de balayage

00 00 00 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Tampon de profondeurTampon de profondeur

Page 310: Algorithmique graphique

Algorithme de balayage : ScanAlgorithme de balayage : Scan--lineline--ZbufferZbuffer

•• Détermination de la visibilitéDétermination de la visibilité•• Prise en compte du segment 2Prise en compte du segment 2

11 22

33

44

EcranEcran

Plan de balayagePlan de balayage

00 00 00 11 11 11 22 22 22 22 22 11 11 11 11 11 11 11 11 11 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Tampon de profondeurTampon de profondeur

Page 311: Algorithmique graphique

Algorithme de balayage : ScanAlgorithme de balayage : Scan--lineline--ZbufferZbuffer

•• Détermination de la visibilitéDétermination de la visibilité•• Prise en compte du segment 3Prise en compte du segment 3

11 22

33

44

EcranEcran

Plan de balayagePlan de balayage

00 00 00 11 11 11 22 22 22 22 22 11 11 11 11 11 11 11 11 11 11 00 00 00 00 33 33 33 33 33 33 33 33 33 33 00 00 00 00 00 00

Tampon de profondeurTampon de profondeur

Page 312: Algorithmique graphique

Algorithme de balayage : ScanAlgorithme de balayage : Scan--lineline--ZbufferZbuffer

•• Détermination de la visibilitéDétermination de la visibilité•• Prise en compte du segment 4Prise en compte du segment 4

11 22

33

44

EcranEcran

Plan de balayagePlan de balayage

00 00 00 11 11 11 22 22 22 22 22 11 11 11 11 11 11 11 11 11 11 00 00 00 44 33 33 33 33 33 33 33 33 33 33 44 44 44 00 00 00

Tampon de profondeurTampon de profondeur

Page 313: Algorithmique graphique

Tampon de profondeur Tampon de profondeur –– ZZ--bufferbuffer

Edwin CatmullEdwin Catmull•• ZbufferZbuffer ((CatmullCatmull--1974) :1974) :•• Le calcul de l’image est effectué séquentiellement en traitant les objets Le calcul de l’image est effectué séquentiellement en traitant les objets

extraits de la scène (classiquement des facettes) les uns à la suite des extraits de la scène (classiquement des facettes) les uns à la suite des extraits de la scène (classiquement des facettes) les uns à la suite des extraits de la scène (classiquement des facettes) les uns à la suite des autres pour en extraire l'ensemble des pixels qui les représentent.autres pour en extraire l'ensemble des pixels qui les représentent.

•• Au cours du processus de traitement d'un objet, chaque pixel calculé voit Au cours du processus de traitement d'un objet, chaque pixel calculé voit sa profondeur comparée à celle déjà calculée en cette place pour sa profondeur comparée à celle déjà calculée en cette place pour pouvoir n'afficher finalement pour chaque pixel de l'image que la facette pouvoir n'afficher finalement pour chaque pixel de l'image que la facette la moins profonde présente en ce pixel (vis à vis de l'observateur).la moins profonde présente en ce pixel (vis à vis de l'observateur).

--> Il ne s'agit pas d'un tri, mais un calcul de maximum pour chaque > Il ne s'agit pas d'un tri, mais un calcul de maximum pour chaque pixel vis à vis de l'ensemble des objets présents en ce pixel.pixel vis à vis de l'ensemble des objets présents en ce pixel.

Page 314: Algorithmique graphique

Tampon de profondeur Tampon de profondeur –– ZZ--bufferbuffer

•• On définit deux zones mémoire:On définit deux zones mémoire:•• un tampon couleur destiné à contenir la couleur de chacun des pixun tampon couleur destiné à contenir la couleur de chacun des pix

els de l'image (initialisé à la couleur de fond souhaitée),els de l'image (initialisé à la couleur de fond souhaitée),•• un tampon profondeur destiné à contenir la profondeur écran maxun tampon profondeur destiné à contenir la profondeur écran max

imum de chacun des pixels de l'image (initialisée à imum de chacun des pixels de l'image (initialisée à --∞∞, utilisée co, utilisée coimum de chacun des pixels de l'image (initialisée à imum de chacun des pixels de l'image (initialisée à --∞∞, utilisée co, utilisée comme valeur courante de comparaison en cours d'exécution du Zmme valeur courante de comparaison en cours d'exécution du Z--BBuffer).uffer).

Page 315: Algorithmique graphique

Tampon de profondeur Tampon de profondeur –– ZZ--bufferbuffer

•• Initialiser le Zbuffer à Initialiser le Zbuffer à --∞∞Initialiser le Zbuffer à Initialiser le Zbuffer à --∞∞•• Initialiser le buffer de couleur avec couleur du fond Initialiser le buffer de couleur avec couleur du fond

Page 316: Algorithmique graphique

Tampon de profondeur Tampon de profondeur –– ZZ--bufferbuffer

Z-buffer Buffer couleur

∞ ∞ ∞ ∞∞ ∞ ∞ ∞

∞ ∞ ∞ ∞∞ ∞ ∞ ∞∞ ∞ ∞ ∞

∞ ∞ ∞ ∞∞ ∞ ∞ ∞∞ ∞ ∞ ∞∞ ∞ ∞ ∞∞ ∞ ∞ ∞∞ ∞ ∞ ∞

∞ ∞ ∞ ∞∞ ∞ ∞ ∞∞ ∞ ∞ ∞∞ ∞ ∞ ∞∞ ∞ ∞ ∞∞ ∞ ∞ ∞∞ ∞ ∞ ∞

Page 317: Algorithmique graphique

Tampon de profondeur Tampon de profondeur –– ZZ--bufferbuffer

•• Pour chaque polygonePour chaque polygone•• Pour chauque sommetPour chauque sommet

•• P1 = projection (sommet 1) sur l’écranP1 = projection (sommet 1) sur l’écran•• P2 = projection (sommet 2) sur l’écranP2 = projection (sommet 2) sur l’écran

P3 = projection (sommet 3) sur l’écranP3 = projection (sommet 3) sur l’écran•• P3 = projection (sommet 3) sur l’écranP3 = projection (sommet 3) sur l’écran

•• Pour chaque pixel(x,y) du polygone projeté Pour chaque pixel(x,y) du polygone projeté •• Déterminer la profondeur z du point correspondant du polygone par Déterminer la profondeur z du point correspondant du polygone par

interpolation bilinéaireinterpolation bilinéaire•• Si z < Zbuffer(x,y) alorsSi z < Zbuffer(x,y) alors

•• Zbuffer(x,y) = zZbuffer(x,y) = z•• FrameBuffer(x,y) = couleur du pointFrameBuffer(x,y) = couleur du point

•• Application du modèle d’ombrageApplication du modèle d’ombrage

Page 318: Algorithmique graphique

Tampon de profondeur Tampon de profondeur –– ZZ--bufferbuffer

[0,7,5] [6,7,5]5 5 5 55 5 5 55 5 5 55 5 5 55 5 55 5

5 5 55 55

[0,1,5]

5 5 5 55 5 5 55 5 5 55 5 5 55 5 5 ∞5 5 ∞ ∞5 ∞ ∞ ∞∞ ∞ ∞ ∞

5 5 5 ∞5 5 ∞ ∞5 ∞ ∞ ∞∞ ∞ ∞ ∞∞ ∞ ∞ ∞∞ ∞ ∞ ∞∞ ∞ ∞ ∞∞ ∞ ∞ ∞

5 55

Page 319: Algorithmique graphique

Tampon de profondeur Tampon de profondeur –– ZZ--bufferbuffer[0,6,7]

2 3 4 53 4 5 64 5 6 75 6 76 77

6 77

[0,1,2] [5,1,7]2 3 4 5 6 7

5 5 5 55 5 5 55 5 5 55 5 5 54 5 5 73 4 5 62 3 4 5∞ ∞ ∞ ∞

5 5 5 ∞5 5 ∞ ∞5 ∞ ∞ ∞∞ ∞ ∞ ∞∞ ∞ ∞ ∞7 ∞ ∞ ∞6 7 ∞ ∞∞ ∞ ∞ ∞

Page 320: Algorithmique graphique

Tampon de profondeur Tampon de profondeur –– ZZ--bufferbuffer

)y(y

)y(y)z(zzz s

a −−−+=

31

1131

P3

•• Calcul de la profondeur par interpolationCalcul de la profondeur par interpolation

P1

P2

P1

ys za zp zb

)x(x

)x(x)z(zzz

)y(y

)y(y)z(zzz

)y(y

ba

paabap

sb

−−

−+=

−−−+=

21

1121

31

Page 321: Algorithmique graphique

Tampon de profondeur Tampon de profondeur –– ZZ--BufferBuffer

AlgorithmeAlgorithme

for all i,j {for all i,j {Depth[i,j] = MAX_DEPTHDepth[i,j] = MAX_DEPTHImage[i,j] = BACKGROUND_COLOURImage[i,j] = BACKGROUND_COLOUR} } } } for all polygons P {for all polygons P {for all pixels in P {for all pixels in P {if (Z_pixel < Depth[i,j]) {if (Z_pixel < Depth[i,j]) {Image[i,j] = C_pixelImage[i,j] = C_pixelDepth[i,j] = Z_pixelDepth[i,j] = Z_pixel

} } } }

} }

Page 322: Algorithmique graphique

Tampon de profondeur Tampon de profondeur -- ZbufferZbuffer

•• AvantagesAvantages•• Simplicité de mise en œuvreSimplicité de mise en œuvre•• Pas de tri préalable Pas de tri préalable •• Rapidité (algorithme câblé, parallèlisable)Rapidité (algorithme câblé, parallèlisable)

•• InconvénientsInconvénients•• Traitement de tous les polygones, mêmes cachésTraitement de tous les polygones, mêmes cachés•• Taille mémoire nécessaire (de moins en moins)Taille mémoire nécessaire (de moins en moins)•• Ne traite pas les effets particuliersNe traite pas les effets particuliers

•• InterInter--reflets, transparence, réfraction reflets, transparence, réfraction

Page 323: Algorithmique graphique

Coûts comparésCoûts comparés

500500500500

600600600600PeintrePeintrePeintrePeintre

WarnockWarnockWarnockWarnock

Scan-LineScan-LineScan-LineScan-Line

Z-BufferZ-BufferZ-BufferZ-Buffer

0000

100100100100

200200200200

300300300300

400400400400

100100100100 2500250025002500 60000600006000060000

Z-BufferZ-BufferZ-BufferZ-Buffer

Page 324: Algorithmique graphique

Choix de l’algorithmeChoix de l’algorithme

•• L’algorithme idéal dépends :L’algorithme idéal dépends :•• De la complexité de la scèneDe la complexité de la scène•• Du matériel disponibleDu matériel disponible•• De ce qu’on veut faire en plus de l’affichageDe ce qu’on veut faire en plus de l’affichage

•• ZZ--Buffer en général :Buffer en général :•• Fourni gratuitement dans la librairie graphiqueFourni gratuitement dans la librairie graphique•• Pas de préPas de pré--traitementtraitement•• Quelques effets de bord si on le connaît malQuelques effets de bord si on le connaît mal

•• ScanScan--line pour les hackers :line pour les hackers :•• Quand on ne peut pas utiliser la carte graphiqueQuand on ne peut pas utiliser la carte graphique•• Faible coût mémoireFaible coût mémoire•• Lié à la fonction d’affichage, peut être très efficaceLié à la fonction d’affichage, peut être très efficace

Page 325: Algorithmique graphique

RemplissageRemplissage

•• RemplissageRemplissage :: AppeléAppelé égalementégalement Rastérisation,Rastérisation, cettecette étapeétapeconsisteconsiste àà remplirremplir lesles polygonespolygones projetésprojetés ((22D)D) pourpour donnerdonner ununaspectaspect plusplus réalisteréaliste auau objetsobjets..

•• LeLe remplissageremplissage sese faitfait suivantsuivant lele modèlemodèle d’Ombraged’Ombrage utiliséutilisé parpar lelepipelinepipeline graphiquegraphique (Gouraud,(Gouraud, Phong,Phong, Lambert,Lambert, etcetc..))pipelinepipeline graphiquegraphique (Gouraud,(Gouraud, Phong,Phong, Lambert,Lambert, etcetc..))

•• MéthodesMéthodes ::•• TestTest dede l’appartenancel’appartenance d’und’un pointpoint àà polygonepolygone•• TestTest d’intersectiond’intersection•• AlgorithmeAlgorithme dede balayagebalayage dede ligneslignes•• RemplissageRemplissage dede régionsrégions

Page 326: Algorithmique graphique

RemplissageRemplissage

Test d'appartenance d’un point à polygoneTest d'appartenance d’un point à polygone• Polygone convexe

•• Détermination des normales « extérieures »Détermination des normales « extérieures »

•• Positionnement par rapport aux demiPositionnement par rapport aux demi--plansplans• p dans le polygone si

• p hors du polygone si

Page 327: Algorithmique graphique

RemplissageRemplissage

Test d'appartenance d’un point à polygoneTest d'appartenance d’un point à polygone•• Test d'anglesTest d'angles

Page 328: Algorithmique graphique

RemplissageRemplissage

Test d'appartenance d’un point à un polygoneTest d'appartenance d’un point à un polygone•• Test du nombre de points d'intersectionTest du nombre de points d'intersection

4 points d'intersection 3 points d'intersection

• Attention aux cas limites :• points extrémités de segments et segments tangents

Page 329: Algorithmique graphique

RemplissageRemplissage

Identification d'un polygone

• Polygone convexe

• Si p1xp2 > 0 alors ccw

Sommets Vecteurs Produits vectorielsS1 S4S1 ^ S1S2 [ 0 -3 ] x [ 2 1 ] = + 6S2 S1S2 ^ S2S3 [ 2 1 ] x [ 0 2 ] = + 4S3 S2S3 ^ S3S4 [ 0 2 ] x [-2 0 ] = + 4S4 S3S4 ^ S4S1 [-2 -0 ] x [0 -3 ] = + 6

Page 330: Algorithmique graphique

RemplissageRemplissage

Identification d'un polygoneIdentification d'un polygone•• Polygone concavePolygone concave

•• Changement de sens lors du parcoursChangement de sens lors du parcours•• S3 réS3 ré--entrantentrant

Sommets Sommets Vecteurs Vecteurs Produits vectorielsProduits vectorielsS1 S1 S5S1 S5S1 ^ S1S2 S1S2 [ 0 [ 0 --3 ] x [ 2 1 ] = + 63 ] x [ 2 1 ] = + 6S2 S2 S1S2 S1S2 ^ S2S3 S2S3 [ 2 1 ] x [ 0 2 ] = + 4[ 2 1 ] x [ 0 2 ] = + 4S3 S3 S2S3 S2S3 ^ S3S4 S3S4 [[--1 1 ] x [ 1 1 ] = 1 1 ] x [ 1 1 ] = -- 22S4 S4 S3S4 S3S4 ^ S4S5 S4S5 [ 1 1 ] x [[ 1 1 ] x [--2 0 ] = + 22 0 ] = + 2S5 S5 S4S5 S4S5 ^ S5S1 S5S1 [[--2 2 --0 ] x [ 0 0 ] x [ 0 --3 ] = + 63 ] = + 6

Page 331: Algorithmique graphique

RemplissageRemplissage•• AlgorithmeAlgorithme dede balayagebalayage dede ligneslignes

•• CetCet algorithmealgorithme consisteconsiste àà balayerbalayer lesles ligneslignes horizontaleshorizontales appartenantappartenant auaurectanglerectangle englobantenglobant lele polygonepolygone àà traiter,traiter, etet àà afficherafficher lesles pixelspixels intérieursintérieurs auaupolygonepolygone sursur chaquechaque ligneligne..

•• LaLa rechercherecherche desdes intersectionsintersections desdes ligneslignes dede balayagebalayage avecavec lele polygonepolygone sese faitfaitenen calculantcalculant l’approximationl’approximation desdes segmentssegments àà l’aidel’aide d’und’un algorithmealgorithme dede traçagetraçageetet enen mémorisantmémorisant lesles pointpoint écransécrans correspondantscorrespondants..etet enen mémorisantmémorisant lesles pointpoint écransécrans correspondantscorrespondants..

Page 332: Algorithmique graphique

RemplissageRemplissage

•• Pour chaque coté impliqué, et pour chaque ligne Pour chaque coté impliqué, et pour chaque ligne yyii traitée le traitée le calcul d’intersection nécessite les valeurs suivantes :calcul d’intersection nécessite les valeurs suivantes :

•• yymaxmax

•• xxminmin

ddx/x/ddy (1/pente)y (1/pente)

yyAA

•• ddx/x/ddy (1/pente)y (1/pente)

xx

yymaxmax xxminmin ddx/x/ddyy

1010 11 33//66

BB

AA--B :B :

yyi i -->>

77-->>

Segment :Segment :

Page 333: Algorithmique graphique

RemplissageRemplissage

•• Les points d’intersection sont organisés suivant une liste Les points d’intersection sont organisés suivant une liste chaînéechaînée

•• Chaque trame interceptera un nombre paire n de cotés du Chaque trame interceptera un nombre paire n de cotés du polygonepolygoneLa liste est triée à chaque ajout La liste est triée à chaque ajout •• La liste est triée à chaque ajout La liste est triée à chaque ajout

•• Par ordre croissant des Par ordre croissant des xxminmin

•• Pour deux Pour deux xxminmin identiques, le tri se fait par ordre croissant de identiques, le tri se fait par ordre croissant de ddx/x/ddyy

y’y’ maxmaxx’x’ minmin ddx’/x’/ddy’y’ &&yymaxmax xxminmin ddx/x/ddyy &&

DébutDébut FinFin

yyi i -->>Segment :Segment :

Page 334: Algorithmique graphique

RemplissageRemplissage

yy AA

99 1010 11 3/63/6 && 1010 88 --3/23/2 &&

DD

xx

BB

99

66 1010 11 3/63/6 && 1010 1111 --1/91/9 ..

1010 11 3/63/6 && 1010 88 --3/23/2 &&

1010 77 3/23/2 && 1010 1111 --1/91/9 ..

CC

EE

Page 335: Algorithmique graphique

RemplissageRemplissage

•• Une fois la liste établieUne fois la liste établieRemplissage selon une règle de paritéRemplissage selon une règle de parité : incrémentation de la parité : incrémentation de la parité •• Remplissage selon une règle de paritéRemplissage selon une règle de parité : incrémentation de la parité : incrémentation de la parité à chaque traversée de frontière et tracé si impair.à chaque traversée de frontière et tracé si impair.

•• Après tri en Après tri en xx des n intersections Pi (1 <= i <= n), on tracera des des n intersections Pi (1 <= i <= n), on tracera des segments entre chaque couple de coordonnées (Psegments entre chaque couple de coordonnées (P2*j2*j--11,P,P2*j2*j) ) avec 1 <= j <= n.avec 1 <= j <= n.

Page 336: Algorithmique graphique

RemplissageRemplissage

yy AA

99 1010 11 3/63/6 && 1010 88 --3/23/2 &&

DDP1P1P2P2P3P3

xx

BB

99

66 1010 11 3/63/6 && 1010 1111 --1/91/9 ..

1010 11 3/63/6 && 1010 88 --3/23/2 &&

1010 77 3/23/2 && 1010 1111 --1/91/9 ..

CC

EE

Page 337: Algorithmique graphique

RemplissageRemplissage

•• Gestion des conflits frontaliersGestion des conflits frontaliers•• En raison de l’approximation de l’algorithme de traçage, les points En raison de l’approximation de l’algorithme de traçage, les points

d’intersections peuvent être à l’extérieur du polygone.d’intersections peuvent être à l’extérieur du polygone.•• On prend les points intérieurs au polygone pour éviter les On prend les points intérieurs au polygone pour éviter les

chevauchements.chevauchements.chevauchements.chevauchements.•• D’où l’intérêt d’avoir l’équation de la droite traitée : D’où l’intérêt d’avoir l’équation de la droite traitée : yymax, max, xxmin, min, ddx/x/ddyy

Page 338: Algorithmique graphique

XXXX

AlgorithmeAlgorithme

Procedure remplir_polygone (p:polygone)Procedure remplir_polygone (p:polygone)

débutdébut

créer la structure SIcréer la structure SIcréer la structure SIcréer la structure SIinitialiser la structure LCA à videinitialiser la structure LCA à videpour chaque trame intersectant le polygonepour chaque trame intersectant le polygone

débutdébut

gérer les entrées dans LCA à partir de SIgérer les entrées dans LCA à partir de SIgérer les sorties de LCA à partir des informations contenues dans SIgérer les sorties de LCA à partir des informations contenues dans SIafficher tous les morceaux de trames décrits dans LCAafficher tous les morceaux de trames décrits dans LCA

finfin

finfin

Page 339: Algorithmique graphique

RemplissageRemplissage

•• Remplissage de régions (méthode du germe)Remplissage de régions (méthode du germe)•• Cet algorithme traite les régions définies par une frontière. Cet algorithme traite les régions définies par une frontière. •• À partir d’un pixel intérieur à la région, on propage À partir d’un pixel intérieur à la région, on propage récursivement la couleur de remplissage au voisinage de récursivement la couleur de remplissage au voisinage de ce pixel jusqu’à atteindre la frontière.ce pixel jusqu’à atteindre la frontière.ce pixel jusqu’à atteindre la frontière.ce pixel jusqu’à atteindre la frontière.

Page 340: Algorithmique graphique

RemplissageRemplissage

•• A chaque itération:A chaque itération:

•• On remplit tous les pixels pi jusqu'à la couleur limite à droite et à On remplit tous les pixels pi jusqu'à la couleur limite à droite et à gauche du germe courant.gauche du germe courant.

•• On recherche parmi les pixels au dessus et en dessous des Pi ceux On recherche parmi les pixels au dessus et en dessous des Pi ceux qui sont le plus à gauche d'une suite horizontale maximale à remplir.qui sont le plus à gauche d'une suite horizontale maximale à remplir.

•• Ces pixels sont empilés comme germes des itérations suivantes.Ces pixels sont empilés comme germes des itérations suivantes.

Page 341: Algorithmique graphique

RemplissageRemplissage

5 6

2

1

34

5 6

Page 342: Algorithmique graphique

•• Les calculs d'ombrage (shading)Les calculs d'ombrage (shading)

Apparence (Visibilité)Apparence (Visibilité)

•• Le placage de texture (plaquage, mappage)Le placage de texture (plaquage, mappage)

Page 343: Algorithmique graphique

Les calculs dLes calculs d’éclairement ’éclairement Les calculs dLes calculs d’éclairement ’éclairement et d’et d’ombrageombrage

Page 344: Algorithmique graphique

DéfinitionsDéfinitions

•• IlluminationIllumination•• Transport du flux lumineux direct ou indirect depuis les sources Transport du flux lumineux direct ou indirect depuis les sources

lumineuses : modèle local vs. globallumineuses : modèle local vs. global

•• ÉclairementÉclairement•• Calcul de l'intensité lumineuse en un point de la scène : modèle Calcul de l'intensité lumineuse en un point de la scène : modèle

d’interaction source lumineuse point éclairé d’interaction source lumineuse point éclairé

•• Ombrage (Ombrage (shadingshading))•• Utilisation du modèle éclairement pour obtenir la couleur Utilisation du modèle éclairement pour obtenir la couleur

d'un pixeld'un pixel

Page 345: Algorithmique graphique

Éclairement et OmbrageÉclairement et Ombrage

• Dépend de :• Position du point dans l’espace, • Orientation du point (élément de surface),

Caractéristiques de la surface (diffusion, réflexion, transparence…)• Caractéristiques de la surface (diffusion, réflexion, transparence…)• Sources de lumière (directionnelles, ponctuelles…).• Position et orientation de la “caméra” ou du point de vue.

Page 346: Algorithmique graphique

Sources de lumièresSources de lumières

•• lala lumièrelumière ambianteambiante :: c'estc'est uneune lumièrelumière quiqui éclaireéclaire toutetoute lala scènescèneuniformémentuniformément etet quiqui estest uniquementuniquement caractériséecaractérisée parpar sonson intensitéintensité..

•• lesles sourcessources ponctuellesponctuelles :: cece sontsont desdes sourcessources dede lumière,lumière, supposéessupposéesplacéesplacées enen unun pointpoint précisprécis etet quiqui rayonnentrayonnent lala lumièrelumière radialementradialement;;elleselles sontsont doncdonc caractériséescaractérisées parpar leurleur intensitéintensité etet leurleur positionposition.. EllesElleselleselles sontsont doncdonc caractériséescaractérisées parpar leurleur intensitéintensité etet leurleur positionposition.. EllesEllespeuventpeuvent êtreêtre IsotropiqueIsotropique ouou AnisotropiqueAnisotropique..

•• LorsqueLorsque lala sourcesource prendprend dudu volumevolume elleelle devientdevient «« sourcesource ÉtendueÉtendue »»

•• lesles sourcessources directionnellesdirectionnelles :: cece sontsont desdes sourcessources dede lumière,lumière,supposéessupposées àà l'infinil'infini etet quiqui éclairentéclairent lala scènescène avecavec desdes rayonsrayons parallèlesparallèlesàà uneune directiondirection donnéedonnée;; elleselles sontsont doncdonc caractériséescaractérisées parpar leurleur intensitéintensitéetet leurleur directiondirection..

•• lesles sourcessources dede typetype ProjecteurProjecteur ouou spotspot :: cece sontsont desdes sourcessources dedelumièrelumière caractériséescaractérisées parpar leurleur position,position, leurleur directiondirection etet unun facteurfacteur dedeconcentrationconcentration..

Page 347: Algorithmique graphique

Modèles d’éclairement Modèles d’éclairement

•• La lumière émise La lumière émise •• La lumière ambiante La lumière ambiante

La réflexion diffuse La réflexion diffuse •• La réflexion diffuse La réflexion diffuse •• La réflexion spéculaireLa réflexion spéculaire•• Brillance Brillance

Page 348: Algorithmique graphique

Modèles d’éclairementModèles d’éclairement

•• Lumière émiseLumière émise : Les objets ne sont pas intrinsèquement : Les objets ne sont pas intrinsèquement émetteurs de lumière et n'éclairent donc pas les autres objets émetteurs de lumière et n'éclairent donc pas les autres objets émetteurs de lumière et n'éclairent donc pas les autres objets émetteurs de lumière et n'éclairent donc pas les autres objets mais possèdent ce niveau minimum d'éclairement. mais possèdent ce niveau minimum d'éclairement.

Page 349: Algorithmique graphique

Modèles d’éclairementModèles d’éclairement

•• LumièreLumière ambianteambiante :: correspondcorrespond auau modèlemodèle lele plusplus simplesimple..OnOn considèreconsidère qu'ilqu'il existeexiste uneune sourcesource lumineuselumineuse présenteprésentepartoutpartout etet quiqui éclaireéclaire dede manièremanière égaleégale dansdans toutestoutes leslesdirectionsdirections..directionsdirections..

•• CeCe modèlemodèle dede lumièrelumière correspondcorrespond auau niveauniveau minimumminimumd'éclairaged'éclairage quiqui serasera appliquéappliqué sursur lesles objetsobjets..

•• EnEn termeterme physiquephysique celacela correspondcorrespond unun peupeu auau soleilsoleil réfléchiréfléchiparpar touttout l'environnementl'environnement quiqui donnedonne uneune sortesorte dede lumièrelumièreprésenteprésente partoutpartout..

Page 350: Algorithmique graphique

Modèles d’éclairementModèles d’éclairement

•• On définie l'intensité de cette lumière sur une surface comme suit :On définie l'intensité de cette lumière sur une surface comme suit :

IpIp = = pa.Iapa.Ia

•• Cette intensité lumineuse est constante sur toute la surface.Cette intensité lumineuse est constante sur toute la surface.•• IaIa désigne l'intensité de la lumièredésigne l'intensité de la lumièrepapa est le coefficient de réflexion de la lumière ambiante par la surfaceest le coefficient de réflexion de la lumière ambiante par la surface•• papa est le coefficient de réflexion de la lumière ambiante par la surfaceest le coefficient de réflexion de la lumière ambiante par la surface

•• 0 <= 0 <= papa <= 1<= 1•• IpIp correspond à l'intensité de la lumière résultant de la réflexion sur la surface.correspond à l'intensité de la lumière résultant de la réflexion sur la surface.

Page 351: Algorithmique graphique

Modèles d’éclairementModèles d’éclairement

On augmente papa

Propriètés :

• On ne voit pas la 3D;

• Modélise simplement l’interréflexion entre toutes les surfaces d’une scène;

• Evite qu’un objet dans l’ombre soit complètement noir

Page 352: Algorithmique graphique

Modèles d’éclairementModèles d’éclairement•• La réflexion diffuseLa réflexion diffuse : Dans ce modèle, l'intensité en un point d'une surface dépend de : Dans ce modèle, l'intensité en un point d'une surface dépend de

l'angle formé entre le rayon de lumière qui touche le point de la surface et la normale à la surl'angle formé entre le rayon de lumière qui touche le point de la surface et la normale à la surface. face.

•• Plus l'angle formé entre le rayon de lumière et la normale au plan est faible, plus l'intensité Plus l'angle formé entre le rayon de lumière et la normale au plan est faible, plus l'intensité lumineuse réfléchie visible par l'observateur est forte.lumineuse réfléchie visible par l'observateur est forte.

•• Le principe physique qui se cache derrière ce modèle est simple. Notre source lumineuse Le principe physique qui se cache derrière ce modèle est simple. Notre source lumineuse •• Le principe physique qui se cache derrière ce modèle est simple. Notre source lumineuse Le principe physique qui se cache derrière ce modèle est simple. Notre source lumineuse émet une certaine énergie au mètre carré. Suivant l'incidence des rayons lumineux, cette émet une certaine énergie au mètre carré. Suivant l'incidence des rayons lumineux, cette énergie sera répartie sur une plus ou moins importante surface de l'objet. Si les rayons et la énergie sera répartie sur une plus ou moins importante surface de l'objet. Si les rayons et la surface sont perpendiculaires, alors l'énergie lumineuse sera répartie sur la plus petite surface surface sont perpendiculaires, alors l'énergie lumineuse sera répartie sur la plus petite surface possible et donc l'énergie par unité de surface sera maximale. possible et donc l'énergie par unité de surface sera maximale.

NormaleNormale

Surf

ace

Surf

ace

LumièreLumière LumièreLumière

Énergie reçue faibleÉnergie reçue faible Énergie reçue forteÉnergie reçue forte

Page 353: Algorithmique graphique

Modèles d’éclairementModèles d’éclairement•• Si on considère que la surface est une surface Lambertienne (surface mate), alors, Si on considère que la surface est une surface Lambertienne (surface mate), alors,

on peut considérer que la lumière qui arrive sur la surface est réfléchie dans toutes on peut considérer que la lumière qui arrive sur la surface est réfléchie dans toutes les directions de manière égale. Dans ce cas, la position de l'observateur ne compte les directions de manière égale. Dans ce cas, la position de l'observateur ne compte pas. La lumière émise en direction de l'observateur dépend donc de :pas. La lumière émise en direction de l'observateur dépend donc de :

•• L'intensité de la source lumineuse L'intensité de la source lumineuse IlIl•• L'angle L'angle thetatheta formé par le rayon de lumière et la normale au planformé par le rayon de lumière et la normale au plan•• Coefficient de réflexion Coefficient de réflexion pdpd de la lumière diffuse par la surfacede la lumière diffuse par la surface•• Coefficient de réflexion Coefficient de réflexion pdpd de la lumière diffuse par la surfacede la lumière diffuse par la surface

•• 0 <= 0 <= pdpd <= 1<= 1•• On obtient la formule :On obtient la formule :

IpIp = = pdpd . . IlIl . cos(. cos(thetatheta))

Rayon de lumièreRayon de lumière

Page 354: Algorithmique graphique

Modèles d’éclairementModèles d’éclairement

On augmente pdpd, papa =0

Page 355: Algorithmique graphique

papa diffuse + ambiante

Modèles d’éclairementModèles d’éclairement

pdpd

Page 356: Algorithmique graphique

Modèles d’éclairementModèles d’éclairement

•• La réflexion spéculaireLa réflexion spéculaire ((Modèle de Phong [1973]) : : •• Le modèle de réflexion spéculaire se différencie du modèle de Le modèle de réflexion spéculaire se différencie du modèle de

diffusion en faisant intervenir le point d'observation. Dans ce diffusion en faisant intervenir le point d'observation. Dans ce modèle les rayons de lumière sont réfléchis par symétrie par modèle les rayons de lumière sont réfléchis par symétrie par rapport à la normale à la surface. Ce modèle correspond aux rapport à la normale à la surface. Ce modèle correspond aux

On observe bien l'aspect brillant des objets et les fortes variations en fonction du point de vue.

rapport à la normale à la surface. Ce modèle correspond aux rapport à la normale à la surface. Ce modèle correspond aux propriétés de "miroir" des objets.propriétés de "miroir" des objets.

Page 357: Algorithmique graphique

Modèles d’éclairementModèles d’éclairement•• Il faut calculer le rayon réfléchi sur la face. Ensuite, l'intensité de la lumière observée dépend Il faut calculer le rayon réfléchi sur la face. Ensuite, l'intensité de la lumière observée dépend

de : de : •• thetatheta’’ qui correspond à l'angle entre le rayon réfléchi et le point d'observationqui correspond à l'angle entre le rayon réfléchi et le point d'observation•• IlIl l'intensité de la source de lumièrel'intensité de la source de lumière•• psps : coefficient de réflexion de la lumière spéculaire par la surface: coefficient de réflexion de la lumière spéculaire par la surface

•• 0 <= 0 <= psps <= 1<= 1

•• Si on se prend le rayon réfléchi dans l'Si on se prend le rayon réfléchi dans l'oeiloeil alors on a l'intensité maximum. Autour de cela, alors on a l'intensité maximum. Autour de cela, •• Si on se prend le rayon réfléchi dans l'Si on se prend le rayon réfléchi dans l'oeiloeil alors on a l'intensité maximum. Autour de cela, alors on a l'intensité maximum. Autour de cela, on peut quand même voir quelque chose d'un peu atténué. Cela veut dire que la surface ne on peut quand même voir quelque chose d'un peu atténué. Cela veut dire que la surface ne réfléchit pas directement la rayon mais qu'il y a une certaine "diffusion" autour du rayon réfléchit pas directement la rayon mais qu'il y a une certaine "diffusion" autour du rayon réfléchi. La fonction cosinus joue bien son rôle ici mais comme on veut pouvoir régler la réfléchi. La fonction cosinus joue bien son rôle ici mais comme on veut pouvoir régler la diffusion autour du rayon réfléchi, on introduit le coefficient diffusion autour du rayon réfléchi, on introduit le coefficient nn. On obtient la formule :. On obtient la formule :

IsIs = = psps * * IlIl * cos(* cos(thetatheta’’)^)^nn

• n : rugosité• ∞ (1024) pour un miroir• 1 pour une surface très rugueuse.

Rayon de lumièreRayon de lumière

PointPointde vuede vue

Page 358: Algorithmique graphique

Modèles d’éclairementModèles d’éclairement

•• La rugosité corresponds à la brillance (La rugosité corresponds à la brillance (shininessshininess) : cette valeur détermine la ) : cette valeur détermine la taille et l'intensité de la tâche de réflexion spéculaire. taille et l'intensité de la tâche de réflexion spéculaire.

•• Plus la valeur est grande, et plus la taille est petite et l'intensité importante. Plus la valeur est grande, et plus la taille est petite et l'intensité importante. Plus la valeur est grande, et plus la taille est petite et l'intensité importante. Plus la valeur est grande, et plus la taille est petite et l'intensité importante.

Rayon de lumièreRayon de lumière

Rayon de réflexionRayon de réflexion PointPointde vuede vue

Rayon de lumièreRayon de lumière

Rayon de réflexionRayon de réflexion PointPointde vuede vue

Page 359: Algorithmique graphique

Modèles d’éclairementModèles d’éclairement

•• La réflexion spéculaireLa réflexion spéculaire ((Modèle BlinnBlinn--Phong [Phong [1977])•• Évaluation du rayon de réfléchi relativement coûteuseÉvaluation du rayon de réfléchi relativement coûteuse

•• Version simplifiée/accélérée de l’éclairage PhongVersion simplifiée/accélérée de l’éclairage Phong

•• Évaluation du vecteur H : vecteur séparateur point de vueÉvaluation du vecteur H : vecteur séparateur point de vue--rayon de lumirayon de lumièreèreèreère

IsIs = = psps * * IlIl * cos(* cos(theta’’theta’’)^)^nn

Rayon de lumièreRayon de lumière

PointPointde vuede vue

2

LVH

+=

V : direction de visionV : direction de visionL : source d’éclairage L : source d’éclairage

IsIs = = psps * * IlIl * cos(* cos(theta’’theta’’)^)^nn

Page 360: Algorithmique graphique

Modèles d’éclairementModèles d’éclairement

Page 361: Algorithmique graphique

Modèles d’éclairementModèles d’éclairement

diffuse + ambiante + spéculaire

psps

n

Page 362: Algorithmique graphique

Modèles d’éclairementModèles d’éclairement

• Modèle complet : on ajoute tout, on pondère avec un coefficient d’atténuation Fd

I(P) = pa . Ia + Fd . (pd . Il . cos(theta1) + ps . Il. cos(theta2theta2)^n )I(P) = pa . Ia + Fd . (pd . Il . cos(theta1) + ps . Il. cos(theta2theta2)^n )

Page 363: Algorithmique graphique

Modèles d’éclairementModèles d’éclairement

• I(P) = pa . Ia + Fd .(pd . Il . cos(theta1) + ps . Il cos(theta2theta2)^n )

Page 364: Algorithmique graphique

Modèles d’éclairementModèles d’éclairement

• I(P) = pa . Ia + Fd .(pd . Il . cos(theta1) + ps . Il cos(theta2theta2)^n )

Page 365: Algorithmique graphique

Modèles d’éclairementModèles d’éclairement

• I(P) = pa . Ia + Fd .(pd . Il . cos(theta1) + ps . Il cos(theta2theta2)^n )

Page 366: Algorithmique graphique

Modèles d’éclairementModèles d’éclairement

• I(P) = pa . Ia + Fd .(pd . Il . cos(theta1) + ps . Il cos(theta2)^n )

Page 367: Algorithmique graphique

Modèles d’éclairementModèles d’éclairement

• Modèle coloré• une intensité par composante de couleur.

• Plusieurs sources lumineuses• somme des intensités.• somme des intensités.

• Transparence• manière de combiner couleur de fond et couleur de l’objet. • Un paramètre de transparence t.

I = t.I(P) + (1-t).I(derriere P)

• Halo• la couleur dépend de l’épaisseur traversée.

Page 368: Algorithmique graphique

Modèles d’ombrageModèles d’ombrage

Page 369: Algorithmique graphique

Modèles d’ombrageModèles d’ombrage

•• Les modèles locauxLes modèles locaux•• La luminance à la surface d’un objet est calculée à partirLa luminance à la surface d’un objet est calculée à partir

•• Des paramètres de l’objetDes paramètres de l’objet•• Des paramètres des sources de lumièreDes paramètres des sources de lumière•• Des paramètres des sources de lumièreDes paramètres des sources de lumière

•• Un objet est considéré comme isoléUn objet est considéré comme isolé

•• Les modèles globauxLes modèles globaux•• La luminance à la surface d’un objet est calculée à partirLa luminance à la surface d’un objet est calculée à partir

•• Des paramètres de tous les objets de la scèneDes paramètres de tous les objets de la scène•• Des paramètres des sources de lumièreDes paramètres des sources de lumière

Page 370: Algorithmique graphique

Les modèles locauxLes modèles locaux

Page 371: Algorithmique graphique

Ombrage de LambertOmbrage de Lambert

•• Ombrage de Lambert (plat)Ombrage de Lambert (plat) : : •• La méthode d’ombrage la plus simple pour les facettes polygonales est La méthode d’ombrage la plus simple pour les facettes polygonales est

l’ombrage plat (ou constant). l’ombrage plat (ou constant). •• L’idée est de calculer une seule valeur d’illumination pour l’ensemble de L’idée est de calculer une seule valeur d’illumination pour l’ensemble de

la facette. la facette. •• Par exemple au point milieu de la facette en prenant pour normale à la Par exemple au point milieu de la facette en prenant pour normale à la

Ombrage plat de la sphère pour : Ombrage plat de la sphère pour : 16 16 16 16 facettes, facettes, 32 32 32 32 et et 64 6464 64

•• Par exemple au point milieu de la facette en prenant pour normale à la Par exemple au point milieu de la facette en prenant pour normale à la surface celle du plan contenant la facette.surface celle du plan contenant la facette.

Page 372: Algorithmique graphique

Ombrage de LambertOmbrage de Lambert

Rayon de lumièreRayon de lumière

IpIp = = pdpd . . IlIl . cos(. cos(thetatheta))

•• Composantes :Composantes :•• Il Il :: intensité de la source lumineuse intensité de la source lumineuse •• thetatheta : angle formé par le rayon de lumière et la normale au plan: angle formé par le rayon de lumière et la normale au plan•• pdpd : coefficient de réflexion de la lumière diffuse par la surface: coefficient de réflexion de la lumière diffuse par la surface

•• matériau diffusmatériau diffus•• Noue répétons le même schéma de calcul pour les autres composantes d’éclaireNoue répétons le même schéma de calcul pour les autres composantes d’éclaire

ment : spéculaire, ambiant, etc.ment : spéculaire, ambiant, etc.

Page 373: Algorithmique graphique

•Problème :•Il y a des discontinuités le long des facettes;•L’œil exagère les changements d’intensité et les changements de pente de l’intensité => => effet Mach Banding;

•Solution => Interpolation.

Ombrage de LambertOmbrage de Lambert

Intensité réelleIntensité perçue

Page 374: Algorithmique graphique

Ombrage de GouraudOmbrage de Gouraud

•• Ombrage de Gouraud : Ombrage de Gouraud : •• La méthode développée par Gouraud [1971] élimine les discontinuités La méthode développée par Gouraud [1971] élimine les discontinuités

d’intensité sur une facette polygonale par interpolation des valeurs d’intensité sur une facette polygonale par interpolation des valeurs d’intensité aux sommets de la facette. d’intensité aux sommets de la facette.

•• Cette méthode est largement utilisée et se retrouve dans la majorité Cette méthode est largement utilisée et se retrouve dans la majorité des matériels graphiques existants (librairies, cartes graphiques).des matériels graphiques existants (librairies, cartes graphiques).

Henri GouraudHenri Gouraud

Page 375: Algorithmique graphique

Ombrage de GouraudOmbrage de Gouraud

•• Cette méthode requiert la connaissance de la normale à la surface Cette méthode requiert la connaissance de la normale à la surface aux sommets des facettes polygonales. aux sommets des facettes polygonales.

Page 376: Algorithmique graphique

Ombrage de GouraudOmbrage de Gouraud

•• Cette méthode requiert la connaissance de la normale à la surface Cette méthode requiert la connaissance de la normale à la surface aux sommets des facettes polygonales. aux sommets des facettes polygonales.

•• Ces normales peuvent être soit données soit déterminées en calculant Ces normales peuvent être soit données soit déterminées en calculant la moyenne des normales des facettes partageant un sommet Pla moyenne des normales des facettes partageant un sommet P

∑∑=

i

is

N

NN

NNss : normale du sommet traité: normale du sommet traitéNNii : normales des faces incidentes : normales des faces incidentes

Page 377: Algorithmique graphique

Ombrage de GouraudOmbrage de Gouraud

•• Lorsque les normales sont connues, les intensités (diffuses) aux sommets des Lorsque les normales sont connues, les intensités (diffuses) aux sommets des facettes polygonales sont calculées.facettes polygonales sont calculées.

1sN

2sN3sN

Rayon de lumièreRayon de lumière

IpIp = = pdpd . . IlIl . cos(. cos(thetatheta))

1sI

2sI 3sI

Page 378: Algorithmique graphique

Ombrage de GouraudOmbrage de Gouraud

•• On réalise interpolation bilinéaire des intensités lumineuse sur toute la faceOn réalise interpolation bilinéaire des intensités lumineuse sur toute la face•• Interpolation suivant les arrêtesInterpolation suivant les arrêtes

1sI

2sI

3sI

21

12

21

21 yy

yyI

yy

yyII ssgauche −

−+−−=

31

12

31

31 yy

yyI

yy

yyII ssdroite −

−+−−=

1y

2y

y

Page 379: Algorithmique graphique

Ombrage de GouraudOmbrage de Gouraud

•• On réalise interpolation bilinéaire des intensités lumineuse sur toute la faceOn réalise interpolation bilinéaire des intensités lumineuse sur toute la face•• Interpolation suivant les arrêtesInterpolation suivant les arrêtes•• Interpolation horizontale à l’intérieur de la faceInterpolation horizontale à l’intérieur de la face

•• L’interpolation s’effectue à l’aide de l’algorithme de balayage de ligne L’interpolation s’effectue à l’aide de l’algorithme de balayage de ligne utilisée pour le remplissage de polygone et le zutilisée pour le remplissage de polygone et le z--buffer : Scanbuffer : Scan--lineline

1sI

3sI

21

1

21

2

xx

xxI

xx

xxII droitegauche −

−+−−=

1x 2x

2sI

x

y

Page 380: Algorithmique graphique

Ombrage de GouraudOmbrage de Gouraud

InterpolationGaugaud(polygone)InterpolationGaugaud(polygone){{POUR chaque polygone FAIREPOUR chaque polygone FAIRE

calcul de la normale au polygonecalcul de la normale au polygone

POUR chaque sommet (S1, S2, etc.) du polygone FAIREPOUR chaque sommet (S1, S2, etc.) du polygone FAIREPOUR chaque sommet (S1, S2, etc.) du polygone FAIREPOUR chaque sommet (S1, S2, etc.) du polygone FAIREcalcul de la normale : moyenne des normales des faces incidentescalcul de la normale : moyenne des normales des faces incidentes

POUR chaque sommet (S1, S2, etc.) du polygone FAIREPOUR chaque sommet (S1, S2, etc.) du polygone FAIREcalcul l’intensité lumineuse d’un modèle d’éclairement (diffus, spéculaire, etc.)calcul l’intensité lumineuse d’un modèle d’éclairement (diffus, spéculaire, etc.)

POUR chaque point S FAIREPOUR chaque point S FAIRESI S appartient a une arrête [S1,S2] du polygone ALORSSI S appartient a une arrête [S1,S2] du polygone ALORS

calcul de l’intensité lumineuse Igauche || Idroite par interpolation linéaire entre [Icalcul de l’intensité lumineuse Igauche || Idroite par interpolation linéaire entre [Is1s1, I, Is2s2]]SinonSinon

calcul de l’intensité lumineuse I par interpolation linéaire horizontale entre[Icalcul de l’intensité lumineuse I par interpolation linéaire horizontale entre[Igauchegauche, I, Idroitedroite

]]}}

Page 381: Algorithmique graphique

Ombrage de GouraudOmbrage de Gouraud

•• Caractéristiques :Caractéristiques :

•• Technique efficace en terme de temps de calcul pour l'obtention d'un Technique efficace en terme de temps de calcul pour l'obtention d'un réalisme moyen.réalisme moyen.

•• Implantation facile dans le cadre de la programmation de l’algorithme du ZImplantation facile dans le cadre de la programmation de l’algorithme du Z--Buffer.Buffer.

•• L'utilisation d'une interpolation entre des valeurs numériques n'est qu'une L'utilisation d'une interpolation entre des valeurs numériques n'est qu'une approximation qui peut conduire à des défauts de visualisation.approximation qui peut conduire à des défauts de visualisation.

Page 382: Algorithmique graphique

Ombrage de PhongOmbrage de Phong

•• Ombrage de Phong [1973] :Ombrage de Phong [1973] :•• Consiste à déterminer la normale en un point d’une facette polygonale par Consiste à déterminer la normale en un point d’une facette polygonale par

interpolation des normales aux sommets de cette facette.interpolation des normales aux sommets de cette facette.•• Interpolation suivant les arrêtesInterpolation suivant les arrêtes

1sN

2sN

3sN

21

12

21

21 yy

yyN

yy

yyNN ssgauche −

−+−−=

31

12

31

31 yy

yyN

yy

yyNN ssdroite −

−+−−=

1y

2y

y

Page 383: Algorithmique graphique

Ombrage de PhongOmbrage de Phong

•• Ombrage de Phong [1973] :Ombrage de Phong [1973] :•• Consiste à déterminer la normale en un point d’une facette polygonale par Consiste à déterminer la normale en un point d’une facette polygonale par

interpolation des normales aux sommets de cette facette.interpolation des normales aux sommets de cette facette.•• Interpolation suivant les arrêtesInterpolation suivant les arrêtes•• Interpolation horizontale à l’intérieur de la faceInterpolation horizontale à l’intérieur de la face

1sN

2sN

3sN

21

1

21

2

xx

xxN

xx

xxNN droitegauche −

−+−−=

1x 2xx

Page 384: Algorithmique graphique

Ombrage de PhongOmbrage de Phong

•• Utilisation des modèles d’illumination pour calculer les intensités Utilisation des modèles d’illumination pour calculer les intensités lumineuses lumineuses

•• Modèle diffus Modèle diffus IpIp = = pdpd . . IlIl . cos(. cos(thetatheta))

pdpd : matériau diffus: matériau diffus

1sI

3sI2sI

Rayon de lumièreRayon de lumièrepdpd : matériau diffus: matériau diffus

Page 385: Algorithmique graphique

Ombrage de PhongOmbrage de Phong

•• Utilisation des modèles d’illumination pour calculer les intensités Utilisation des modèles d’illumination pour calculer les intensités lumineuse lumineuse

•• Modèle spéculaireModèle spéculaire

Point de vuePoint de vue

IsIs = = psps * * IlIl * cos(* cos(theta’’theta’’)^)^nn

1sI

3sI2sI

Rayon de lumièreRayon de lumière

psps : matériau spéculaire: matériau spéculaire

Page 386: Algorithmique graphique

Ombrage de PhongOmbrage de Phong

•• Ombrage de Phong [1973] :Ombrage de Phong [1973] :•• L’intérêt de cette approche par rapport à l’ombrage de Gouraud réside L’intérêt de cette approche par rapport à l’ombrage de Gouraud réside

principalement dans sa capacité à traiter les réflexions spéculaires.principalement dans sa capacité à traiter les réflexions spéculaires.

•• Gouraud ne permet pas de prendre en compte les réflexions spéculaires Gouraud ne permet pas de prendre en compte les réflexions spéculaires Gouraud ne permet pas de prendre en compte les réflexions spéculaires Gouraud ne permet pas de prendre en compte les réflexions spéculaires lorsque celleslorsque celles--ci sont localisées au centre d’une facette.ci sont localisées au centre d’une facette.

Page 387: Algorithmique graphique

Modèles d’ombrageModèles d’ombrage

Ombrage plat Ombrage de Gouraud Ombrage de Phong

Page 388: Algorithmique graphique

Modèles d’ombrageModèles d’ombrage

•• Ombrage de Phong [1973] :Ombrage de Phong [1973] :•• L’ombrage de Phong est d’une manière générale meilleur que celui de L’ombrage de Phong est d’une manière générale meilleur que celui de

Gouraud car l’interpolation est effectuée sur les normales et non les Gouraud car l’interpolation est effectuée sur les normales et non les intensités.intensités.

•• Cela même pour un modèle d’illumination sans réflexion spéculaire.Cela même pour un modèle d’illumination sans réflexion spéculaire.

•• Augmente le coût du rendu.Augmente le coût du rendu.

Page 389: Algorithmique graphique

Modèles d’ombrageModèles d’ombrage

Ombrage plat Ombrage de Gouraud Ombrage de Phong

Page 390: Algorithmique graphique

Modèles d’ombrageModèles d’ombrage

InterpolationPhong(polygone)InterpolationPhong(polygone){{POUR chaque polygone FAIREPOUR chaque polygone FAIRE

calcul de la normale au polygonecalcul de la normale au polygone

POUR chaque sommet (S1, S2, etc.) du polygone FAIREPOUR chaque sommet (S1, S2, etc.) du polygone FAIREcalcul de la normale : moyenne des normales des faces incidentescalcul de la normale : moyenne des normales des faces incidentescalcul de la normale : moyenne des normales des faces incidentescalcul de la normale : moyenne des normales des faces incidentes

POUR chaque point S du polygone FAIREPOUR chaque point S du polygone FAIRESI S appartient a une arrête [S1,S2] du polygone ALORSSI S appartient a une arrête [S1,S2] du polygone ALORS

calcul de la normale Ncalcul de la normale Ngauchegauche|| N|| Ndroitedroite par interpolation linéaire entre [Npar interpolation linéaire entre [Ns1s1, N, Ns2s2]]SinonSinon

calcul de l’intensité lumineuse N par interpolation linéaire horizontale entre[Ncalcul de l’intensité lumineuse N par interpolation linéaire horizontale entre[Ngauchegauche, N, Ndroitedroite]]

POUR chaque point S du polygone FAIREPOUR chaque point S du polygone FAIREcalcul l’intensité lumineuse d’un modèle d’éclairement (diffus, spéculaire, etc.)calcul l’intensité lumineuse d’un modèle d’éclairement (diffus, spéculaire, etc.)

}}

Page 391: Algorithmique graphique

Modèles d’ombrageModèles d’ombrage

psIlpdIlpaIaI

•• Rajouter des couleursRajouter des couleurs•• Trois composantesTrois composantes

⋅+

⋅+

=

bb

vv

rrn

bb

vv

rr

bb

vv

rr

b

g

r

psIl

psIl

psIl

H)(N

pdIl

pdIl

pdIl

L)(N

paIa

paIa

paIa

I

I

I

Page 392: Algorithmique graphique

Modèles d’ombrageModèles d’ombrage

psIlpdIlpaIaI

•• Rajouter des couleursRajouter des couleurs•• Trois composantesTrois composantes

RougeRouge

⋅+

⋅+

=

bb

vv

rrn

bb

vv

rr

bb

vv

rr

b

g

r

psIl

psIl

psIl

H)(N

pdIl

pdIl

pdIl

L)(N

paIa

paIa

paIa

I

I

I RougeRouge

VertVert

BleuBleu

Page 393: Algorithmique graphique

Modèles d’ombrageModèles d’ombrage

psIlpdIlpaIaI

•• Rajouter des couleursRajouter des couleurs•• Trois composantesTrois composantes

⋅+

⋅+

=

bb

vv

rrn

bb

vv

rr

bb

vv

rr

b

g

r

psIl

psIl

psIl

H)(N

pdIl

pdIl

pdIl

L)(N

paIa

paIa

paIa

I

I

I

Matériau ambiantMatériau ambiant Matériau diffusMatériau diffus Matériau spéculaireMatériau spéculaire

Page 394: Algorithmique graphique

Modèles d’ombrageModèles d’ombrage

psIlpdIlpaIaI

•• Rajouter des couleursRajouter des couleurs•• Trois composantesTrois composantes

⋅+

⋅+

=

bb

vv

rrn

bb

vv

rr

bb

vv

rr

b

g

r

psIl

psIl

psIl

H)(N

pdIl

pdIl

pdIl

L)(N

paIa

paIa

paIa

I

I

I

Source ambianteSource ambiante Source diffuseSource diffuse Source spéculaireSource spéculaire

Page 395: Algorithmique graphique

Modèles d’ombrageModèles d’ombrage

psIlpdIlpaIaI

•• Rajouter des couleursRajouter des couleurs•• Trois composantesTrois composantes

⋅+

⋅+

=

bb

vv

rrn

bb

vv

rr

bb

vv

rr

b

g

r

psIl

psIl

psIl

H)(N

pdIl

pdIl

pdIl

L)(N

paIa

paIa

paIa

I

I

I

Couleur finaleCouleur finale

Page 396: Algorithmique graphique

Modèles d’ombrageModèles d’ombrage

•• Plusieurs sources d’éclairage Plusieurs sources d’éclairage

psIlpdIlpaIaI

∑=

⋅+

⋅+

=

lightsIlbb

vv

rrn

bb

vv

rr

bb

vv

rr

b

g

r

psIl

psIl

psIl

H)(N

pdIl

pdIl

pdIl

L)(N

paIa

paIa

paIa

I

I

I

Page 397: Algorithmique graphique

Les modèles globauxLes modèles globauxLes modèles globauxLes modèles globaux

Page 398: Algorithmique graphique

Modèles d’ombrageModèles d’ombrage

•• Les méthodes précédentes permettent d’effectuer un rendu sur des surfaces directement éclLes méthodes précédentes permettent d’effectuer un rendu sur des surfaces directement éclairées par une source lumineuse. Elles ne permettent pas de prendre en compte les interactiairées par une source lumineuse. Elles ne permettent pas de prendre en compte les interactions entre objets : ons entre objets :

•• Transport de la lumière ;Transport de la lumière ;•• RRéflexionséflexions, réfraction, diffusion ;, réfraction, diffusion ;•• Conservation de l’énergie ;Conservation de l’énergie ;•• Conservation de l’énergie ;Conservation de l’énergie ;•• Occultation de la lumière par une surface (ombres portés).Occultation de la lumière par une surface (ombres portés).

•• Ces interactions nécessitent un modèle d’illumination global. Ces interactions nécessitent un modèle d’illumination global.

Page 399: Algorithmique graphique

Modèles d’ombrageModèles d’ombrage

•• Deux classe de méthodes d’illumination global existent :Deux classe de méthodes d’illumination global existent :

•• La première classe concerne les algorithmes de lancer de rayons qui La première classe concerne les algorithmes de lancer de rayons qui remplacent les illuminations locales ambiantes, diffuse et spéculaire remplacent les illuminations locales ambiantes, diffuse et spéculaire remplacent les illuminations locales ambiantes, diffuse et spéculaire remplacent les illuminations locales ambiantes, diffuse et spéculaire par un modèle à base de réflexion spéculaire et transmission globale.par un modèle à base de réflexion spéculaire et transmission globale.

•• La deuxième classe concerne les méthodes de radiosité qui modéliseLa deuxième classe concerne les méthodes de radiosité qui modélisent toutes les interactions entre objets par des sources lumineuses dant toutes les interactions entre objets par des sources lumineuses dans une étape préliminaire. Une image est ensuite déterminée pour uns une étape préliminaire. Une image est ensuite déterminée pour un point de vue donné par des algorithmes classiques d’élimination de n point de vue donné par des algorithmes classiques d’élimination de parties cachées et d’interpolation d’ombrages.parties cachées et d’interpolation d’ombrages.

Page 400: Algorithmique graphique

La radiositéLa radiosité

Rendu Scan-line Rendu par radiosité

Page 401: Algorithmique graphique

La radiositéLa radiosité

•• Principe (Principe (Goral et al. (1984) et Nishita & Nakamae (1985)Goral et al. (1984) et Nishita & Nakamae (1985)))••La radiosité se fonde sur les propriétés énergétiques des photons coLa radiosité se fonde sur les propriétés énergétiques des photons contenus dans une lumière (aspect corpusculaire de la lumière). On s'intenus dans une lumière (aspect corpusculaire de la lumière). On s'intéresse donc à la lumière non plus en tant qu'ensemble de rayons lntéresse donc à la lumière non plus en tant qu'ensemble de rayons lumineux mais en tant que flux lumineux d'énergie.umineux mais en tant que flux lumineux d'énergie.umineux mais en tant que flux lumineux d'énergie.umineux mais en tant que flux lumineux d'énergie.

••Dans un environnement clos (une scène 3D que l'on veut visualiser Dans un environnement clos (une scène 3D que l'on veut visualiser par exemple), règne un état d'équilibre d'énergie lumineuses : à tout par exemple), règne un état d'équilibre d'énergie lumineuses : à tout instant une quantité quasiment constante d'énergie lumineuse est éinstant une quantité quasiment constante d'énergie lumineuse est émise par chaque source principale de la scène et atteint les différentmise par chaque source principale de la scène et atteint les différents objets de la scène qui se comportent alors comme des sources secs objets de la scène qui se comportent alors comme des sources secondaires en réondaires en ré--émettant une fraction de l'énergie reçue. En état d'éqémettant une fraction de l'énergie reçue. En état d'équilibre stationnaire 1, l'énergie émise et reçue par chaque surface éluilibre stationnaire 1, l'énergie émise et reçue par chaque surface élémentaire d'un objet (patch) est constante.émentaire d'un objet (patch) est constante.

Page 402: Algorithmique graphique

La radiositéLa radiosité

•• L'idée originale de l'algorithme de radiosité consiste à calculer L'idée originale de l'algorithme de radiosité consiste à calculer les énergies émises à l'équilibre par chaque surface élémentaire les énergies émises à l'équilibre par chaque surface élémentaire de la scène. Une fois toutes les énergies calculées, il est facile de la scène. Une fois toutes les énergies calculées, il est facile de positionner l'observateur n'importe où dans la scène et de de positionner l'observateur n'importe où dans la scène et de calculer la fraction d'énergie qui arrive effectivement jusqu' à calculer la fraction d'énergie qui arrive effectivement jusqu' à calculer la fraction d'énergie qui arrive effectivement jusqu' à calculer la fraction d'énergie qui arrive effectivement jusqu' à lui.lui.

•• L'hypothèse de départ consiste à dire que toutes les surfaces L'hypothèse de départ consiste à dire que toutes les surfaces sont des surfaces lambertiennes, c'est à dire qui réfléchissent la sont des surfaces lambertiennes, c'est à dire qui réfléchissent la lumière isotropiquement dans toutes les directions.lumière isotropiquement dans toutes les directions.

•• La radiosité n'a pas de dépendance directionnelle.La radiosité n'a pas de dépendance directionnelle.

Page 403: Algorithmique graphique

La radiositéLa radiosité

Page 404: Algorithmique graphique

La radiositéLa radiosité

•• Il est nécessaire de déterminer la visibilité relative de chaque Il est nécessaire de déterminer la visibilité relative de chaque surface élémentaires par rapport aux autres surfaces élémentsurface élémentaires par rapport aux autres surfaces élémentaires de la scène, afin de savoir entre quelles surfaces vont avaires de la scène, afin de savoir entre quelles surfaces vont avoir lieu les échanges énergétiques et de pouvoir déterminer poir lieu les échanges énergétiques et de pouvoir déterminer pour chacune d'elle la quantité d'énergie échangée. Dans les faour chacune d'elle la quantité d'énergie échangée. Dans les faour chacune d'elle la quantité d'énergie échangée. Dans les faour chacune d'elle la quantité d'énergie échangée. Dans les faits, la décomposition des surfaces de la scène en surfaces éléits, la décomposition des surfaces de la scène en surfaces élémentaires (patches) est réalisée de sorte que l'énergie émise mentaires (patches) est réalisée de sorte que l'énergie émise par unité de temps par le patch soit constante sur toute sa supar unité de temps par le patch soit constante sur toute sa surface. On appelle cette énergie surfacique émise par unité de rface. On appelle cette énergie surfacique émise par unité de temps, la radiosité du patch ( )temps, la radiosité du patch ( )

Page 405: Algorithmique graphique

La radiositéLa radiosité

A partir de maintenant, on note :A partir de maintenant, on note :

Page 406: Algorithmique graphique

•• La loi de conservation de l'énergie appliquée aux patches donne un système La loi de conservation de l'énergie appliquée aux patches donne un système à n équations, n étant le nombre de patches de l'image :à n équations, n étant le nombre de patches de l'image :

La règle de réciprocité s'applique entre les facteurs de forme dans un enviroLa règle de réciprocité s'applique entre les facteurs de forme dans un enviro•• La règle de réciprocité s'applique entre les facteurs de forme dans un enviroLa règle de réciprocité s'applique entre les facteurs de forme dans un environnement diffus, autrement dit :nnement diffus, autrement dit :

•• L'équation devient donc :L'équation devient donc :

•• C'est ce système qu'il faut résoudre.C'est ce système qu'il faut résoudre.

Page 407: Algorithmique graphique

•• On peut l'exprimer sous forme matricielle par :On peut l'exprimer sous forme matricielle par :

•• Les facteurs de forme Fii sont tous nuls et les matrices que l'on doit considérer ne comporte doLes facteurs de forme Fii sont tous nuls et les matrices que l'on doit considérer ne comporte donc que des 1 sur leur diagonale.nc que des 1 sur leur diagonale.

•• La radiosité globale consiste à résoudre globalement ce système linéaire de n équations n incoLa radiosité globale consiste à résoudre globalement ce système linéaire de n équations n inconnues. Une solution exacte du système nécessiterait une inversion de la matrice qui est irréalisannues. Une solution exacte du système nécessiterait une inversion de la matrice qui est irréalisable en pratique vu sa taille. On résout en fait ce système à l'aide de méthodes itératives celle de ble en pratique vu sa taille. On résout en fait ce système à l'aide de méthodes itératives celle de GaussGauss--Siedel par exemple. Le principal problème des méthodes globales réside dans le calcul deSiedel par exemple. Le principal problème des méthodes globales réside dans le calcul des facteurs de forme. En e et, de la précision du calcul du facteur de forme dépend la précision ds facteurs de forme. En e et, de la précision du calcul du facteur de forme dépend la précision de la solution de radiosité. Et des erreurs trop grandes dans l'approximation des facteurs de forme la solution de radiosité. Et des erreurs trop grandes dans l'approximation des facteurs de forme peut conduire le système d'équations à diverger.e peut conduire le système d'équations à diverger.

•• Ce système d’équations doit être résolu pour différentes longueurs d’onde (réflectivités différentCe système d’équations doit être résolu pour différentes longueurs d’onde (réflectivités différentes dans le système d'équations linéaires) afin d’obtenir des images colorées. es dans le système d'équations linéaires) afin d’obtenir des images colorées.

Page 408: Algorithmique graphique

La discrétisationLa discrétisation

•• La radiosité est une méthode par éléments finis. La précision et la qualité de la solLa radiosité est une méthode par éléments finis. La précision et la qualité de la solution d'éclairage obtenue avec cette méthode dépendent donc de la taille et du chution d'éclairage obtenue avec cette méthode dépendent donc de la taille et du choix de la discrétisation (ou maillage) de l'environnement considère.oix de la discrétisation (ou maillage) de l'environnement considère.

•• Dans la méthode de radiosité standard, la valeur de radiosité est supposée constaDans la méthode de radiosité standard, la valeur de radiosité est supposée constante sur un élément donné, ce qui revient en fait à traiter la fonction de radiosité cnte sur un élément donné, ce qui revient en fait à traiter la fonction de radiosité cnte sur un élément donné, ce qui revient en fait à traiter la fonction de radiosité cnte sur un élément donné, ce qui revient en fait à traiter la fonction de radiosité comme une fonction constante par morceaux. Si on souhaite obtenir une solution domme une fonction constante par morceaux. Si on souhaite obtenir une solution de radiosité de bonne qualité, il est donc préférable d'utiliser un maillage qui suive le radiosité de bonne qualité, il est donc préférable d'utiliser un maillage qui suive la distribution de la lumière dans l'environnement, avec une plus forte densité d'éléa distribution de la lumière dans l'environnement, avec une plus forte densité d'éléments dans les régions où l'éclairage change rapidement. Le fait que la distributioments dans les régions où l'éclairage change rapidement. Le fait que la distribution de la lumière soit justement l'inconnue du problème a conduit à l'élaboration de n de la lumière soit justement l'inconnue du problème a conduit à l'élaboration de différentes techniques de génération automatique de maillage.différentes techniques de génération automatique de maillage.

•• On distingue deux approches :On distingue deux approches :•• Méthodes a posterioriMéthodes a posteriori•• Méthodes a prioriMéthodes a priori

Page 409: Algorithmique graphique

Méthodes à posterioriMéthodes à posteriori

•• Une approximation initiale de la solution de radiosité est obtenue en utilisant un maillage unifoUne approximation initiale de la solution de radiosité est obtenue en utilisant un maillage uniforme ou un autre maillage déterminé a priorirme ou un autre maillage déterminé a priori

•• Ensuite on subdivise les éléments qui ne vérifient pas certains critèresEnsuite on subdivise les éléments qui ne vérifient pas certains critères•• Subdivision en fonction du gradient de la radiositéSubdivision en fonction du gradient de la radiosité•• Subdivision en fonction des facteurs de formeSubdivision en fonction des facteurs de forme•• Subdivision en fonction des zones d’ombreSubdivision en fonction des zones d’ombre•• Subdivision en fonction des zones d’ombreSubdivision en fonction des zones d’ombre

•• Après avoir subdivisé les éléments ne vérifiant pas le critère choisi, une nouvelle estimation de Après avoir subdivisé les éléments ne vérifiant pas le critère choisi, une nouvelle estimation de la solution de radiosité est calculée avec le maillage amélioré, et l'ensemble du processus est rla solution de radiosité est calculée avec le maillage amélioré, et l'ensemble du processus est répété jusqu'à ce qu'on ne puisse plus trouver d'éléments ne vérifiant pas le critère choisi.épété jusqu'à ce qu'on ne puisse plus trouver d'éléments ne vérifiant pas le critère choisi.

Page 410: Algorithmique graphique

Méthodes à posterioriMéthodes à posteriori

Page 411: Algorithmique graphique

Méthodes à posterioriMéthodes à posteriori

Page 412: Algorithmique graphique

Méthodes à prioriMéthodes à priori

•• Les méthodes a priori consistent à calculer tout ou une partie du maillage avant le cLes méthodes a priori consistent à calculer tout ou une partie du maillage avant le calcul de la solution de radiosité. Elles consistent à construire le maillage en positionalcul de la solution de radiosité. Elles consistent à construire le maillage en positionnant les limites des éléments sur les discontinuités de la fonction de radiosité. nant les limites des éléments sur les discontinuités de la fonction de radiosité.

•• Ces discontinuités correspondent à des changements de visibilité dans la scène. Ces discontinuités correspondent à des changements de visibilité dans la scène. •• Zones d'ombre et de pénombre. Zones d'ombre et de pénombre. •• Intersections de surfacesIntersections de surfaces

•• Elles sont purement géométriques et peuvent être déterminées avant que la solutioElles sont purement géométriques et peuvent être déterminées avant que la solution de radiosité ne soit calculée. n de radiosité ne soit calculée.

•• Cette technique de maillage a priori, basée sur les discontinuités, est appelée maillaCette technique de maillage a priori, basée sur les discontinuités, est appelée maillage de discontinuité.ge de discontinuité.

Page 413: Algorithmique graphique

Méthodes à prioriMéthodes à priori

Source de Source de lumièrelumière

ObstacleObstacle

Page 414: Algorithmique graphique

• Le calcul de l'illumination d'une scène par la méthode de radiosité correspond au pipeline

Discrétisation de la scène

Résolution de la radiositéRésolution de la radiosité

Discrétisation de la scène

Calculs Facteurs de Forme

Résolution du système

Rendu et affichage

Modification des

matériaux.

Modification de

la scène.

Modification

de la caméra.

Discrétisation : Discrétisation : méthodes à méthodes à posterioriposteriori

Page 415: Algorithmique graphique

La radiositéLa radiosité•• AvantagesAvantages

••Au niveau de la qualité de l’affichageAu niveau de la qualité de l’affichage•• On obtient une très bonne estimation des flux d'énergie à l'intérieur de la scène On obtient une très bonne estimation des flux d'énergie à l'intérieur de la scène --> des images très réalistes.> des images très réalistes.

•• Le calcul de l’équilibre énergétique intègre de manière très précise le calcul de la Le calcul de l’équilibre énergétique intègre de manière très précise le calcul de la composante de lumière ambiante de chaque surface, ce qui conduit généralemencomposante de lumière ambiante de chaque surface, ce qui conduit généralemencomposante de lumière ambiante de chaque surface, ce qui conduit généralemencomposante de lumière ambiante de chaque surface, ce qui conduit généralement à des lumières douces qui semblent tamisées (résolution des problèmes d'illumit à des lumières douces qui semblent tamisées (résolution des problèmes d'illumination locale liés à l'algorithme du lancer de rayons).nation locale liés à l'algorithme du lancer de rayons).

•• La réalisation du ZLa réalisation du Z--Buffer d'affichage, généralement associé à un lissage de GourBuffer d'affichage, généralement associé à un lissage de Gouraud, renforce encore ce phénomène.aud, renforce encore ce phénomène.

•• On modélise les ombres portées car on gère les occultations entre objets.On modélise les ombres portées car on gère les occultations entre objets.

••Au niveau de la rapidité de calculAu niveau de la rapidité de calcul•• Une fois l’équilibre énergétique calculé, l’affichage d’une scène est très rapide (raUne fois l’équilibre énergétique calculé, l’affichage d’une scène est très rapide (rapidité du Zpidité du Z--Buffer ou du lancer de rayons).Buffer ou du lancer de rayons).

•• Contrairement au lancer de rayons, on n’a pas à recalculer l’équilibre si on effectContrairement au lancer de rayons, on n’a pas à recalculer l’équilibre si on effectue un déplacement de l'observateur à l’intérieur de la scène. Tant que la scène n’ue un déplacement de l'observateur à l’intérieur de la scène. Tant que la scène n’est pas modifiée, les calculs d’animation sont extrêmement rapides.est pas modifiée, les calculs d’animation sont extrêmement rapides.

Page 416: Algorithmique graphique

La radiositéLa radiosité

•• InconvénientsInconvénients•• Au niveau de la qualité de l’affichageAu niveau de la qualité de l’affichage

•• Cet algorithme ne tient compte que de la lumière "diffusée". Il ne peut pas rendre comCet algorithme ne tient compte que de la lumière "diffusée". Il ne peut pas rendre compte des transmissions et des réflexions spéculaires.pte des transmissions et des réflexions spéculaires.

•• La discrétisation de la scène et des calculs de facteurs de forme par méthode de l'hémiLa discrétisation de la scène et des calculs de facteurs de forme par méthode de l'hémisphère ou l'hémicube fait que certains problèmes d'aliasage peuvent apparaître entraînsphère ou l'hémicube fait que certains problèmes d'aliasage peuvent apparaître entraînant fréquemment des problèmes comme par exemple sur les ombres:ant fréquemment des problèmes comme par exemple sur les ombres:

•• bords trop flous et/ou crénelés,bords trop flous et/ou crénelés,•• bords trop flous et/ou crénelés,bords trop flous et/ou crénelés,•• ombres absentes pour les objets trop minces,ombres absentes pour les objets trop minces,

•• ou sur les éclairages:ou sur les éclairages:•• mauvais éclairage de certaines zones,mauvais éclairage de certaines zones,•• manque de précision sur l'éclairage des objets placés près de l'observateur et donc apparaissmanque de précision sur l'éclairage des objets placés près de l'observateur et donc apparaiss

ant gros à l'écran.ant gros à l'écran.•• Au niveau de la rapidité de calculAu niveau de la rapidité de calcul

•• Les deux phases (a) de calcul des facteurs de forme et (b) de résolution du système d’Les deux phases (a) de calcul des facteurs de forme et (b) de résolution du système d’équations linéaires demandent des quantités de calcul importantes. La phase de calcul équations linéaires demandent des quantités de calcul importantes. La phase de calcul des facteurs de forme est la plus longue.des facteurs de forme est la plus longue.

•• Plus on veut un résultat proche de la réalité, plus la discrétisation de la scène doit être Plus on veut un résultat proche de la réalité, plus la discrétisation de la scène doit être poussée et donc plus le temps de calcul est important. De plus, on est confronté à la rpoussée et donc plus le temps de calcul est important. De plus, on est confronté à la résolution successive de deux problèmes en n2 du nombre de facettes (potentiellement ésolution successive de deux problèmes en n2 du nombre de facettes (potentiellement très grand):très grand):

•• le calcul et le stockage des facteurs de forme,le calcul et le stockage des facteurs de forme,•• la résolution du système.la résolution du système.

Page 417: Algorithmique graphique

Le tracer de rayonLe tracer de rayon

Page 418: Algorithmique graphique

Le tracer de rayonLe tracer de rayon

Page 419: Algorithmique graphique

Le tracer de rayonLe tracer de rayon

•• Principe Principe (Arthur Appel 1968)(Arthur Appel 1968) ::•• Effectuer en sens inverse de la réalité le parcours des rayons lumineux.Effectuer en sens inverse de la réalité le parcours des rayons lumineux.•• On traverse l'écran depuis l'œil de l'observateur de manière à déterminer On traverse l'écran depuis l'œil de l'observateur de manière à déterminer

de quels objets les rayons proviennent, et ainsi, à déterminer leurs caracde quels objets les rayons proviennent, et ainsi, à déterminer leurs caractéristiques chromatiques.téristiques chromatiques.

•• Étapes : Étapes : •• Rayons imaginaires du point d'observation vers la scène.Rayons imaginaires du point d'observation vers la scène.•• Un rayon est lancé pour chaque pixel de l'image.Un rayon est lancé pour chaque pixel de l'image.•• La couleur du pixel est déterminée à partir de l'illumination du point de la surLa couleur du pixel est déterminée à partir de l'illumination du point de la sur

face intersectée par le rayon.face intersectée par le rayon.•• On peut pour cela utiliser les modèles d'illumination locale (Gouraud, Phong).On peut pour cela utiliser les modèles d'illumination locale (Gouraud, Phong).

Page 420: Algorithmique graphique

AlgorithmeAlgorithme

• Pour chaque pixel• Créer un rayon partant de l’œil à travers le pixel• Pour chaque objet

• Intersecter le rayon avec l’objet• Si l’intersection est la plus proche, la sauver

• Colorier le pixel avec l’ombrage

Image plane

Eye

• Colorier le pixel avec l’ombragede l’objet au point d’intersection

Page 421: Algorithmique graphique

Lancer de rayons Lancer de rayons

•• Deux cas sont alors possibles :Deux cas sont alors possibles :

•• Aucun objet n'intercepte le rayonAucun objet n'intercepte le rayon•• La couleur est celle du fond.La couleur est celle du fond.

•• Des objets interceptent le rayonDes objets interceptent le rayonOn trouve l'objet le plus proche de l'observateur.On trouve l'objet le plus proche de l'observateur.•• On trouve l'objet le plus proche de l'observateur.On trouve l'objet le plus proche de l'observateur.

•• En fonction des caractéristiques de cet objet vis à vis de la lumière, la teinte du pixel eEn fonction des caractéristiques de cet objet vis à vis de la lumière, la teinte du pixel est calculée à partir des composantes de lumière (a) diffusée, (b) réfléchie et (c) transmst calculée à partir des composantes de lumière (a) diffusée, (b) réfléchie et (c) transmise par l'objet au point d'intersection. ise par l'objet au point d'intersection.

Page 422: Algorithmique graphique

Lancer de rayonsLancer de rayons

• Lorsq’un un rayon intersecte un objet, trois nouveauxrayons sont générés :

• Un rayon réfracté• Un rayon réfléchi

reflection

refraction

• Un rayon réfléchi• U rayon d'ombre

Ombre

Page 423: Algorithmique graphique

Rayon d’ombreRayon d’ombre

•• Il va du point de contact à la source de lumière pour Il va du point de contact à la source de lumière pour déterminer si la source éclaire directement le point déterminer si la source éclaire directement le point

• Il s’arrête lors de la première intersection

Source de lumière

EyeObjet

Source de lumière

Objet

Rayon d’ombre

Rayon d’ombre

Eye Ray

Page 424: Algorithmique graphique

Rayon réfléchiRayon réfléchi

Eye

Image plane

Arrêt quand on rencontre la lampe ou on sort

Page 425: Algorithmique graphique

Transparence et réfractionTransparence et réfraction

Arrêt quand on rencontre la lampe ou on sort

Page 426: Algorithmique graphique

Et on recommence…Et on recommence…

Eye

Image plane

Page 427: Algorithmique graphique

L’arbre des rayonsL’arbre des rayonsEye

Object 1 Light Source

Reflected Refracted

Object 2

Reflected Refracted

Object 3

Reflected Refracted

Page 428: Algorithmique graphique

I(P) = ρa S Ia + ρr Ir + ρt It

+ ΣsourcesX(P) Fd I ( ρd S NP • LP + ρs cosn α )

Illumination globaleIllumination globale

+ ΣsourcesX(P) Fd I ( ρd S NP • LP + ρs cos α )

EQ

S est la couleur de la surface

X(P) = 1 si le rayon d’ombre de P vers la source n’est pas bloqué, X(P) = 0 sinon.

Page 429: Algorithmique graphique

Image RayCast (Camera camera, Scene scene, int width, int height){

Image image = new Image(width, height);

for (int i = 0; i < width; i++) {

for (int j = 0; j < height; j++) {

AlgorithmeAlgorithme

for (int j = 0; j < height; j++) {

Ray ray = ConstructRayThroughPixel(camera, i, j);

Intersection hit = FindIntersection(ray, scene);

image[i][j] = GetColor(hit);

}

}

return image;

}

Page 430: Algorithmique graphique
Page 431: Algorithmique graphique

Image image = new Image (width, height);

Page 432: Algorithmique graphique

Ray ray = ConstructRayThroughPixel (camera, i, j);

Page 433: Algorithmique graphique

Intersection hit = FindIntersection (ray, scene);

Page 434: Algorithmique graphique

image[i][j] = GetColor (hit);

Page 435: Algorithmique graphique

Ray ray = ConstructRayThroughPixel (camera, i, j);

Page 436: Algorithmique graphique

Intersection hit = FindIntersection (ray, scene);

Page 437: Algorithmique graphique

image[i][j] = GetColor (hit);

EQ

Page 438: Algorithmique graphique

image[i][j] = GetColor (hit);

Page 439: Algorithmique graphique

Ray ray = ConstructRayThroughPixel (camera, i, j);

Page 440: Algorithmique graphique

Intersection hit = FindIntersection (ray, scene);

Page 441: Algorithmique graphique

image[i][j] = GetColor (hit);

EQ

Page 442: Algorithmique graphique

image[i][j] = GetColor (hit);

Page 443: Algorithmique graphique

Ray ray = ConstructRayThroughPixel (camera, i, j);

Page 444: Algorithmique graphique

Intersection hit = FindIntersection (ray, scene);

Page 445: Algorithmique graphique

image[i][j] = GetColor (hit);

EQ

Page 446: Algorithmique graphique

image[i][j] = GetColor (hit);

Page 447: Algorithmique graphique

Ray ray = ConstructRayThroughPixel (camera, i, j);

Page 448: Algorithmique graphique

Intersection hit = FindIntersection (ray, scene);

Page 449: Algorithmique graphique

image[i][j] = GetColor (hit);

EQ

Page 450: Algorithmique graphique

image[i][j] = GetColor (hit);

Page 451: Algorithmique graphique
Page 452: Algorithmique graphique

Intersection rayonIntersection rayon--scènescène

•• RayRayonon--sphèresphère : distance point: distance point--liliggnene•• RayRayonon--cylindcylindre re : distance li: distance liggnene--liliggnene

RayRayonon--planplan : intersection li: intersection liggnene--planplan•• RayRayonon--planplan : intersection li: intersection liggnene--planplan•• RayRayonon--polygonpolygone e ::

•• intersection liintersection liggnene--planplan•• test test si l’intersection est dans le si l’intersection est dans le polygonpolygonee

Page 453: Algorithmique graphique

Le tracer de rayonLe tracer de rayon

•• Un des problèmes majeurs du lancer de rayon est sa gourmandiUn des problèmes majeurs du lancer de rayon est sa gourmandise en temps de calcul. Les principales améliorations que nous allse en temps de calcul. Les principales améliorations que nous allons voir sont essentiellement axées vers un gain d'efficacité tout ons voir sont essentiellement axées vers un gain d'efficacité tout en conservant une qualité à l'image la meilleure possible.en conservant une qualité à l'image la meilleure possible.

Trois stratégies sont possibles : Trois stratégies sont possibles : •• Trois stratégies sont possibles : Trois stratégies sont possibles :

•• réduire le temps moyen d'intersection d'un rayon avec l'envirréduire le temps moyen d'intersection d'un rayon avec l'environnementonnement

•• réduire le nombre total de rayons lancés dans l'espaceréduire le nombre total de rayons lancés dans l'espace

•• remplacer la notion de rayon par une notion plus générale et remplacer la notion de rayon par une notion plus générale et plus efficaceplus efficace

Page 454: Algorithmique graphique

Le tracer de rayonLe tracer de rayon

techniques d'accélération

intersections moins de généralisation intersections

plus rapidesmoins de rayons

généralisation de la notion de rayon

intersection Objet-Rayon plus rapide

Intersections Objets-Rayon moins nombreuses

Exemples : - volumes englobants - optimisation pour certains objets

Exemples : - hiérarchie de volumes englobants -division spatiale -techniques directionnelles

Exemples : -contrôle adaptatif de la profondeur d'arbre - méthodes statistiques -cohérence

Exemples : -beam tracing -cone tracing -pencil tracing

Page 455: Algorithmique graphique

Volumes englobantsVolumes englobants

•• L'idée est d'utiliser des objets qui permettent des calculs d'intersection L'idée est d'utiliser des objets qui permettent des calculs d'intersection simples pour englober des objets dont les calculs d'intersection sont cosimples pour englober des objets dont les calculs d'intersection sont complexes. Si un rayon intercepte un volume englobant, alors on calculermplexes. Si un rayon intercepte un volume englobant, alors on calculera précisément son intersection avec l’objet contenu dans le volume. Sina précisément son intersection avec l’objet contenu dans le volume. Sinon, on regarde un autre volume englobant, etc. L'efficacité de la technion, on regarde un autre volume englobant, etc. L'efficacité de la technique dépend de l'adéquation du volume englobant avec l'objet. que dépend de l'adéquation du volume englobant avec l'objet. que dépend de l'adéquation du volume englobant avec l'objet. que dépend de l'adéquation du volume englobant avec l'objet.

•• La complexité de l'algorithme ne change pas : elle est linéaire à chaque La complexité de l'algorithme ne change pas : elle est linéaire à chaque niveau de l'arbre. L'idée est d'utiliser des volumes englobants hiérarchisniveau de l'arbre. L'idée est d'utiliser des volumes englobants hiérarchisés: le principe est d’englober récursivement un groupe de volumes englés: le principe est d’englober récursivement un groupe de volumes englobants par un volume englobant plus gros. La complexité théorique ainobants par un volume englobant plus gros. La complexité théorique ainsi obtenue est logarithmique. Les données sont alors organisées dans usi obtenue est logarithmique. Les données sont alors organisées dans un arbre où chaque nœud est un volume pointant sur les objets qu'ils con arbre où chaque nœud est un volume pointant sur les objets qu'ils contient.ntient.

Page 456: Algorithmique graphique

Volumes englobantsVolumes englobants

•• Si le volume englobant V1 est traité avant V2 Si le volume englobant V1 est traité avant V2 , la détermination du point d'intersection de l', la détermination du point d'intersection de l'objet O1 rend inutile celle de O2 qui est plus objet O1 rend inutile celle de O2 qui est plus loin sur le rayon.loin sur le rayon.

•• Comparaison de 3 volumes englobants pour lComparaison de 3 volumes englobants pour le même objet : sphère englobante, boite alige même objet : sphère englobante, boite alignée avec les axes, boite orientée. Combinaisonée avec les axes, boite orientée. Combinaisons de volumes : intersection d'une sphère et ns de volumes : intersection d'une sphère et d'une boite, union d'une sphère et d'une boitd'une boite, union d'une sphère et d'une boite, intersection de plans e, intersection de plans

Page 457: Algorithmique graphique

Division spatialeDivision spatiale

•• Les volumes englobants prennent en compte les objets dans la scène. La diLes volumes englobants prennent en compte les objets dans la scène. La division spatiale pour le lancer de rayons est une adaptation de la division spvision spatiale pour le lancer de rayons est une adaptation de la division spatiale classique (décomposition en voxels et représentation par octree) On atiale classique (décomposition en voxels et représentation par octree) On cherche à tenir compte de la densité d'objets dans la scène. cherche à tenir compte de la densité d'objets dans la scène.

Chaque voxel pointe sur une liste d'objets dont les surfaces intesectent le vChaque voxel pointe sur une liste d'objets dont les surfaces intesectent le v•• Chaque voxel pointe sur une liste d'objets dont les surfaces intesectent le vChaque voxel pointe sur une liste d'objets dont les surfaces intesectent le volume. Les objets d'un voxel donné sont testés par rapport aux 6 faces du olume. Les objets d'un voxel donné sont testés par rapport aux 6 faces du voxel. S'il y a intersection, l'objet est ajouté à la liste d'intersections.voxel. S'il y a intersection, l'objet est ajouté à la liste d'intersections.

Page 458: Algorithmique graphique

Division spatialeDivision spatiale

•• Une autre idée est d'utiliser des divisions binaires récursives de l'espace (BUne autre idée est d'utiliser des divisions binaires récursives de l'espace (Binary Space Partition). inary Space Partition).

•• Les données sont organisées en arbre BSP qui partage à chaque niveau l'eLes données sont organisées en arbre BSP qui partage à chaque niveau l'espace par un plan séparateur.space par un plan séparateur.

•• Le plan peut être quelconque comme dans l'algorithme d’élimination de suLe plan peut être quelconque comme dans l'algorithme d’élimination de surfaces cachées ou orthogonal aux axes ce qui le rend proche de l'octree drfaces cachées ou orthogonal aux axes ce qui le rend proche de l'octree drfaces cachées ou orthogonal aux axes ce qui le rend proche de l'octree drfaces cachées ou orthogonal aux axes ce qui le rend proche de l'octree de Glassner.e Glassner.

G

H

G

B

D

H

G

H

G

D

B

D

B

D

Division binaire de l'espace en fonction de la densité d'objets

Arbre binaire associé (G = gauche, D = droit, H = haut, B = bas )

Page 459: Algorithmique graphique

•• Bounding volumeBounding volume ::•• longlongueue initialinitialisationisation, requê, requêtetess rapidesrapides..

PerformancesPerformances

•• Grille uniforme Grille uniforme ::•• IInitialnitialisation rapideisation rapide, requêt, requêteess rapidesrapides… … si si résolutirésoluti

onon bien choisiebien choisie..

•• OctreesOctrees ::•• InitialInitialisation rapideisation rapide, requêt, requêteess plus longuesplus longues..

Page 460: Algorithmique graphique

Diminuer le nombre de rayons : Diminuer le nombre de rayons : Exploiter la cohérenceExploiter la cohérence

•• La La cohérence des objetscohérence des objets : : •• cette propriété fondamentale exprime qu'un objet n'est pas un nuage de points distribués aléatoirement, mais cette propriété fondamentale exprime qu'un objet n'est pas un nuage de points distribués aléatoirement, mais

un ensemble topologiquement cohérent.un ensemble topologiquement cohérent.

•• La La cohérence de l'imagecohérence de l'image : : •• est dépendante du point de vue de la scène et exprime que cette cohérence est conservée lors de la projectioest dépendante du point de vue de la scène et exprime que cette cohérence est conservée lors de la projectio

n 2D sur l'écran.n 2D sur l'écran.

La La cohérence des rayonscohérence des rayons : : •• La La cohérence des rayonscohérence des rayons : : •• exprime (intuitivement) que 2 rayons similaires auront 2 parcours similaires dans l'espace. C'est une notion pluexprime (intuitivement) que 2 rayons similaires auront 2 parcours similaires dans l'espace. C'est une notion plu

s délicate à exploiter que la cohérence des objets. s délicate à exploiter que la cohérence des objets. •• Certaines techniques utilisent cette cohérence pour créer des arbres de manière itérative, en reprenant l'arbre préCertaines techniques utilisent cette cohérence pour créer des arbres de manière itérative, en reprenant l'arbre pré

cédemment construit comme base pour la similarité des rayons. Un rayon R(i+1) est similaire à R(i) s'il intersecte cédemment construit comme base pour la similarité des rayons. Un rayon R(i+1) est similaire à R(i) s'il intersecte le même objet et s'il n'en intersecte pas d'autre. La première intersection se vérifie par calcul direct. La seconde nle même objet et s'il n'en intersecte pas d'autre. La première intersection se vérifie par calcul direct. La seconde nécessite l'emploi d'une zone de sécurité cylindrique qui ne doit pas intersecter d'autres objets. Si les rayons du noécessite l'emploi d'une zone de sécurité cylindrique qui ne doit pas intersecter d'autres objets. Si les rayons du nouvel arbre intersectent les mêmes objets sans couper les cylindres, on n'a pas besoin de considérer d'autres objeuvel arbre intersectent les mêmes objets sans couper les cylindres, on n'a pas besoin de considérer d'autres objets. Sinon des calculs plus coûteux sont nécessaires. ts. Sinon des calculs plus coûteux sont nécessaires.

•• D’autres techniques améliorent la méthode précédente en identifiant les objets qui peuvent empêcher un rayon .D’autres techniques améliorent la méthode précédente en identifiant les objets qui peuvent empêcher un rayon .R(i+1) d'atteindre un objet atteint par R(i) .Il utilise pour cela des cônes circonscrits. R(i+1) d'atteindre un objet atteint par R(i) .Il utilise pour cela des cônes circonscrits.

•• La La cohérence temporelle cohérence temporelle ::•• (frame coherence) exprime qu'une séquence d'images se calcule par déformations continues et non par sauts (frame coherence) exprime qu'une séquence d'images se calcule par déformations continues et non par sauts

brusques dans le temps.brusques dans le temps.

Page 461: Algorithmique graphique

Diminuer le nombre de rayons : Diminuer le nombre de rayons : Exploiter la cohérenceExploiter la cohérence

oeiloeil

zones de sécuritéoeil

cones circonscrits

Page 462: Algorithmique graphique

Rayons généralisésRayons généralisés

•• Les plus grasses difficultés du lancer de rayons proviennent de la finesse infinie deLes plus grasses difficultés du lancer de rayons proviennent de la finesse infinie des rayons (d'où le crénelage, les difficultés pour utiliser la cohérence spatiale des obs rayons (d'où le crénelage, les difficultés pour utiliser la cohérence spatiale des objets, ...). Une idée consiste à utiliser un "pinceau" plutôt qu'un rayon. L'inconvéniejets, ...). Une idée consiste à utiliser un "pinceau" plutôt qu'un rayon. L'inconvénient immédiat est l'absence d'intersections exactes. nt immédiat est l'absence d'intersections exactes.

•• Lancer de cône (cone tracing) : Lancer de cône (cone tracing) : •• Cette méthode consiste a généraliser les rayons en cônes circulaires représentés par Cette méthode consiste a généraliser les rayons en cônes circulaires représentés par •• Cette méthode consiste a généraliser les rayons en cônes circulaires représentés par Cette méthode consiste a généraliser les rayons en cônes circulaires représentés par

un sommet, un axe et un angle. Pour calculer la valeur d'un pixel (avec ombre et péun sommet, un axe et un angle. Pour calculer la valeur d'un pixel (avec ombre et pénombre) et le lissage, on a alors besoin de savoir si le cône intercepte un objet, et dnombre) et le lissage, on a alors besoin de savoir si le cône intercepte un objet, et dans quelle proportion. La réflexion et la transmission sont calculées en déterminant ans quelle proportion. La réflexion et la transmission sont calculées en déterminant 2 nouveaux cônes. Cette méthode limite les objets à des sphères, plans ou polygone2 nouveaux cônes. Cette méthode limite les objets à des sphères, plans ou polygones. s.

•• Lancer de faisceau (beam tracing) :Lancer de faisceau (beam tracing) :•• Il s’agit de généraliser la notion de cône en utilisant une section polygonale quelconIl s’agit de généraliser la notion de cône en utilisant une section polygonale quelcon

que au lieu d'une section circulaire. Cela impose des objets représentés par facettes que au lieu d'une section circulaire. Cela impose des objets représentés par facettes polygonales planes pour conserver la section du faisceau. On approxime les effets dpolygonales planes pour conserver la section du faisceau. On approxime les effets de transmission et de réflexion qui ne respectent pas cette nature polygonale. L'avante transmission et de réflexion qui ne respectent pas cette nature polygonale. L'avantage des faisceaux est qu'ils peuvent être partiellement occultés par une surface : daage des faisceaux est qu'ils peuvent être partiellement occultés par une surface : dans ce cas, on découpe le faisceau par la silhouette de l'objet rencontré. Cet algorithns ce cas, on découpe le faisceau par la silhouette de l'objet rencontré. Cet algorithme pose 3 types de problèmes : intersection d'objets, tri d'objets et découpage. me pose 3 types de problèmes : intersection d'objets, tri d'objets et découpage.

Page 463: Algorithmique graphique

Rayons généralisésRayons généralisés

section du faisceau après découpage

faisceau réfléchi

faisceau initial

oeil

section initiale du faisceau

après découpage

obstruction polygonale

oeil

oeil virtuel

objet réflechissant

plan de reflexion

Page 464: Algorithmique graphique

Lancer de rayonsLancer de rayons

•• Avantages du lancer de rayonsAvantages du lancer de rayons

•• Réalisme : des effets tels que les réflexions et les transparences Réalisme : des effets tels que les réflexions et les transparences sont restitués intrinsèquement. Aucun autre algorithme n'est capsont restitués intrinsèquement. Aucun autre algorithme n'est capable de modéliser ces effets de manière aussi satisfaisante.able de modéliser ces effets de manière aussi satisfaisante.able de modéliser ces effets de manière aussi satisfaisante.able de modéliser ces effets de manière aussi satisfaisante.

•• Les parties cachées sont éliminées de manière intrinsèque. Au niLes parties cachées sont éliminées de manière intrinsèque. Au niveau 1 de la récursivité, on est en présence d’un Zveau 1 de la récursivité, on est en présence d’un Z--Buffer (Ray CBuffer (Ray Casting).asting).

•• Les ombres portées sont elles aussi intrinsèques au modèle.Les ombres portées sont elles aussi intrinsèques au modèle.

Page 465: Algorithmique graphique

Lancer de rayonsLancer de rayons

•• Inconvénients du lancer de rayons : Inconvénients du lancer de rayons :

•• Récursivité : à chaque interception d'un objet par un rayon, on lance potentielleRécursivité : à chaque interception d'un objet par un rayon, on lance potentiellement deux rayons: un rayon pour les transparences et un rayon pour les réflexioment deux rayons: un rayon pour les transparences et un rayon pour les réflexions spéculaires.ns spéculaires.

•• une explosion exponentielle possible du nombre total de rayons tracés à l'intérieur de lune explosion exponentielle possible du nombre total de rayons tracés à l'intérieur de la scène car si n est le niveau de profondeur de la récursivité, il y a au maximum de l'ora scène car si n est le niveau de profondeur de la récursivité, il y a au maximum de l'ordre de 2n rayons tracés pour chaque pixel.dre de 2n rayons tracés pour chaque pixel.

•• Pour obtenir un certain réalisme le niveau de récursivité doit être poussé assez loPour obtenir un certain réalisme le niveau de récursivité doit être poussé assez loin (au moins 8, habituellement 10 à 12) et donc les temps de calcul sont très lonin (au moins 8, habituellement 10 à 12) et donc les temps de calcul sont très longs (plusieurs heures pour des scènes complexes).gs (plusieurs heures pour des scènes complexes).

•• Problèmes de calcul d'illumination : le lancer de rayons ne peut pas restituer un Problèmes de calcul d'illumination : le lancer de rayons ne peut pas restituer un effet tel que la propagation de la lumière à l'intérieur d'une loupe (obtention d’uneffet tel que la propagation de la lumière à l'intérieur d'une loupe (obtention d’une concentration ou d’une atténuation énergétique en certaines zones) car il ne me concentration ou d’une atténuation énergétique en certaines zones) car il ne modélise que très imparfaitement les transferts d'énergie.odélise que très imparfaitement les transferts d'énergie.

Page 466: Algorithmique graphique

Les TexturesLes Textures

Page 467: Algorithmique graphique

Le placage de textureLe placage de texture

Introduit par Catmull (1974)

étendu par par Jim Blinn (1976)

•• Placage (ou plaquage, ou mappage) de texture : Technique visant à dessiner un objet de Placage (ou plaquage, ou mappage) de texture : Technique visant à dessiner un objet de manière à ce que les surfaces apparaissant sur cet objet soient revêtues d’une image.manière à ce que les surfaces apparaissant sur cet objet soient revêtues d’une image.

•• Avantages : Avantages :

•• Peut simuler l’effet visuel des détails en apposant une texture sur la surface tel du papier Peut simuler l’effet visuel des détails en apposant une texture sur la surface tel du papier paintpaint

•• Texture peut être apposée sur différents objetsTexture peut être apposée sur différents objets•• Laisse le traitement des détails au processus de shading dans le pipeline graphiqueLaisse le traitement des détails au processus de shading dans le pipeline graphique•• Devient aussi possible de mieux filtrer les effets des détails au niveau de qualité désiréDevient aussi possible de mieux filtrer les effets des détails au niveau de qualité désiré•• Matériel efficace pour les polygones texturésMatériel efficace pour les polygones texturés

Page 468: Algorithmique graphique

DéfinitionsDéfinitions

•• Texture mapping : technique consistant à appliquer une Texture mapping : technique consistant à appliquer une texture sur une surfacetexture sur une surfacetexture sur une surfacetexture sur une surface

•• Texture map : texture apposée sur une surfaceTexture map : texture apposée sur une surface

•• Texel : élément de base d’une texture, analogue au pixel Texel : élément de base d’une texture, analogue au pixel d’une imaged’une image

Page 469: Algorithmique graphique

ObjectifObjectif

uuyyoo

yy

11

Coordonnées paramétriquesCoordonnées paramétriques

tt

ss

vv

zzoo

xxoo

xx

1100

Coordonnées textures Coordonnées objets Coordonnées écran

Page 470: Algorithmique graphique

EtapesEtapes

Espace Espace texture (2D)texture (2D)

(u,v)(u,v)

Espace Objet Espace Objet (3D)(3D)

(x(xoo,y,yoo,z,zoo))

Espace écran Espace écran (2D)(2D)

(x,y)(x,y)TransformationTransformationtexturetexture--surfacesurface

TransformationTransformationécran (projection)écran (projection)

•• Le mapping comprend donc deux étapes :Le mapping comprend donc deux étapes :•• La texture est dans un premier temps plaquée sur la surface 3D de l’La texture est dans un premier temps plaquée sur la surface 3D de l’

objet à couvrirobjet à couvrir•• Le résultat est ensuite projeté sur l’écran par une transformation de Le résultat est ensuite projeté sur l’écran par une transformation de

projectionprojection•• Le mapping se résume au final en une transformation d’un espace 2D (texLe mapping se résume au final en une transformation d’un espace 2D (tex

ture) à un espace 2 D (écran).ture) à un espace 2 D (écran).•• Pas de calculs géométrique 3D => donc ne passe pas par le pipe Pas de calculs géométrique 3D => donc ne passe pas par le pipe

géométriquegéométrique

Page 471: Algorithmique graphique

Familles de clippingFamilles de clipping

•• Deux familles de méthodes:Deux familles de méthodes:•• Deux familles de méthodes:Deux familles de méthodes:•• Le mapping directLe mapping direct•• Le mapping inverseLe mapping inverse

Page 472: Algorithmique graphique

mapping directmapping direct

•• Le mapping directLe mapping direct•• Consiste à mapper chaque texel sur sa position correspondante Consiste à mapper chaque texel sur sa position correspondante

(ou ensemble de position) dans l’espace image(ou ensemble de position) dans l’espace image•• Un échantillonnage uniforme de l’espace texture ne garantit pas Un échantillonnage uniforme de l’espace texture ne garantit pas

échantillonnage uniforme dans l’espace écranéchantillonnage uniforme dans l’espace écranéchantillonnage uniforme dans l’espace écranéchantillonnage uniforme dans l’espace écran•• Effet d’aliasing Effet d’aliasing

•• Antialiasing peu efficace dans l’espace écranAntialiasing peu efficace dans l’espace écran

Texture scanning:Texture scanning:for for vv

for for uucompute compute x(u,v) x(u,v) and and y(u,v)y(u,v)copy copy TEX[u,v] TEX[u,v] to to SCR[x,y]SCR[x,y]

Espace textureEspace texture Espace écranEspace écran

Page 473: Algorithmique graphique

mapping directmapping direct

•• Le mapping direct comprends deux étapes : Le mapping direct comprends deux étapes : •• Mapping de la texture sur la surface par une fonction de Mapping de la texture sur la surface par une fonction de

paramétrage : paramétrage : •• 2D 2D --> 3D : > 3D : (xo,yo,zo) = f(u,v)•• 2D 2D --> 3D : > 3D : (xo,yo,zo) = f(u,v)

•• Mapping de la texture obtenue (3D) sur l’écran par une Mapping de la texture obtenue (3D) sur l’écran par une transformation projective : transformation projective :

•• 3D3D-->2D : >2D : (x,y) = f(xo,yo,zo)

Espace Espace texture (2D)texture (2D)

(u,v)(u,v)

Espace Objet Espace Objet (3D)(3D)

(x(xoo,y,yoo,z,zoo))

Espace écran Espace écran (2D)(2D)

(x,y)(x,y)TransformationTransformationtexturetexture--surfacesurface

TransformationTransformationécran (projection)écran (projection)

Page 474: Algorithmique graphique

ProblématiqueProblématique

•• Comment trouver la correspondanceComment trouver la correspondance•• Texture(u,v)Texture(u,v)-->objet(x>objet(xoo,y,yoo))-->écran (x,y)>écran (x,y)

La La fonction devrait avoir cette formefonction devrait avoir cette forme

v

u (xoo,yoo,zoo)

•• La La fonction devrait avoir cette formefonction devrait avoir cette forme

•• xxoo = x(u,t)= x(u,t)

•• yyoo = y(u,t)= y(u,t)

•• zzoo = z(u,t)= z(u,t)

Page 475: Algorithmique graphique

Mapping sphériqueMapping sphérique

zyxvu ),,(),( →

•• Passage par des coordonnées sphériquesPassage par des coordonnées sphériques

vsurz

vury

urx

ππππ

π

2sin2sin

2cos2sin

2cos

==

=uu

vv

yy

xx

zz

Page 476: Algorithmique graphique

Mapping cylindriqueMapping cylindrique

zyxvu ),,(),( →

•• Passage par des coordonnées cylindriques Passage par des coordonnées cylindriques

hvz

ury

urx

zyxvu

/

2sin

2cos

),,(),(

===

ππ

uu

vv

yy

xx

zz

Page 477: Algorithmique graphique

Mapping planMapping plan

•• Passage par des coordonnées cartésiennesPassage par des coordonnées cartésiennes•• Sur un plan parallèle aux plans du repère : suppression d’une Sur un plan parallèle aux plans du repère : suppression d’une

dimensiondimension

),,(),( zyxvu →

)0,,(),,(

),,(),(

vuzyx

zyxvu

=

→ uu

vv

yy

xx

zz

Page 478: Algorithmique graphique

Mapping planMapping plan

•• Application de transformations affines : Application de transformations affines : •• rotationrotation•• translationtranslation•• HomothétieHomothétie

CisaillementCisaillement•• CisaillementCisaillement uu

vv

yy

xx

zz

SHTRf

vufzyx

zyxvu

,,,:

)0,,.(),,(

),,(),(

44

44

×

×=

Page 479: Algorithmique graphique

Mapping planMapping plan

•• Application de transformation projective : HomographieApplication de transformation projective : Homographie•• Intervention de la focale & du centre de projectionIntervention de la focale & du centre de projection

),,(),( zyxvu →

uu

vv

yy

xx

zzihvgu

fevduy

++++=

ihvgu

cbvaux

++++=

00

44

44

,,

,,,,:

)0,,(),,(

VUf

SHTRf

vufzyx

×

×=

Page 480: Algorithmique graphique

Mapping planMapping plan

•• Interpolation bilinéaire Interpolation bilinéaire

Page 481: Algorithmique graphique

mapping inversemapping inverse

•• Le mapping inverseLe mapping inverse•• Consiste à mapper chaque pixel sur la position correspondante Consiste à mapper chaque pixel sur la position correspondante

(ensemble de position) dans l’espace texture(ensemble de position) dans l’espace texture•• Nécessite l’inversion de la transformation de mapping Nécessite l’inversion de la transformation de mapping

La non compatibilité de l’échantillonnage est toujours valableLa non compatibilité de l’échantillonnage est toujours valable•• La non compatibilité de l’échantillonnage est toujours valableLa non compatibilité de l’échantillonnage est toujours valable•• Antialiasing plus efficace dans l’espace texture (à l’origine)Antialiasing plus efficace dans l’espace texture (à l’origine)

Screen scanning:Screen scanning:for for yy

for for xxcompute compute u(x,y) u(x,y) and and v(x,y)v(x,y)copy copy TEX[u,v] TEX[u,v] to to SCR[x,y]SCR[x,y]

Espace textureEspace texture Espace écranEspace écran

Page 482: Algorithmique graphique

mapping inversemapping inverse

vv yy

Espace texture (2D)Espace texture (2D) Espace Objet (3D)Espace Objet (3D) Espace écran (2D)Espace écran (2D)

uu xx

Page 483: Algorithmique graphique

mapping inversemapping inverse

vv yy

Espace texture (2D)Espace texture (2D) Espace Objet (3D)Espace Objet (3D) Espace écran (2D)Espace écran (2D)

uu xx

Pour chaque pixelPour chaque pixel

Page 484: Algorithmique graphique

mapping inversemapping inverse

vv yy

Espace texture (2D)Espace texture (2D) Espace Objet (3D)Espace Objet (3D) Espace écran (2D)Espace écran (2D)

uu xx

Pour chaque pixelPour chaque pixelDéterminer les coordonnées des extrémités du pixel sur l’objetDéterminer les coordonnées des extrémités du pixel sur l’objet

projection inverseprojection inverse

Page 485: Algorithmique graphique

mapping inversemapping inverse

vv yy

Espace texture (2D)Espace texture (2D) Espace Objet (3D)Espace Objet (3D) Espace écran (2D)Espace écran (2D)

uu xx

Pour chaque pixelPour chaque pixelDéterminer les coordonnées des extrémités du pixel sur l’objetDéterminer les coordonnées des extrémités du pixel sur l’objet

projection inverseprojection inverseDéterminer la position des extrémités du pixel dans l’espace textureDéterminer la position des extrémités du pixel dans l’espace texture

Page 486: Algorithmique graphique

mapping inversemapping inverse

vv yy

Espace texture (2D)Espace texture (2D) Espace Objet (3D)Espace Objet (3D) Espace écran (2D)Espace écran (2D)

uu xx

Pour chaque pixelPour chaque pixelDéterminer les coordonnées des extrémités du pixel sur l’objetDéterminer les coordonnées des extrémités du pixel sur l’objet

projection inverseprojection inverseDéterminer la position des extrémités du pixel dans l’espace textureDéterminer la position des extrémités du pixel dans l’espace textureCalcul de la couleur de la surface recouverte par le pixel : filtrageCalcul de la couleur de la surface recouverte par le pixel : filtrage

Page 487: Algorithmique graphique

mapping inversemapping inverse

vv yy

Espace texture (2D)Espace texture (2D) Espace Objet (3D)Espace Objet (3D) Espace écran (2D)Espace écran (2D)

uu xx

Pour chaque pixelPour chaque pixelDéterminer les coordonnées des extrémités du pixel sur l’objetDéterminer les coordonnées des extrémités du pixel sur l’objet

projection inverseprojection inverseDéterminer la position des extrémités du pixel dans l’espace textureDéterminer la position des extrémités du pixel dans l’espace textureCalcul de la couleur de la surface recouverte par le pixel : filtrageCalcul de la couleur de la surface recouverte par le pixel : filtrageApplication de la couleur au pixel (écran)Application de la couleur au pixel (écran)

Page 488: Algorithmique graphique

mapping inversemapping inverse

vv yy

Espace texture (2D)Espace texture (2D) Espace Objet (3D)Espace Objet (3D) Espace écran (2D)Espace écran (2D)

uu xx

Pour chaque pixelPour chaque pixelDéterminer les coordonnées des extrémités du pixel sur l’objetDéterminer les coordonnées des extrémités du pixel sur l’objet

projection inverseprojection inverseDéterminer la position des extrémités du pixel dans l’espace textureDéterminer la position des extrémités du pixel dans l’espace textureCalcul de la couleur de la surface recouverte par le pixel : filtrageCalcul de la couleur de la surface recouverte par le pixel : filtrageApplication de la couleur au pixel (écran)Application de la couleur au pixel (écran)

Page 489: Algorithmique graphique

mapping inversemapping inverse

•• Les objets 3D manipulés étant généralement complexes nous réalisons le Les objets 3D manipulés étant généralement complexes nous réalisons le mapping en deux étapes :mapping en deux étapes :

•• la première étape consiste à mapper la texture 2D sur un objet 3D intela première étape consiste à mapper la texture 2D sur un objet 3D intermédiaire simple : Sphère, Cylindre, plan, etc.rmédiaire simple : Sphère, Cylindre, plan, etc.

SS--mapping : mapping : (x ,y z ) = f(u,v) •• SS--mapping : mapping : (xi,yi,zi) = f(u,v)

•• la seconde étape consiste à mapper la texture, désormais 3D sur la surla seconde étape consiste à mapper la texture, désormais 3D sur la surface de l'objet compléxe: normale de l’objet, rayon réfléchi, etc.face de l'objet compléxe: normale de l’objet, rayon réfléchi, etc.

•• OO--mapping : mapping : (xo,yo,zo) = f(xi,yi,zi)

(u,v) (xi,yi,zi) (xo,yo,zo)S O

Espace texture Espace intermédiaire Espace objet

Page 490: Algorithmique graphique

mapping inversemapping inverse

tt

SS--mappingmapping

OO--mappingmapping

Mapping direct en deux étapesMapping direct en deux étapes

tt

ss

Page 491: Algorithmique graphique

mapping inversemapping inverse

•• En pratique on utilise le mapping inverseEn pratique on utilise le mapping inverse

•• La première étape consiste à mapper les point de l’objet complexe La première étape consiste à mapper les point de l’objet complexe sur la surface intermédiaire simplesur la surface intermédiaire simple

OO--mapping inverse : mapping inverse : (x ,y z ) = f(x ,y ,z )•• OO--mapping inverse : mapping inverse : (xi,yi,zi) = f(xo,yo,zo)

•• la seconde étape consiste à mapper les points de la surface interla seconde étape consiste à mapper les points de la surface intermédiaire sur la texturemédiaire sur la texture

•• SS--mapping inverse : mapping inverse : (u,v) = f(xi,yi,zi)

(u,v) (xi,yi,zi) (xo,yo,zo)S O

Espace texture Espace intermédiaire Espace objet

Page 492: Algorithmique graphique

mapping inversemapping inverse

tt

SS--mappingmapping

OO--mappingmapping

Mapping inverse en deux étapesMapping inverse en deux étapes

tt

ss

Page 493: Algorithmique graphique

SS--mapping inversemapping inverse

•• SS--mapping inverse : passage de la surface intermédiaire à mapping inverse : passage de la surface intermédiaire à l’espace texturel’espace texture

•• Transformation 3DTransformation 3D-->2D : >2D : (u,v) = f(xi,yi,zi)•• Transformation 3DTransformation 3D-->2D : >2D : (u,v) = f(xi,yi,zi)

• Methods•• Mapping cylindriqueMapping cylindrique•• Mapping sphériqueMapping sphérique•• Mapping planMapping plan•• Mapping boiteMapping boite

Page 494: Algorithmique graphique

Mapping sphérique Mapping sphérique

•• Passage par des coordonnées sphériquesPassage par des coordonnées sphériques

→φθ ),(),,( vur

+=

=

πφπ

πθ

πφ

πθ

))2/((,

2),(

2,

2),(

rrvu

rrvu

Page 495: Algorithmique graphique

Mapping cylindriqueMapping cylindrique

•• Passage par des coordonnées cylindriquesPassage par des coordonnées cylindriques•• c & d sont des facteurs d’échellec & d sont des facteurs d’échelle

→ ),(),,( vuhr θ

−−=

=

)(1

,2

)(),(

,2

),(

),(),,(

00 hh

dc

rvu

hr

vu

vuhr

πθθ

πθ

θ

Page 496: Algorithmique graphique

Mapping planMapping plan

•• Passage par des coordonnées cartésiennesPassage par des coordonnées cartésiennes•• xxrr, y, yrr sont des offsetsont des offset•• kkxx, k, kyysont des facteurs d’échellesont des facteurs d’échelle

→ vuyx ),(),(

−−=

=

y

r

x

r

k

yy

k

xxvu

yxvu

vuyx

,),(

),(),(

),(),(

Page 497: Algorithmique graphique

Mapping boiteMapping boite

•• Appliquer un mapping plan sur les 6 faces de la boiteAppliquer un mapping plan sur les 6 faces de la boite•• Limiter l’intervalle de mapping à la surface des facesLimiter l’intervalle de mapping à la surface des faces

),(),( vuyx →

maxmin

maxmin

),(),(

),(),(

yyy

xxxyxvu

vuyx

<<<<

=

Page 498: Algorithmique graphique

SS--mapping inversemapping inverse

•• Mapping planMapping plan•• Distorsion importante lorsque la normale de l’objet devient Distorsion importante lorsque la normale de l’objet devient

perpendiculaire au plan intermédiaireperpendiculaire au plan intermédiaire•• Mapping cylindriqueMapping cylindrique

•• Distorsion pour les parties horizontalesDistorsion pour les parties horizontales•• Mapping sphériqueMapping sphérique

•• Distorsion pour les parties concavesDistorsion pour les parties concaves

Page 499: Algorithmique graphique

OO--mapping inversemapping inverse

•• OO--mapping inverse : Passage de l’objet complexe à l’objet intermapping inverse : Passage de l’objet complexe à l’objet intermédiaire médiaire

•• Transformation 3DTransformation 3D-->3D : >3D : (xi,yi,zi) = f(xo,yo,zo)

• Méthodes:•• Rayon réfléchi Rayon réfléchi •• Centre de l’objetCentre de l’objet•• Normale de l’objetNormale de l’objet•• Normale de la surface intermédiaire Normale de la surface intermédiaire

Page 500: Algorithmique graphique

OO--mapping inversemapping inverse

Point Point de vuede vue

SurfaceSurfaceintermédiaireintermédiaire

Rayon réfléchiRayon réfléchi Normale de l’objetNormale de l’objet

Normale de la surface intermédiaire Normale de la surface intermédiaire Centre de l’objetCentre de l’objet

Page 501: Algorithmique graphique
Page 502: Algorithmique graphique
Page 503: Algorithmique graphique
Page 504: Algorithmique graphique
Page 505: Algorithmique graphique

Texture mappingTexture mapping

Page 506: Algorithmique graphique

MappingsMappings

•• On va chercher à identifier une fonction (mapping) qui permet d’associer un texel à On va chercher à identifier une fonction (mapping) qui permet d’associer un texel à un point de la surface.un point de la surface.

•• Souvent un mapping 1Souvent un mapping 1--àà--1est préférable. Cela minimise les distorsions et les pertes 1est préférable. Cela minimise les distorsions et les pertes d’information.d’information.

•• Exemple trivial : mapper une texture sur un plan.Exemple trivial : mapper une texture sur un plan.•• Exemple trivial : mapper une texture sur un plan.Exemple trivial : mapper une texture sur un plan.

•• Les valeurs sont ensuite interpolées à l’intérieur des polygones.Les valeurs sont ensuite interpolées à l’intérieur des polygones.

Page 507: Algorithmique graphique

Mapping rectangle Mapping rectangle -- cylindrecylindre

Page 508: Algorithmique graphique

Mapping rectangle Mapping rectangle -- sphèresphère

Page 509: Algorithmique graphique

Propriétés d’une texturePropriétés d’une texture

•• Une texture peut altérer plusieurs propriétés :Une texture peut altérer plusieurs propriétés :

•• Couleur (diffuse)Couleur (diffuse)image digitale, motif (quadrillé), procédure (marbre)image digitale, motif (quadrillé), procédure (marbre)•• image digitale, motif (quadrillé), procédure (marbre)image digitale, motif (quadrillé), procédure (marbre)

•• Normale (bump et normal map)Normale (bump et normal map)•• Géométrie (displacement map)Géométrie (displacement map)•• Réflexion (environment map)Réflexion (environment map)•• TransparenceTransparence•• ……

Page 510: Algorithmique graphique

Bump mapBump map

•• La technique de Bump Mapping est basée sur une modulation de la normale La technique de Bump Mapping est basée sur une modulation de la normale (utilisée pour les calculs d’éclairement) permettant de faire apparaître des (utilisée pour les calculs d’éclairement) permettant de faire apparaître des fluctuations d'éclairage sur des surfaces planes.fluctuations d'éclairage sur des surfaces planes.

On peut ainsi donner l'illusion d'un relief.On peut ainsi donner l'illusion d'un relief.•• On peut ainsi donner l'illusion d'un relief.On peut ainsi donner l'illusion d'un relief.

Image utilisée comme Bump Résultat après placage sur des sphères

Page 511: Algorithmique graphique

Bump mapBump map•• On affecte à chaque point d’une texture une normale.On affecte à chaque point d’une texture une normale.

•• Pour chaque pixel dont on souhaite modifier « l’altitude », on modifie la longueur de sa normale Pour chaque pixel dont on souhaite modifier « l’altitude », on modifie la longueur de sa normale grâce à une fonction de perturbation.grâce à une fonction de perturbation.

•• On modifie l’orientation de la normale en fonction de la géométrie de l’objet.On modifie l’orientation de la normale en fonction de la géométrie de l’objet.

Comme le calcul de l’éclairage de Phong est basé sur ces normales, il s’en trouve modifié.Comme le calcul de l’éclairage de Phong est basé sur ces normales, il s’en trouve modifié.•• Comme le calcul de l’éclairage de Phong est basé sur ces normales, il s’en trouve modifié.Comme le calcul de l’éclairage de Phong est basé sur ces normales, il s’en trouve modifié.

•• La fonction de perturbation est stockée sous la forme d’une image en niveaux de gris appelée La fonction de perturbation est stockée sous la forme d’une image en niveaux de gris appelée bump map, ou texture de relief.bump map, ou texture de relief.

Page 512: Algorithmique graphique

Normal mappingNormal mapping

•• Le bump mapping de base se contente de modifier la longueur des normales Le bump mapping de base se contente de modifier la longueur des normales aux pixels.aux pixels.

•• L’idée serait de pouvoir également modifier la direction de ces normales.L’idée serait de pouvoir également modifier la direction de ces normales.•• Stocker les coordonnées de chaque normale dans une image appelée « NorStocker les coordonnées de chaque normale dans une image appelée « Nor

mal map ». On emploie les canaux rvb de l’image comme xyz.mal map ». On emploie les canaux rvb de l’image comme xyz.mal map ». On emploie les canaux rvb de l’image comme xyz.mal map ». On emploie les canaux rvb de l’image comme xyz.•• Utiliser ces normales pour le calcul de l’éclairage.Utiliser ces normales pour le calcul de l’éclairage.

Page 513: Algorithmique graphique

Normal mappingNormal mapping

•• A partir d’un modèle hauteA partir d’un modèle haute--résolution, on calcule les coordonnées des résolution, on calcule les coordonnées des normales en chaque point du modèle.normales en chaque point du modèle.

•• Les coordonnées xyz de chaque vecteur normal sont stockées dans Les coordonnées xyz de chaque vecteur normal sont stockées dans chaque point de l’image.chaque point de l’image.

•• On applique le normal mapping sur le modèle en basse définition.On applique le normal mapping sur le modèle en basse définition.•• On applique le normal mapping sur le modèle en basse définition.On applique le normal mapping sur le modèle en basse définition.

Page 514: Algorithmique graphique

Normal mappingNormal mapping

Page 515: Algorithmique graphique

Displacement mapDisplacement map

•• Même idée que le bump map, mais on déplace physiquement leMême idée que le bump map, mais on déplace physiquement les vertex au lieu de juste perturber leur normale.s vertex au lieu de juste perturber leur normale.

•• Encodage des détails d'un modèle géométrique haute résolution Encodage des détails d'un modèle géométrique haute résolution dans une texture qui sera plaquée sur un modèle simplifiédans une texture qui sera plaquée sur un modèle simplifiédans une texture qui sera plaquée sur un modèle simplifiédans une texture qui sera plaquée sur un modèle simplifié

Page 516: Algorithmique graphique

Displacement mapDisplacement map•• Si le modèle est en basse définition, le déplacement des Si le modèle est en basse définition, le déplacement des

points ne produira pas l’effet escompté..points ne produira pas l’effet escompté..

•• On augmenter temporairement la définition du modèleOn augmenter temporairement la définition du modèle•• phase la tessellation.phase la tessellation.

•• On déplace alors les points du modèle en fonction de On déplace alors les points du modèle en fonction de l’image.l’image.

Page 517: Algorithmique graphique

Displacement mapDisplacement map

Page 518: Algorithmique graphique

Environment mapEnvironment map

•• Une surface miroir réfléchit son environnement, mais le lancer de rayons est Une surface miroir réfléchit son environnement, mais le lancer de rayons est trop coûteux pour espérer un rendu en temps réeltrop coûteux pour espérer un rendu en temps réel

•• On crée une image de la scène (sans l’objet réfléchissant) qu’on projette On crée une image de la scène (sans l’objet réfléchissant) qu’on projette ensuite sur un objet intermédiaireensuite sur un objet intermédiaire

Page 519: Algorithmique graphique

Environment mapEnvironment map

Page 520: Algorithmique graphique

Textureoeil

Environment mapEnvironment map

•• Les coordonnées de texture sont calculées après Les coordonnées de texture sont calculées après réflection ou réfraction d’un rayon partant de l’oeil.réflection ou réfraction d’un rayon partant de l’oeil.

Texture

Page 521: Algorithmique graphique

Light Map

•• Produit d’une texture d’éclairement avec une texture de motifProduit d’une texture d’éclairement avec une texture de motif

X =

Page 522: Algorithmique graphique

Autres types de TextureAutres types de Texture

•• Texture mathématique ou paramétriqueTexture mathématique ou paramétrique

•• Texture Solide (Textures 3D)Texture Solide (Textures 3D)

•• ……

Page 523: Algorithmique graphique

Texture mathématique ou paramétriqueTexture mathématique ou paramétrique

•• Utilisation d’une fonction Couleur(x,y) pour définir l’image source.Utilisation d’une fonction Couleur(x,y) pour définir l’image source.

•• Chaque point p = (x,y) correspondant à un pixel pf = (xfac,yfac,zfac) de la facette permettra dChaque point p = (x,y) correspondant à un pixel pf = (xfac,yfac,zfac) de la facette permettra de calculer la couleur Couleur(x,y) du pixel pf.e calculer la couleur Couleur(x,y) du pixel pf.

•• Les textures mathématiques sont fréquemment utilisées pour représenter des surfaces naturelleLes textures mathématiques sont fréquemment utilisées pour représenter des surfaces naturelles non régulières. Elles sont alors basées sur des fractales ou des fonctions de bruit Brownien fras non régulières. Elles sont alors basées sur des fractales ou des fonctions de bruit Brownien fras non régulières. Elles sont alors basées sur des fractales ou des fonctions de bruit Brownien fras non régulières. Elles sont alors basées sur des fractales ou des fonctions de bruit Brownien fractionnaire approximmées par des techniques à base de subdivision récursive. C'est par exemple ctionnaire approximmées par des techniques à base de subdivision récursive. C'est par exemple le cas des textures à base de bruit de Perlin (Perlin Noise).le cas des textures à base de bruit de Perlin (Perlin Noise).

Veinures sur du bois Marbre

Page 524: Algorithmique graphique

Texture mathématique ou paramétriqueTexture mathématique ou paramétrique

•• IntérêtIntérêt ::•• Les textures mathématiques permettent des zooms sur les objetLes textures mathématiques permettent des zooms sur les objet

s sans avoir d’effet de pixélisation si on se rapproche à une distas sans avoir d’effet de pixélisation si on se rapproche à une distance telle qu’un pixel de l’image source correspond à plus d’un pixnce telle qu’un pixel de l’image source correspond à plus d’un pixel à l’écran.el à l’écran.Le codage d'une fonction mathématique est économique en méLe codage d'une fonction mathématique est économique en mé•• Le codage d'une fonction mathématique est économique en méLe codage d'une fonction mathématique est économique en mémoire.moire.

•• InconvénientInconvénient::•• Toute image n’est pas stockable sous la forme d’une texture matToute image n’est pas stockable sous la forme d’une texture mat

hématique.hématique.•• Cette solution est peu économique en CPU.Cette solution est peu économique en CPU.

Page 525: Algorithmique graphique

Texture Solide (Textures 3D)Texture Solide (Textures 3D)

•• Dans une texture solide la fonction couleur n’est plus une fonction de R2 mais une fonction de Dans une texture solide la fonction couleur n’est plus une fonction de R2 mais une fonction de R3. R3.

•• A chaque point p = (x,y,z) de l’espace global correspondant à un pixel affiché (xfac,yfac,zfac) sA chaque point p = (x,y,z) de l’espace global correspondant à un pixel affiché (xfac,yfac,zfac) sur une facette à l’écran correspondra directement une couleur Couleur(x,y,z).ur une facette à l’écran correspondra directement une couleur Couleur(x,y,z).

•• La définition d’une texture solide est généralement mathématique, car le stockage d’un espace La définition d’une texture solide est généralement mathématique, car le stockage d’un espace voxel demande beaucoup de mémoire (pour un espace de 256 sur 256 sur 256 voxels en 24bits voxel demande beaucoup de mémoire (pour un espace de 256 sur 256 sur 256 voxels en 24bits

•• La définition d’une texture solide est généralement mathématique, car le stockage d’un espace La définition d’une texture solide est généralement mathématique, car le stockage d’un espace voxel demande beaucoup de mémoire (pour un espace de 256 sur 256 sur 256 voxels en 24bits voxel demande beaucoup de mémoire (pour un espace de 256 sur 256 sur 256 voxels en 24bits --> 256*256*256*3 = 48Mo).> 256*256*256*3 = 48Mo).