Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Del 2 Grafisk databehandling forts.. 24/2-03IN229 / V03 / Dag 62 2D Transformasjoner (s. 51 i VTK boken) Translasjon x´ = x + d x, y´ = y + d y x y dxdx.

Liknende presentasjoner


Presentasjon om: "Del 2 Grafisk databehandling forts.. 24/2-03IN229 / V03 / Dag 62 2D Transformasjoner (s. 51 i VTK boken) Translasjon x´ = x + d x, y´ = y + d y x y dxdx."— Utskrift av presentasjonen:

1 Del 2 Grafisk databehandling forts.

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

3 24/2-03IN229 / V03 / Dag 63 x´ = s x · x, y´ = s y · y P´= S · P Skalering x y S = sxsx 0 0 sysy På matriseform:

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

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

6 24/2-03IN229 / V03 / Dag 66 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).

7 24/2-03IN229 / V03 / Dag 67 Translasjon T(d x, d y ) = dxdx dydy 001 x´x´ y´y´ 1 = dxdx dydy 001 x y 1 · P´= T(d x, d y ) · P x´ = x + d x y´ = y + d y w x y dxdx dydy (x´, y´) (x, y)

8 24/2-03IN229 / V03 / Dag 68 Skalering S(s x, s y ) = sxsx 0 0 sysy x´x´ y´y´ 1 = x y 1 · P´= S(s x, s y ) · P sxsx 0 0 sysy x´ = s x · x y´ = s y · y x y

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

10 24/2-03IN229 / V03 / Dag 610 Påfølgende transformasjoner av samme type Translasjon P´ = T(d x1, d y1 ) · P P´´= T(d x2, d y2 ) · P´ P´´= T(d x2, d y2 ) · (T(d x1, d y1 ) · P) = (T(d x2, d y2 ) · T(d x1, d y1 )) · P = T(d x1 + d x2, d y1 + d y2 ) · P dx2dx2 dy2dy dx1dx1 dy1dy1 001 ·= d x1 + d x2 d y1 + d y2 001 Translasjon er kommutativt - rekkefølgen likegyldig! x y P´P´ P P´´

11 24/2-03IN229 / V03 / Dag 611 Skalering P´ = S(s x1, s y1 ) · P P´´= S(s x2, s y2 ) · P´ P´´= S(s x2, s y2 ) · (S(s x1, s y1 ) · P) = (S(s x2, s y2 ) · S(s x1, s y1 )) · P = S(s x1 · s x2, s y1 · s y2 ) · P sx2sx2 0 0 sy2sy ·= s x1 · s x2 s y1 · s y2 001 Skalering er også kommutativt! sx1sx1 0 0 sy1sy

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

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

14 24/2-03IN229 / V03 / Dag 614 Eksempel 2 - skalering om et vilkårlig punkt x y P1P1 x y x y x y P1P1 T(x 1, y 1 ) · S(s x, s y ) · T( – x 1, – y 1 ) = x1x1 y1y1 001 · · –x1–x1 –y1–y1 001 = sxsx x 1 (1 – s x ) y 1 (1 – s y ) sxsx 0 0 sysy sysy

15 24/2-03IN229 / V03 / Dag 615 Kommutativitet - oppsummering La M 1 og M 2 representere hver sin basale transformasjon. M 1 og M 2 kommuterer (M 1 · M 2 = M 2 · M 1 ) i følgende tilfeller: M1M1 Translasjon Skalering Rotasjon Uniform skalering (s x = s y ) M2M2 Translasjon Skalering Rotasjon

16 24/2-03IN229 / V03 / Dag 616 Inverse transformasjoner T(d x, d y ) –1 = T(–d x, –d y ) S(s x, s y ) –1 = S(1/s x, 1/s y ) R(  ) –1 = R(–  )

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

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

19 24/2-03IN229 / V03 / Dag 619 Translasjon T(d x, d y, d z ) = dxdx dydy 001dzdz T(d x, d y, d z ) · [x, y, z, 1] T = [x + d x, y + d y, z + d z, 1] T

20 24/2-03IN229 / V03 / Dag 620 Skalering S(s x, s y, s z ) = sxsx 0 0 sysy szsz S(s x, s y, s z ) · [x, y, z, 1] T = [s x · x, s y · y, s z · z, 1] T

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

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

23 24/2-03IN229 / V03 / Dag 623 Rotasjon om x og y aksen R x (  ) = cos  –sin  cos  sin  R y (  ) = cos  0 0 –sin  0 sin  0 0 cos 

24 24/2-03IN229 / V03 / Dag 624 Eksempel y z x P1P1 P2P2 P3P3 y z x P1P1 P2P2 P3P3 Steg 1: Translater P 1 til origo Steg 2: Rotér om y aksen slik at P 1 P 2 ligger i yz planet. Steg 3: Rotér om x aksen slik at P 1 P 2 ligger på z aksen. Steg 4: Rotér om z aksen slik at P 1 P 3 ligger i yz planet.

25 24/2-03IN229 / V03 / Dag 625 Steg 1: Translater P 1 til origo. T(–x 1, –y 1, –z 1 ) = –x1–x1 –y1–y1 001–z1–z P 1 ´ = T(–x 1, –y 1, –z 1 ) · P 1 = y z x P1´P1´ P2´P2´ P3´P3´ P 2 ´ = T(–x 1, –y 1, –z 1 ) · P 2 = x 2 – x 1 y 2 – y 1 z 2 – z 1 1 P 3 ´ = T(–x 1, –y 1, –z 1 ) · P 3 = x 3 – x 1 y 3 – y 1 z 3 – z 1 1 P1P1

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

27 24/2-03IN229 / V03 / Dag 627 Steg 3: Rotér om x aksen slik at P 1 P 2 ligger på z aksen. Rotasjonsvinkelen er , og y z x P 2 ´´ D2D2 cos  = z 2 ´´ D2D2, sin  = der D 2 =  P 1 ´´ P 2 ´´  =  P 1 P 2  Resultatet blir igjen som forventet P 2 ´´´ = R x (  ) · P 2 ´´ = R x (  ) · R y (  – 90) · P 2 ´  z 2 ´´ y 2 ´´ D2D2 = (x 2 – x 1 ) 2 + (y 2 – y 1 ) 2 + (z 2 – z 1 ) 2 P 2 ´´´ = R x (  ) · R y (  – 90) · T(–x 1, –y 1, –z 1 ) · P 2 = [0 0  P 1 P 2  1] T

28 24/2-03IN229 / V03 / Dag 628 Steg 4: Rotér om z aksen slik at P 1 P 3 ligger i yz planet. Rotasjonsvinkelen er , og y z x D3D3 cos  = y 3 ´´´ D3D3, sin  = der Den totale transformasjonen blir:  y 3 ´´´ x 3 ´´´ D3D3 D 3 = (x 3 ´´´) 2 + (y 3 ´´´) 2 P 3 ´´´ R z (  ) · R x (  ) · R y (  – 90) · T(–x 1, –y 1, –z 1 ) x 3 ´´´

29 24/2-03IN229 / V03 / Dag 629 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 x z y

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

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

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

33 24/2-03IN229 / V03 / Dag 633 Transformasjonmatrisen M per for perspektivprojeksjon x z xpxp zkzk P (x, y, z) y z ypyp zkzk xpxp zkzk = x z k – z ypyp zkzk = y xpxp = z k x z k – z = x 1 – (z / z k ) ypyp = z k y z k – z = y 1 – (z / z k ) M per = – 1/ z k 1 0 0,, x y P (x, y, z) P p (x p, y p, z p = 0) z P k (x k = 0, y k = 0, z k ) Antar z k > 0 og z k > z ! –z Antar fokuspunkt i z = 0 !

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

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

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

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

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

39 24/2-03IN229 / V03 / Dag 639 y z x x y Synsvolum Front klippeplan Bakre klippeplan Antar z k > 0 og z k > z f og z f > z b ! P k (x k, y k, z k ) zfzf zbzb z

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

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

42 24/2-03IN229 / V03 / Dag 642 “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:

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

44 24/2-03IN229 / V03 / Dag 644 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 z max. Polygonene gis z-verdier relativt til 0 og z max. I hvert pixel lagres z-verdien 0. Hvert pixel farges med bakgrunnsfargen.

45 24/2-03IN229 / V03 / Dag 645 for do z = if = pixelets z-verdi> then fi od Algoritmisk:

46 24/2-03IN229 / V03 / Dag = a) b) =

47 24/2-03IN229 / V03 / Dag 647 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: z z max 0 FKPBKP 1zizi z i+1 Samme z-buffer verdi! 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.

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

49 24/2-03IN229 / V03 / Dag 649  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. x y P p (x p, y p, 0) P k (0, 0, z k ) Parametrisk: P k + t (P p – P k ),t  0 x = t x p y = t y p z = (1 – t) z k,t  0 z

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

51 24/2-03IN229 / V03 / Dag 651 P (x, y, z) P 3 (x 3, y 3, z 3 ) P 2 (x 2, y 2, z 2 ) P 1 (x 1, y 1, z 1 ) N u v u = P 2 – P 1 = (x 2 – x 1, y 2 – y 1, z 2 – z 1 ) = (u x, u y, u z ) v = P 3 – P 1 = (x 3 – x 1, y 3 – y 1, z 3 – z 1 ) = (v x, v y, v z ) u  v = = (u y v z – u z v y, u z v x – u x v z, u x v y – u y v x ) = ((y 2 – y 1 )(z 3 – z 1 ) – (z 2 – z 1 )(y 3 – y 1 ), (z 2 – z 1 )(x 3 – x 1 ) – (x 2 – x 1 )(z 3 – z 1 ), (x 2 – x 1 )(y 3 – y 1 ) – (y 2 – y 1 )(x 3 – x 1 )) = (x N, y N, z N ) N Planet består dermed av alle punkter P som oppfyller:  = 90° P 1 P ·N = |P 1 P| |N| cos  P 1 P ·N = 0 Med andre ord: x N (x – x 1 ) + y N (y – y 1 ) + z N (z – z 1 ) = 0

52 24/2-03IN229 / V03 / Dag 652  Kombinasjon av  og . x N (t x p – x 1 ) + y N (t y p – y 1 ) + z N ((1 – t) z k – z 1 ) = 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´) z k !

53 24/2-03IN229 / V03 / Dag 653 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 = x N x p + y N y p – z N z k, og dette kjenner vi igjen som P k P p ·N ! P p (x p, y p, 0) P k (0, 0, z k ) N (x N, y N, z N ) En løsning eksisterer med andre ord hvis og bare hvis projeksjonslinjen og normalen ikke står vinkelrett på hverandre!

54 24/2-03IN229 / V03 / Dag 654 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.

55 24/2-03IN229 / V03 / Dag 655 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. IaIa KaKa Intensitetsbidrag:I = I a K a I a = Omgivelse-lys, konstant for alle objekter. K a = Objektets omgivelse-refleksjons koeffisient. K a  [0, 1].

56 24/2-03IN229 / V03 / Dag 656 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. d A = arealenhet N dAdA dAdA   Mengden lysenergi som faller på d A er proporsjonal med cos .

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

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

59 24/2-03IN229 / V03 / Dag 659 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.

60 24/2-03IN229 / V03 / Dag 660 IpIp KsKs N  L  R  V I p = Lys fra lyskilde. K s = Objektets speilings-refleksjons koeffisient. K s  [0, 1]. Phongs belysningsmodell: Intensitetsbidrag: I = I p K s cos n  n = Objektets speilings-refleksjons eksponent. n  1. Total belysningmodell så langt: I = I a K a + I p (K d cos  + K s cos n  )

61 24/2-03IN229 / V03 / Dag  90° 0°0° 0 cos 8  1  90° 0°0° 0 cos 

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

63 24/2-03IN229 / V03 / Dag 663 Multiple lyskilder Total belysningmodell med m lyskilder: I = I a K a + I p (K d (N · L )...)  i = 1 m i i Antar normaliserte vektorer

64 24/2-03IN229 / V03 / Dag 664 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: I aR, I aG, I aB Punktlyskilde: I pR, I pG, I pB –Introdusere koeffisienter for et objekts diffuse og speilende farge: Diffus farge: O dR, O dG, O dB Speilende farge: O sR, O sG, O sB

65 24/2-03IN229 / V03 / Dag 665 Farger kan introduseres i ulik grad Antar står for enten R, G eller B Ensfargede objekter, flerfarget lys fra omgivelser og punktlyskilde: I = I a K a + I p (K d cos  + K s cos n  ) Flerfargede objekter, ensfarget lys fra omgivelser og punktlyskilde: I = I a K a O d + I p (K d O d cos  + K s cos n  ) Flerfargede objekter, flerfarget lys fra omgivelser og punktlyskilde: I = I a K a O d + I p (K d O d cos  + K s cos n  ) Flerfargede objekter med ulik farge for diffus og speilende refleksjon, flerfarget lys fra omgivelser og punktlyskilde: I = I a K a O d + I p (K d O d cos  + K s O s cos n  )

66 24/2-03IN229 / V03 / Dag 666 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

67 24/2-03IN229 / V03 / Dag 667 Sjattering (“shading”) (s 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.

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

69 24/2-03IN229 / V03 / Dag 669 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    

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

71 24/2-03IN229 / V03 / Dag 671 –Den eksakte normalen N v i en node kan tilnærmes ved å summere normalene i de tilgrensende polygonene slik: NvNv N1N1 N2N2 N4N4 N3N3 N v =  NiNi 1  i  n  NiNi

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

73 24/2-03IN229 / V03 / Dag 673 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 x I2I2 I3I3 I1I1 “scan”-linje y1y1 ysys y2y2 y3y3 xaxa xbxb IaIa IbIb IpIp xpxp I a = I 1 – (I 1 – I 2 ) y 1 – y s y 1 – y 2 I p = I b – (I b – I a ) x b – x p x b – x a I b = I 1 – (I 1 – I 3 ) y 1 – y s y 1 – y 3

74 24/2-03IN229 / V03 / Dag 674 Siden normalene i P 1 og P 2 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 P 1 P 2 vil derfor oppfattes som kontinuerlig (jevn). P2P2 P1P1 P Observasjon Avstand Intensitet Gouraud P Avstand Intensitet P Flat

75 24/2-03IN229 / V03 / Dag 675 FlatGouraud Diffus refleksjon Diffus og speilende refleksjon Belysningsmodell Sjattering

76 24/2-03IN229 / V03 / Dag 676 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.

77 24/2-03IN229 / V03 / Dag 677 = evaluering av belysningsmodell X= interpolert verdiI I I I Gouraud sjatteringPhong sjattering NINININININI N N N NNINNI NNINNI NNINNI NNINNI

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

79 24/2-03IN229 / V03 / Dag 679 Anta: - Speilende refleksjon. - N 1 faller nesten sammen med synsvektoren. N1N1 N2N2 N3N3 GouraudPhong “Sprer” intensiteten jevnt utover! “Samler” intensiteten der den bør være!

80 24/2-03IN229 / V03 / Dag 680 Anta: - Speilende refleksjon. - N m faller nesten sammen med synsvektoren. N1N1 N2N2 N3N3 GouraudPhong Bommer fullstendig på “highlight” punktet! Fanger opp “highlight” punktet! NmNm

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

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

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

84 24/2-03IN229 / V03 / Dag 684 Delvis felles noder A B C 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!

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

86 24/2-03IN229 / V03 / Dag 686 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.

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

88 24/2-03IN229 / V03 / Dag 688 Transformasjon til verdenskoordinater Transformasjon til synskoord. (M orient ) KlippingPerspektivprojeksjon (M per ) Scan-konverteringTekstureringZ-buffer Fargeblanding (v/transparens) Anti-aliasing “frame buffer” = rasterisering Med Gouraud sjattering: Belysning Fargeinterpolasjon

89 24/2-03IN229 / V03 / Dag 689 Transformasjon til verdenskoordinater Transformasjon til synskoord. (M orient ) KlippingPerspektivprojeksjon (M per ) Scan-konverteringTeksturering Z-bufferFargeblanding (v/transparens) Anti-aliasing “frame buffer” = rasterisering Med Phong sjattering: Normalvektor- interpolasjon Belysning OBS! Normalvektorer og polygonhjørner må transformeres tilbake til verdenskoordinater før belysningsmodellen kan evalueres!


Laste ned ppt "Del 2 Grafisk databehandling forts.. 24/2-03IN229 / V03 / Dag 62 2D Transformasjoner (s. 51 i VTK boken) Translasjon x´ = x + d x, y´ = y + d y x y dxdx."

Liknende presentasjoner


Annonser fra Google