1.07k likes | 1.25k Views
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
E N D
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
Visualiseringsløypa • Modellering • Geometriske (modellerings-) transformasjoner • Avbildningstransformasjoner • Fargelegging (shading) • Rasterering (rasterkonvertering) Klipping Finne synlige flater
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
Rasterering • Linjeklipping • Flateklipping • Klipping i 3D • Finne synlige flater • Rasterering av linjer • Rasterering av flater • Antialiasering • Farger
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
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
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
Eksempel på koherens • To nabo-scanlinjer:
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
Linjeklipping X X X X X
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
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
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
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
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
Linjeklipping • Liang-Barskys algoritme: • Best brukt på rektangulære klippevinduer: • Bruker linjelikningen på parametrisk form:
Linjeklipping • Liang-Barskys algoritme: • Beregner parameterverdiene for linjens skjæringer med kantene til klippevinduet: n4 n1 ute inne p1 p2 p2 p1 n3 n2
Linjeklipping • Liang-Barskys algoritme: • Hjelpestørrelser: • Linjen parallell med kant dersom: • Linjen er da i sin helhet på utsiden av kant dersom: i i
Linjeklipping • Liang-Barskys algoritme: • Beregner parameteren for skjæring med hver av klippevinduets kanter: • Skiller mellom inn- og utpassering:
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:
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
Polygonklipping 1 4 3 2
Polygonklipping Første steg 1 4 3 2
Polygonklipping Andre steg 1 4 3 2
Polygonklipping Tredje steg 1 4 3 2
Polygonklipping Fjerde steg 1 4 3 2
Polygonklipping Ferdig 1 4 3 2
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
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
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
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
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
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
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
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
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.
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
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:
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)
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
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
Synlige flater • Dybdesorteringsalgoritmen: Projeksjonsplan x z
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
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
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
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
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
Synlige flater • Dybdesorteringsalgoritmen: • Problemsituasjoner: y y z 1 2 3 x