1 / 107

Forelesningsnotater SIF8039/ Grafisk databehandling

Forelesningsnotater SIF8039/ Grafisk databehandling. Notater til forelesninger over: Kapittel 7: ”Implementation of a Renderer” i: Edward Angel: ”Interactive Computer Graphics” Vårsemesteret 2002 Torbjørn Hallgren Institutt for datateknikk og informasjonsvitenskap

enrico
Télécharger la présentation

Forelesningsnotater SIF8039/ Grafisk databehandling

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Forelesningsnotater SIF8039/Grafisk databehandling Notater til forelesninger over: Kapittel 7: ”Implementation of a Renderer” i: Edward Angel: ”Interactive Computer Graphics” Vårsemesteret 2002 Torbjørn Hallgren Institutt for datateknikk og informasjonsvitenskap Norges teknisk-naturvitenskapelige universitet

  2. Visualiseringsløypa • Modellering • Geometriske (modellerings-) transformasjoner • Avbildningstransformasjoner • Fargelegging (shading) • Rasterering (rasterkonvertering) Klipping Finne synlige flater

  3. Visualiseringsløypa Modell i verdens- koordinater Modell i kamera- koordinater Trans- formasjon Modell i kanoniske betraktnings- koordinater Trans- formasjon Trans- formasjon Modell i normaliserte utstyrs- koordinater Bilde i ”framebuffer” Klipping og rasterering Bilde til skjerm

  4. Rasterering • Linjeklipping • Flateklipping • Klipping i 3D • Finne synlige flater • Rasterering av linjer • Rasterering av flater • Antialiasering • Farger

  5. Visualiseringsløypa • Realisert ved en ”pipeline”-arkitektur • I maskinvare eller programvare • Hva sendes typisk i ”røret”? • Hjørnekoordinater • Topologisk informasjon (hvilke flater hjørnene definerer) • Normaler • Refleksjonskoeffisienter (for Phong-refleksjon) • Farger (for radiositetsmodellen) • Tilbakesporingsinformasjon (for strålesporing) • Hvor og hvordan utføres: • Klipping • Bestemmelse av hvilke flater som er synlige • Lyssetting • Farge og skyggelegging

  6. Objektromsmetoder • Behandler objektene i scenen som høyeste nivå (behandler objekt for objekt): • En del av algoritmene for bestemmelse av hvilke flater som er synlige • Plasskrevende: Krever tilgang til den komplette modellen, til eventuell z-buffer og til hele bildelageret på samme tid • Radiositetsmetoden

  7. Bilderomsmetoder • Behandler pikslene som høyeste nivå (behandler bildet piksel for piksel: • En del algoritmer for bestemmelse av hvilke flater som er synlige • Strålesporingsmodellen • Tilbakesporing • Rasterering • Kan utnytte koherens gjennom inkrementelle metoder

  8. Eksempel på koherens • To nabo-scanlinjer:

  9. Linjeklipping • Lurt å klippe mot det kanoniske betraktningsvolumet for ortografisk projeksjon: • Flater og kanter kan skjære inn i det synlige volumet selv om hjørnene eller endepunktene ligger utenfor

  10. Linjeklipping

  11. Linjeklipping X X X X X

  12. Linjeklipping • Cohen-Sutherlands algoritme for 2D b0 1001 1000 1010 y=ymaks b3 0001 0000 0010 b2 y=ymin 0101 0100 0110 x=xmin b1 x=xmaks

  13. Linjeklipping: • Cohen-Sutherlands algoritme: • Kan brukes på rektangulære klippevinduer (i 2D) • De forlengede kantene til vinduet deler planet i 9 regioner • Tildeler regionene en 4-bits utkastingskode: • Hjørner (endepunkt) får samme kode som regionen de befinner seg i

  14. Linjeklipping • Cohen-Sutherlands algoritme: u1 = utkastingskoden for første endepunkt (x1,y1) u2 = utkastingskoden for andre endepunkt (x2,y2) • Hvis ((u1=0) && (u2=0)): Linjen aksepteres trivielt • Hvis ((u1 &&bitvis u2) != 0) Linjen forkastes trivielt • Ellers er ett eller begge endepunktene utenfor, mens linjen kan skjære gjennom vinduet: • Bruk utkastingskoden til å finne en aktuell kant å beregne skjæring mot • Forkast linjebiten som ligger utenfor • Utfør ny test på restlinjen • Iterer til restlinjen enten er trivielt akseptert eller forkastet

  15. Linjeklipping • Cohen-Sutherlands algoritme for 2D 3 1001 1000 1010 4 1 5 0001 0000 0010 1 3 2 2 1 0101 0100 1 0110 2 1

  16. Linjeklipping • Cohen-Sutherlands algoritme • God når sjansen for triviell forkasting er stor • Liang-Barskys algoritme • Har større sjanse for tidlig forkasting av linjer som må testes for skjæring

  17. Linjeklipping • Liang-Barskys algoritme: • Best brukt på rektangulære klippevinduer: • Bruker linjelikningen på parametrisk form:

  18. Linjelikningen, parametrisk form p2 p1

  19. Linjeklipping • Liang-Barskys algoritme: • Beregner parameterverdiene for linjens skjæringer med kantene til klippevinduet: n4 n1 ute inne p1 p2 p2 p1 n3 n2

  20. Linjeklipping • Liang-Barskys algoritme: • Hjelpestørrelser: • Linjen parallell med kant dersom: • Linjen er da i sin helhet på utsiden av kant dersom: i i

  21. Linjeklipping • Liang-Barskys algoritme: • Beregner parameteren for skjæring med hver av klippevinduets kanter: • Skiller mellom inn- og utpassering:

  22. Linjeklipping • Liang-Barskys algoritme: • For innpassering beholdes største -verdi. • For utpassering beholdes minste -verdi • Forkaster linjen uten videre undersøkelse så snart en av følgende situasjoner oppstår: • For godtatt linje velges:

  23. Kritisk merknad • Liang-Barskys algoritme: • Det er mulig at algoritme vil få litt bedre ytelse ved å erstatte parallellitetstesten med en test på om begge endepunkter ligger på utsiden av vinduskanten • Innfører en ekstra hjelpestørrelse: • Begge endepunktene ligger på utsiden av kanten og kan forkastes dersom: i

  24. Polygonklipping 1 4 3 2

  25. Polygonklipping Første steg 1 4 3 2

  26. Polygonklipping Andre steg 1 4 3 2

  27. Polygonklipping Tredje steg 1 4 3 2

  28. Polygonklipping Fjerde steg 1 4 3 2

  29. Polygonklipping Ferdig 1 4 3 2

  30. Polygonklipping • Sutherland-Hodgemans algoritme: • For hver kant av klippevinduet: • Gå langs kantene rundt polygonet fra hjørne til hjørne: • Hjørner som ligger utenfor vinduet klippes bort • Ved utpassering lages et nytt hjørne i skjæringspunktet mellom vindusramme og polygonkant • Ved innpassering lages et nytt hjørne i skjæringspunktet mellom vindusramme og polygonkant

  31. Omsluttende bokser • Bokser som omslutter mere komplekse objekter • Tettest mulig omslutning • Parallellepiped • Akseorienterte omsluttende bokser AOBB • Objektorienterte omsluttende bokser OOBB • Det komplekse objektet klippes bare dersom den omsluttende boksen ville ha måttet bli klippet • Vanlig teknikk i mange sammenhenger • Klipping • Strålesporing • Bestemmelse av hvilke flater som er synlige • Kollisjonsdeteksjon (robotikk, animasjon .. ) • Hensikt: • Når den omsluttende boksen ikke interfererer, interfererer heller ikke det omsluttede objektet

  32. Klipping i rommet (3D) • Cohen-Sutherlands algoritme: • Utkastingskoden utvides med to bits som representerer henholdsvis rommet foran klippevolumet og rommet bak • I stedet for testing av linjen mot linje (vinduskarm), testes linjen mot plan • Liang-Barskys algoritme: • De parametrisk linjelikningene på komponentform, suppleres med en likning for z-komponenten

  33. Synlige flater • Back-face culling (objektrom) (”Poor Man’s Algorithm”) • Flaten usynlig dersom vinkelen mellom flatenormalen og synsretningen er større enn 90º • Flaten ”strykes” dersom normalen peker bort, det vil si dersom z-komponenten av normalen er negativ. v n

  34. Synlige flater • Warnock’s algoritme (objektromsalgoritme): • AoI: Area of Interest: Mulige situasjoner: • Polygonet skjærer inn i AoI • Polygonet er helt inne i AoI • Polygonet er helt utenfor AoI • Polygonet overlapper helt med AoI AoI AoI AoI AoI A A A

  35. Synlige flater • Warnock’s algoritme: • Følgende fire situasjoner kan avklares uten finere oppdeling: • Ingen polygoner trenger inn i AoI • Tegner bakgrunnsfargen • Bare ett polygon trenger inn i eller er inneholdt i AoI • Tegner bakgrunnsfargen og deretter objektets farge • Bare ett polygon overlapper helt med AoI, og ingen polygoner trenger inn i eller er inneholdt i AoI • Tegner objektets farge • Av alle polygonene som helt eller delvis overlapper med AoI, er det mulig ved hjelp av å sammenlikne z-koordinatene å finne ett polygon som helt overlapper AoI og som utvetydig ligger foran alle de andre • Tegner det forreste objektets farge

  36. Synlige flater • Warnock’s algoritme: • Dersom ingen av de fire situasjonene er gjeldende: • Oppdeling av AoI i fire like store deler og gjenta prosessen for hver fjerdedel AoI AoI AoI AoI

  37. Synlige flater 2 • z-bufferalgoritmen 1 z2 z1 piksel 3 z3 z-verdi svarende til pikslet i bildelageret skjerm 0 Pikslet i bildelageret COP z1 Etter polygon 1 z Etter polygon 2 z1 Polygonene behandles i ”tilfeldig rekkefølge 1,2,3 Etter polygon 3 z3

  38. Synlige flater • z-bufferalgoritmen • Bilderomsalgoritme • Har en z-buffer i tillegg til bildelageret • En celle pr. piksel i bildelageret • z-bufferen må ha tilstrekkelig dybde (presisjon -f.eks. 32 bits) • Behandler i prinsippet polygon for polygon • Initierer bildelageret med bakgrunnsfargen • Initierer z-bufferen med en z-verdi som ligger bak de z-verdiene som er mulige (det negative tallet med størst tallverdi) • Ser ”gjennom” hvert piksel fra projeksjonssenteret (eller for parallellprojeksjon i projeksjonsretningen) • Dersom polygon-punktet strålen treffer, har z-koordinat nærmere ”øyet” enn det som det forrige som ble lagret, erstattes fargen i bildelageret og z-verdien i z-bufferen med det nye polygonets farge og z-verdi.

  39. Synlige flater • z-bufferalgoritmen Mulige problem: • Flere polygonbiter kan være synlige i samme piksel • Mulig løsning: • Dersom vi ”har råd” til å bruke et bildelager og en z-buffer med større oppløsning en skjermen har: ”Skyte” flere stråler gjennom hvert piksel • Midler fargen i tegnet piksel ”Primær” stråle Tilleggsstråler Piksel Flere tilleggsstråler

  40. Synlige flater • z-bufferalgoritmen • Nyttbar koherens ved behandling av et polygon: • Polygonet ligger i flaten med likning: • To punkt i polygonet er slik at: • Da gjelder:

  41. Synlige flater • z-bufferalgoritmen - nyttbar koherens: • Vi vil normalt behandle polygonet scanlinjevis. • På en scanlinje gjelder: • x-koordinaten øker i trinn på 1 målt i bildelageradresse: • Dermed får vi for forflytning langs scanlinjen: • Det vil si at z-verdien inkrementeres i faste trinn: • (Dersom vi måler i vinduskoordinater, vil være en konstant)

  42. Synlige flater • Listeprioritetsalgoritmer Objektromsalgoritmer med et siste trinn (fargelegging av et enkelt piksel) i bilderommet • ”Painters” algoritme (malerens algoritme) • Dybdesorteringsalgoritmen • BSP-trær (Binary Space-Partitioning Trees) • Behandles senere i forbindelse med sceneorganisering

  43. Synlige flater • Painters algoritme: • Sett hele bildelageret til bakgrunnsfargen • Sorter alle polygoner etter største avstand fra bildeplanet • For hvert polygon i sortert orden: • Gjengi (”mal”) hele polygonet • Polygoner som ligger nær bildeplanet, males over polygoner som ligger lenger bak • Algoritmen feiler i mange tilfelle: y x x z

  44. Synlige flater • Dybdesorteringsalgoritmen: Projeksjonsplan x z

  45. Synlige flater • Dybdesorteringsalgoritmen: • Sortere polygonene etter punktet med z-koordinat lengst fra projeksjonsplanet (minste z-koordinat). Polygonene lengst borte kommer først • Løse opp overlappsproblemer • Tegne polygonene ett for ett bakfra og forover mot projeksjonsplanet

  46. Synlige flater • Dybdesorteringsalgoritmen: • Løse opp overlappsproblemet: • P er polygonet som i øyeblikket står først i listen over sorterte polygoner. • Før P kan ”males”, må det testes mot hvert av polygonene Q som kommer etter i listen. • For polygonet Q avbrytes testen så snart det kan svares ja på ett av følgende spørsmål: • Ingen overlapp av koordinater i z-retningen? • Ingen overlapp av koordinater i x-retningen? • Ingen overlapp av koordinater i y-retningen? • P helt bak planet som Q ligger i (sett mot z-retningen)? • Q helt foran planet som P ligger i (sett mot z-retningen)? • Projeksjonene av P og Q i projeksjonsplanet overlapper ikke? P og Q beholder da sin relative plassering i listen og P testes mot neste polygon i listen

  47. Synlige flater • Dybdesorteringsalgoritmen: P helt bak planet som Q ligger i Q helt foran planet som P ligger i P P Q Q x x z z

  48. Synlige flater • Dybdesorteringsalgoritmen: • Dersom ingen av spørsmålene kunne besvares med ja, kan det tenkes at P blokkerer Q • Stiller de samme spørsmålene med tanke på at P kan blokkere Q. Bare fjerde og femte spørsmål trenger gjentas: • Q helt bak planet som P ligger i (sett mot z-retningen) • P helt foran planet som Q ligger i (sett mot z-retningen) Dersom det kan svares ja på et av disse to spørsmålene, plasseres Q først i den gjenværende prioritetslisten • Dersom overlappsproblemet fortsatt ikke er avklart, må ett av polygonene deles opp i mindre deler som erstatter det opprinnelige polygonet i listen. • Testene fortsetter så med de nye delene på rett plass i listen

  49. Synlige flater • Dybdesorteringsalgoritmen: Q helt bak planet som P ligger i P helt foran planet som Q ligger i Q P P Q x x z z

  50. Synlige flater • Dybdesorteringsalgoritmen: • Problemsituasjoner: y y z 1 2 3 x

More Related