Computer Graphics with OpenGL

Download Report

Transcript Computer Graphics with OpenGL

Computer Graphics with OpenGL
2. Computer Graphics Hardware
• Plasmapaneler baserer seg på gass som satt under spenning vil emittere lys.
• LCD-skjermer baserer seg på at lys kan polariseres og at krystaller kan rotere lysets
polarisasjonsretning (aktive LCD-paneler kjennetegnes ved at en transistor styrer hver piksel).
6. Implementation Algorithms for Graphics Primitives and Attributes
• Primitiver tilnærmes med en samling piksler som er av eller på.
• Linjetegningsalgoritmer
◦ DDA-algoritmen ser på absoluttverdien til stigningstallet. Dersom denne er mindre enn 1,
går vi ett step langs x-aksen. Dersom stigningstallet er større enn 1, så går vi ett step langs
y-aksen.
◦ Bresenhams linjealgoritme sammenlikner derimot linjens eksakte posisjon med
midtpunktet mellom de to aktuelle pikslene, og velger da den nærmeste pikselen.
▪ Innsett endepunktene og lagre det venstre i (x0, y0), plott det første punktet.
▪ Kalkuler konstantene /\x, /\y, 2/\y og 2/\y – 2/\x og finn startverdien p0 = 2/\y - /\x
▪ Hvis pk < 0, neste plott er (xk + 1, yk) og pk+1 = pk + 2/\y
▪ Hvis pk > 0, neste plott er (xk + 1, yk + 1) og pk+1 = pk + 2/\y – 2/\x
▪ Gjenta.
• Sirkelalgoritmer
◦ Vi kan benytte symmetri ifm. uttegning av sirkler ved å plotte inn enkelte punkter som
speiles. Vi tegner rette linjer mellom et sett utregnede punkter på sirkelen.
◦ Midtpunktsalgoritmen for en sirkel bruker samme konsept som Bresenhams – man
bestemmer hvilken piksel som skal tennes basert på posisjonen til midtpunktet M mellom
nåværende og neste piksel.
• Scanlinje-algoritmen
◦ Finner krysningene mellom skjermens scanlinjer og begrensningen til objektet.
◦ Oddeparitetsregelen benyttes for å fylle polygonene.
◦ Toppunkter til monotont stigende/synkende kanter kortes inn eller evt. forkastes.
◦ Horisontale kanter forkastes.
◦ Kan utnytte koherens for å effektivisere utregningen.
◦ Implementasjon
▪ Samtlige kanter sorteres på minste y-verdi ved hjelp av bucket-sort i en kanttabell.
▪ Deretter finner man krysningene mellom scanlinjen og kantene av objektet og piksler
mellom par av krysninger fylles.
▪ Aktive kanter overflyttes til en ny kantliste sortert på x.
• Fill Methods for Areas with Irregular Boundaries
◦ Boundary-Fill
▪ Rekursivt maler seg utover fra et startpunkt inntil man kommer til begrensningskurven.
▪ 4-connected og 8-connected versjoner av algoritmen
▪ Kan effektiviseres ved å fylle en scanlinje om gangen.
7. Two-Dimensional Geometric Transformations
• For å få matriserepresentasjonene for basistransformasjoner på en form der vi kan behandle alle
typer på en konsistent måte innfører vi homogene koordinater ved å legge til et tredje
koordinat h og representerer punktene på en homogen måte.
• Basistransformasjoner
◦ Translasjon i 2D
▪ Translasjon av et punkt oppnås ved å gi et tillegg i x- og y-retning.
▪ Eks. ved bruk av homogene koordinater:
◦ Rotasjon i 2D
▪ Vi spesifiserer en rotasjon ved å angi en rotasjonsvinkel og en akse.
▪ Eks. ved bruk av homogene koordinater:
◦ Skalering i 2D
▪ Oppnås ved å multiplisere objektets posisjoner med skaleringsfaktorene.
▪ Eks. ved bruk av homogene koordinater:
◦ Refleksjoner
▪ Om x-aksen
•
•
Om y-aksen
Om y=x
Matrisemultiplikasjon er ikke kommutativ, men assosiativ. Hvis rekkefølgen på
transformasjonene endres, så endres også posisjonen til objektet.
Transformasjoner mellom to koordinatsystem
◦ Eksempel på overføring av geometri beskrevet i koordinatsystem A til B. Origo i A ligger i
punktet (11,7) i B. Enhetene brukt i A har halve verdiene av B. B ligger rotert 45 grader i
forhold til en horisontal akse:
8. Two-Dimensional Viewing
• Transformasjoner fra verdenskoordinater til “viewport coordinates”, samt prosedyrer for å
klippe bort de deler av bildet som ikke skal vises (gjerne spesifisert av bruker).
• Linjeklipping
◦ Cohen Sutherland sin linjeklippingsalgoritme arbeider etter prinsippet at endepunktene får
hver sin endekode. Linjer der koden er 0000 i begge ender aksepteres, mens endepunkter
som AND-et sammen gir et resultat forskjellig fra 0 forkastes.
•
Klipping av fylte polygoner
◦ Sutherland-Hodgman klipper polygonet mot hver kant i klipperektangelet i fire
operasjoner.
10. Three-Dimensional Viewing
• Samme prosess som i 2D der vi går fra et verdenskoordinatsystem til et annet, men nå må vi
i tillegg omforme et 3D-volum til et plan ved hjelp av projeksjoner (å projisere).
• To hovedtyper projeksjoner: parallell (ingen forkortning, parallelle projeksjonslinjer) og
perspektivisk (forkortning, projeksjonslinjene samles i et projeksjonspunkt).
• Et 3D-viewing koordinatsystem spesifiseres ved å angi en referanseposisjon p0 for origo
til koordinatsystemet, en vektor N som er normal til viewplanet, og en vektor V som angir
“view-up”-retningen til koordinatsystemet.
• VPN-vektoren bestemmer planets orientering i rommet, mens VUP-vektoren brukes for å
angi y-aksens retning i koordinatsystemet.
• Hvis projeksjonslinjene ligger parallelt med VPN kalles det en ortogonal projeksjon
(brukes ofte for å skape et front-, topp- og sidebilde av scenen.
• Hvis projeksjonsplanet skjærer de tre hovedaksene i lik avstand fra origo har vi en
isometrisk projeksjon.
• Cohen Sutherland sin algoritme kan utvides med to bit for å takle linjer i rommet.
13. Three-Dimensional Object Representation
• Boundary Representation (B-rep) og Space-partitioning Representations
• Den mest brukte teknikken for representasjon av 3D-objekter er å la et sett av plane polygoner
definere et volum.
14. Spline Representations
• Enhver kurve som beskrives ved et parametrisk polynomuttrykk pålagt endebetingelser blir kalt
for en splinekurve.
• En splinekurve spesifiseres ved å angi et sett av kontrollpunkter som tilnærmes av
kurvesegmenter slik at disse enten interpolerer eller approksimerer kontrollpunktene.
• Området kontrollpunktene former kalles for convex hull.
• For å sikre glatte overganger mellom kurvesegmentene stilles det kontinuitetskrav
(parametrisk eller geometrisk) i skjøtene mellom segmentene.
• Interpolerende kubiske splines anvendes mest for å angi objekt- og kamerabevegelser.
• Hermite Interpolasjon er en interpolerende kubisk kurve som benytter tangentvektorer i
skjøtene og som typisk oppfyller G^1 kontinuitet i skjøtene.
• Bezier Splines
◦ Brukes ved kurve- og flatedesign – enkle å
implementere.
◦ Kan tilpasses et hvilket som helst antall
kontrollpunkt og graden til kurven bestemmes
utifra det antall kontrollpunkt som skal
approksimeres.
◦ Interpolerer start- og sluttpunkt.
◦ Stigningstallet i starten og slutten av kurven
bestemmes ut i fra de to første og to siste
kontrollpunktene, noe som gjør at Bezier-kurver
med 4 kontrollpunkter (kubiske) ligner veldig
Hermite-kurven.
◦ For å få samme retning på skjøten mellom to segmenter må de fire kontrollpunktene ligge
på en linje.
◦ To sett av ortogonale Bezier-kurver kan brukes for å bestemme et objekts overflate.
• B-splines
◦ Den mest brukte splinetypen og som Bezier-kurver approksimerer den et sett av
kontrollpunkter.
◦ I motsetning til Bezier kan graden settes uavhengig av antall kontrollpunkter og gir lokal
kontrol over en sammensatt kurve.
◦ Lokal kontroll sikrer oss at kun noen kurvesegmenter påvirkes ved flytting av et
kontrollpunkt (stor fordel).
◦ Uniforme B-splines har periodiske blendingsfunksjoner.
◦ Kubiske periodiske B-splines har segmenter av grad 3 og d=4.
◦ Åpne uniforme B-splines er en blanding av uniforme og ikke uniforme B-splines.
◦ Ikke-uniforme B-splines har mulighet for å variere knutepunktsavstanden, og start- og
sluttpunkt kan interpoleres eksakt. Enkelt å legge inn nye kontrollpunkter. Bedre egenskaper
ved reduksjon av kontinuitet.
15. Other Three-Dimensional Object Representation
• Ved å ta utgangspunkt i en profil som følger en kurve i rommet har man definert en sweap.
• Med CSG (Constructive Solid Geometry) bygges modellen opp ved å kombinere enkle
primitiver som det skal utføres boolske operasjoner mellom.
• For å bestemme begrensningsflatene til CSG-modellene benyttes en teknikk kalt Ray Casting.
• En hierarkisk trestruktur, kalt octrees, kan brukes for å representere solide objekter.
•
•
Den to-dimensjonale varianten av octrees kalles quadtree, og her nummereres kvadrantene fra
0 til 3, mens for octrees fra 0 til 7.
BSP Trees likner på octrees, men vi deler verdenen vår i 2 med et tilfeldig valgt plan i objektet.
16. Visible-Surface Detection Methods
• Vi bestemmer synlige flater i en polygonmodell på følgende måter:
◦ For hver piksel i bildet bestem hvilket objekt som er nærmest observatøren.
◦ For hvert objekt i hele verdenen, bestem hvilke deler av objektet som ikke er dekket av
andre objekter nærmere observatøren.
• Back-face culling
◦ En enkel "object space"-algoritme som sjekker om man er foran eller bak et plan ved å se på
planligningen. Er den mindre enn 0 så er vi bak planet.
◦ For et enkelt konvekst polyhedron vil back-face culling fjerne samtlige bakflater (gjelder
ikke for scener med flere objekter).
• Z-buffer (dybdebufferalgoritme)
◦ Bildepresisjonsalgoritme som baserer seg på bruk av to buffer - rammebufferet for å lagre
det endelige bildet og et dybdebuffer for å holde oversikt dybdeverdiene for de synlige
flatene.
▪ Initialiser dybde- og rammebufferet slik at alle (x,y) = 1.0
▪ Gjennomgå et og et polygon og kalkuler dybden z for hver projiserte piksel.
▪ Hvis z er mindre enn dybdebufferet for (x,y), kalkuler overflatefargen og sett
dybdebufferet til z.
◦ En ulempe med denne algoritmen er at den kun samler fargeinformasjon for en flate per
piksel.
• A-buffer-algoritmen er en utvidelse av z-buffer-algoritmen som tar hensyn til transparente
flater og flater som delvis overlapper ved å opprettholde en linket liste for hver piksel.
• Scan-Line Method
◦ Utvidelse av algoritmen for skankonvertering av polygoner som genererer bildet ved å
skankonvertere linje for linje.
◦ Det genereres en kanttabell for alle ikke-horisontale kanter til polygonene projisert på
"view-planet". Tabellen sorteres på y-koordinat og deretter på x-koordinat.
◦ I tillegg behøves en polygontabell med informasjon om plankoeffisientene, skygge/fargeinfo og boolske flagg brukt i selve scankonverteringen.
• Painter's algorithm
◦ Polygonene "males" inn i rammebufferet i en rekkefølge bestemt av avstanden til
viewplanet. Algoritmen sorterer alle polygonene basert på dybden og tegner opp de med
størst avstand først.
◦ Algoritmen kan feile ved overlappende polygoner. Om nødvendig splittes polygonene.
• Warnock's algorithm deler inn det projiserte området gjentatte ganger inntil det er enkelt å
beslutte hva som skal vises.
• Ved traversering av et octree lagres fargeinformasjonen for "view-planet" i et quadtree.
• BSP-trær og dybdesortering er effektive algortimer når antall flater er få og overlappingen er
liten.
• Når det er lite overlapping i projeksjonen av en flate er skanlinjealgoritmen eller
områdeinndelingsalgoritmen effektive.
• Når antall flater blir mange vil dybdebuffer- eller octree-metoden være de mest effektive.
17. Illumination Models and Surface-Rendering Methods
• Bakgrunnslys
◦ Lysemitterende kilder (lyspære, solen..).
◦ Lysreflekterende kilder (vegger i rommet..).
◦ Summen av reflekterende kilder kalles bakgrunnslys.
• Lysintensitet I = Ka * Ia, hvor Ka er refleksjonskonstanten for materialet og Ia er
bakgrunnslysets intensitet.
• Lambert's cosinuslov sier at ved diffus refleksjon er intensiteten avhengig av innfallsvinkelen.
• Specular reflection opptrer ved blanke flater som glass og høypolert metall.
• Phong's lyssettingsmodell
◦ Intensiteten settes proporsjonal med cos^(ns)fi, hvor ns er en materialkonstant.
◦ I tillegg kommer materialets oppførsel avhengig av innfallsvinkelen inn i ligningen.
• Det skrives ofte separate ligninger for de tre komponentene RGB.
• For å behandle transparente flater riktig må lys trenge gjennom flatene (Snell's brytningslov).
• Ved valg av intensitetsnivåer i et system kan det virke naturlig å velge en lineær inndeling,
mens en logaritmisk skala er bedre (pga. øyets oppfattelse av intensitet) fordi den produserer en
oppslagstabell som ivaretar alle hensyn.
• Halvtoneteknikk brukes i avis og magasiner og går ut på at hver enhet trykkes med en sort
sirkel hvis størrelsen er omvendt proporsjonal med intensiteten.
• Halvtoneeffekten kan simuleres, på bekostning av oppløsning, ved å bruke rektangulære
områder av piksler.
• Dithering-teknikker brukes for å approksimere halvtonemønster uten tap av oppløsning.
• Renderingsteknikker for polygoner
◦ Lyssettingsmodeller er tidkrevende, så ofte brukes det heller forskjellige skanlinjeteknikker
som er utviklet for å bestemme intensiteten til samtlige piksler til et polygon.
◦ Konstant intensitet fungerer bra hvis polygonet er en flate i objektet og lyskilden
tilstrekkelig langt borte.
◦ Ved interpolert intensitetsbestemmelse beregnes intensiteten ut i fra verdiene til
knutepunktene i en trekant.
◦ Gouraud Shading
▪ Denne metoden fjerner diskontinuiteten mellom polygonene ved interpolasjon.
▪ Metoden finner en gjennomsnittsnormalvektor for hvert enkelt knutepunkt.
▪ Deretter finner man intensiteten i henhold til en lyssettingsmodell og det brukes lineær
interpolasjon.
◦ Phong Shading
▪ Skiller seg fra Gouraud ved at vi nå interpolerer normalvektoren og bruker den i
beregning av intensiteten, noe som gir en langt bedre gjengivelse av speilende
refleksjon.
◦ Problemer med interpolert intensitetsbestemmelse
▪ Polygonsilhuetten vil være kantete
▪ Perspektivisk forstyrrelse
▪ Orienteringsavhengig
▪ Delt knutepunkt
◦ De fleste renderingssytemer baserer seg på polygon-approksimasjoner.
19. Color Models and Color Applications
• Lys er elektromagnetiske bølger innenfor et bestemt frekvensbånd.
• Hver frekvens svarer til en farge (hvorav mennesket kan skille mellom ca. 128 rene farger).
• En lyspære emitterer stråler i hele det synlige spekteret for å produsere hvitt lys.
• Dersom et spekter har en dominerende bølgelengde vil dette føre til at lyset oppfattes som om
det har en farge.
• Øyet vårt oppfatter hue (fargen), saturation (renhet), brightness (intensitet) og lightness
(reflektert intensitet).
• Ved å kombinere lys fra flere lyskilder med forskjellig dominerende bølgelengde kan en rekke
forskjellige farger produseres.
• CIE har definert tre standard primærfarger (eller energifordelinger) som kan representere
samtlige synlige farger. Disse fargene er matematiske beskrivelser som med positive bidrag kan
representere alle farger (Chromaticity-diagram).
• YIQ-modellen gjør det mulig å vise bilder ved hjelp av kun ett signal.
• CMY (Cyan, Magenta, Yellow) er komplementærfargene til RGB. Når de brukes som filter for å
trekke fra farge fra hvitt lys kalles de subtraksjonsprimitiver.
21. Global Illumination
• Ray-tracing
◦ Lysstråler sendes ut i verdenen og registrerer hvilket objekt strålen treffer først.
◦ Det genereres stråler i refleksjonsretning og refraksjonsretning (transparent materiale).
◦ Så følges strålen inntil et valgt nivå og resulterer i et binærtre.
◦ Det anvendes så standard lyssettingsmodell på alle flatene.
23. Algorithmic Modeling
• En fraktalmodell er generert ved prosedyrer fremfor funksjoner og kjennetegnes ved en viss
likhet på alle nivå samt et uendelig detaljeringsnivå på hvert punkt.
• En fraktal dannes ved gjentakelse av en transformasjonsfunksjon på punkter i rommet.
• Klassifikasjon
◦ "Self-similar" er fraktaler der deler av objektet er nedskalerte versjoner av hele objektet
(svært realistiske modeller).
◦ "Self-affine" benytter forskjellige skaleringsfaktorer i flere koordinatretninger (naturtro).
◦ "Invariant"-fraktalsett dannes ved bruk av ikke-lineære transformasjoner.
BACKFACE CULLING
---------------Samtlige flater som ikke er synlige for observatøren kan fjernes. Dette gjøres ved å sammenlikne
normalvektoren til flaten med synsretningen til observatøren. Peker disse samme vei kan flaten sløyfes.
Z-buffer
-------Z-buffer-algoritmen fungerer ved å benytte to buffer, et rammebuffer som lagrer det endelige bildet og
et dybdebuffer som holder oversikt over dybdeverdiene til flatene. Den gjennomgår et og et polygon og
kalkulerer dybden z for hver projiserte piksel. Er z nærmerer projeksjonsplanet kalkuleres
overflatefargen
og dybdebufferet settes til z.
ISOMETRISK PROJEKSJON
--------------------Parallell projeksjon som kjennetegnes ved at projeksjonsplanet skjærer de tre hovedaksene i lik avstand
fra
origo.
Parallell projeksjon brukes mye innenfor modellering da det er langt lattere å definere objekter når man
slipper å ta hensyn til den perspektiviske forkortningen.
TRE-PUNKTS PERSPEKTIVISK PROJEKSJON
----------------------------------En projeksjon der projeksjonsplanet skjærer samtlige tre hovedakser. Vi kan se dette ved at samtlige
linjer
parallelle til hovedaksene etter projeksjon vil ha et forsvinningspunkt.
BOUNDARY-REPRESENTASJON
----------------------Med dette menes et volum begrenset av flater. Andre representasjonsformer kan være octrees eller
CSG.
LOKAL KONTROLL
-------------Naturlige kubiske splines har ikke lokal kontroll, dvs. at hele kurven må regnes ut på nytt dersom et
kontrollpunkt endrer posisjon.
Hermite-kurve
------------De to første vektorene angir start- og sluttpunkt. De to andre angir de retningsderiverte i start og slutt
av kurven. C^1-kontinuitet får vi ved at de deriverte i skjøten har samme retning. Kurven interpolerer
også
start- og sluttpunkt.
Painter's algorithm
------------------Sorterer samtlige flater basert på dybde og "maler" ut den med størst dybde først, deretter den med nest
størt osv.
Den er ikke lineær og hastigheten er avhengig av antall flater og vil derfor bruke mye lenger tid hvis
antall
flater fordobles.
Teoretisk lysintensitet
----------------------En lyspære er ingen punktkilde, derimot har den utstrekning.
LYSREFLEKSJON
------------Diffus refleksjon har lik refleksjon i alle retninger og opptrer typisk på matte materialer. Spekular
refleksjon er
refleksjon speilt om normalvektoren og opptrer typisk for blanke materialer.
RAY-TRACING
----------"Ray-tracing" sender inn en stråle for hver piksel inn i vår virtuelle verden, treffer et objekt og ser på
lyspåvirkningen og eventuelle refleksjoner i dette punktet. Er materialet gjennomsiktig blir det i tillegg
definert
en refraksjonsretning. Samtlige bidrag summeres etter et visst nivå.
RGB-fargemodell
--------------Gjengivelse av farger på skjerm og papir er to fundamentalt forskjellige prosesser. Den ene er additiv
blanding,
mens den andre er subtraksjonsblanding.
HOMOGENE KOORDINATER
-------------------En utvidelse av de vanlige koordinatene slik at man kan representere samtlige transformasjoner på en
konsistent
måte. Gir store fordeler ved matrisemultiplikasjon.
CIE-kromatisitetsdiagram
-----------------------Et diagram som viser samtlige ikke-intensitetsavhengige farger. Vi kan finne komplementærfarger i
diagrammet ved
å se på linjer som skjærer gjennom hvitt i diagrammet.
PRESISJONSALGORITMER
-------------------Bildepresisjonsalgoritmer finner for hver piksel hvilken flate som ligger nærmest og denne bestemme
fargen til
pikselen. Objektpresisjonsalgoritmer sammenlikner objekter i rommet og finner hvem som ligger foran
og bak og
bruker dette for å tegne opp modellen.
BSP-trær
-------Binary Space Partitioning arbeider etter følgende prisnipp. Ta utgangspunkt i et vilkårlig plan i
objektet.
Alle deler av objektet som er på den siden som normalvektoren peker i defineres som utside og motsatt
de som
er på innsiden kalles for innside. Dette gjentas rekursivt inntil alle flatene i treet er behandlet.
Ved traversering av dette treet på en bestemt måte kan man foreta fjerning av skjulte linjer og flater ut i
fra
det definerte treet. Man spør seg ganske enkelt om observatør befinner deg på innsida eller utsida i
forhold til
den første valgte flata. Da vet man hvilken halvdel av treet som dekker den andre halvdelen av treet.
Ved å stille
det samme spørsmålet rekursivt nedover i treet er en fullstendig fjerning av skjulte flater gjennomført.