2D Transformasjoner (s. 51 i VTK boken) Translasjon. Del 2 Grafisk databehandling forts. Rotasjon. Skalering. y x = x + d x, y = y + d y.

Like dokumenter
2D Transformasjoner (kap. 3 i VTK boken) Translasjon. Del 2 Grafisk databehandling forts. Rotasjon. Skalering. x = x + d x, y = y + d y

a. Hva er de inverse transformasjonene avfølgende tre transformasjoner T, R og S: θ θ sin( ) cos( ) Fasit: 1 s x cos( θ) sin( θ) 0 0 y y z

Visualiseringsdelen - Oppsummering

Forelesningsnotater SIF8039/ Grafisk databehandling

=,,,,, = det( A) a a a a a a a a a a + a a 0 1. a11 a12 a22 a12 a11 a22 a12 a21 a11a12 + a12 a11

Forelesningsnotater SIF8039/ Grafisk databehandling

TDT4195 Bildeteknikk

UNIVERSITETET I OSLO

Universitetet i Agder Fakultet for teknologi og realfag LØSNINGSFORSLAG. Dato: 11. desember 2008 Varighet: Antall sider inkl.

LØSNINGSANTYDNING. HØGSKOLEN I AGDER Fakultet for teknologi. DAT 200 Grafisk Databehandling. Ingen. Klasse(r): 2DTM, 2DT, 2 Siving, DT

Del 1: Introduksjon til VTK. Visualiseringsdelen - Oppsummering. Del 2: Grafisk databehandling. "Visualization Pipeline" "Rendering Pipeline"

LØSNINGSFORSLAG. Universitetet i Agder Fakultet for Teknologi og realfag. Dato: 03. desember 2009 Varighet: Antall sider inkl.

HØGSKOLEN I BERGEN Avdeling for ingeniørutdanning

LØSNINGSANTYDNING EKSAMEN

INF 2310 Digital bildebehandling

INF Kap og i DIP

d. Utviklingssteg for å utforme animasjonssekvenser:

Oppgave 1 (25 %) - Flervalgsoppgaver

Temaer i dag. Geometriske operasjoner. Anvendelser. INF 2310 Digital bildebehandling

FASIT OG TIPS til Rinvold: Visuelle perspektiv. Lineær algebra. Caspar forlag, 1.utgave 2003 og 2.opplag 2004.

Norges Informasjonstekonlogiske Høgskole

INF 2310 Digital bildebehandling

RF5100 Lineær algebra Leksjon 10

KONTINUASJONSEKSAMEN I EMNE TDT4230 VISUALISERING TIRSDAG 9. AUGUST 2005 KL LØSNINGSFORSLAG

EKSAMEN I EMNE TDT4230 VISUALISERING FREDAG 10. DESEMBER 2010 KL LØSNINGSFORSLAG

Skalar-til-farge korrespondanse. Del 5 Visualisering av skalarfelt. Regnbue-skalaen

Emne 6. Lineære transformasjoner. Del 1

INF januar 2018 Ukens temaer (Kap og i DIP)

INF februar 2017 Ukens temaer (Kap og i DIP)

5.5.1 Bruk matriseregning til å vise at en rotasjon er produktet av to speilinger. Løsningsforslag + + = =

R2 kapittel 1 Vektorer Løsninger til kapitteltesten i læreboka

INF 2310 Digital bildebehandling

EKSAMEN I EMNE TDT4230 VISUALISERING TIRSDAG 18. DESEMBER 2007 KL LØSNINGSFORSLAG

MA-132 Geometri Torsdag 4. desember 2008 kl Tillatte hjelpemidler: Alle trykte og skrevne hjelpemidler. Kalkulator.

Emne 10 Litt mer om matriser, noen anvendelser

Øving 3. Oppgave 1 (oppvarming med noen enkle oppgaver fra tidligere midtsemesterprøver)

Løsningsforslag AA6524 Matematikk 3MX Elever 7. juni eksamensoppgaver.org

MAT1120 Repetisjon Kap. 1

KONTINUASJONSEKSAMEN I EMNE TDT4195 BILDETEKNIKK LØRDAG 15. AUGUST 2009 KL LØSNINGSFORSLAG - GRAFIKK

Løsning, Trippelintegraler

Computer Graphics with OpenGL

Anvendt Robotteknikk Konte Sommer 2019 EKSAMEN HARIS JASAREVIC

Løsningsforslag nr.1 - GEF2200

Institutt for matematiske fag EKSAMEN i MA-132 Geometri Torsdag 4. desember 2008 kl Oppgave 1

RF5100 Lineær algebra Leksjon 12

Teksturering. Mer om Grafisk Databehandling. Et annet eksempel. Eksempel

INF 2310 Digital bildebehandling

MAT Grublegruppen Notat 11

LO510D Lin.Alg. m/graf. anv. Våren 2005

MA1102 Grunnkurs i analyse II Vår 2019

E K S A M E N S O P P G A V E

INF Obligatorisk oppgave 2

INF 2310 Digital bildebehandling

Oppgavesett. Kapittel Oppgavesett 1

UNIVERSITETET I OSLO

Leksjon G2: Transformasjoner

Løsningsforslag eksamen TMA4105 matematikk 2, 25. mai 2005

Oppgaver MAT2500. Fredrik Meyer. 29. august 2014

Løsning IM

RF5100 Lineær algebra Løsningsforslag til prøveeksamen

TMA4105 Matematikk 2 vår 2013

OPPGAVER FOR FORUM

Løsningsforslag til øving 4: Coulombs lov. Elektrisk felt. Magnetfelt.

Tillegg om flateintegraler

Geometriske avbildninger og symmetri. A2A/A2B Høgskolen i Vestfold

Leksjon G2: Transformasjoner

Introduksjon. «Diskret» sinus/cosinus i 1D. Funksjonen sin(θ) INF april 2010 Fourier -- En annen vinkling på stoffet i kapittel 4

FYS1120 Elektromagnetisme - Ukesoppgavesett 2

Histogramprosessering

Komplekse tall og komplekse funksjoner

Funksjonell (dataflyt-) modell. Del 3 "Visualization Pipeline" Sammenkobling i praksis. Prosess- og data-objekter. Transformasjon. Representasjon (mer

Fargebilder. Lars Vidar Magnusson. March 12, 2018

Løsning 1med teori, IM3 høst 2011.

Diffraksjonsgitter (diffraction grating)

Geometri Mona Røsseland Nasjonalt senter for matematikk i Opplæringen Leder i LAMIS Lærebokforfatter, MULTI Geometri i skolen Geometri etter 4.

MA1201 Lineær algebra og geometri Løsningsforslag for eksamen gitt 3. desember 2007

Anbefalte oppgaver - Løsningsforslag

5.8 Iterative estimater på egenverdier

Løsningsforslag. og B =

KONTINUASJONSEKSAMEN I EMNE TDT4230 VISUALISERING MANDAG 15. AUGUST 2011 KL LØSNINGSFORSLAG

Forelesningsnotater SIF8039/ Grafisk databehandling

Forelesning 5/ ved Karsten Trulsen

MAT1120 Notat 2 Tillegg til avsnitt 5.4

UNIVERSITETET I OSLO

Eksamensoppgave i MA1103 Flerdimensjonal analyse

MAT 1001, høsten 2015 Oblig 2

LØSNINGSFORSLAG TIL EKSAMEN I FY1002 BØLGEFYSIKK Mandag 10. desember 2007 kl

Eksamensoppgave i MA1103 Flerdimensjonal analyse

Løsningsforslag til kapittel 15 Fargerom og fargebilder

Arbeidsoppgaver i vektorregning

Kompleks eksponentialform. Eulers inverse formler. Eulers formel. Polar til kartesisk. Kartesisk til polar. Det komplekse signalet

Algoritmer og datastrukturer Kapittel 2 - Delkapittel 2.1

Løsningsforslag øving 7

L12-Dataanalyse. Introduksjon. Nelson Aalen plott. Page 76 of Introduksjon til dataanalyse. Levetider og sensurerte tider

Løsningsforslag. Oppgave 1 Gitt matrisene ] [ og C = A = 4 1 B = 2 1 3

være en rasjonal funksjon med grad p < grad q. La oss skrive p(x) (x a)q(x) = A

A.3.e: Ortogonale egenfunksjonssett

EKSAMEN I NUMERISK LØSNING AV DIFFERENSIALLIGNINGER MED DIFFERANSEMETODER (TMA4212)

Morfologi i Binære Bilder

1. En tynn stav med lengde L har uniform ladning λ per lengdeenhet. Hvor mye ladning dq er det på en liten lengde dx av staven?

Transkript:

2D Transformasjoner (s. i VTK boken) Translasjon Del 2 Grafisk databehandling forts. (, ) = + d, = + d På matriseform: d d (, ) P =, P =, T = d d P = P + T 24/2-3 IN229 / V3 / Dag 6 2 Skalering Rotasjon = s, = s = cosθ sinθ, = sinθ + cosθ På matriseform: S = s P = S P s θ På matriseform: R = cosθ sinθ P = R P sinθ cosθ 24/2-3 IN229 / V3 / Dag 6 3 24/2-3 IN229 / V3 / Dag 6 4

Problem Homogene koordinater 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! Legg til en tredje koordinat: (,, w) Regel : To punkter er like hvis de er et multippel av hverandre (punktet (, 4, 2) er det samme som (, 2, )). Regel 2: Punktet (,, ) er ikke tillatt. Regel 3: Hvis w kan vi dividere med w og få ut punktets kartesiske koordinater /w og /w (dvs. de som tegnes på skjermen!) Homogene koordinater er også nttige for 3D 2D projeksjoner (gjennomgås senere). 24/2-3 IN229 / V3 / Dag 6 24/2-3 IN229 / V3 / Dag 6 6 Translasjon Skalering T(d, d ) = d d (, ) = + d = + d S(s, s ) = s s = s = s w d = d P = T(d, d ) P d d (, ) s = s P = S(s, s ) P 24/2-3 IN229 / V3 / Dag 6 7 24/2-3 IN229 / V3 / Dag 6 8 2

Rotasjon Påfølgende transformasjoner av samme tpe Translasjon cosθ sinθ R(θ) = sinθ cosθ = cosθ sinθ sinθ cosθ P = R(θ) P θ = cosθ sinθ = sinθ + cosθ P P P P = T(d, d ) P P = T(d 2, d 2 ) P P = T(d 2, d 2 ) (T(d, d ) P) = (T(d 2, d 2 ) T(d, d )) P = T(d + d 2, d + d 2 ) P d 2 d d + d 2 d 2 d = d + d 2 Translasjon er kommutativt - rekkefølgen likegldig! 24/2-3 IN229 / V3 / Dag 6 9 24/2-3 IN229 / V3 / Dag 6 P = S(s, s ) P P = S(s 2, s 2 ) P Skalering P = S(s 2, s 2 ) (S(s, s ) P) = (S(s 2, s 2 ) S(s, s )) P = S(s s 2, s s 2 ) P s 2 s s 2 s = Skalering er også kommutativt! s s 2 s s 2 24/2-3 IN229 / V3 / Dag 6 Påfølgende transformasjoner av ulik tpe R(θ) roterer et punkt P om origo. Hvordan kan vi rotere P om et vilkårlig punkt P? Løsning: Translater P til origo, rotér og translater tilbake! P T(, ) R(θ) T(, ) = = cosθ sinθ 24/2-3 IN229 / V3 / Dag 6 2 θ P cosθ sinθ sinθ cosθ ( cosθ) + sinθ sinθ cosθ ( cosθ) + sinθ 3

Eksempel 2 - skalering om et vilkårlig punkt P P Kommutativitet - oppsummering La M og M 2 representere hver sin basale transformasjon. M og M 2 kommuterer (M M 2 = M 2 M ) i følgende tilfeller: T(, ) S(s, s ) T(, ) = = s s s ( s ) s ( s ) M Translasjon Skalering Rotasjon Uniform skalering (s = s ) M 2 Translasjon Skalering Rotasjon Rotasjon 24/2-3 IN229 / V3 / Dag 6 3 24/2-3 IN229 / V3 / Dag 6 4 Inverse transformasjoner Påfølgende translasjoner og rotasjoner bevarer lengde! T(d, d ) = T( d, d ) S(s, s ) = S(/s, /s ) R(θ) = R( θ) P 2 R T T R T R R... T P 2 P P P P 2 = P P 2 24/2-3 IN229 / V3 / Dag 6 24/2-3 IN229 / V3 / Dag 6 6 4

3D Transformasjoner Translasjon Generalisering av 2D transformasjoner! (Samme regler for påfølgende transformasjoner, inverser etc.) T(d, d, d ) = d d d T(d, d, d ) [,,, ] T = [ + d, + d, + d, ] T 24/2-3 IN229 / V3 / Dag 6 7 24/2-3 IN229 / V3 / Dag 6 8 Skalering Rotasjonsretning og hørehåndskoordinater s s S(s, s, s ) = s S(s, s, s ) [,,, ] T = [s, s, s, ] T Rotasjonsakse (vekk fra publikum!) Positiv rotasjon 24/2-3 IN229 / V3 / Dag 6 9 24/2-3 IN229 / V3 / Dag 6 2

Rotasjon om aksen 2D rotasjonen som vi har sett på tidligere, R(θ), er egentlig en 3D rotasjon om aksen! cosθ sinθ sinθ cosθ R (θ) = θ Rotasjon om og aksen cosθ sinθ R (θ) = sinθ cosθ Kontroll: Rotér [,,, ] T 9 : = R (θ) = cosθ sinθ sinθ cosθ 24/2-3 IN229 / V3 / Dag 6 2 24/2-3 IN229 / V3 / Dag 6 22 Eksempel Steg : Translater P til origo. P 3 P P 2 Steg : Translater P til origo Steg 2: Rotér om aksen slik at P P 2 ligger i planet. Steg 3: Rotér om aksen slik at P P 2 ligger på aksen. Steg 4: Rotér om aksen slik at P P 3 ligger i planet. P 3 P 2 P T(,, ) = P = T(,, ) P = P 2 = T(,, ) P 2 = 2 2 2 P 3 P P P 2 P 3 = T(,, ) P 3 = 3 3 3 24/2-3 IN229 / V3 / Dag 6 23 24/2-3 IN229 / V3 / Dag 6 24 6

Steg 2: Rotér om aksen slik at P P 2 ligger i planet. Steg 3: Rotér om aksen slik at P P 2 ligger på aksen. Rotasjonsvinkelen er (9 θ) = θ 9. Videre har vi at cos(θ 9) = sinθ = 2 = 2 D D sin(θ 9) = cosθ = 2 = 2 D D der P 2 D θ P 2 ( 2, 2, 2 ) ( 2,, 2 ) Rotasjonsvinkelen er φ, og cosφ = 2 2, sinφ = D 2 D 2 der D 2 = P P 2 = P P 2 P 2 = ( 2 ) 2 + ( 2 ) 2 + ( 2 ) 2 P 2 D 2 φ 2 2 D = ( 2 ) 2 + ( 2 ) 2 = ( 2 ) 2 + ( 2 ) 2 Resultatet blir igjen som forventet Ved å substituere disse verdiene inn i R (θ 9) får vi som forventet P 2 = R (φ) P 2 = R (φ) R (θ 9) P 2 P 2 = R (θ 9) P 2 = [ 2 D ] T = R (φ) R (θ 9) T(,, ) P 2 = [ P P 2 ] T 24/2-3 IN229 / V3 / Dag 6 2 24/2-3 IN229 / V3 / Dag 6 26 Steg 4: Rotér om aksen slik at P P 3 ligger i planet. Rotasjonsvinkelen er α, og cos α = 3 3, sin α = D 3 D 3 der D 3 = ( 3 ) 2 + ( 3 ) 2 3 P 3 α D 3 3 Projeksjon Å avbilde noe ned på færre antall dimensjoner 3D 2D projeksjon i grafisk databehandling Avbilde objekter i objektrommet ned på bildeplanet i bilderommet Den totale transformasjonen blir: R (α) R (φ) R (θ 9) T(,, ) 24/2-3 IN229 / V3 / Dag 6 27 24/2-3 IN229 / V3 / Dag 6 28 7

Parallellprojeksjon Bevarer parallelle linjer Fjerne og nære objekter ser like store ut Perspektivprojeksjon Bevarer ikke nødvendigvis parallelle linjer Fjerne objekter ser mindre ut enn nære 24/2-3 IN229 / V3 / Dag 6 29 24/2-3 IN229 / V3 / Dag 6 3 Sns-koordinat Sstem Kamera Posisjon ( min, min ) Bildeplan-normal / Projeksjonsretning Spesifikasjon av 3D sn (s. 46 i VTK-boka) Fokuspunkt Opp-vektor (VUP) ( ma, ma ) 24/2-3 IN229 / V3 / Dag 6 3 Snsutsnitt (Viewport) Verdens-koordinat Sstem Antar fokuspunkt i =! Antar k > og k >! p k = p k = k k,, Transformasjonmatrisen M per for perspektivprojeksjon P p ( p, p, p = ) P k ( k =, k =, k ) p = p = k k = k k = P (,, ) ( / k ) ( / k ) 24/2-3 IN229 / V3 / Dag 6 32 k k M per = p p P (,, ) P (,, ) / k 8

P p = M per P = = (/ k ) Kartesiske koordinater (som plottes på skjerm): (/w, /w, /w) = (/( (/ k )), /( (/ k )), ) Kontroll: lim k (/ k ) lim k (/ k ) lim (/ k ) = ( parallell projeksjon!) = / k = lim k = k k w Ok! Basisalgoritme, uten klipping, for 3D 2D transformasjon med perspektivprojeksjon Steg : Multipliser punktene i det grafiske primitivet GP med snsorienteringsmatrisen M orient definert som følger:.: Translater origo i snskoordinat-sstemet til origo i verdenskoordinat-sstemet: T(d, d, d ).2: Rotér snskoordinat-sstemet slik at aksene sammenfaller med verdenskoordinat-sstemet: R(α) R(θ) R(φ) M orient = R(α) R(θ) R(φ) T(d, d, d ) GP = M orient GP verdenskoordinater snskoordinater! Steg 2: Multipliser punktene i GP med transformasjonsmatrisen M per for perspektivprojeksjon. GP = M per GP = M per M orient GP snskoordinater bildeplan! 24/2-3 IN229 / V3 / Dag 6 33 24/2-3 IN229 / V3 / Dag 6 34 Problem Projiserte - og -koordinater for store når opprinnelige - og -koordinater er store. Problem 2 Projiserte - og -koordinater for store når nærmer seg k : lim k (/ k ) = = ma Eksempel: = k 24/2-3 IN229 / V3 / Dag 6 3 24/2-3 IN229 / V3 / Dag 6 36 9

Klipping Fjerning av de delene av et grafisk primitiv som faller utenfor et område. Snsvolum Front klippeplan Bakre klippeplan P k ( k, k, k ) f b Antar k > og k > f og f > b! 24/2-3 IN229 / V3 / Dag 6 37 24/2-3 IN229 / V3 / Dag 6 38 3D 2D transformasjon med klipping Steg : Transformer GP fra 3D verdenskoordinater til 3D snskoordinater vha. M orient. Steg 2: Klipp GP mot snsvolumet. Steg 3: Transformer GP fra 3D snskoordinater til 2D snskoordinater (dvs. bildeplanet) vha. M per. Skjulte flater (s. 6 i VTK-boka) Ok! Problem løses automatisk! Problem 2 løses ved å definere en minimumsavstand mellom kameraet og front-klippeplanet! Eksempel: = f = k 24/2-3 IN229 / V3 / Dag 6 39 Antar fra nå av at de grafiske primitivene er polgoner 24/2-3 IN229 / V3 / Dag 6 4

Painter s algorithm - enkel variant Steg : Sorter polgonene i henhold til punktet med lavest (fjernest) -verdi. Steg 2: Tegn (rasteriser) polgonene back to front rekkefølge, dvs. først det med lavest -verdi, så det med nest-lavest -verdi osv. Painter s algorithm - utvidelse Steg : Splitt opp polgoner som overlapper i -retning! Problem: Polgoner som overlapper i -retning: Problem: Tar ekstra tid og plass! 24/2-3 IN229 / V3 / Dag 6 4 24/2-3 IN229 / V3 / Dag 6 42 Z-buffer algoritmen Behandler alle polgonene i snsvolumet (etter at de er klippet mot dette). Bak-klippeplanet gis -verdi. Front-klippeplanet gis -verdi ma. Polgonene gis -verdier relativt til og ma. I hvert piel lagres -verdien. Hvert piel farges med bakgrunnsfargen. Algoritmisk: for <hvert polgon> do for <hvert piel i polgonets projeksjon> do = <avstanden fra bildeplanet til polgonet gjennom pielet> if < >= pielets -verdi> then <pielets ne -verdi = > <pielets ne farge = polgonets farge (i dette pielet)> fi od od 24/2-3 IN229 / V3 / Dag 6 43 24/2-3 IN229 / V3 / Dag 6 44

2 24/2-3 IN229 / V3 / Dag 6 4 + = a) b) 3 4 6 7 8 3 4 6 7 3 4 6 3 4 3 4 3 + 6 7 8 6 7 6 3 4 3 4 3 = 24/2-3 IN229 / V3 / Dag 6 46 Vurdering av -buffer algoritmen Hovedfordel: Enkel og rask (ingen forhåndssortering nødvendig etc.). Ulempe : Krever ekstra minne. Ulempe 2: Kan fungere dårlig hvis avstanden mellom front- og bakklippeplanet er for stort: ma FKP BKP i i+ Samme -buffer verdi! Løsning: Øk oppløsningen på -bufferet (antall bit pr piel) (avveining mellom ulempe og 2), og/eller Reduser avstanden mellom front- og bak-klippeplanene. 24/2-3 IN229 / V3 / Dag 6 47 Hvordan finne -verdien i et piel for et polgon? -verdi =? 24/2-3 IN229 / V3 / Dag 6 48 Finn et uttrkk for projeksjonslinjen gjennom pielet. Finn et utrkk for planet som polgonet ligger i. Finn -verdien ved å skjære og! Uttrkk for projeksjonslinjen gjennom pielet. P p ( p, p, ) P k (,, k ) Parametrisk: P k + t (P p P k ), t = t p = t p = ( t) k, t

Uttrkk for planet som polgonet ligger i. Punkt i polgon Tre punkter i polgonet som ikke ligger langs samme linje Prikkprodukt Ligning for planet Krssprodukt Normal θ = 9 N u P 2 ( 2, 2, 2 ) P (,, ) θ = 9 P (,, ) P 3 ( 3, 3, 3 ) v P P N = P P N cosθ Planet består dermed av alle punkter P som oppfller: P P N = Med andre ord: N ( ) + N ( ) + N ( ) = u = P 2 P = ( 2, 2, 2 ) = (u, u, u ) v = P 3 P = ( 3, 3, 3 ) = (v, v, v ) N = u v = (u v u v, u v u v, u v u v ) = (( 2 )( 3 ) ( 2 )( 3 ), ( 2 )( 3 ) ( 2 )( 3 ), ( 2 )( 3 ) ( 2 )( 3 )) = ( N, N, N ) 24/2-3 IN229 / V3 / Dag 6 49 24/2-3 IN229 / V3 / Dag 6 Kombinasjon av og. Eksisterer det alltid en løsning? N (t p ) + N (t p ) + N (( t) k ) = f(t) = Omgrupperer og skriver f(t) som ta + B. f(t) = ta + B = t = B/A Hvis en løsning eksisterer som t har vi skjæring mellom linjen og planet, og -verdien vil være ( t ) k! Dermed har vi kun en løsning dersom A. I dette tilfellet er A = N p + N p N k, og dette kjenner vi igjen som P k P p N! P p ( p, p, ) N ( N, N, N ) En løsning eksisterer med andre ord hvis og bare hvis projeksjonslinjen og normalen ikke står vinkelrett på hverandre! P k (,, k ) 24/2-3 IN229 / V3 / Dag 6 24/2-3 IN229 / V3 / Dag 6 2 3

Belsningsmodeller Øker realismen og 3D følelsen. Lset i et punkt på overflaten til et objekt er primært avhengig av følgende: Lskilder (posisjon og avstand) Øe/kamera (posisjon og avstand) Objektets normalvektor i punktet Objektets materialegenskaper i punktet Skal se på empiriske modeller som kun er tilnærminger til fsisk eksakte modeller, men som likevel gir brukbare effekter. Omgivelse-ls ( ambient light ) Generelt ls fra omgivelsene, refleksjon fra andre objekter etc. Fanger opp lset som ikke eksplisitt er representert med andre modeller. Tar ikke hensn til hverken lskilde eller øe/kamera. K a I a I a = Omgivelse-ls, konstant for alle objekter. K a = Objektets omgivelse-refleksjons koeffisient. K a [, ]. Intensitetsbidrag: I = I a K a 24/2-3 IN229 / V3 / Dag 6 3 24/2-3 IN229 / V3 / Dag 6 4 Diffus refleksjon (Lambert refleksjon) Ls som treffer et objekt fra en lskilde blir reflektert i alle retninger på en gang. Egnet for matte overflater. Refleksjonen er sterkere desto mer loddrett lset faller på objektet. Tar hensn til lskilde og flatenormal men ikke øe/kamera. d A = arealenhet d A θ d A N Mengden lsenergi som faller på d A er proporsjonal med cosθ. N φ d A N φ d A Mengden ls som reflekteres til øet pr d A er proporsjonal med cosφ. Mengden areal sett av øet er omvendt proporsjonal med cosφ. Siden og oppveier hverandre er mengden ls som oppfattes av øet kun avhengig av, dvs. cosθ! 24/2-3 IN229 / V3 / Dag 6 24/2-3 IN229 / V3 / Dag 6 6 4

I p L θ N I p = Ls fra lskilde. K d = Objektets diffus-refleksjons koeffisient. K d [, ]. Speilende refleksjon ( specular reflection ) K d Antar θ [, 9 ]! Intensitetsbidrag: I = I p K d cosθ Total belsningmodell så langt: I = I a K a + I p K d cosθ Ls som treffer et objekt fra en lskilde blir primært reflektert langs refleksjonsvektoren. Egnet for halvblanke overflater - spesielt plastikk. Refleksjonen oppfattes som sterkere desto mer snsvektoren sammenfaller med refleksjonsvektoren. Tar hensn til både lskilde, flatenormal og øe/kamera. Merk: Dersom L og N er normaliserte (har lengde ) kan cosθ skrives som N L. 24/2-3 IN229 / V3 / Dag 6 7 24/2-3 IN229 / V3 / Dag 6 8 cosα I p L θ θ K s α V N R I p = Ls fra lskilde. K s = Objektets speilings-refleksjons koeffisient. K s [, ]. Phongs belsningsmodell: Intensitetsbidrag: I = I p K s cos n α n = Objektets speilings-refleksjons eksponent. n. cos 8 α α 9 Total belsningmodell så langt: I = I a K a + I p (K d cosθ + K s cos n α) α 9 24/2-3 IN229 / V3 / Dag 6 9 24/2-3 IN229 / V3 / Dag 6 6

S N L θ θ R Hvordan regne ut R? S R = N cosθ + S S = N cosθ L (fordi N = R = S =) Antar normaliserte vektorer Multiple lskilder R = N cosθ + N cosθ L = 2 N cosθ L Total belsningmodell med m lskilder: m I = I a K a + I p (K d (N L )...) i i Σi = 24/2-3 IN229 / V3 / Dag 6 6 24/2-3 IN229 / V3 / Dag 6 62 Multiple farger Hittil har vi kun sett på ensfargede lskilder og objekter. Flerfargede lskilder og objekter håndteres ved å Sette opp en separat ligning for hver komponent i fargemodellen (antar her RGB). Splitte ls fra omgivelse og punktlskilde i tre: Omgivelses-ls: I ar, I ag, I ab Punktlskilde: 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 Farger kan introduseres i ulik grad Antar λ står for enten R, G eller B Ensfargede objekter, flerfarget ls fra omgivelser og punktlskilde: I λ = I aλ K a + I pλ (K d cosθ + K s cos n α) Flerfargede objekter, ensfarget ls fra omgivelser og punktlskilde: I λ = I a K a O dλ + I p (K d O dλ cosθ + K s cos n α) Flerfargede objekter, flerfarget ls fra omgivelser og punktlskilde: 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 ls fra omgivelser og punktlskilde: I λ = I aλ K a O dλ + I pλ (K d O dλ cosθ + K s O sλ cos n α) 24/2-3 IN229 / V3 / Dag 6 63 24/2-3 IN229 / V3 / Dag 6 64 6

Noen begrensninger ved de modellene vi har sett hittil Tar ikke hensn til skgge og refleksjon fra andre objekter Tar ikke hensn til (halv-)gjennomsiktige objekter Sjattering ( shading ) (s. 6-6 i VTK-boka) Hvordan ls(farge) fordeles på et grafisk primitiv under rasteriseringen. Sjatteringsalgoritmer bruker belsningsmodeller! (belsning er en viktig del av sjatteringen) Antar polgoner i den videre beskrivelsen. 24/2-3 IN229 / V3 / Dag 6 6 24/2-3 IN229 / V3 / Dag 6 66 Flat/konstant sjattering Belsningsmodellen evalueres kun én gang pr polgon. Alle piler får samme farge Må anta følgende: Lskilden er uendelig langt borte. (Konstant N L (konstant θ)) 2 Dersom speilende refleksjon brukes må også perspektivpunktet være uendelig langt borte (parallell projeksjon). (Konstant N V (konstant α)) 3 Polgonet er en eksakt representasjon av objektet. Hovedproblem Antagelse 3 (eksakt representasjon) holder ikke! Ok med kube, men hva med kule? Alternativ : Representer overflaten med uendelig mange små polgoner. Problem: Altfor ressurskrevende! Tilnærming Eksakt Alternativ 2 24/2-3 IN229 / V3 / Dag 6 67 24/2-3 IN229 / V3 / Dag 6 68 7

Gouraud sjattering Den eksakte normalen N v i en node kan tilnærmes ved å summere normalene i de tilgrensende polgonene slik: Noder (hjørnepunkter) Steg : Finn eksakte normaler i alle noder der modellen beskriver en glatt flate: N N v N 3 N v = N 2 N 4 Σ Σ N i n i N i n i 24/2-3 IN229 / V3 / Dag 6 69 24/2-3 IN229 / V3 / Dag 6 7 I noder der flaten ikke skal være glatt, må en normal defineres for hver av de tilgrensende polgoner: Steg 2: Finn intensiteten i hver node ved å evaluere en belsningsmodell der normalen inngår. Steg 3: Under rasteriseringen av hvert polgon interpoleres node-intensitenene; først langs hver sidekant og deretter horisontalt langs hver scan -linje. 2 Flkropp Vinge s 2 I 2 I a I I p I b 3 a p b scan -linje I 3 I a = I (I I 2 ) s 2 I b = I (I I 3 ) s 3 I p = I b (I b I a ) b p b a 24/2-3 IN229 / V3 / Dag 6 7 24/2-3 IN229 / V3 / Dag 6 72 8

Siden normalene i P og P 2 er felles for polgonene (ved glatt flate), må også intensitetene i disse punktene og derfor også i P være felles. Fargeovergangen fra det ene til det andre polgonet over linjen P P 2 vil derfor oppfattes som kontinuerlig (jevn). P 2 P P Observasjon Gouraud Intensitet Intensitet P Avstand Diffus refleksjon Diffus og speilende refleksjon Belsningsmodell Flat Flat Gouraud P Avstand Sjattering 24/2-3 IN229 / V3 / Dag 6 73 24/2-3 IN229 / V3 / Dag 6 74 Phong sjattering N I = evaluering av belsningsmodell X = interpolert verdi N Steg : Finn eksakte normaler i alle noder der modellen beskriver en glatt flate (samme som Gouraud). Steg 2: Under rasteriseringen av et polgon interpoleres normalvektorene; først langs hver sidekant og deretter horisontalt langs hver scan -linje. Steg 3: I hvert piel langs en scan -linje finnes intensiteten ved å evaluere en belsningsmodell. N I I I I I N I N N I N I N I N I N Gouraud sjattering Phong sjattering 24/2-3 IN229 / V3 / Dag 6 7 24/2-3 IN229 / V3 / Dag 6 76 9

Gouraud vs. Phong sjattering Phong gir bedre resultat; spesielt ved speilende-, men også ved diffus refleksjon. Anta: - Speilende refleksjon. - N faller nesten sammen med snsvektoren. N N 3 N 2 ) Gouraud Sprer intensiteten jevnt utover! Phong Samler intensiteten der den bør være! 24/2-3 IN229 / V3 / Dag 6 77 24/2-3 IN229 / V3 / Dag 6 78 Anta: - Speilende refleksjon. - N m faller nesten sammen med snsvektoren. N m N 3 N 2 Gouraud vs. Phong sjattering (forts.) N Phong er mer beregningskrevende Gouraud mest vanlig i praksis (OpenGL, VTK...) Gouraud Bommer fullstendig på highlight punktet! Phong Fanger opp highlight punktet! 24/2-3 IN229 / V3 / Dag 6 79 24/2-3 IN229 / V3 / Dag 6 8 2

Noen problemer med interpolert sjattering (Gouraud og Phong) Silhuetten ser fortsatt polgonisk ut: Kan bedres ved å øke polgonoppløsningen, men dette øker samtidig ressursbruken! 24/2-3 IN229 / V3 / Dag 6 8 Avhengighet av polgonets orientering A P interpoleres fra A, B og D B P interpoleres fra A, B og C 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-3 IN229 / V3 / Dag 6 82 Delvis felles noder Ikke-representative node-normaler A C For venstre polgon: Interpolert mellom A og B B For de to høre polgonene: Direkte fra punktet Flatenormaler Nodenormaler Løses ved å splitte opp i flere polgoner (men det øker ressursbruken!): Gir generelt forskjellig resultat på venstre og høre side og følgelig diskontinuitet i belsningen! 24/2-3 IN229 / V3 / Dag 6 83 24/2-3 IN229 / V3 / Dag 6 84 2

Generelt om bruk av polgoner Populære til tross for en del problemer. Triangler spesielt populære. Alternativet med å la grafikksstemet basere seg direkte på den underliggende flaten/geometrien blir tpisk for ressurskrevende og/eller for lite generelt. Rendering Pipeline Operasjonene som utføres for å avbilde et grafisk primitiv på skjermen danner en rendering pipeline. Transformasjon til verdenskoordinater Basis (uten sjattering): Transformasjon til snskoord. (M orient ) Klipping OBS! Z-verdiene kan beholdes og brukes i den videre behandling! Perspektivprojeksjon (M per ) Scan-konvertering Teksturering Anti-aliasing Z-buffer Fargeblanding (v/transparens) frame buffer = rasterisering 24/2-3 IN229 / V3 / Dag 6 8 24/2-3 IN229 / V3 / Dag 6 86 Med Gouraud sjattering: Med Phong sjattering: Transformasjon til verdenskoordinater Belsning Transformasjon til snskoord. (M orient ) Klipping Perspektivprojeksjon (M per ) Scan-konvertering Fargeinterpolasjon Teksturering Anti-aliasing Z-buffer Transformasjon til verdenskoordinater Scan-konvertering Transformasjon til snskoord. (M orient ) Normalvektorinterpolasjon Klipping Belsning Perspektivprojeksjon (M per ) Teksturering Anti-aliasing Fargeblanding (v/transparens) frame buffer = rasterisering Z-buffer Fargeblanding (v/transparens) OBS! Normalvektorer og polgonhjørner må transformeres tilbake til verdenskoordinater før belsningsmodellen kan evalueres! frame buffer = rasterisering 24/2-3 IN229 / V3 / Dag 6 87 24/2-3 IN229 / V3 / Dag 6 88 22