Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Del 2 Grafisk databehandling forts.

Liknende presentasjoner


Presentasjon om: "Del 2 Grafisk databehandling forts."— Utskrift av presentasjonen:

1 Del 2 Grafisk databehandling forts.

2 2D Transformasjoner (s. 51 i VTK boken) Translasjon
x y dx dy (x´, y´) (x, y) x´ = x + dx , y´ = y + dy På matriseform: P = , P´= , T = x y dx dy P´= P + T 24/2-03 IN229 / V03 / Dag 6

3 Skalering y x´ = sx · x, y´ = sy · y På matriseform: sx S = sy
sy P´= S · P 24/2-03 IN229 / V03 / Dag 6

4 Rotasjon x y  x´ = x · cos – y · sin, y´ = x · sin + y · cos
På matriseform: cos –sin R = sin cos P´= R · P 24/2-03 IN229 / V03 / Dag 6

5 Problem Translasjon: P´= T + P Addisjon! Skalering: P´= S · P
Rotasjon: P´= R · P Ønsker å behandle alle transformasjoner som matrisemultiplikasjon Løsning: Innfør homogene koordinater! 24/2-03 IN229 / V03 / Dag 6

6 Homogene koordinater Legg til en tredje koordinat: (x, y, w)
Regel 1: To punkter er like hvis de er et multippel av hverandre (punktet (10, 4, 2) er det samme som (5, 2, 1)). Regel 2: Punktet (0, 0, 0) er ikke tillatt. Regel 3: Hvis w 0 kan vi dividere med w og få ut punktets “kartesiske koordinater” x/w og y/w (dvs. de som tegnes på skjermen!) Homogene koordinater er også nyttige for 3D2D projeksjoner (gjennomgås senere). 24/2-03 IN229 / V03 / Dag 6

7 Translasjon y T(dx, dy) = (x, y) dy (x´, y´) dx x P´= T(dx, dy) · P 1
dx dy x´ = x + dx y´ = y + dy x y dx dy (x´, y´) (x, y) 1 dx x = 1 dy y 1 1 1 w P´= T(dx, dy) · P 24/2-03 IN229 / V03 / Dag 6

8 Skalering y S(sx, sy) = x P´= S(sx, sy) · P sx x´ = sx · x sy
x´ = sx · x x y S(sx, sy) = sy y´ = sy · y 1 sx x = sy y 1 1 1 P´= S(sx, sy) · P 24/2-03 IN229 / V03 / Dag 6

9 Rotasjon y R() =  P´= R() · P x cos –sin x´ = x · cos – y · sin
x´ = x · cos – y · sin x y R() = sin cos y´ = x · sin + y · cos 1 cos –sin x = sin cos y 1 1 1 P´= R() · P 24/2-03 IN229 / V03 / Dag 6

10 Påfølgende transformasjoner av samme type Translasjon
P´ = T(dx1, dy1) · P P´´= T(dx2, dy2) · P´ P´´= T(dx2, dy2) · (T(dx1, dy1) · P) = (T(dx2, dy2) · T(dx1, dy1)) · P = T(dx1 + dx2, dy1 + dy2) · P P P´´ 1 dx2 1 dx1 1 dx1 + dx2 1 dy2 1 dy1 = 1 dy1 + dy2 1 1 1 x Translasjon er kommutativt - rekkefølgen likegyldig! 24/2-03 IN229 / V03 / Dag 6

11 Skalering Skalering er også kommutativt! P´ = S(sx1, sy1) · P
P´´= S(sx2, sy2) · (S(sx1, sy1) · P) = (S(sx2, sy2) · S(sx1, sy1)) · P = S(sx1 · sx2, sy1 · sy2) · P sx2 sx1 sx1 · sx2 sy2 sy1 = sy1 · sy2 1 1 1 Skalering er også kommutativt! 24/2-03 IN229 / V03 / Dag 6

12 Rotasjon Oppgave! 24/2-03 IN229 / V03 / Dag 6

13 Påfølgende transformasjoner av ulik type
R() roterer et punkt P om origo. Hvordan kan vi rotere P om et vilkårlig punkt P1? Løsning: Translater P1 til origo, rotér og translater tilbake! y y y y P1 P1 x x x x 1 x1 cos 1 –sin sin 1 –x1 T(x1, y1) · R() · T(–x1, –y1) = 1 y1 1 –y1 1 1 cos –sin x1(1 – cos) + y1 sin = sin cos y1(1 – cos) + x1 sin 1 24/2-03 IN229 / V03 / Dag 6

14 Eksempel 2 - skalering om et vilkårlig punkt
y y y y P1 P1 x x x x 1 x1 y1 sx sy 1 1 –x1 T(x1, y1) · S(sx, sy) · T(–x1, –y1) = 1 –y1 1 sx x1(1 – sx) = sy y1(1 – sy) 1 24/2-03 IN229 / V03 / Dag 6

15 Kommutativitet - oppsummering
La M1 og M2 representere hver sin basale transformasjon. M1 og M2 kommuterer (M1 · M2 = M2 · M1) i følgende tilfeller: M1 Translasjon Skalering Rotasjon Uniform skalering (sx = sy) M2 Translasjon Skalering Rotasjon 24/2-03 IN229 / V03 / Dag 6

16 Inverse transformasjoner
T(dx, dy)–1 = T(–dx, –dy) S(sx, sy)–1 = S(1/sx, 1/sy) R()–1 = R(–) 24/2-03 IN229 / V03 / Dag 6

17 Påfølgende translasjoner og rotasjoner bevarer lengde!
R · T · T · R · T · R ·R · ... · T P2´ P1 P1P2 = P1´P2´ 24/2-03 IN229 / V03 / Dag 6

18 3D Transformasjoner Generalisering av 2D transformasjoner!
(Samme regler for påfølgende transformasjoner, inverser etc.) 24/2-03 IN229 / V03 / Dag 6

19 Translasjon 1 dx dy dz T(dx, dy , dz) = T(dx, dy, dz) · [x, y, z, 1]T = [x + dx, y + dy, z + dz, 1]T 24/2-03 IN229 / V03 / Dag 6

20 Skalering S(sx, sy, sz) · [x, y, z, 1]T = [sx · x, sy · y, sz · z, 1]T
sy S(sx, sy , sz) = sz 1 S(sx, sy, sz) · [x, y, z, 1]T = [sx · x, sy · y, sz · z, 1]T 24/2-03 IN229 / V03 / Dag 6

21 Rotasjonsretning og høyrehåndskoordinater
Rotasjonsakse z y (vekk fra publikum!) z Positiv rotasjon y z x y x x 24/2-03 IN229 / V03 / Dag 6

22 Rotasjon om z aksen 2D rotasjonen som vi har sett på tidligere, R(), er egentlig en 3D rotasjon om z aksen! z cos –sin sin cos Rz() = y 1 1 x Kontroll: Rotér [1, 0, 0, 1]T 90°: 1 –1 1 1 = 24/2-03 IN229 / V03 / Dag 6

23 Rotasjon om x og y aksen Rx() = cos 1 –sin sin Ry() = 1 cos
1 –sin sin Ry() = 1 cos –sin sin 24/2-03 IN229 / V03 / Dag 6

24 Eksempel Steg 1: Translater P1 til origo
y z x P1 P2 P3 y z x P1 P2 P3 Steg 1: Translater P1 til origo Steg 2: Rotér om y aksen slik at P1P2 ligger i yz planet. Steg 3: Rotér om x aksen slik at P1P2 ligger på z aksen. Steg 4: Rotér om z aksen slik at P1P3 ligger i yz planet. 24/2-03 IN229 / V03 / Dag 6

25 Steg 1: Translater P1 til origo.
T(–x1, –y1 , –z1) = 1 –x1 –y1 –z1 y z x P3´ P1´ P1 P2´ P1´ = T(–x1, –y1 , –z1) · P1 = 1 x2 – x1 x3 – x1 y2 – y1 y3 – y1 P2´ = T(–x1, –y1 , –z1) · P2 = P3´ = T(–x1, –y1 , –z1) · P3 = z2 – z1 z3 – z1 1 1 24/2-03 IN229 / V03 / Dag 6

26 Steg 2: Rotér om y aksen slik at P1P2 ligger i yz planet.
Rotasjonsvinkelen er –(90 – ) =  – 90. y Videre har vi at cos( – 90) = sin = z2´ D1 = z2 – z1 P2´´ P2´ (x2´, y2´, z2´) sin( – 90) = – cos = – x2´ D1 = – x2 – x1 D1 x der z (x2´, 0, z2´) D1 = (z2´)2 + (x2´)2 = (z2 – z1)2 + (x2 – x1)2 Ved å substituere disse verdiene inn i Ry( – 90) får vi som forventet P2´´ = Ry( – 90) ·P2´ = [0 y2 – y1 D ]T 24/2-03 IN229 / V03 / Dag 6

27 Steg 3: Rotér om x aksen slik at P1P2 ligger på z aksen.
Rotasjonsvinkelen er , og y z2´´ D2 y2´´ D2 cos = , sin = y2´´ der P2´´ D2 D2 =P1´´ P2´´  = P1P2 P2´´´ x z2´´ = (x2 – x1)2 + (y2 – y1)2 + (z2 – z1)2 z Resultatet blir igjen som forventet P2´´´ = Rx() ·P2´´ = Rx() ·Ry( – 90) ·P2´ = Rx() ·Ry( – 90) ·T(–x1, –y1 , –z1) ·P2 = [ P1P2 1]T 24/2-03 IN229 / V03 / Dag 6

28 Steg 4: Rotér om z aksen slik at P1P3 ligger i yz planet.
Rotasjonsvinkelen er , og y y3´´´ D3 x3´´´ D3 cos  = , sin  = y3´´´ der P3´´´ D3 D3 = (x3´´´)2 + (y3´´´)2 x3´´´ x z Den totale transformasjonen blir: Rz() ·Rx() ·Ry( – 90) ·T(–x1, –y1 , –z1) 24/2-03 IN229 / V03 / Dag 6

29 Projeksjon Å avbilde noe ned på færre antall dimensjoner
3D2D projeksjon i grafisk databehandling Avbilde objekter i objektrommet ned på bildeplanet i bilderommet y z x 24/2-03 IN229 / V03 / Dag 6

30 Parallellprojeksjon Bevarer parallelle linjer
Fjerne og nære objekter ser like store ut 24/2-03 IN229 / V03 / Dag 6

31 Perspektivprojeksjon
Bevarer ikke nødvendigvis parallelle linjer Fjerne objekter ser mindre ut enn nære 24/2-03 IN229 / V03 / Dag 6

32 Spesifikasjon av 3D syn (s. 46 i VTK-boka)
Opp-vektor (VUP) y y z x Syns-koordinat System Verdens-koordinat System (xmax, ymax) Fokuspunkt Kamera Posisjon x z (xmin, ymin) Synsutsnitt (Viewport) Bildeplan-normal / Projeksjonsretning 24/2-03 IN229 / V03 / Dag 6

33 Transformasjonmatrisen Mper for perspektivprojeksjon
x Antar fokuspunkt i z = 0 ! P (x, y, z) y xp Antar zk > 0 og zk > z ! P (x, y, z) z Pp (xp, yp, zp= 0) zk –z y P (x, y, z) yp x Pk (xk= 0, yk = 0, zk) z z zk –z xp zk x x x 1 –1/zk xp , = = = zk – z 1 – (z / zk) zk zk – z Mper = yp zk y y y yp , = = = zk – z 1 – (z / zk) zk zk – z 24/2-03 IN229 / V03 / Dag 6

34 1 –1/zk x x y y Pp = Mper ·P = = z 1 1 – (z/zk) w Kartesiske koordinater (som plottes på skjerm): Ok! (x/w, y/w, z/w) = (x/(1 – (z/zk)), y/(1 – (z/zk)), 0) Kontroll: x x 1 – (z/zk) lim = x ( parallell projeksjon!) z zk lim x 1 – (z/zk) zk0 = = 0 zk x zk – z lim x 1 – (z/zk) z0 = x 24/2-03 IN229 / V03 / Dag 6

35 Basisalgoritme, uten klipping, for 3D2D transformasjon med perspektivprojeksjon
Steg 1: Multipliser punktene i det grafiske primitivet GP med syns-orienteringsmatrisen Morient definert som følger: 1.1: Translater origo i synskoordinat-systemet til origo i verdenskoordinat-systemet: T(dx, dy, dz) 1.2: Rotér synskoordinat-systemet slik at aksene sammenfaller med verdenskoordinat-systemet: R() ·R() ·R() Morient = R() ·R() ·R() ·T(dx, dy, dz) GP´ = Morient ·GP verdenskoordinater  synskoordinater! Steg 2: Multipliser punktene i GP´ med transformasjonsmatrisen Mper for perspektivprojeksjon. GP´´ = Mper·GP´ = Mper·Morient ·GP synskoordinater  bildeplan! 24/2-03 IN229 / V03 / Dag 6

36 Problem 1 Projiserte x- og y-koordinater for store når opprinnelige x- og y-koordinater er store. z x x = xmax 24/2-03 IN229 / V03 / Dag 6

37 Problem 2 Projiserte x- og y-koordinater for store når z nærmer seg zk: lim x 1 – (z/zk) zzk =  x z Eksempel: z = zk z 24/2-03 IN229 / V03 / Dag 6

38 Klipping Fjerning av de delene av et grafisk primitiv som faller utenfor et område. 24/2-03 IN229 / V03 / Dag 6

39 Antar zk > 0 og zk > zf og zf > zb !
Synsvolum y z y Front klippeplan x Bakre klippeplan x zf zb Pk (xk, yk, zk) z Antar zk > 0 og zk > zf og zf > zb ! 24/2-03 IN229 / V03 / Dag 6

40 3D2D transformasjon med klipping
Steg 1: Transformer GP fra 3D verdenskoordinater til 3D synskoordinater vha. Morient. Steg 2: Klipp GP mot synsvolumet. Steg 3: Transformer GP fra 3D synskoordinater til 2D synskoordinater (dvs. bildeplanet) vha. Mper. Problem 1 løses automatisk! Problem 2 løses ved å definere en minimumsavstand mellom kameraet og front-klippeplanet! Eksempel: z z = zk z = zf 24/2-03 IN229 / V03 / Dag 6

41 Skjulte flater (s. 61 i VTK-boka)
y Ok! x z Antar fra nå av at de grafiske primitivene er polygoner 24/2-03 IN229 / V03 / Dag 6

42 “Painter’s algorithm” - enkel variant
Steg 1: Sorter polygonene i henhold til punktet med lavest (fjernest) z-verdi. Steg 2: Tegn (rasteriser) polygonene “back to front” rekkefølge, dvs. først det med lavest z-verdi, så det med nest-lavest z-verdi osv. Problem: Polygoner som overlapper i z-retning: 24/2-03 IN229 / V03 / Dag 6

43 “Painter’s algorithm” - utvidelse
Steg 0: Splitt opp polygoner som overlapper i z-retning! Problem: Tar ekstra tid og plass! 24/2-03 IN229 / V03 / Dag 6

44 Z-buffer algoritmen Behandler alle polygonene i synsvolumet (etter at de er klippet mot dette). Bak-klippeplanet gis z-verdi 0. Front-klippeplanet gis z-verdi zmax. Polygonene gis z-verdier relativt til 0 og zmax. I hvert pixel lagres z-verdien 0. Hvert pixel farges med bakgrunnsfargen. 24/2-03 IN229 / V03 / Dag 6

45 Algoritmisk: for <hvert polygon> do
for <hvert pixel i polygonets projeksjon> do z = <avstanden fra bildeplanet til polygonet gjennom pixelet> if <z >= pixelets z-verdi> then <pixelets nye z-verdi = z> <pixelets nye farge = polygonets farge (i dette pixelet)> fi od 24/2-03 IN229 / V03 / Dag 6

46 a) 5 5 + = b) 5 5 6 7 8 3 4 3 4 5 6 7 8 + = 24/2-03 IN229 / V03 / Dag 6

47 Vurdering av z-buffer algoritmen
Hovedfordel: Enkel og rask (ingen forhåndssortering nødvendig etc.). Ulempe 1: Krever ekstra minne. Ulempe 2: Kan fungere dårlig hvis avstanden mellom front- og bak-klippeplanet er for stort: Samme z-buffer verdi! FKP BKP z zmax zi+1 zi 1 Løsning: Øk oppløsningen på z-bufferet (antall bit pr pixel) (avveining mellom ulempe 1 og 2), og/eller Reduser avstanden mellom front- og bak-klippeplanene. 24/2-03 IN229 / V03 / Dag 6

48 Hvordan finne z-verdien i et pixel for et polygon?
24/2-03 IN229 / V03 / Dag 6

49  Finn et uttrykk for projeksjonslinjen gjennom pixelet.
 Finn et utrykk for planet som polygonet ligger i.  Finn z-verdien ved å skjære  og !  Uttrykk for projeksjonslinjen gjennom pixelet. y Parametrisk: Pp (xp, yp, 0) Pk + t (Pp – Pk) , t  0 x = t xp y = t yp z = (1 – t) zk , t  0 x z Pk (0, 0, zk) 24/2-03 IN229 / V03 / Dag 6

50  Uttrykk for planet som polygonet ligger i.
Tre punkter i polygonet som ikke ligger langs samme linje Kryssprodukt Punkt i polygon Normal Prikkprodukt  = 90° Ligning for planet 24/2-03 IN229 / V03 / Dag 6

51 = P2 – P1 = (x2 – x1, y2 – y1, z2 – z1) = (ux, uy, uz)
P2 (x2, y2, z2) u = P2 – P1 = (x2 – x1, y2 – y1, z2 – z1) = (ux, uy, uz) v = P3 – P1 = (x3 – x1, y3 – y1, z3 – z1) = (vx, vy, vz) N P (x, y, z) u P3 (x3, y3, z3) u v = = (uyvz – uzvy, uzvx – uxvz, uxvy – uyvx) = ((y2 – y1)(z3 – z1) – (z2 – z1)(y3 – y1), (z2 – z1)(x3 – x1) – (x2 – x1)(z3 – z1), (x2 – x1)(y3 – y1) – (y2 – y1)(x3 – x1)) = (xN, yN, zN) N v P1 (x1, y1, z1)  = 90° P1P ·N = |P1P| |N| cos Planet består dermed av alle punkter P som oppfyller: P1P ·N = 0 Med andre ord: xN(x – x1) + yN (y – y1) + zN (z – z1) = 0 24/2-03 IN229 / V03 / Dag 6

52  Kombinasjon av  og . xN(t xp – x1) + yN (t yp – y1) + zN ((1 – t) zk – z1) = 0 f(t) = 0 Hvis en løsning eksisterer som t´ har vi skjæring mellom linjen og planet, og z-verdien vil være (1 – t´) zk ! 24/2-03 IN229 / V03 / Dag 6

53 Eksisterer det alltid en løsning?
Omgrupperer og skriver f(t) som tA + B. f(t) = 0  tA + B = 0  t = –B/A Dermed har vi kun en løsning dersom A  0. I dette tilfellet er A = xNxp + yNyp – zNzk, og dette kjenner vi igjen som PkPp ·N ! N (xN, yN, zN) Pp (xp, yp, 0) En løsning eksisterer med andre ord hvis og bare hvis projeksjonslinjen og normalen ikke står vinkelrett på hverandre! Pk (0, 0, zk) 24/2-03 IN229 / V03 / Dag 6

54 Belysningsmodeller Øker realismen og “3D følelsen”.
Lyset i et punkt på overflaten til et objekt er primært avhengig av følgende: Lyskilder (posisjon og avstand) Øye/kamera (posisjon og avstand) Objektets normalvektor i punktet Objektets materialegenskaper i punktet Skal se på empiriske modeller som kun er tilnærminger til fysisk eksakte modeller, men som likevel gir brukbare effekter. 24/2-03 IN229 / V03 / Dag 6

55 Omgivelse-lys (“ambient light”)
Generelt lys fra omgivelsene, refleksjon fra andre objekter etc. Fanger opp lyset som ikke eksplisitt er representert med andre modeller. Tar ikke hensyn til hverken lyskilde eller øye/kamera. Ia = Omgivelse-lys, konstant for alle objekter. Ka = Objektets omgivelse-refleksjons koeffisient. Ka  [0, 1]. Ia Ka Intensitetsbidrag: I = IaKa 24/2-03 IN229 / V03 / Dag 6

56 Diffus refleksjon (Lambert refleksjon)
Lys som treffer et objekt fra en lyskilde blir reflektert i alle retninger på en gang. Egnet for matte overflater. Refleksjonen er sterkere desto mer loddrett lyset faller på objektet. Tar hensyn til lyskilde og flatenormal men ikke øye/kamera. N dA  Mengden lysenergi som faller på dA er proporsjonal med cos. dA = arealenhet 24/2-03 IN229 / V03 / Dag 6

57  Mengden lys som reflekteres til øyet pr dA er proporsjonal med cos.
 Mengden areal sett av øyet er omvendt proporsjonal med cos. dA Siden  og  oppveier hverandre er mengden lys som oppfattes av øyet kun avhengig av , dvs. cos ! 24/2-03 IN229 / V03 / Dag 6

58 Kd = Objektets diffus-refleksjons koeffisient. Kd  [0, 1].
Ip Kd N L Ip = Lys fra lyskilde. Kd = Objektets diffus-refleksjons koeffisient. Kd  [0, 1]. Intensitetsbidrag: I = IpKd cos Total belysningmodell så langt: I = IaKa + IpKd cos Antar   [0°, 90°]! Merk: Dersom L og N er normaliserte (har lengde 1) kan cos skrives som N ·L. 24/2-03 IN229 / V03 / Dag 6

59 Speilende refleksjon (“specular reflection”)
Lys som treffer et objekt fra en lyskilde blir primært reflektert langs refleksjonsvektoren. Egnet for halvblanke overflater - spesielt plastikk. Refleksjonen oppfattes som sterkere desto mer synsvektoren sammenfaller med refleksjonsvektoren. Tar hensyn til både lyskilde, flatenormal og øye/kamera. 24/2-03 IN229 / V03 / Dag 6

60 Total belysningmodell så langt: I = IaKa + Ip(Kd cos + Kscosn)
R V Ip = Lys fra lyskilde. Ks = Objektets speilings-refleksjons koeffisient. Ks  [0, 1]. Phongs belysningsmodell: Intensitetsbidrag: I = IpKscosn n = Objektets speilings-refleksjons eksponent. n  1. Total belysningmodell så langt: I = IaKa + Ip(Kd cos + Kscosn) 24/2-03 IN229 / V03 / Dag 6

61 1 90° cos 1 90° cos8 24/2-03 IN229 / V03 / Dag 6

62 Hvordan regne ut R ? N S S R = N cos + S S = N cos – L
(fordi |N|=|R|=|S|=1) L R R = N cos + N cos – L = 2 N cos – L 24/2-03 IN229 / V03 / Dag 6

63 Antar normaliserte vektorer
Multiple lyskilder Antar normaliserte vektorer Total belysningmodell med m lyskilder: I = IaKa Ip (Kd (N · L ) ...) m i i i = 1 24/2-03 IN229 / V03 / Dag 6

64 Multiple farger Hittil har vi kun sett på ensfargede lyskilder og objekter. Flerfargede lyskilder og objekter håndteres ved å Sette opp en separat ligning for hver komponent i fargemodellen (antar her RGB). Splitte lys fra omgivelse og punktlyskilde i tre: Omgivelses-lys: IaR, IaG , IaB Punktlyskilde: IpR, IpG , IpB Introdusere koeffisienter for et objekts diffuse og speilende farge: Diffus farge: OdR, OdG , OdB Speilende farge: OsR, OsG , OsB 24/2-03 IN229 / V03 / Dag 6

65 Farger kan introduseres i ulik grad
Antar  står for enten R, G eller B Ensfargede objekter, flerfarget lys fra omgivelser og punktlyskilde: I = IaKa + Ip(Kd cos + Kscosn) Flerfargede objekter, ensfarget lys fra omgivelser og punktlyskilde: I = IaKaOd + Ip(KdOd cos + Kscosn) Flerfargede objekter, flerfarget lys fra omgivelser og punktlyskilde: I = IaKaOd + Ip(KdOd cos + Kscosn) Flerfargede objekter med ulik farge for diffus og speilende refleksjon, flerfarget lys fra omgivelser og punktlyskilde: I = IaKaOd + Ip(KdOd cos + KsOscosn) 24/2-03 IN229 / V03 / Dag 6

66 Noen begrensninger ved de modellene vi har sett hittil
Tar ikke hensyn til skygge og refleksjon fra andre objekter Tar ikke hensyn til (halv-)gjennomsiktige objekter 24/2-03 IN229 / V03 / Dag 6

67 Sjattering (“shading”) (s. 60-61 i VTK-boka)
Hvordan lys(farge) fordeles på et grafisk primitiv under rasteriseringen. Sjatteringsalgoritmer bruker belysningsmodeller! (belysning er en viktig del av sjatteringen) Antar polygoner i den videre beskrivelsen. 24/2-03 IN229 / V03 / Dag 6

68 Flat/konstant sjattering
Belysningsmodellen evalueres kun én gang pr polygon. Alle pixler får samme farge Må anta følgende: Lyskilden er uendelig langt borte. (Konstant N·L (konstant )) Dersom speilende refleksjon brukes må også perspektivpunktet være uendelig langt borte (parallell projeksjon). (Konstant N·V (konstant )) Polygonet er en eksakt representasjon av objektet. Tilnærming Eksakt 24/2-03 IN229 / V03 / Dag 6

69 Antagelse 3 (eksakt representasjon) holder ikke!
Hovedproblem Antagelse 3 (eksakt representasjon) holder ikke! Ok med kube, men hva med kule? Alternativ 1: Representer overflaten med “uendelig” mange små polygoner. Problem: Altfor ressurskrevende! Alternativ 2     24/2-03 IN229 / V03 / Dag 6

70 Gouraud sjattering Noder (hjørnepunkter) Steg 1: Finn eksakte normaler i alle noder der modellen beskriver en glatt flate: 24/2-03 IN229 / V03 / Dag 6

71 Den eksakte normalen Nv i en node kan tilnærmes ved å summere normalene i de tilgrensende polygonene slik: N1 Nv = Ni 1  i  n Nv N3 N2 N4 24/2-03 IN229 / V03 / Dag 6

72 I noder der flaten ikke skal være glatt, må en normal defineres for hver av de tilgrensende polygoner: Flykropp 1 Vinge 2 24/2-03 IN229 / V03 / Dag 6

73 Steg 2: Finn intensiteten i hver node ved å evaluere en belysningsmodell der normalen inngår.
Steg 3: Under rasteriseringen av hvert polygon interpoleres node-intensitenene; først langs hver sidekant og deretter horisontalt langs hver “scan”-linje. y I1 y1 Ia = I1 – (I1 – I2) y1 – ys y1 – y2 Ia Ip Ib “scan”-linje ys Ib = I1 – (I1 – I3) y1 – ys y1 – y3 y2 I2 y3 I3 Ip = Ib – (Ib – Ia) xb – xp xb – xa x xa xp xb 24/2-03 IN229 / V03 / Dag 6

74 Observasjon Siden normalene i P1 og P2 er felles for polygonene (ved glatt flate), må også intensitetene i disse punktene og derfor også i P være felles. Fargeovergangen fra det ene til det andre polygonet over linjen P1P2 vil derfor oppfattes som kontinuerlig (jevn). Intensitet P2 P1 P Gouraud P Avstand Intensitet Flat P Avstand 24/2-03 IN229 / V03 / Dag 6

75 Belysningsmodell Sjattering Diffus refleksjon
Diffus og speilende refleksjon Flat Gouraud Sjattering 24/2-03 IN229 / V03 / Dag 6

76 Phong sjattering Steg 1: Finn eksakte normaler i alle noder der modellen beskriver en glatt flate (samme som Gouraud). Steg 2: Under rasteriseringen av et polygon interpoleres normalvektorene; først langs hver sidekant og deretter horisontalt langs hver “scan”-linje. Steg 3: I hvert pixel langs en “scan”-linje finnes intensiteten ved å evaluere en belysningsmodell. 24/2-03 IN229 / V03 / Dag 6

77 Gouraud sjattering Phong sjattering = evaluering av belysningsmodell X
= interpolert verdi NI N I NI I NI I NI NI I N NI N NI Gouraud sjattering Phong sjattering 24/2-03 IN229 / V03 / Dag 6

78 Gouraud vs. Phong sjattering
Phong gir bedre resultat; spesielt ved speilende-, men også ved diffus refleksjon. 24/2-03 IN229 / V03 / Dag 6

79 - Speilende refleksjon. - N1 faller nesten sammen med synsvektoren.
Anta: - Speilende refleksjon. - N1 faller nesten sammen med synsvektoren. N3 N2 N1 Gouraud Phong “Sprer” intensiteten jevnt utover! “Samler” intensiteten der den bør være! 24/2-03 IN229 / V03 / Dag 6

80 - Speilende refleksjon. - Nm faller nesten sammen med synsvektoren.
Anta: - Speilende refleksjon. - Nm faller nesten sammen med synsvektoren. N3 Nm N2 N1 Gouraud Phong Bommer fullstendig på “highlight” punktet! Fanger opp “highlight” punktet! 24/2-03 IN229 / V03 / Dag 6

81 Gouraud vs. Phong sjattering (forts.)
Phong er mer beregningskrevende Gouraud mest vanlig i praksis (OpenGL, VTK ...) 24/2-03 IN229 / V03 / Dag 6

82 Noen problemer med interpolert sjattering (Gouraud og Phong)
Silhuetten ser fortsatt “polygonisk” ut: Kan bedres ved å øke polygonoppløsningen, men dette øker samtidig ressursbruken! 24/2-03 IN229 / V03 / Dag 6

83 Avhengighet av polygonets orientering
P interpoleres fra A, B og D P interpoleres fra A, B og C B P D B A P C D C Løses ved å splitte opp i triangler! A P interpoleres nå fra A, B og D i begge tilfeller! B P D B A P C D C 24/2-03 IN229 / V03 / Dag 6

84 Delvis felles noder A C B
For venstre polygon: Interpolert mellom A og B For de to høyre polygonene: Direkte fra punktet Gir generelt forskjellig resultat på venstre og høyre side og følgelig diskontinuitet i belysningen! 24/2-03 IN229 / V03 / Dag 6

85 Ikke-representative node-normaler
Flatenormaler Nodenormaler Løses ved å splitte opp i flere polygoner (men det øker ressursbruken!): 24/2-03 IN229 / V03 / Dag 6

86 Generelt om bruk av polygoner
Populære til tross for en del problemer. Triangler spesielt populære. Alternativet med å la grafikksystemet basere seg direkte på den underliggende flaten/geometrien blir typisk for ressurskrevende og/eller for lite generelt. 24/2-03 IN229 / V03 / Dag 6

87 “Rendering Pipeline” Operasjonene som utføres for å avbilde et grafisk primitiv på skjermen danner en “rendering pipeline”. OBS! Z-verdiene kan beholdes og brukes i den videre behandling! Basis (uten sjattering): Transformasjon til verdenskoordinater Transformasjon til synskoord. (Morient) Klipping Perspektivprojeksjon (Mper) Scan-konvertering Teksturering Anti-aliasing Z-buffer Fargeblanding (v/transparens) “frame buffer” = rasterisering 24/2-03 IN229 / V03 / Dag 6

88 Med Gouraud sjattering:
Transformasjon til verdenskoordinater Belysning Transformasjon til synskoord. (Morient) Klipping Perspektivprojeksjon (Mper) Scan-konvertering Fargeinterpolasjon Teksturering Anti-aliasing Z-buffer Fargeblanding (v/transparens) “frame buffer” = rasterisering 24/2-03 IN229 / V03 / Dag 6

89 Med Phong sjattering: “frame buffer” = rasterisering
Transformasjon til verdenskoordinater Transformasjon til synskoord. (Morient) Klipping Perspektivprojeksjon (Mper) Scan-konvertering Normalvektor- interpolasjon Belysning Teksturering Anti-aliasing OBS! Normalvektorer og polygonhjørner må transformeres tilbake til verdenskoordinater før belysningsmodellen kan evalueres! Z-buffer Fargeblanding (v/transparens) “frame buffer” = rasterisering 24/2-03 IN229 / V03 / Dag 6


Laste ned ppt "Del 2 Grafisk databehandling forts."

Liknende presentasjoner


Annonser fra Google