forelesningsnotater sif8039/ grafisk databehandling

Post on 11-Jan-2016

56 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

1

Forelesningsnotater SIF8039/Grafisk databehandlingNotater 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 iverdens-

koordinater

Modell i kanoniske

betraktnings-koordinater

Modell i kamera-

koordinater

Trans-formasjon

Trans-formasjon

Trans-formasjon

Modell i normaliserte

utstyrs-koordinater

Bildei

”framebuffer”

Klipping ograsterering

Bilde tilskjerm

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:

.1

medverdien - xreinkremente å ved

linje mendefor vedkom plotte å piksel scanlinjes neste finne kan vi

scanlinje, tilscanlinje fralinjen huske""kan vidersomat medfører Det

11

1ΔΔ

:neste tilscanlineen fra 1Δ medøker y at slik ossordner Vi

:linjeen for Likningen

1212

mx

my

mx

xm)xm(xyyy

y

hmxy

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

11

11

11

:nårpunkt et Beholder

z

y

x

10

Linjeklipping

11

Linjeklipping

X

X

X

X

X

12

Linjeklipping Cohen-Sutherlands algoritme for 2D

1001

011001000101

00000001 0010

10101000

y=ymaks

x=xmin x=xmaks

y=ymin

b0

b1

b2b3

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 ellers 0 ,xfor x 1

ellers 0 ,xfor x 1

ellers 0 ,yyfor 1

ellers 0 ,yyfor 1

min3

maks2

min1

maks0

3210

b

b

b

b

bbbb

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

1001

011001000101

00000001 0010

10101000

1

2

3

1

2

1

2

3

4

1

1

5

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:

)()(

)()(

:ormkomponentf På

)()1()(

121

121

12121

yyyy

xxxx

pppppp

18

Linjelikningen, parametrisk form

p1

p2

0

1

0

110

)()( 121 pppp

19

Linjeklipping Liang-Barskys algoritme:

– Beregner parameterverdiene for linjens skjæringer med kantene til klippevinduet:

ute innen1

E

L

E

E

EL L

Lp1

p2p2

p1

n4

n3

n2

skjæring utgående""en

skjæring inngående""en

L

E

20

Linjeklipping Liang-Barskys algoritme:

– Hjelpestørrelser:

– Linjen parallell med kant dersom:

– Linjen er da i sin helhet på utsiden av kant dersom:

14124

min13213

12122

min11211

yyqyyr

yyqyyr

xxqxxr

xxqxxr

max

max

i0ir

i0iq

21

Linjeklipping Liang-Barskys algoritme:

– Beregner parameteren for skjæring med hver av klippevinduets kanter:

– Skiller mellom inn- og utpassering:

i

ii r

q

gutpasserin - 0

nginnpasseri - 0

i

i

r

r

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:

LE

LE

E

0

1

utsiden påtet Parallelli

L

),1(

),0(

LL

EE

min

max

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:

24

23

22

21

'

'

'

'

yyq

yyq

xxq

xxq

max

min

max

min

i

)0'&(&)0( ii qq

24

Polygonklipping

1

2

34

25

Polygonklipping

1

2

34

Første steg

26

Polygonklipping

1

2

34

Andre steg

27

Polygonklipping

1

2

34

Tredje steg

28

Polygonklipping

1

2

34

Fjerde steg

29

Polygonklipping

1

2

34

Ferdig

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.

n

v

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

A AoIAoIAoIA

AoIA

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

AoIAoI

AoI

37

Synlige flater

z-bufferalgoritmen

COP

1

2

3

Pikslet i bildelageret

z-verdi svarende til pikslet i bildelageret

z1

z3

z1

Etter polygon 1

Etter polygon 2

Etter polygon 3

z

0

z3

z1

z2

Polygonene behandlesi ”tilfeldig rekkefølge 1,2,3

piksel

skjerm

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

Flere tilleggsstråler

Piksel

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:

0 dczbyax

12

12

12

zzz

yyy

xxx

og 2 1 pp

0 zcybxa

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)

0y

1x

0 zca

c

az

x

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:

z x x

y

44

Synlige flater

Dybdesorteringsalgoritmen:

zx

Projeksjonsplan

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:

z x

P

Q

P helt bak planet somQ ligger i

z x

PQ

Q helt foran planet somP ligger i

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:

z x

QP

Q helt bak planet somP ligger i

z x

P Q

P helt foran planet somQ ligger i

50

Synlige flater

Dybdesorteringsalgoritmen:– Problemsituasjoner:

1 2 3

y

x

zy

51

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

52

Scankonvertering av linjer

Rett linje:

Problem: hvilke piksler skal ”slås på”

x

y

xx

yym

yxyx

hmxy

12

12

2211

:orholdStigningsf

),( og ),(

:rEndepunkte

53

Scankonvertering av linjer

Rett linje:– Antar pikselet midt

i ruten– Stigningsforhold

0<=m<=1– Går enhetssteg i

x-retningen

54

Scankonvertering av linjer

Rett linje:– m>1– Med enhetssteg i

x-retningen:

linje uten sammen-

heng

– Enhetssteg i

y-retningen

55

Scankonvertering av linjer

Rett linje:– Slår på det pikslet

som er nærmest den

matematiske

linjen

56

Scankonvertering av linjer DDA-algoritmen:

1

:1 på sprang i resinkremente

10

:orholdetstigningsffor r Forutsette

ordinater.heltallsko tilav rundes

),( og ),(

nekoordinateEndepunkts

2211

x

x

m

yxyx

mxmyyy

y

yxxmy

y

gmlny

gmlgmlnyny

:ringinkremente

vedberegneskan at si Det vil

)(

:etter beregnes for Ny verdi

}

m;y

); farge , )y round( x,e_pixel( writ

{ ) ix x2;ix x1;ix (for

y1;y

:blir Algoritmen

57

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

58

Scankonvertering av linjer Bresenhams algoritme:

– Startforutsetninger:

1

:1 på sprang i resinkremente

ordinaterheltallsko tilav rundes

),( og ),(

nekoordinateEndepunkts

10

:tintervalle iligger orholdet Stigningsf

:likningen vedbeskrives som linjerett en Gitt

2211

x

x

yxyx

m

hmxy

59

Scankonvertering av linjer

Bresenhams algoritme:

(xk,yk)

(xk+1,yk+1)

(xk+1,yk)

Pikselet (xk,yk) er det siste pikselet somble ”slått på”.

Det er to kandidatpikseler for det nesteå ”slå på”:

(xk+1,yk) og

(xk+1,yk+1)

60

Scankonvertering av linjer Bresenhams algoritme:

(xk,yk)

(xk+1,yk+1)

(xk+1,yk)

a

bDefinerer desisjonsvariabelen d=a-b

d > 0 nedre piksel velgesd <= 0 øvre piksel velges

61

Scankonvertering av linjer Bresenhams algoritme:

heltall. ikkehet alminnelig i er heltall,et er isnødvendigv

ikke og , konstanten iinngår Siden heltall. for uttrykket i leddene

første tode ogsåer heltall,er ngsvisforutsetni og bådeSiden

. og av uavhengigkonstant en er cder

)(2)(2)('

: ariabeldesisjonsvny en Definerer

12)1(22

:for gir Dette

)1(

)1(1)1(

:uttrykkeskan og

)1(

:er 1 "nettlinjen" påverdien -y nøyaktigeDen

2211

121212

c

hchd'

yxyxyx

yx

cyyxxxydxxd

d'

hxmyd

d

yhxmyyb

hxmyyya

ba

hxmy

x

k k , , , ,

kk

kk

kk

kkk

kkk

k

k

62

Scankonvertering av linjer

Bresenhams algoritme:– Videre pikselvalg er avhengig av hvilket valg som ble gjort

på ”nettlinjen” xk+1:

(xk+2,yk+2)

(xk+2,yk+1)

(xk+2,yk)(xk+1,yk)

(xk+1,yk+1)

(xk,yk)

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,er de nye kandidatene:(xk+2,yk+1) og (xk+2,yk+2)

63

Scankonvertering av linjer

Bresenhams algoritme:

)(2)(2'))(1(2))(1(2'

:blir 2 nettlinje"" på for valg didesjonsverNy

.)0( valgtble )1,1(

)(2'))(1(2)(2'

:blir 2 nettlinje"" på for valg didesjonsverNy

.)0( valgtble ),1(

121212121

1212121

yyxxdcyyxxxyd

x

dyx

yydcyyxxxyd

x

dyx

kkkk

k

kkk

kkkk

k

kkk

64

Scankonvertering av linjer Bresenhams algoritme:

– Ny desisjonsverdi kan altså finnes ved heltallinkrementasjon av den forrige:

– Startverdien d1 er (setter inn for c):

)(2)(2

:0

)(2

:0

12121

121

yyxxdd

d

yydd

d

kk

k

kk

k

)(2)(

)(2)()(2)(2)(2)(2

)(2)()(2)(2)(2)(2

)(2)()(2)(2)(2

1212

12121212112121

12121212112121

1212121211211

yyxx

xxhxxyyyyxxxhyyx

xxhxxxxmyyxxxhxxmx

xxhxxxxmyyxxxyd

65

Scankonvertering av polygoner

Fundamentalt spørsmål:– Polygonet beskrives ved hjelp av hjørner og kanter:

Hva er innside og hva er utside??

66

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

67

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

P Scanlinje

Polygon

68

Scankonvertering av polygoner

Algoritmer:– z-bufferalgoritmen– ”flood-fill”-algoritmen– scanlinjealgoritmen– –

69

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:

70

Scankonvertering av polygoner

”Flood fill”– Rekursiv algoritme:

}

}

); 1y x,fyll(

); 1-y x,fyll(

);y 1, xfyll(

);y 1,- xfyll(

); fyllFarge y, x,l(sett_Pikse

{ )) fyllFarge ! )y x,(les_Piksel &(& ) kantFarge ! )y x,(les_Piksel ( ( if

{ )y int int x; fyll( void

71

Scankonvertering av polygoner

”Flood fill”Hva kan skje dersom en brukerer ”åtter-naboskap” i stedet for”firer-naboskapet”?

72

Scankonvertering av polygoner Scanlinjealgoritmen:

1 164 13

3

8

14

16

x

y

A

B

C

nilnil

nilnilnilnil

nilnilnilnilnilnilnilnil

ABAC

BC

Kantliste (ET)ytopp

1/m

xbunn

…….

Kantpost

73

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

ABAC

ytopp

1/m

xaktuell

…….

Post iAET

74

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.

75

Scankonvertering av polygoner Scanlinjealgoritmen:

1 164 13

3

8

14

16

x

y

A

B

CSingularitet i B

Scanlinje

76

Scankonvertering av polygoner

Scanlinjealgoritmen:– Situasjoner med singularitet:

– Scanlinjen treffer to kanter i hjørnet - PROBLEM

77

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

eller

• Undersøk om det er kant både over og under scanlinjen og ta i så fall hensyn til det.

78

Scankonvertering av polygoner Scanlinjealgoritmen:

1 164 13

3

8

14

16

x

y

A

B

CI H

GF

E

D

Kan kombineres med det å fåfram hvilke flater som er synlige

79

Scankonvertering av polygoner Scanlinjealgoritmen:

nilnil

nil

nil

nilnil

nilnilnil

nil

ABAC

BC

Kantliste (ET)

…….

Kantpost

zbunn

x zx

ytopp

xbunn

Flate2

Flate1

HI

GHGI

DF

EFDE

zy

80

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

81

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

82

Scankonvertering av polygoner Scanlinjealgoritmen:

1 164 13

3

8

14

16

x

y

A

B

CI H

GF

E

D

zx

Situasjonen for scanlinje 7 -snitt gjennompolygonene

5 10 15

Polygonet ABC

Polygonet DEF

Bakgrunns-polygonet -(skjermen)

83

Scankonvertering av polygoner Scanlinjealgoritmen:

1 164 13

3

8

14

16

x

y

A

B

CI H

GF

E

D

AET for scanlinje 7:- venstre skjermkant (bakgrunnspolygonet)- kant DF- kant AC- kant EF- kant AB- høyre skjermkant (bakgrunnspolygonet)

84

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=16:(tom)

PPT for x=10:- polygon ABC- bakgrunnspolygonet

PPT for x=12:- bakgrunnspolygonet

PPT for x=5:- polygon ABC- polygon DEF- bakgrunnspolygonet

PPT for x=4:- polygon DEF- bakgrunnspolygonet

85

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

86

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

87

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

88

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

89

Aliaseffekten

”Sagtannet” linje eller kant

90

Antialiasing

Linjen har bredde

91

Antialiasing

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

92

Farger

Problemer å takle ved bruk av farger:– Definere fargen– Interpolere farger– Forskjellige CRT-karakteristikker

• Fosfor

• Oppløsning

• Pikselstørrelse

• Akspektforhold

– Papir- og toneregenskaper

93

RGB-fargerommet

94

RGB fargemodellen

R

G

B

1

1

10

Y

C

MW

RGB-rommet:R=(1,0,0)G=(0,1,0)B=(0,0,1)Y=(1,1,0)C=(0,1,1)M=(1,0,1)W=(1,1,1)Svart=(0,0,0)

Problem: hensiktsmessig måte til å velge koordinater

95

Farger ved menyvalg

MicrosoftPowerPoint

96

GrunnmodellEnergitetthet

e2

e1

Bølgelengde400 nmfiolett

700 nmrød

Dominantbølgelengde

FargenyanseMetningIntensitet

97

Farger ved menyvalg

MicrosoftPowerPoint

98

HLS-modellen

HueLightnessSaturation

99

CIE kromasitetsmodell

100

Farge-gamut

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

101

Øyets følsomhet

Spektral følsomhet forhver av typene av tapper

Øyets lysfølsomhet

102

Tri-stimuli primærfarger

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

103

CIE’s matchefunksjoner

Syntetiske funksjonerdefinert som lineære kombinasjoner av de målte matchefunksjonene for tri-stimuli primærfargene

Hensikt: ingen negative bidragfra hver av de tre syntetiske primærfargene X, Y og Z som defineres ved hjelp av matche-funksjonene

104

CIE’s primærfarger

ZYX

Zz

ZYX

Yy

ZYX

Xx

z x, y

dzPkZdyPkYdxPkX

ZX, Y

P(

Y

y

:som defineres og enestetsverdikromasitet tenormaliser De

luminans.ønsket tilsk tilpasseder

)()()(

: og nekomponente

avhver avmengen blir ) elingenergiford spektralgitt en For

.lysenergi)utstrålt for (mål luminansen dervedblir

kurve.følsomhets øyets som formhar den at slik er valgt

105

CIE kromasitetsdiagram

farger. synligegir og for verdier avner kombinasjo alle Ikke

0).(planet - i avbildningen som framkommert sdiagrammeKromasitet

1

:den tredjefølger gitt,er og nekoordinate av Når to

zx, y

zx-y

zyx

z x, y

106

Forskjellige utstyrsenheter

Forskjellige utstyrsenhetervil ha forskjellige grunn-farger

107

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

TT BGRMMBGR 11111

2222

top related