Algorithmique graphique

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

Embed Size (px)

description

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

Transcript of Algorithmique graphique

  • 1. Algorithmique graphiqueAlgorithmique graphiqueAlgorithmique graphiqueAlgorithmique graphiqueM. AMMIM. [email protected]@limsi.fr20092009

2. HistoriqueHistorique 19441944 :: LeLe premierpremier ordinateurordinateur lectriquelectrique etet programmableprogrammable estest construitconstruit auxaux tatstats--UnisUnis 19501950 :: MIT,MIT, premierpremier crancran (vectoriel)(vectoriel) contrlcontrl parpar ordinateurordinateur 19621962 :: PP.. BezierBezier (Renault)(Renault) metmet auau pointpoint uneune mthodemthode pourpour tracertracer desdes courbescourbes ouou desdessurfacessurfaces 19631963 :: SketchpadSketchpad (thse(thse dede IvanIvan Sutherland),Sutherland), proposepropose unun premierpremier modlemodle completcomplet dedesystmesystme graphiquegraphique interactifinteractif (slectionner,(slectionner, pointer,pointer, dessiner,dessiner, diter)diter);; identifieidentifie leslesstructuresstructures dede donnesdonnes etet algorithmesalgorithmes ncessairesncessaires.. AvanceAvance majeuremajeure dansdans lele domainedomainedudu graphismegraphisme19651965 :: JJ.. BresenhamBresenham metmet auau pointpoint unun algorithmealgorithme efficaceefficace pourpour lele tractrac dede ligneslignes 19651965 :: JJ.. BresenhamBresenham metmet auau pointpoint unun algorithmealgorithme efficaceefficace pourpour lele tractrac dede ligneslignes 19691969 :: JJ.. WarnockWarnock proposepropose unun algorithmealgorithme dede subdivisionsubdivision pourpour lala suppressionsuppression desdes facesfacescachescaches 19711971 :: HH.. GouraudGouraud faitfait uneune thsethse avecavec EvansEvans lUniversitlUniversit dUtahdUtah oo ilil metmet auau pointpointunun algorithmealgorithme dede lissagelissage dombresdombres 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 thsethse 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 dombresdombres 19741974 :: SutherlandSutherland etet HodgmanHodgman dveloppentdveloppent unun algorithmealgorithme dede clippingclipping dede polygonespolygones 19771977 :: JJ.. BresenhamBresenham metmet auau pointpoint unun algorithmealgorithme efficaceefficace pourpour lele tractrac dede cerclescercles 19781978 :: CyrusCyrus etet BeckBeck proposentproposent unun algorithmealgorithme dede clippingclipping dede segmentssegments 3. HistoriqueHistorique 1979 : James H. Clark conoit le premier processeur1979 : James H. Clark conoit le premier processeurprogrammable ddi au graphisme 3Dprogrammable ddi au graphisme 3D 19821982 :: crationcration dede SiliconSilicon GraphicsGraphics,, dAdobedAdobe etet ddAutoDeskAutoDesk 19841984 :: premierspremiers travauxtravaux sursur lala radiositradiosit CornellCornell UniversityUniversity 1985 : cration de ATI : conception de circuits intgrs1985 : cration de ATI : conception de circuits intgrsgraphiquesgraphiques 19871987 :: crationcration dede lala 11rere cartecarte graphiquegraphique 19871987 :: crationcration dede lala 11rere cartecarte graphiquegraphique 1987 :1987 : MarchingMarching Cubes : A HighCubes : A High ResolutionResolution 3D Surface3D SurfaceConstructionConstruction AlgorithmAlgorithm, par, par LorensenLorensen etet ClineCline (GE)(GE) 19921992 :: OpenGLOpenGL 11..00 19931993 :: crationcration dede NVIDIANVIDIA 19931993 :: JurassicJurassic parkpark 19941994 :: standardstandard VRMLVRML 19961996 :: MicrosoftMicrosoft lancelance DirectXDirectX 19971997 :: SunSun lancelance JavaJava 33DD 19981998 :: logiciellogiciel AliasAlias MayaMaya 20072007 :: SpcificationsSpcifications ddOpenGLOpenGL 33..00PourPour plusplus dede dtailsdtails :: httphttp:://accad//accad..osuosu..edu/~waynec/history/timelineedu/~waynec/history/timeline..htmlhtml 4. Domaines dapplicationDomaines dapplication Art & divertissementArt & divertissement Films danimation,Effets spciaux Jeux (Temps rel, Jeux (Temps rel,Interaction) 5. Domaines dapplicationDomaines dapplication Suivi de processus et Tlopration (online)Suivi de processus et Tlopration (online) 6. Domaines dapplicationDomaines dapplication Simulateurs (offline)Simulateurs (offline) Conduite/Pilotage, Processus,Conduite/Pilotage, Processus,Tlopration, Jeux!Tlopration, Jeux! 7. Domaines dapplicationDomaines dapplication Visualisation de donnesVisualisation de donnes MdicalesMdicales GophysiquesGophysiques BiologiquesBiologiques BiologiquesBiologiques 8. Domaines dapplicationDomaines dapplication Conception assiste par ordinateurConception assiste par ordinateur Immersive ou pasImmersive ou pas 9. DfinitionsDfinitions DfinitionDfinition officielleofficielle dede linfographielinfographie (office(office dede lala languelanguefranaisefranaise ApplicationApplication dede linformatiquelinformatique lala cration,cration, auau traitement,traitement, ApplicationApplication dede linformatiquelinformatique lala cration,cration, auau traitement,traitement,etet lexploitationlexploitation desdes imagesimages numriquesnumriques InfographieInfographie estest unun motmot formform partirpartir dede ddINFOrmatiqueINFOrmatiqueetet GRAPHIqueGRAPHIque AppellationAppellation dposedpose parpar lala socitsocit BensonBenson enen 19741974 10. LaLa gomtriegomtrie estest llmentllment constitutifconstitutif essentielessentiel dede toutetoute imageimage dede synthsesynthse LesLes objetsobjets prsentsprsents dansdans uneune imageimage dede synthsesynthse sontsont toujourstoujours dfinisdfinis partirpartirdobjetsdobjets gomtriquesgomtriques dontdont lexpressionlexpression mathmatiquemathmatique estest connueconnue..DfinitionsDfinitionsdobjetsdobjets gomtriquesgomtriques dontdont lexpressionlexpression mathmatiquemathmatique estest connueconnue.. CesCes objetsobjets ainsiainsi queque lorganisationlorganisation spatialespatiale dede cesces objetsobjets lesles unsuns parpar rapportrapport auxauxautresautres formentforment unun modlemodle gomtriquegomtrique completcomplet dede lala scnescne virtuellevirtuelle reprsenterreprsenteretet constituentconstituent unun prpr--requisrequis essentielessentiel.. LimageLimage dede synthsesynthse obtenueobtenue estest lele rsultatrsultat dede linteractionlinteraction entreentre lesles diffrentesdiffrentessourcessources dede lumirelumire dede lala scnescne etet lesles objetobjet.. CetteCette interactioninteraction svaluesvalue partirpartir desdescaractristiquescaractristiques physiquesphysiques desdes objetsobjets etet desdes sourcessources dede lumires,lumires, etet desdes propritspropritsgomtriquesgomtriques localeslocales enen touttout pointpoint dede lala scnescne (gomtrie(gomtrie locale)locale) etet globalesglobales(chaque(chaque objetobjet interagitinteragit avecavec uneune partiepartie ouou lala totalittotalit dede lala scne)scne).. 11. Pipeline GraphiquePipeline Graphique 12. Pipeline GraphiquePipeline GraphiqueTransformations demodlisationIllumination(Shading)TransformationsModle de laModle de lascnescneTransformationsdaffichageClippingTransformation cran((Projection)Pixelisation(Rasterization)Visibilit / Affichage Image 3DImage 3D 13. Transformations de modlisationTransformations de modlisationApplication des transformations decomposition de scne : Passage dusystme de coordonnes local dechaque objet 3D (object space) versTransformations demodlisationIllumination(Shading)Transformationschaque objet 3D (object space) versun repre global (world space)Object space World spaceTransformationsdaffichageClippingTransformation cran((Projection)Pixelisation(Rasterization)Visibilit / Affichage 14. IlluminationIlluminationLes primitives sont claires selonleur matriau, le type de surface et lessources de lumire.Les modles dillumination sontTransformations demodlisationIllumination(Shading)Transformations Les modles dillumination sontlocaux (pas dombres) car le calcul esteffectu par primitive : diffus, ambiant,Gouraud, Phong, etc.TransformationsdaffichageClippingTransformation cran((Projection)Pixelisation(Rasterization)Visibilit / Affichage 15. Transformations daffichageTransformations daffichagePasse des coordonnes du monde celles du point de vue (repre camra oueye space).En gnral le repre est align selon z.Transformations demodlisationIllumination(Shading)TransformationsThe 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 spaceWorld spaceTransformationsdaffichageClippingTransformation cran((Projection)Pixelisation(Rasterization)Visibilit / Affichage 16. ClippingClippingPassage en coordonnes normalises(NDC : normalized device coordinates)Transformations demodlisationIllumination(Shading)TransformationsEye space NDCSuppression des parties hors duvolume de vision.TransformationsdaffichageClippingTransformation cran((Projection)Pixelisation(Rasterization)Visibilit / Affichage 17. Transformation cranTransformation cranLes primitives 3D sont projetes surlespace image 2D (screen space)Transformations demodlisationIllumination(Shading)TransformationsNDCScreenSpaceTransformationsdaffichageClippingTransformation cran((Projection)Pixelisation(Rasterization)Visibilit / Affichage 18. RasterisationRasterisationDcoupe des primitives 2D en pixelsInterpole les valeurs connues auxsommets : couleur, profondeur, etc.pour chaque fragment affichTransformations demodlisationIllumination(Shading)Transformations pour chaque fragment affichTransformationsdaffichageClippingTransformation cran((Projection)Pixelisation(Rasterization)Visibilit / Affichage 19. Visibilit et affichageVisibilit et affichagelimination des parties cachesRemplissage du frame buffer avec lebon format de couleur.Transformations demodlisationIllumination(Shading)TransformationsTransformationsdaffichageClippingTransformation cran((Projection)Pixelisation(Rasterization)Visibilit / Affichage 20. Systme de coordonnesSystme de coordonnesRepre objetRepre scneTransformations demodlisationIllumination(Shading)TransformationsRepre camraEspace cranRepre camranormalis (NDC)TransformationsdaffichageClippingTransformation cran((Projection)Pixelisation(Rasterization)Visibilit / Affichage 21. Le pipeline graphiqueLe pipeline graphiqueModle gomtrique : objets,surfaces, sources de lumireModle dillumination : calcul desinteractions lumineusesTransformations demodlisationIllumination(Shading)TransformationsCamra : point de vue etouverture (frustum)Fentre (viewport) : grille de pixelsur laquelle on plaque limageCouleurs, intensits convenant lafficheur (ex : 24 bits, RVB)TransformationsdaffichageClippingTransformation cran((Projection)Pixelisation(Rasterization)Visibilit / Affichage 22. Le pipeline graphiqueLe pipeline graphiqueChaque primitive passesuccessivement par toutes les tapesLe pipeline peut tre implment deTransformations demodlisationIllumination(Shading)TransformationsLe pipeline peut tre implment dediverses manires avec des tapes enhardware et dautres en softwareA certaines tapes on peut disposerdoutils de programmation (ex : vertexou pixel program)TransformationsdaffichageClippingTransformation cran((Projection)Pixelisation(Rasterization)Visibilit / Affichage 23. ImplmentationImplmentationTransformations demodlisationIllumination(Shading)TransformationsSoftwareconfigurableSans carte graphique 3DTransformationsdaffichageClippingTransformation cran((Projection)Pixelisation(Rasterization)Visibilit / Affichage 24. ImplmentationImplmentationTransformations demodlisationIllumination(Shading)Transformations SoftwareconfigurableHardwareCartes graphiquespremire gnrationTransformationsdaffichageClippingTransformation cran((Projection)Pixelisation(Rasterization)Visibilit / Affichageconfigurable 25. ImplmentationImplmentationTransformations demodlisationIllumination(Shading)TransformationsCartes graphiquesdeuxime gnrationTransformationsdaffichageClippingTransformation cran((Projection)Pixelisation(Rasterization)Visibilit / AffichageHardwareconfigurable 26. ImplmentationImplmentationTransformations demodlisationIllumination(Shading)TransformationsCartes graphiquestroisime gnrationTransformationsdaffichageClippingTransformation cran((Projection)Pixelisation(Rasterization)Visibilit / AffichageHardwareprogrammable 27. Rappels mathmatiquesRappels mathmatiques 28. ScalaireScalaire Un scalaire est une grandeur totalement dfinie par un nombreUn scalaire est une grandeur totalement dfinie par un nombreet une unit.et une unit. Il a une valeur numrique mais pas dorientation.Il a une valeur numrique mais pas dorientation. Ex :Ex : Ex :Ex : MasseMasse DistanceDistance TempratureTemprature VolumeVolume DensitDensit Etc.Etc. Les scalaires obissent aux lois de lalgbre ordinaireLes scalaires obissent aux lois de lalgbre ordinaire 29. ScalaireScalaire Oprations lmentaires:Oprations lmentaires: Addition & multiplicationAddition & multiplication PropritsProprits CommutativitCommutativit=+=+ AssociativitAssociativit DistributivitDistributivit IdentitIdentit Addition : 0Addition : 0 Multiplication : 1Multiplication : 1 =( ) ( )( ) ( ) =++=++( ) ( ) ( ) +=+ =+=+ 00 == 11 30. VecteurVecteur Un vecteurUn vecteur est une entit mathmatique dfinie par n valeurs numriquesest une entit mathmatique dfinie par n valeurs numriquesextraites du mme ensemble E (par exemple N, Z, R, C,)extraites du mme ensemble E (par exemple N, Z, R, C,) Ces valeurs numriques dcrivent le moduleCes valeurs numriques dcrivent le module et lorientation du vecteuret lorientation du vecteur n est appel la dimension du vecteur.n est appel la dimension du vecteur.On dit que le vecteur est dfini dans En.On dit que le vecteur est dfini dans En. On dit que le vecteur est dfini dans En.On dit que le vecteur est dfini 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 : DplacementDplacement VitesseVitesse AcclrationAcclration ForceForce32RZzyxyx 31. Vecteurs unitairesVecteurs unitaires Dans un repre les vecteurs sont dcrit dans une base (units de lensemble)Dans un repre les vecteurs sont dcrit dans une base (units de lensemble) gnralement unitairegnralement unitaire Le vecteur est reprsent par laddition des vecteurs unitaires chaque axeLe vecteur est reprsent par laddition des vecteurs unitaires chaque axede coordonnes, en multipliant chacun par la projection (composante)de coordonnes, en multipliant chacun par la projection (composante)respective du vecteur.respective du vecteur.respective du vecteur.respective du vecteur.kzjyixVrrrr ++= 32. VecteurVecteur Les vecteurs obissent aux lois de lalgbre vectorielleLes vecteurs obissent aux lois de lalgbre vectorielle Oprations lmentairesOprations lmentaires Produit scalaireProduit scalaire Produit vectorielProduit vectoriel Produit vectorielProduit vectoriel Addition de vecteursAddition de vecteurs Produit vecteurProduit vecteur--scalairescalaire NormalisationNormalisation 33. Produit scalaireProduit scalaire Le produit scalaire de deux vecteurs est le produit du module du premier parla composante du second dans la direction du premierBrBrcosA Produit scalaire en fonctionProduit scalaire en fonction du module et de langle :du module et de langle : des composantes :des composantes :ArArcosBcos. BABA =rrzzyyxx BABABABA ++=rr. 34. Produit scalaireProduit scalaire Proprits :Proprits : CommutativitCommutativitDistributivitDistributivit par ladditionpar laddition wvwuwvu ...)( +=+uvvu .. = DistributivitDistributivit par ladditionpar laddition Distributivit par un scalaireDistributivit par un scalairewvwuwvu ...)( +=+).()(. vukvku = 35. Produit scalaireProduit scalaire Angle entre deux vecteursAngle entre deux vecteurscos. BABArrrr=zzyyxx BABABABA ++=rr. BABABABA zzyyxxrr++= cos Signe du produit scalaireSigne du produit scalairezzyyxx BABABABA ++=. segment partiellement dedansPP4410011001 10001000 10101010bit 4bit 40)(&0)( 87 43214321 = PP bbbbbbbb00010001PP11PP22PP77PP88PP66PP55PP33PP99PP101000000000 001000100100010001010101 01100110bit 1bit 1 bit 2bit 2bit 4bit 4bit 3bit 3 243. Le dcoupage (Clipping)Le dcoupage (Clipping) Cas 3Cas 3 => segment entirement dehors=> segment entirement dehorsPP4410011001 10001000 10101010bit 4bit 40)(&)( 21 43214321 PP bbbbbbbb00010001PP11PP22PP88PP66PP55PP33PP99PP101000000000 001000100100010001010101 01100110bit 1bit 1 bit 2bit 2bit 4bit 4bit 3bit 3 244. Le dcoupage (Clipping)Le dcoupage (Clipping) Cas 4Cas 4 => extrmits dans des zones diffrentes=> extrmits dans des zones diffrentesPP4410011001 10001000 10101010bit 4bit 40)(&)( 43214321 =bbbbbbbb00010001PP22PP88PP66PP55PP33PP99PP101000000000 001000100100010001010101 01100110bit 1bit 1 bit 2bit 2bit 4bit 4bit 3bit 3 245. Le dcoupage (Clipping)Le dcoupage (Clipping) Cas 4Cas 4 calculs dintersectioncalculs dintersectionPP4410011001 10001000 10101010bit 4bit 400010001PP22PP88PP66PP55PP33PP99PP101000000000 001000100100010001010101 01100110bit 1bit 1 bit 2bit 2bit 4bit 4bit 3bit 3 246. Le dcoupage (Clipping)Le dcoupage (Clipping) Ritrer les tests avec les parties restantesRitrer les tests avec les parties restantes10011001 10001000 10101010bit 4bit 400010001PP22PP88PP66PP5500000000 001000100100010001010101 01100110bit 1bit 1 bit 2bit 2bit 4bit 4bit 3bit 3 247. Le dcoupage (Clipping)Le dcoupage (Clipping) Algorithme de Cohen & SutherlandAlgorithme de Cohen & Sutherland Reprsentation paramtrique dun segment de droiteReprsentation paramtrique dun segment de droite Frontire suprieure de la fentreFrontire suprieure de la fentre Intersection : Rsultat : 248. Le dcoupage (clipping)Le dcoupage (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.htmlSutherland/index.htmlOu encore :Ou encore :http://www.cs.princeton.edu/~min/cs426/jar/clip.htmlhttp://www.cs.princeton.edu/~min/cs426/jar/clip.html 249. Le dcoupage (clipping)Le dcoupage (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 Ncessite dautres prcalculsNcessite dautres prcalculs 250. Le dcoupage (clipping)Le dcoupage (clipping)Clipping de segments : Algorithme de Liang et BarskyClipping de segments : Algorithme de Liang et Barsky Intersection de la droite (p1 p2) avec les frontires dans lordre :Intersection de la droite (p1 p2) avec les frontires dans lordre : Bas puis Gauche puis Haut puis DroiteBas puis Gauche puis Haut puis Droite Tri des paramtres et comparaison avec lordre attenduTri des paramtres et comparaison avec lordre attendu si (t1 < t2 < t3 < t4) alors segment conserver si (t1 < t2 < t3 < t4) alors segment conserver sinon segment rejet 251. Le dcoupage (Clipping)Le dcoupage (Clipping) Clipping de polygonesClipping de polygones Dterminer les parties de polygones lintrieur de la fentreDterminer les parties de polygones lintrieur de la fentre 252. Le dcoupage (Clipping)Le dcoupage (Clipping) Algorithme de Sutherland et HodgemanAlgorithme de Sutherland et Hodgeman Tester relativement chaque frontire de la fentreTester relativement chaque frontire de la fentre 253. Le dcoupage (Clipping)Le dcoupage (Clipping) Algorithme de Sutherland et HodgemanAlgorithme de Sutherland et Hodgeman Tester relativement chaque frontire de la fentreTester relativement chaque frontire de la fentre 254. Le dcoupage (Clipping)Le dcoupage (Clipping) Algorithme de Sutherland et HodgemanAlgorithme de Sutherland et Hodgeman Tester relativement chaque frontire de la fentreTester relativement chaque frontire de la fentre 255. Le dcoupage (Clipping)Le dcoupage (Clipping) Algorithme de Sutherland et HodgemanAlgorithme de Sutherland et Hodgeman Tester relativement chaque frontire de la fentreTester relativement chaque frontire de la fentre 256. Le dcoupage (Clipping)Le dcoupage (Clipping)Algorithme de Sutherland et HodgemanAlgorithme de Sutherland et Hodgeman Pour chaque frontire et chaque polygone :Pour chaque frontire et chaque polygone : tester lappartenance sur les deux extrmits des segmentstester lappartenance sur les deux extrmits des segments si cas 2 ou cas 4 calculer lintersection avec la frontiresi cas 2 ou cas 4 calculer lintersection avec la frontireinsrer les nouveaux points calculsinsrer les nouveaux points calculs insrer les nouveaux points calculsinsrer les nouveaux points calculs supprimer les points en dehors de la fentresupprimer les points en dehors de la fentreDedansDedansDehorsDehors 257. Le dcoupage (clipping)Le dcoupage (clipping) Algorithme de Sutherland et Hodgeman voir siteAlgorithme de Sutherland et Hodgeman voir sitehttp://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 258. Dterminer les lignes, artes, surfaces et volumes visibles par unDterminer les lignes, artes, surfaces et volumes visibles par unobservateurobservateur Cohrence visuelle de la scneCohrence visuelle de la scne Rduire le nombre de primitives traites par le pipeline graphiqueRduire le nombre de primitives traites par le pipeline graphiquelimination des parties cacheslimination des parties caches Algorithme de baseAlgorithme de base quivalent au tri => O(n log n)quivalent au tri => O(n log n) Deux familles dalgorithme :Deux familles dalgorithme : Algorithmes objet : dans lespace scneAlgorithmes objet : dans lespace scne Algorithmes image : dans lespace imageAlgorithmes image : dans lespace image 259. limination des parties cacheslimination des parties caches Dans lespace scne : le masquage se fait sur le modle de donnesDans lespace scne : le masquage se fait sur le modle de donnesphysiques => Calcul en coordonnes du monde. le masquage des partiesphysiques => Calcul en coordonnes du monde. le masquage des partiescaches est valable quelle que soit lchelle du dessin.caches est valable quelle que soit lchelle du dessin. Caractristiques :Caractristiques : Test objet par objet (O(n))Test objet par objet (O(n)) Prcision dpend de la rsolution des objetsPrcision dpend de la rsolution des objets Techniques relativement complexes mettre en uvreTechniques relativement complexes mettre en uvre Mthodes :Mthodes : limination de faces arrires (Backface Culling)limination de faces arrires (Backface Culling) Tri des primitives selon leur loignementTri des primitives selon leur loignement Algorithme du peintreAlgorithme du peintre Algorithme de tri par arbre binaire (Algorithme de tri par arbre binaire (BSP TreesBSP Trees)) 260. limination des parties cacheslimination des parties caches Dans lespace image : le masquage se fait sur les pixels cran => Calcul enDans lespace image : le masquage se fait sur les pixels cran => Calcul encoordonnes fentrecoordonnes fentre Caractristiques :Caractristiques : Test de visibilit en chaque pixel (O(n x p))Test de visibilit en chaque pixel (O(n x p)) Prcision dpend de la rsolution de lespace imagePrcision dpend de la rsolution de lespace imagePrcision dpend de la rsolution de lespace imagePrcision dpend de la rsolution de lespace image Recalculer chaque changement camra/scneRecalculer chaque changement camra/scne Techniques relativement simplesTechniques relativement simples Mthodes :Mthodes : Subdivision rcursive de limage (Warnock)Subdivision rcursive de limage (Warnock) Test de profondeurTest de profondeur Ligne de balayage :Ligne de balayage : ScanScan--lineline--WatkinsWatkins ScanScan--lineline--ZbufferZbuffer Tampon de profondeurTampon de profondeur -- ZbufferZbuffer Lancer de rayons (Whitted)Lancer de rayons (Whitted) 261. Algorithmes objetAlgorithmes objet 262. limination de faces arrireslimination de faces arrires(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 pointedans la direction oppose au point dobservation.dans la direction oppose au point dobservation. Ces parties, vues du point dobservation, sont occultes par lobjet luiCes parties, vues du point dobservation, sont occultes par lobjet lui--mme.mme. Conditions : La suppression des faces arrires suffit liminer les parties cachesConditions : La suppression des faces arrires suffit liminer les parties caches :: si lobjet est seul dans la scnesi lobjet est seul dans la scne il ne faut pas quun objet puisse en masquer un autreil ne faut pas quun objet puisse en masquer un autre si lobjet est convexesi lobjet est convexe dans un objet concave, des faces avant peuvent tre masques par dautresdans un objet concave, des faces avant peuvent tre masques par dautres 263. limination de faces arrireslimination de faces arrires(Backface Culling)(Backface Culling) Calcul : produit scalaireCalcul : produit scalaire (il(il--Face) . NormaleFace) . Normale < 0 : on garde le polygone< 0 : on garde le polygone > 0 : on llimine> 0 : on llimine conomise 50 % du temps de calculconomise 50 % du temps de calcul En moyenneEn moyenne Faible cot par polygoneFaible cot par polygone tape prliminaire pour les autres algorithmestape prliminaire pour les autres algorithmes Suffisant pour un seul objet convexeSuffisant pour un seul objet convexe 264. Algorithme du PeintreAlgorithme 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 mmoire vido suivant unordre de distance dcroissante au point dobservation. 265. Algorithme du PeintreAlgorithme du Peintre Principe :Principe : Trac de polygones bien orients, du plus loign au plus procheTrac de polygones bien orients, du plus loign au plus proche Tri des polygonesTri des polygones Cas trivial (non chevauchement)Cas trivial (non chevauchement)YYXXZZXX 266. 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) : Dcoupage de polygonesCas ambigu (chevauchement) : Dcoupage de polygonesYYXXZZXX 267. Algorithme du PeintreAlgorithme du Peintre Algorithme completAlgorithme complet Trier les polygones en fonction de leur plus grande coordonne enTrier les polygones en fonction de leur plus grande coordonne en zz zz distance la camra suivant la direction de visedistance la camra suivant la direction de vise Si deux polygones ont des tendues enSi deux polygones ont des tendues en zz qui se recouvrent :qui se recouvrent : On test :On test : Si les boitesSi les boites englobantesenglobantes de leurs projections sont sparesde leurs projections sont sparesSi leurs projections ne sont pas spares : calcul dintersection de segment de droiteSi leurs projections ne sont pas spares : calcul dintersection de segment de droite Si leurs projections ne sont pas spares : calcul dintersection de segment de droiteSi leurs projections ne sont pas spares : calcul dintersection de segment de droite Si rien ne marche, on coupe lun des polygones par le plan de lautreSi rien ne marche, on coupe lun des polygones par le plan de lautre Calcul dintersection de plansCalcul dintersection de plans Caractristiques Le plus intuitif des algorithmes Cot en mmoire : Affichage direct lcran : O(p) Il faut trier les polygones : O(nlogn) Temps de calcul : On affiche toute la scne Efficace surtout sur des petites scnes ZZXXZZXX 268. Partition binaire de lespace parPartition binaire de lespace par BSP TreesBSP Trees BSPBSP--tree (Binary Space Partition) : arbre binaire utilis pourtree (Binary Space Partition) : arbre binaire utilis pourtrier des primitives dans lespacetrier des primitives dans lespace Principe (Schumaker 1969, Fluch 1980) :Principe (Schumaker 1969, Fluch 1980) :Choix dune arte de rfrenceChoix dune arte de rfrence Choix dune arte de rfrenceChoix dune arte de rfrence Partage de lespace en 2 demiPartage de lespace en 2 demi--espaces (in et out)espaces (in et out) Rpartition des objet (& primitives) selon le demiRpartition des objet (& primitives) selon le demi--espace occupespace occup Les objet (& primitives) cheval sont dcoupes selon le plan deLes objet (& primitives) cheval sont dcoupes selon le plan derfrencerfrence Ritration dans les deux demiRitration dans les deux demi--espaces rsultantsespaces rsultants 269. Partition binaire de lespace parPartition binaire de lespace par BSP TreesBSP Trees 270. Partition binaire de lespace parPartition binaire de lespace par BSP TreesBSP Trees 271. Partition binaire de lespace parPartition binaire de lespace par BSP TreesBSP Trees 272. Partition binaire de lespace parPartition binaire de lespace par BSP TreesBSP Trees 273. Partition binaire de lespace parPartition binaire de lespace par BSP TreesBSP Trees 274. Dans le cas dune primitives ou objet partagDans le cas dune primitives ou objet partag Diviser la primitive en deux en fonction du plan sparateurDiviser la primitive en deux en fonction du plan sparateur Rpartir lobjet de part et dautre du plan sparateurRpartir lobjet de part et dautre du plan sparateurPartition binaire de lespace parPartition binaire de lespace par BSP TreesBSP TreesOuch 275. Parcours du BSP TreesParcours du BSP Trees Utilisation du BSPUtilisation du BSP--tree :tree : Parcours rcursif de larbre partir de la racine :Parcours rcursif de larbre partir de la racine : Dterminer le demiDterminer le demi--espace o se situe lobservateur, par rapport auespace o se situe lobservateur, par rapport aunud courant puis (Proche ou Loin) :nud courant puis (Proche ou Loin) :nud courant puis (Proche ou Loin) :nud courant puis (Proche ou Loin) : Traiter le sousTraiter le sous--arbre correspondant au demiarbre correspondant au demi--espace o nest pas situespace o nest pas situlobservateur (Loin)lobservateur (Loin) Dessiner la primitive correspondant au nud courantDessiner la primitive correspondant au nud courant Traiter le sousTraiter le sous--arbre correspondant au demiarbre correspondant au demi--espace o est situespace o est situlobservateur (Proche)lobservateur (Proche) 276. Parcours du BSP TreesParcours du BSP TreesAlgorithmeAlgorithmerenderBSP(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;elseelseProche = 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); 277. BSP Trees : Viewpoint ABSP Trees : Viewpoint A 278. BSP Trees : Viewpoint ABSP Trees : Viewpoint AL PLP 279. BSP Trees : Viewpoint ABSP Trees : Viewpoint AL PLPLP LP 280. BSP Trees : Viewpoint ABSP Trees : Viewpoint AL PLLPPPLLP 281. BSP Trees : Viewpoint ABSP Trees : Viewpoint AL PLLPPPLLP 282. BSP Trees : Viewpoint ABSP Trees : Viewpoint AL PLPL1LPPPL1 283. BSP Trees : Viewpoint ABSP Trees : Viewpoint AL PLPLP12 LPLP PL21 2 284. BSP Trees : Viewpoint ABSP Trees : Viewpoint AL PLPLP12 LPLPP LPL21 2 285. BSP Trees : Viewpoint ABSP Trees : Viewpoint AL PLPLP12 LPLPP LPL21 2 286. BSP Trees : Viewpoint ABSP Trees : Viewpoint AL PLPLP123LPLPP LPL21 23 287. BSP Trees : Viewpoint ABSP Trees : Viewpoint AL PLP1234LPLPLPP LPL21 234 288. BSP Trees : Viewpoint ABSP Trees : Viewpoint AL PLP1234 5LPLPLPP LPL21 2345 289. BSP Trees : Viewpoint ABSP Trees : Viewpoint AL PLP1234 58LPLPLPP LPL21 234567896789LPLPLP 290. BSP Trees : Viewpoint BBSP Trees : Viewpoint BP LPLL PLPLPLPL PLPL PP L 291. BSP Trees : Viewpoint BBSP Trees : Viewpoint BP LPLL P6 579LPLPLP1342L PLPL PP L5789123468 292. Algorithmes imageAlgorithmes image 293. Subdivision rcursive de limageSubdivision rcursive de limage -- WarnockWarnock Principe Principe diviser pour rgnerdiviser pour rgner : diviser limage en quadtree : diviser limage en quadtree 294. Subdivision rcursive de limageSubdivision rcursive de limage -- WarnockWarnock Principe Principe diviser pour rgnerdiviser pour rgner : diviser limage en quadtree : diviser limage en quadtree 295. Subdivision rcursive de limageSubdivision rcursive de limage -- WarnockWarnock Principe Principe diviser pour rgnerdiviser pour rgner : diviser limage en quadtree : diviser limage en quadtree 296. Subdivision rcursive de limageSubdivision rcursive de limage -- WarnockWarnock Principe Principe diviser pour rgnerdiviser pour rgner : diviser limage en quadtree : diviser limage en quadtree 297. Subdivision rcursive de limageSubdivision rcursive de limage -- WarnockWarnock Pour chaque quadrant :Pour chaque quadrant : Dterminer la liste des polygones potentiellement visiblesDterminer la liste des polygones potentiellement visibles Tracer le quadrant de limage directement dans les cas simples :Tracer le quadrant de limage 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 duUn seul polygone : contenu facile dessiner avec la couleur dupolygonepolygone Le polygone couvrant le quadrantLe polygone couvrant le quadrant PartiellementPartiellement TotalementTotalement 298. Subdivision rcursive de limageSubdivision rcursive de limage -- WarnockWarnock Cas complexes : plusieurs polygones dans le quadrantCas complexes : plusieurs polygones dans le quadrant 299. Subdivision rcursive de limageSubdivision rcursive de limage -- WarnockWarnock Principe Principe diviser pour rgnerdiviser pour rgner : diviser limage en quadtree : diviser limage 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 itrer le processusSinon subdiviser et itrer le processus Arrt quand le quadrant est plus petit quun pixelArrt quand le quadrant est plus petit quun pixel Tracer avec la couleur du polygone en avant des autresTracer avec la couleur du polygone en avant des autres 300. Subdivision rcursive de limageSubdivision rcursive de limage -- WarnockWarnock Dcoupage rcursif des quadrants contenant plusieurs polygonesDcoupage rcursif des quadrants contenant plusieurs polygones 301. Subdivision rcursive de limageSubdivision rcursive de limage -- WarnockWarnock Problme : plusieurs polygones dans le quadrantProblme : plusieurs polygones dans le quadrant S1 masque tous les autres polygones, maisS1 masque tous les autres polygones, mais Subdivision (masquage non dtect par les tests simples de profondeur)Subdivision (masquage non dtect par les tests simples de profondeur) 302. Algorithme de balayage (scanAlgorithme de balayage (scan--line)line)--WatkinsWatkins Principe : liminer les lignes caches, ligne par lignePrincipe : liminer les lignes caches, ligne par ligne 303. Pour une ligne de balayage donne :Pour une ligne de balayage donne : Obtention dun segment par polygoneObtention dun segment par polygone Dtermination de la visibilit des segmentsDtermination de la visibilit des segments Affichage des segments visiblesAffichage des segments visiblesAlgorithme de balayage (scanAlgorithme de balayage (scan--line)line)--WatkinsWatkins Diffrents cas rencontrsDiffrents cas rencontrs 304. Obtention dun segment par polygoneObtention dun segment par polygone Intersection planIntersection plan--segmentsegment Pour un y fix : on calcul les coordonnes x & z partir de lquationPour un y fix : on calcul les coordonnes x & z partir de lquationdu segment trait de la primitivedu segment trait de la primitiveAlgorithme de balayage (scanAlgorithme de balayage (scan--line)line)--WatkinsWatkins 305. Dtermination de la visibilitDtermination de la visibilit Projection sur la ligne de balayage de lcranProjection sur la ligne de balayage de lcran Dterminations des intervalles associs aux segments projets [in, out]Dterminations des intervalles associs aux segments projets [in, out]Algorithme de balayage (scanAlgorithme de balayage (scan--line)line)--WatkinsWatkins11 223344inin inin outout outout inin inin outout outout11 2,12,1 11 44 3,43,4 44Plan de balayagePlan de balayageEcranEcran 306. Dtermination de la visibilitDtermination de la visibilit Superposition dintervallesSuperposition dintervalles --> plusieurs segments> plusieurs segments Calcul dintersection : intersection entre segments de droiteCalcul dintersection : intersection entre segments de droite Si intersectionSi intersection --> ajout dun point sur la ligne de balayage> ajout dun point sur la ligne de balayageAlgorithme de balayage (scanAlgorithme de balayage (scan--line)line)--WatkinsWatkins11 223344inin inin outout outout inin inin outout outout11 2,12,1 11 44 3,43,4 44Plan de balayagePlan de balayage2,12,1EcranEcran 307. 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 traitAffichage de la couleur du segment trait11 223344inin inin outout outout inin inin outout outout11 2,12,1 11 44 3,43,4 44Plan de balayagePlan de balayage2,12,1EcranEcran 308. Algorithme de balayage : ScanAlgorithme de balayage : Scan--lineline--ZbufferZbuffer Dtermination de la visibilitDtermination de la visibilit Tampon de profondeur + mmoire dimage pour la ligne deTampon de profondeur + mmoire dimage pour la ligne debalayagebalayage Pour chaque lment trait on calcul sa profondeurPour chaque lment trait on calcul sa profondeur Par interpolation bilinaire voir ZBufferPar interpolation bilinaire voir ZBuffer Par interpolation bilinaire voir ZBufferPar interpolation bilinaire voir ZBuffer11 223344EcranEcranPlan de balayagePlan de balayage00 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 00Tampon de profondeurTampon de profondeur 309. Algorithme de balayage : ScanAlgorithme de balayage : Scan--lineline--ZbufferZbuffer Dtermination de la visibilitDtermination de la visibilit Prise en compte du segment 1Prise en compte du segment 111 223344EcranEcranPlan de balayagePlan de balayage00 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 00Tampon de profondeurTampon de profondeur 310. Algorithme de balayage : ScanAlgorithme de balayage : Scan--lineline--ZbufferZbuffer Dtermination de la visibilitDtermination de la visibilit Prise en compte du segment 2Prise en compte du segment 211 223344EcranEcranPlan de balayagePlan de balayage00 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 00Tampon de profondeurTampon de profondeur 311. Algorithme de balayage : ScanAlgorithme de balayage : Scan--lineline--ZbufferZbuffer Dtermination de la visibilitDtermination de la visibilit Prise en compte du segment 3Prise en compte du segment 311 223344EcranEcranPlan de balayagePlan de balayage00 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 00Tampon de profondeurTampon de profondeur 312. Algorithme de balayage : ScanAlgorithme de balayage : Scan--lineline--ZbufferZbuffer Dtermination de la visibilitDtermination de la visibilit Prise en compte du segment 4Prise en compte du segment 411 223344EcranEcranPlan de balayagePlan de balayage00 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 00Tampon de profondeurTampon de profondeur 313. Tampon de profondeurTampon de profondeur ZZ--bufferbufferEdwin CatmullEdwin Catmull ZbufferZbuffer ((CatmullCatmull--1974) :1974) : Le calcul de limage est effectu squentiellement en traitant les objetsLe calcul de limage est effectu squentiellement en traitant les objetsextraits de la scne (classiquement des facettes) les uns la suite desextraits de la scne (classiquement des facettes) les uns la suite desextraits de la scne (classiquement des facettes) les uns la suite desextraits de la scne (classiquement des facettes) les uns la suite desautres pour en extraire lensemble des pixels qui les reprsentent.autres pour en extraire lensemble des pixels qui les reprsentent. Au cours du processus de traitement dun objet, chaque pixel calcul voitAu cours du processus de traitement dun objet, chaque pixel calcul voitsa profondeur compare celle dj calcule en cette place poursa profondeur compare celle dj calcule en cette place pourpouvoir nafficher finalement pour chaque pixel de limage que la facettepouvoir nafficher finalement pour chaque pixel de limage que la facettela moins profonde prsente en ce pixel (vis vis de lobservateur).la moins profonde prsente en ce pixel (vis vis de lobservateur).--> Il ne sagit pas dun tri, mais un calcul de maximum pour chaque> Il ne sagit pas dun tri, mais un calcul de maximum pour chaquepixel vis vis de lensemble des objets prsents en ce pixel.pixel vis vis de lensemble des objets prsents en ce pixel. 314. Tampon de profondeurTampon de profondeur ZZ--bufferbuffer On dfinit deux zones mmoire:On dfinit deux zones mmoire: un tampon couleur destin contenir la couleur de chacun des pixun tampon couleur destin contenir la couleur de chacun des pixels de limage (initialis la couleur de fond souhaite),els de limage (initialis la couleur de fond souhaite), un tampon profondeur destin contenir la profondeur cran maxun tampon profondeur destin contenir la profondeur cran maximum de chacun des pixels de limage (initialise imum de chacun des pixels de limage (initialise --, utilise co, utilise coimum de chacun des pixels de limage (initialise imum de chacun des pixels de limage (initialise --, utilise co, utilise comme valeur courante de comparaison en cours dexcution du Zmme valeur courante de comparaison en cours dexcution du Z--BBuffer).uffer). 315. Tampon de profondeurTampon de profondeur ZZ--bufferbuffer Initialiser le Zbuffer Initialiser le Zbuffer --Initialiser le Zbuffer Initialiser le Zbuffer -- Initialiser le buffer de couleur avec couleur du fondInitialiser le buffer de couleur avec couleur du fond 316. Tampon de profondeurTampon de profondeur ZZ--bufferbufferZ-buffer Buffer couleur 317. Tampon de profondeurTampon de profondeur ZZ--bufferbuffer Pour chaque polygonePour chaque polygone Pour chauque sommetPour chauque sommet P1 = projection (sommet 1) sur lcranP1 = projection (sommet 1) sur lcran P2 = projection (sommet 2) sur lcranP2 = projection (sommet 2) sur lcranP3 = projection (sommet 3) sur lcranP3 = projection (sommet 3) sur lcran P3 = projection (sommet 3) sur lcranP3 = projection (sommet 3) sur lcran Pour chaque pixel(x,y) du polygone projetPour chaque pixel(x,y) du polygone projet Dterminer la profondeur z du point correspondant du polygone parDterminer la profondeur z du point correspondant du polygone parinterpolation bilinaireinterpolation bilinaire 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 modle dombrageApplication du modle dombrage 318. Tampon de profondeurTampon 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 55 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 319. Tampon de profondeurTampon de profondeur ZZ--bufferbuffer[0,6,7]2 3 4 53 4 5 64 5 6 75 6 76 776 77[0,1,2] [5,1,7]2 3 4 5 6 75 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 320. Tampon de profondeurTampon de profondeur ZZ--bufferbuffer)y(y)y(y)z(zzz sa+=311131P3 Calcul de la profondeur par interpolationCalcul de la profondeur par interpolationP1P2P1ys za zp zb)x(x)x(x)z(zzz)y(y)y(y)z(zzz)y(ybapaabapsb+=+=21112131 321. Tampon de profondeurTampon de profondeur ZZ--BufferBufferAlgorithmeAlgorithmefor 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}}}}}} 322. Tampon de profondeurTampon de profondeur -- ZbufferZbuffer AvantagesAvantages Simplicit de mise en uvreSimplicit de mise en uvre Pas de tri pralablePas de tri pralable Rapidit (algorithme cbl, paralllisable)Rapidit (algorithme cbl, paralllisable) InconvnientsInconvnients Traitement de tous les polygones, mmes cachsTraitement de tous les polygones, mmes cachs Taille mmoire ncessaire (de moins en moins)Taille mmoire ncessaire (de moins en moins) Ne traite pas les effets particuliersNe traite pas les effets particuliers InterInter--reflets, transparence, rfractionreflets, transparence, rfraction 323. Cots comparsCots compars500500500500600600600600PeintrePeintrePeintrePeintreWarnockWarnockWarnockWarnockScan-LineScan-LineScan-LineScan-LineZ-BufferZ-BufferZ-BufferZ-Buffer0000100100100100200200200200300300300300400400400400100100100100 2500250025002500 60000600006000060000Z-BufferZ-BufferZ-BufferZ-Buffer 324. Choix de lalgorithmeChoix de lalgorithme Lalgorithme idal dpends :Lalgorithme idal dpends : De la complexit de la scneDe la complexit de la scne Du matriel disponibleDu matriel disponible De ce quon veut faire en plus de laffichageDe ce quon veut faire en plus de laffichage ZZ--Buffer en gnral :Buffer en gnral : Fourni gratuitement dans la librairie graphiqueFourni gratuitement dans la librairie graphique Pas de prPas de pr--traitementtraitement Quelques effets de bord si on le connat malQuelques effets de bord si on le connat 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 cot mmoireFaible cot mmoire Li la fonction daffichage, peut tre trs efficaceLi la fonction daffichage, peut tre trs efficace 325. RemplissageRemplissage RemplissageRemplissage :: AppelAppel galementgalement Rastrisation,Rastrisation, cettecette tapetapeconsisteconsiste remplirremplir lesles polygonespolygones projetsprojets ((22D)D) pourpour donnerdonner ununaspectaspect plusplus ralisteraliste auau objetsobjets.. LeLe remplissageremplissage sese faitfait suivantsuivant lele modlemodle dOmbragedOmbrage utilisutilis parpar lelepipelinepipeline graphiquegraphique (Gouraud,(Gouraud, Phong,Phong, Lambert,Lambert, etcetc..))pipelinepipeline graphiquegraphique (Gouraud,(Gouraud, Phong,Phong, Lambert,Lambert, etcetc..)) MthodesMthodes :: TestTest dede lappartenancelappartenance dundun pointpoint polygonepolygone TestTest dintersectiondintersection AlgorithmeAlgorithme dede balayagebalayage dede ligneslignes RemplissageRemplissage dede rgionsrgions 326. RemplissageRemplissageTest dappartenance dun point polygoneTest dappartenance dun point polygone Polygone convexe Dtermination des normales extrieures Dtermination des normales extrieures Positionnement par rapport aux demiPositionnement par rapport aux demi--plansplans p dans le polygone si p hors du polygone si 327. RemplissageRemplissageTest dappartenance dun point polygoneTest dappartenance dun point polygone Test danglesTest dangles 328. RemplissageRemplissageTest dappartenance dun point un polygoneTest dappartenance dun point un polygone Test du nombre de points dintersectionTest du nombre de points dintersection4 points dintersection 3 points dintersection Attention aux cas limites : points extrmits de segments et segments tangents 329. RemplissageRemplissageIdentification dun polygone Polygone convexe Si p1xp2 > 0 alors ccwSommets 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 330. RemplissageRemplissageIdentification dun polygoneIdentification dun polygone Polygone concavePolygone concave Changement de sens lors du parcoursChangement de sens lors du parcours S3 rS3 r--entrantentrantSommetsSommets VecteursVecteurs Produits vectorielsProduits vectorielsS1S1 S5S1S5S1 ^ S1S2S1S2 [ 0[ 0 --3 ] x [ 2 1 ] = + 63 ] x [ 2 1 ] = + 6S2S2 S1S2S1S2 ^ S2S3S2S3 [ 2 1 ] x [ 0 2 ] = + 4[ 2 1 ] x [ 0 2 ] = + 4S3S3 S2S3S2S3 ^ S3S4S3S4 [[--1 1 ] x [ 1 1 ] =1 1 ] x [ 1 1 ] = -- 22S4S4 S3S4S3S4 ^ S4S5S4S5 [ 1 1 ] x [[ 1 1 ] x [--2 0 ] = + 22 0 ] = + 2S5S5 S4S5S4S5 ^ S5S1S5S1 [[--22 --0 ] x [ 00 ] x [ 0 --3 ] = + 63 ] = + 6 331. RemplissageRemplissage AlgorithmeAlgorithme dede balayagebalayage dede ligneslignes CetCet algorithmealgorithme consisteconsiste balayerbalayer lesles ligneslignes horizontaleshorizontales appartenantappartenant auaurectanglerectangle englobantenglobant lele polygonepolygone traiter,traiter, etet afficherafficher lesles pixelspixels intrieursintrieurs auaupolygonepolygone sursur chaquechaque ligneligne.. LaLa rechercherecherche desdes intersectionsintersections desdes ligneslignes dede balayagebalayage avecavec lele polygonepolygone sese faitfaitenen calculantcalculant lapproximationlapproximation desdes segmentssegments laidelaide dundun algorithmealgorithme dede traagetraageetet enen mmorisantmmorisant lesles pointpoint cranscrans correspondantscorrespondants..etet enen mmorisantmmorisant lesles pointpoint cranscrans correspondantscorrespondants.. 332. RemplissageRemplissage Pour chaque cot impliqu, et pour chaque lignePour chaque cot impliqu, et pour chaque ligne yyii traite letraite lecalcul dintersection ncessite les valeurs suivantes :calcul dintersection ncessite les valeurs suivantes : yymaxmax xxminminddx/x/ddy (1/pente)y (1/pente)yyAA ddx/x/ddy (1/pente)y (1/pente)xxyymaxmax xxminmin ddx/x/ddyy1010 11 33//66BBAA--B :B :yyii -->>77-->>Segment :Segment : 333. RemplissageRemplissage Les points dintersection sont organiss suivant une listeLes points dintersection sont organiss suivant une listechanechane Chaque trame interceptera un nombre paire n de cots duChaque trame interceptera un nombre paire n de cots dupolygonepolygoneLa liste est trie chaque ajoutLa liste est trie chaque ajout La liste est trie chaque ajoutLa liste est trie chaque ajout Par ordre croissant desPar ordre croissant des xxminmin Pour deuxPour deux xxminmin identiques, le tri se fait par ordre croissant deidentiques, le tri se fait par ordre croissant de ddx/x/ddyyyymaxmax xxminmin ddx/x/ddyy &&yymaxmax xxminmin ddx/x/ddyy &&DbutDbut FinFinyyii -->>Segment :Segment : 334. RemplissageRemplissageyy AA99 1010 11 3/63/6 && 1010 88 --3/23/2 &&DDxxBB9966 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 ..CCEE 335. RemplissageRemplissage Une fois la liste tablieUne fois la liste tablieRemplissage selon une rgle de paritRemplissage selon une rgle de parit : incrmentation de la parit: incrmentation de la parit Remplissage selon une rgle de paritRemplissage selon une rgle de parit : incrmentation de la parit: incrmentation de la parit chaque traverse de frontire et trac si impair. chaque traverse de frontire et trac si impair. Aprs tri enAprs tri en xx des n intersections Pi (1 2D :>2D : (u,v) = f(xi,yi,zi) Methods Mapping cylindriqueMapping cylindrique Mapping sphriqueMapping sphrique Mapping planMapping plan Mapping boiteMapping boite 492. Mapping sphriqueMapping sphrique Passage par des coordonnes sphriquesPassage par des coordonnes sphriques ),(),,( vur +==))2/((,2),(2,2),(rrvurrvu 493. Mapping cylindriqueMapping cylindrique Passage par des coordonnes cylindriquesPassage par des coordonnes cylindriques c & d sont des facteurs dchellec & d sont des facteurs dchelle ),(),,( vuhr ==)(1,2)(),(,2),(),(),,(00hhdcrvuhrvuvuhr 494. Mapping planMapping plan Passage par des coordonnes cartsiennesPassage par des coordonnes cartsiennes xxrr, y, yrr sont des offsetsont des offset kkxx, k, kyy sont des facteurs dchellesont des facteurs dchelle vuyx ),(),( ==yrxrkyykxxvuyxvuvuyx,),(),(),(),(),( 495. 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 lintervalle de mapping la surface des facesLimiter lintervalle de mapping la surface des faces),(),( vuyx maxminmaxmin),(),(),(),(yyyxxxyxvuvuyx 256*256*256*3 = 48Mo).