Forelesningsnotater SIF8039/ Grafisk databehandling

Slides:



Advertisements
Liknende presentasjoner
12.Studienreise nach Finnland,
Advertisements

Barns utvikling av algoritmer. (Fra Marit Johnsen Høines)
Kvinner og politikk Kvinnelig valgmobilisering i Nord-Norge: Glasstak eller etterslep? Marcus Buck.
1 NTNUs Multimediesenter 1.Integrasjon 2.Produksjon 3.Framtidsvisjon NTNUs Multimediesenter REN Medlemsmøte Trondheim 31. August 2005.
Når matematikk blir magisk
Litt mer om PRIMTALL.
Ti måter å ødelegge en CT-undersøkelse av halsen på
Hjemmeoppgave 1: Å høre etter NAVN: ……………………………….. DATO: ……………………….
Grafisk design Visuell kommunikasjon
Teknologi for et bedre samfunn 1 Asbjørn Følstad, SINTEF Det Digitale Trøndelag (DDT) Brukervennlig digitalisering av offentlig sektor.

”Jeg reiser smart”-kampanjen 26. april – 12. juni 2010
7. Fysisk arbeidsmiljø Jeg er fornøyd med den ergonomiske utformingen av arbeidsplassen min Jeg er fornøyd med inneklimaet på arbeidsplassen.
1 Arbeidssted, bruk av fasiliteter og - mengde 5.
23 Finn ligningen for det planet  som inneholder linja
Møre og Romsdal. 2 Ligger det et bedehus eller et kristelig forsamlingshus (ikke kirke) i nærheten av der du bor? (n=502) i prosent.
Monopolistisk konkurranse og oligopol
NRKs Profilundersøkelse NRK Analyse. Om undersøkelsen • NRK Analyse har siden 1995 gjennomført en undersøkelse av profilen eller omdømmet til NRK.
Øvingsforelesning 9 Flytnettverk, maksimum flyt og maksimum bipartitt matching Jon Marius Venstad Redigert og forelest av Gleb Sizov.
2. Planter. Del 1 (1–4). Nivå 2. Side 19–24
Kap 05 Betinget sannsynlighet
Fra forelesningene om involveringspedagogikk Et utviklingsarbeid Philip Dammen Manuset er under arbeid.
Noen hoderegningstriks
Gjenfinningssystemer og verktøy II
Kapittel 14 Simulering.
Forelesningsnotater SIF8039/ Grafisk databehandling
Forelesningsnotater SIF8039/ Grafisk databehandling
Forelesningsnotater SIF8039/ Grafisk databehandling
Øvingsforelesning 9 Flytnettverk, maksimum flyt og
Omlasting og direkteleveranser. LOG530 Distribusjonsplanlegging 2 2 Vi har nå utvidet nettverket med direkteleveranser. Distribusjonen går enten via lagrene.
P-MP modeller. LOG530 Distribusjonsplanlegging 2 2 Det skal opprettes p fasiliteter (lager) for å betjene en gitt mengde kunder. Kundenodene er også potensielle.
The Postmans Problem. LOG530 Distribusjonsplanlegging 2 2 Mista har fått i oppdrag å vedlikeholde veiene i landsdelen. Dette er et eksempel på den klassiske.
P-CP modeller. LOG530 Distribusjonsplanlegging 2 2 Det skal opprettes p fasiliteter for å betjene en gitt mengde kunder. Kundenodene er også potensielle.
Oppgave 1 Gitt ligningssystemet x + ay + z =
Highlights fra markedsundersøkelse Utarbeidet av Inger Marie Brun,
R ESULTATER M UNKERUD SKOLE 2012 Nasjonale prøver 5.-8.trinn 2012 Brukerundersøkelsen 2012.
Klargjøring fra forrige gang
Kap 06 Diskrete stokastiske variable
Norsk Finansbarometer 2012 Norsk Finansbarometer 2012 Norsk Finansbarometer 2012 TNS Gallup Oslo, 2012 Det norske skadeforsikrings- markedet og dets bevegelser.
Empiriske metoder Oppgaveanalyse, observasjon
Forelesningsnotater SIF8039/ Grafisk databehandling
Klinisk skjema nyrebiopsiregisteret
Vokabular barneoppdragelse (m) bleie (f/m) blikk (n) bortskjemt (adj.)
Statistikk på 20 2 timer PSY-1002
Mandag 8. November Powerpoint..
SINTEF Teknologi og samfunn PUS-prosjektet Jan Alexander Langlo og Linda C. Hald 1 Foreløpig oppsummering – underlag for diskusjon på PUS-forum
GRØNNALGER BRUNALGER RØDALGER
1 BM-dagen 29.okt BM1 Fysisk miljøplanlegging Studieprogram for Bygg- og miljøteknikk Meny Prosjektoppgaven Arealbruk og befolkning Transport og.
Anvendt statistisk dataanalyse i samfunnsvitenskap
Eiendomsmeglerbransjens boligprisstatistikk Oktober 2010
Eiendomsmeglerbransjens boligprisstatistikk Juni 2010 Norges Eiendomsmeglerforbund og Eiendomsmeglerforetakenes Forening ECON Poyry og FINN.
Eiendomsmeglerbransjens boligprisstatistikk Februar 2011 Norges Eiendomsmeglerforbund og Eiendomsmeglerforetakenes Forening ECON Poyry og FINN.
Velkommen! 4/4/2017.
Fra forelesningene om involveringspedagogikk Et utviklingsarbeid Philip Dammen Manuset er under arbeid.
Virksomhetsrapport Oktober Innhold 1. Oppsummering 2. Hovedmål 3. Pasient 5. Aktivitet 4. Bemanning 6. Økonomi 7. Klinikker 2.
1 Forelesningsnotater SIF8039/ Grafisk databehandling Notater til forelesninger over: Kapittel 3: ”Input and Interaction” i: Edward Angel: ”Interactive.
Avlevering i praksis KDRS-samling
INF3100 – – Ellen Munthe-Kaas Indeksering UNIVERSITETET I OSLO © Institutt for Informatikk Utvalgte animerte lysark: lysark nr. 7, 8, 9, 10,
Virksomhetsrapport August Innhold 1. Oppsummering 2. Hovedmål 3. Pasient 5. Aktivitet 4. Bemanning 6. Økonomi 7. Klinikker 2.
1 Trivsel Utvalg Trives svært godt Trives godt Trives litt Trives ikke noe særlig Trives ikke i det hele tatt Snitt Trivsel Brannfjell skole (Høst 2014)
Dagligbankundersøkelsen Fakta Dagligbankundersøkelsen intervju Befolkning 15 år + TNS Gallup Ansvarlig for grafene Bente Pettersen Roar.
Økoprofil - en miljøvurderingsmetode
Veivalgsanalyse etter Sørlandsmesterskapet i lang (klassisk) distanse 2004.
Kapittel 1, oppgave i) Sett inn preposisjoner eller adverb som passer.
Dagligbankundersøkelsen Fakta Dagligbankundersøkelsen intervju Befolkning 15 år + TNS Gallup Forfatter Bente Pettersen Roar Thorvaldsen.
1 Forelesningsnotater SIF8039/ Grafisk databehandling Notater til forelesninger over: Kapittel 1: ”Graphics Systems and Models” i: Edward Angel: ”Interactive.
Befolkning og arbejdsmarked 7. Mikroøkonomi Teori og beskrivelse © Limedesign
Sett inn preposisjoner eller adverb som passer.
© Thomas Rieber-Mohn - INSTITUTT FOR RETTSINFORMAIKK – UNIVERSITETET I OSLO OPPHAVSRETT OG BESLEKTEDE RETTIGHETER - NÆRSTÅENDE.
GODT NYTT ÅR ! Hilsen Styret i NEKF TIL
Utskrift av presentasjonen:

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- 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

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 2 0100 1 0110 1

Linjeklipping Cohen-Sutherlands algoritme Liang-Barskys 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:

Linjelikningen, parametrisk form

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

Linjeklipping Liang-Barskys algoritme: i i 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: i 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) v n (”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 AoI AoI 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: AoI AoI AoI AoI 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 3 z3 COP z1 z z1 z3 piksel skjerm z-verdi svarende til pikslet i bildelageret Pikslet i bildelageret COP Etter polygon 1 z1 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 Piksel Tilleggsstråler 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 P Q Q 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 P P Q 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: 1 2 3 Problemsituasjoner: y z 1 2 3 x

Synlige flater Dybdesorteringsalgoritmen: Problemsituasjoner: Situasjon 1 avklares i greitt i samsvar med algoritmen ved hjelp av oppdeling Situasjon 2 krever at det garderes mot evigvarende syklisk ombytting av polygonene Polygonene kan utstyres med et flagg som settes dersom det blir flyttet til første plass i listen Dersom det på nytt forsøkes flyttet til første plass, iverksettes i stedet oppdeling Situasjon 3 avklares også greitt i samsvar med algoritmen ved hjelp av oppdeling Men det grønne polygonet kunne uten videre ha vært ”malt” først Den mere primitive Painters algoritme vil ha utført dette korrekt

Scankonvertering av linjer Rett linje: Problem: hvilke piksler skal ”slås på”

Scankonvertering av linjer Rett linje: Antar pikselet midt i ruten Stigningsforhold 0<=m<=1 Går enhetssteg i x-retningen

Scankonvertering av linjer Rett linje: m>1 Med enhetssteg i x-retningen: linje uten sammen- heng Enhetssteg i y-retningen

Scankonvertering av linjer Rett linje: Slår på det pikslet som er nærmest den matematiske linjen

Scankonvertering av linjer DDA-algoritmen:

Scankonvertering av linjer DDA-algoritmen: Digital Differtial Analyzer Grei og effektiv Krever en addisjon av flyttall for hvert punkt Andre algoritmer kan unngå flyttallsaritmetikken som erstattes med en kombinasjon av: Heltallsaddisjon Valg Kjente algoritmer av denne typen: Bresenhams algoritme Midtpunktsalgoritmen

Scankonvertering av linjer Bresenhams algoritme: Startforutsetninger:

Scankonvertering av linjer Bresenhams algoritme: Pikselet (xk,yk) er det siste pikselet som ble ”slått på”. Det er to kandidatpikseler for det neste å ”slå på”: (xk+1,yk) og (xk+1,yk+1) (xk+1,yk+1) (xk,yk) (xk+1,yk)

Scankonvertering av linjer Bresenhams algoritme: (xk+1,yk) a (xk,yk) b Definerer desisjonsvariabelen d=a-b d > 0 nedre piksel velges d <= 0 øvre piksel velges (xk+1,yk+1)

Scankonvertering av linjer Bresenhams algoritme:

Scankonvertering av linjer Bresenhams algoritme: Videre pikselvalg er avhengig av hvilket valg som ble gjort på ”nettlinjen” xk+1: (xk+2,yk+2) Dersom (xk+1,yk) ble valgt, er de nye kandidatene: (xk+2,yk) og (xk+2,yk+1) Dersom (xk+1,yk+1) ble valgt, (xk+2,yk+1) og (xk+2,yk+2) (xk+1,yk+1) (xk+2,yk+1) (xk,yk) (xk+2,yk) (xk+1,yk)

Scankonvertering av linjer Bresenhams algoritme:

Scankonvertering av linjer Bresenhams algoritme: Ny desisjonsverdi kan altså finnes ved heltallinkrementasjon av den forrige: Startverdien d1 er (setter inn for c):

Scankonvertering av polygoner Fundamentalt spørsmål: Polygonet beskrives ved hjelp av hjørner og kanter: Hva er innside og hva er utside??

Scankonvertering av polygoner Paritetsregelen for innside - utside-bestemmelse Starter fra et sted utenfor polygonet Initierer en kantkrysseteller til 0 Går bortover scanlinjen og teller opp kantkryssetelleren med 1 for hver kant som krysses Vi er inne i polygonet når kantkryssetelleren har som verdi et odde tall og utenfor når den er et partall. Scanlinje Polygon

Scankonvertering av polygoner Vindingstallet for innside - utside-bestemmelse: Polygonkantene gies retning Sender ut en stråle fra punktet Initierer en teller til 0 Går fra punktet og teller krysninger med polygonkanten: Teller +1 når kantretningen er mot høyre Teller -1 når kantretningen er mot venstre Punktet er inne i polygonet når telleren er forskjellig fra 0 og utenfor når den er lik 0 Polygon P Scanlinje

Scankonvertering av polygoner Algoritmer: z-bufferalgoritmen ”flood-fill”-algoritmen scanlinjealgoritmen

Scankonvertering av polygoner ”Flood fill” Har tegnet en kontur Skal fylle polygonet med farge Velger et ”frø” inne i polygonet Ser på et ”firer-naboskap”til frøet:

Scankonvertering av polygoner ”Flood fill” Rekursiv algoritme:

Scankonvertering av polygoner ”Flood fill” Hva kan skje dersom en bruker er ”åtter-naboskap” i stedet for ”firer-naboskapet”?

Scankonvertering av polygoner Scanlinjealgoritmen: Kantliste (ET) Kantpost 16 nil ytopp C nil xbunn 14 nil 1/m nil y nil ……. nil nil nil 8 B BC nil nil nil nil 3 AC AB A nil nil 1 4 13 16 x

Scankonvertering av polygoner Scanlinjealgoritmen: Sorter kantene etter nedre y-verdi For hver y-verdi (scanlinje) lag en liste av kanter sortert etter økende nedre x-verdi. Samlingen av disse listene utgjør kantlisten (Edge Table - ET) For hver scanlinje: Overfør kantposten for vedkommende scanlinje til den aktive kanttabellen (Active Edge Table - AET) AET ytopp Post i AET xaktuell AC AB 1/m …….

Scankonvertering av polygoner Scanlinjealgoritmen: For hver scanlinje - forsatt: Sørg for at AET forblir sortert med hensyn på xaktuell. Fyll scanlinjen ved bruk av paritetsregelen Øk y med 1 (neste scanlinje) Fjern elementer fra AET der y=ytopp (kanten er ferdigbehandlet) Inkrementer xaktuell for hver av kantene i AET Sorter om nødvendig AET med hensyn på xaktuell.

Scankonvertering av polygoner Scanlinjealgoritmen: 16 C 14 Singularitet i B y 8 B Scanlinje 3 A 1 4 13 16 x

Scankonvertering av polygoner Scanlinjealgoritmen: Situasjoner med singularitet: Scanlinjen treffer to kanter i hjørnet - PROBLEM

Scankonvertering av polygoner Scanlinjealgoritmen: Forslag til remedium: Ta bort det øverste pikselet fra hver av kantene eller Forskyv scanlinjen litt i vertikal retning slik at den ikke treffer rett i hjørnene Undersøk om det er kant både over og under scanlinjen og ta i så fall hensyn til det.

Scankonvertering av polygoner Scanlinjealgoritmen: 16 Kan kombineres med det å få fram hvilke flater som er synlige C 14 I H y F G 8 B D 3 E A 1 4 13 16 x

Scankonvertering av polygoner Scanlinjealgoritmen: Kantliste (ET) Kantpost nil ytopp HI xbunn nil zbunn nil nil x GI GH zx nil zy nil BC Flate1 nil Flate2 DF ……. nil DE EF AC AB nil nil

Scankonvertering av polygoner Scanlinjealgoritmen: Ved samtidig scankonvertering av flere polygoner trengs en liste over polygoner der scankonverteringen (for den aktuelle scanlinjen) er suspendert fordi konverteringen av et foranliggende polygon har tatt over. Det vil være hensiktsmessig at denne liste er sortert etter fallende z-verdi (vi ser mot z-aksen slik z-verdien faller med økende avstand fra øyepunktet) i det punktet der siste valg av polygon å scanne er gjort. (Siden polygonene må være slik oppdelt at de ikke kan skjære gjennom hverandre, vil de polygonene som er i listen fra før, ikke byttet plass ved sorteringen.)

Scankonvertering av polygoner Scanlinjealgoritmen: Tabellen over suspenderte (”for øyeblikket ikke aktive” polygoner) kan kalles PPT (Passive Polygons Table) For å unngå omstendelige behandling av tom PPT, kan en definere hele skjermarealet som et rektangulært polygon med bakgrunnsfarge Skjermrektangelets kanter legges i kant-tabellen (ET) sammen med de øvrige polygonene og med fast z-verdi satt til maksimal avstand (det negative tallet med størst tallverdi). Skjermrektangelet gjøres et ett piksel høyere enn skjermen

Scankonvertering av polygoner Scanlinjealgoritmen: Bakgrunns- polygonet - (skjermen) 16 C Situasjonen for scanlinje 7 - snitt gjennom polygonene 14 I H Polygonet DEF y F G 8 B Polygonet ABC D 3 E A x 5 10 15 z 1 4 13 16 x

Scankonvertering av polygoner Scanlinjealgoritmen: 16 C 14 I H y AET for scanlinje 7: - venstre skjermkant (bakgrunnspolygonet) - kant DF - kant AC - kant EF - kant AB - høyre skjermkant F G 8 B D 3 E A 1 4 13 16 x

Scankonvertering av polygoner Scanlinjealgoritmen: For eksempelet gjelder: For hver gang det skal velges kant å tegne fra (KANT1), er innholdet i PPT: PPT for x=1: - bakgrunnspolygonet PPT for x=5: - polygon ABC - polygon DEF - bakgrunnspolygonet PPT for x=12: - bakgrunnspolygonet PPT for x=4: - polygon DEF - bakgrunnspolygonet PPT for x=10: - polygon ABC - bakgrunnspolygonet PPT for x=16: (tom)

Scankonvertering av polygoner Scanlinjealgoritmen: Det antas at ”back-face culling” brukes til å eliminere flater som vender bort Alle kanter er i utgangspunktet felles for to flater. Kanter som ikke er felles for to flater (for eksempel på grunn av ”back-face culling) defineres til å ha bakgrunnen på sin andre side For termineringsformål defineres kantene til bakgrunns-rektangelet til bare å avgrense dette

Scankonvertering av polygoner Scanlinjealgoritmen: En algoritme for samtidig bestemmelse av synlige flater og polygonfylling kan være: Sorter alle polygonkanter etter nedre y-verdi For hver y-verdi (scanlinje) lag en liste (kantliste - ET) av kanter sortert etter nedre x-verdi Initier en tom aktiv kanttabell (AET) For hver scanlinje: Initier en tom liste over ”for øyeblikket ikke aktive” polygoner (”passive” polygoners tabell - PPT) Overfør nye kantposter for vedkommende scanlinje til den aktive kanttabellen (AET) slik at tabellen forblir sortert med hensyn på xaktuell Finn første kant i AET La denne kanten være KANT1

Scankonvertering av polygoner Scanlinjealgoritmen: (Forsatt for hver scanlinje 1:) Gjenta så lenge det er flere kanter i AET Finn neste kant i AET La denne kanten være KANT2 Tegn med valgt farge- og skyggeleggingsmodell fra KANT1 til KANT2 for polygonet som starter (eller fortsetter) fra KANT1 Oppdater z-verdiene svarende til KANT2 for hvert av polygonene i PPT Legg polygonet som starter fra KANT2 inn på rett plass i sortert orden i PPT

Scankonvertering av polygoner Scanlinjealgoritmen: (Forsatt for hver scanlinje 2:) Dersom KANT2 ikke er avslutningskanten til polygonet som nettopp er tegnet mellom KANT1 og KANT2: Legg polygonet tilbake på rett plass i sortert orden i PPT Ta det polygonet som ligger først i PPT ut La KANT1 gjelde for dette polygonet Øk y med 1 (neste scanlinje) Fjern kanter fra AET der y=ytopp (kanten er ferdigbehandlet) Inkrementer xaktuell og zaktuell for hver av kantene i AET Sorter om nødvendig med hensyn på xaktuell

Aliaseffekten ”Sagtannet” linje eller kant

Antialiasing Linjen har bredde

Antialiasing Gir pikslene intensitet eller blandings- farge etter hvor stor del av pikselet som er dekket av linjen

Farger Problemer å takle ved bruk av farger: Definere fargen Interpolere farger Forskjellige CRT-karakteristikker Fosfor Oppløsning Pikselstørrelse Akspektforhold Papir- og toneregenskaper

RGB-fargerommet

RGB fargemodellen RGB-rommet: B R=(1,0,0) C G=(0,1,0) 1 B=(0,0,1) Y=(1,1,0) C=(0,1,1) M=(1,0,1) W=(1,1,1) Svart=(0,0,0) C 1 M W 1 G 1 Y R Problem: hensiktsmessig måte til å velge koordinater

Farger ved menyvalg Microsoft PowerPoint

Grunnmodell Fargenyanse Metning Intensitet Energitetthet e2 Dominant bølgelengde e1 400 nm fiolett 700 nm rød Bølgelengde

Farger ved menyvalg Microsoft PowerPoint

HLS-modellen Hue Lightness Saturation

CIE kromasitetsmodell

Farge-gamut Bare en del av alle synlige farger kan fram- bringes ved hjelp av RGB-primærfarger

Øyets følsomhet Øyets lysfølsomhet Spektral følsomhet for hver av typene av tapper Øyets lysfølsomhet

Tri-stimuli primærfarger Relativ mengde av tri-stimuli-komponentene for å frambringe et fargeinntrykk (spektral farge)

CIE’s matchefunksjoner Syntetiske funksjoner definert som lineære kombinasjoner av de målte matchefunksjonene for tri-stimuli primærfargene Hensikt: ingen negative bidrag fra hver av de tre syntetiske primærfargene X, Y og Z som defineres ved hjelp av matche- funksjonene

CIE’s primærfarger

CIE kromasitetsdiagram

Forskjellige utstyrsenheter vil ha forskjellige grunn- farger

Bruk av CIE-modellen For en utstyrsenhet måles de tre primærfargene En transformasjonsmatrise for omregning til X, Y og Z-komponenter stilles opp Matrisen kan blant annet brukes til omregning av fargekoordinater for en utstyrsenhet til en annen Ikke alltid mulig å gjengi fargene på en enhet nøyaktig likt på en annen