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



Like dokumenter
Visualiseringsdelen - Oppsummering

EKSAMEN I EMNE TDT4230 VISUALISERING LØRDAG 10. DESEMBER 2005 KL

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

d. Utviklingssteg for å utforme animasjonssekvenser:

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

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

UNIVERSITETET I OSLO

Uendelige rekker. Konvergens og konvergenskriterier

Læringsmål og pensum. Utvikling av informasjonssystemer. Oversikt. Systemutvikling Systemutvikling i seks faser Femstegs prosedyre for programmering

Eksamen 1T høsten 2015, løsningsforslag

DEL 1 (Uten hjelpemidler, leveres etter 3 timer) 3(a + 1) 4(1 a) (6a 1) = 3a a 6a + 1

Forelesning 22 MA0003, Mandag 5/ Invertible matriser Lay: 2.2

1.8 Digital tegning av vinkler

Forelesningsnotater SIF8039/ Grafisk databehandling

Linser og avbildning. Brennpunkter

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

Løsningsforslag for Obligatorisk Oppgave 1. Algoritmer og Datastrukturer ITF20006

Forelesning 9 mandag den 15. september

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

Utførelse av programmer, metoder og synlighet av variabler i JSP

Terminprøve Sigma 1T Våren 2008 m a t e m a t i k k

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

Generell trigonometri

EKSAMEN RF5100, Lineær algebra

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

Løsningsforslag til underveisvurdering i MAT111 vår 2005

Rekursiv programmering

. 2+cos(x) 0 og alle biter som inngår i uttrykket er kontinuerlige. Da blir g kontinuerlig i hele planet.

Bildebehandling i Adobe Photoshop

Mesteparten av kodingen av Donkey Kong skal du gjøre selv. Underveis vil du lære hvordan du lager et enkelt plattform-spill i Scratch.

kap. 8.6 Computational Geometry Hovedkapittelet (kap. 8) dreier seg generelt om devide-and-conquer eller splitt og hersk :

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

Institutt for Samfunnsøkonomi. Utlevering: Kl. 09:00 Innlevering: Kl. 14:00

Hva er en algoritme? Har allerede sett på mange algoritmer til nå i IT1101. Forholdet mellom en algoritme og et program. Algoritme program prosess

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

Obligatorisk oppgave i MAT 1100, H-03 Løsningsforslag

Regelhefte for: Terninger (-9 til 10)

Rekursjon. Binærsøk. Hanois tårn.

UNIVERSITETET I OSLO

VEILEDNING BRUK AV NY LØSNING FOR PERIODISERING AV BUDSJETTER I MACONOMY

Forord. Molde, august Per Kristian Rekdal. Copyright c Høyskolen i Molde, 2011.

UNIVERSITETET I OSLO

Løsningsforslag AA6526 Matematikk 3MX Privatister 3. mai eksamensoppgaver.org

To geometriske algoritmer, kap. 8.6

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

Ti egenskaper for å evaluere nettsteders brukskvalitet. Den opplevde kvaliteten til nettstedet

HØGSKOLEN I BERGEN Avdeling for ingeniørutdanning

NITH PG4200 Algoritmer og datastrukturer Løsningsforslag Eksamen 4.juni 2013

Øving 4 Egenverdier og egenvektorer

INF Triangulering. Med sterk støtte fra Petter Kristiansen. Skal først se på et eksempel fra Google Earth

PRIMTALL FRA A TIL Å

RF5100 Lineær algebra Leksjon 10

Emnekode: LV121A Dato: Alle skrevne og trykte hjelpemidler

LØSNINGSANTYDNING EKSAMEN

EUROPEAN COMPUTER DRIVING LICENCE FAGPLAN Modul 6 Presentasjon, ekspert nivå 1.0

UNIVERSITETET I OSLO

Tyngdekraft og luftmotstand

Farger Introduksjon Processing PDF

BØK311 Bedriftsøkonomi 2b. Løsningsforslag

VTK - The Visualization Toolkit. Del 1 Introduksjon til VTK VTK. Objektorientering (OO) i C++ Objekt-orientert bibliotek for visualisering Fordeler:

3D Modellering og Animasjon Velkommen

Tallet 0,04 kaller vi prosentfaktoren til 4 %. Prosentfaktoren til 7 % er 0,07, og prosentfaktoren til 12,5 % er 0,125.

Klask-en-Muldvarp. Steg 1: Gjøre klart spillbrettet. Sjekkliste. Introduksjon

GeoGebra i R2. Grafer. Topp- og bunnpunkter GeoGebra finner eventuelle topp- og bunnpunkter på grafen til en innlagt polynomfunksjon f.

Kjøpsveileder solceller. Hjelp til deg som skal kjøpe solcelleanlegg.

Repetisjon: høydepunkter fra første del av MA1301-tallteori.

MAT1030 Forelesning 30

Generelt om operativsystemer

To metoder for å tegne en løk

Nøkkelspørsmål til eller i etterkant av introduksjonsoppgaven:

Median: Det er 20 verdier. Median blir da gjennomsnittet av verdi nr. 10 og nr. 11. Begge disse verdiene er 2, så median er 2.

TOD063 Datastrukturer og algoritmer

Labyrint Introduksjon Scratch Lærerveiledning. Steg 1: Hvordan styre figurer med piltastene

Fotorealistisk fremstilling... 3

Ordliste. Obligatorisk oppgave 1 - Inf 1020

Skilpadder hele veien ned

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

RF5100 Lineær algebra Leksjon 12

ALGORITMER OG DATASTRUKTURER

Hemmelige koder. Kodeklubb-koden. Steg 1: Alfabetet. Sjekkliste. Introduksjon

Løsningsforslag til obligatorisk oppgave i MAT 1100, H-04

Algoritmer og Datastrukturer

Norges Informasjonsteknologiske Høgskole

TDT4105/TDT4110 Informasjonsteknologi grunnkurs:

Rekursjon. Hanois tårn. Milepeler for å løse problemet

GeoGebra U + V (Elevark)

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2014

Kompleksitetsanalyse

Heuristiske søkemetoder III

1990 første prognoser og varsler om at det ikke vil være nok IPv4 adresser til alle som ønsker det 1994 første dokumenter som beskriver NAT en

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

Forord, logg, informasjon og oppgaver


En samling eksempelfoto SB-900

Rekker, Konvergenstester og Feilestimat

EKSAMENSOPPGAVE. INF-1100 Innføring i programmering og datamaskiners virkemåte. Ingen. Elektronisk (WiseFlow) Robert Pettersen

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.2

Vektorfil og linjeskjuling... 3

Oppgave 1 a. INF1020 Algoritmer og datastrukturer. Oppgave 1 b

Transkript:

Teksturering Mer om Grafisk Databehandling Øker detaljgraden uten å øke antall grafiske primitiver. Grafiske primitiver brukes som bærere for bilder (f.eks. fotografier). INF2340 / V04 2 Eksempel Et annet eksempel Alternativ Alternativ 2 Bruk ett polygon for hver endring/fasett i bildet. F Ressurskrevende! "Klistre" bildet på kun ett polygon. F Teksturering! INF2340 / V04 3 INF2340 / V04 4

Hovedstegene i teksturering Steg ) Definer teksturen. En tekstur er en samling av teksturelementer - kalt texel er - organisert i en matrise som enten er D, 2D, eller 3D. En texel inneholder informasjon om farge og transparens. Steg 2) Angi hvordan teksturen skal påvirke hvert pixel. All farge kommer fra teksturen, eller Teksturfargen blandes med eller påvirker den underliggende fargen (nødvendig for å få med belysning!) Leses typisk inn fra en fil! INF2340 / V04 5 INF2340 / V04 6 Steg 3) Angi teksturkoordinater for noder i geometriske primitiver. Teksturkoordinater typisk normaliserte, dvs. definert i intervallet [0, ]. 0 0 Fordi det er såpass nyttig er teksturering ofte implementert i maskinvare! (0.2, 0.8) (0.36, 0.2) (0.9, 0.87) INF2340 / V04 7 INF2340 / V04 8 2

Transparens Skal se på et vanlig spesialtilfelle: (helt eller delvis) gjennomsiktige objekter uten brytning Noen anvendelser: halvgjennomsiktig bilvindu helgjennomsiktig del av tekstur Alfa Transparens representeres vanligvis som en alfaverdi (A, α) som betyr opasitet (ugjennomsiktighet). Alfa varierer fra 0 (helt gjennomsiktig) til (helt ugjennomsiktig). Alfa spesifiseres vanligvis sammen med farge: RGBA (f.eks. polygon-node eller texel (teksturelement)) INF2340 / V04 9 INF2340 / V04 0 Interpolert blanding av farger (vanlig modell) 3 Generelt 2 0 = Global bakgrunn Lysstråle mot øyet Forgrunnsobjekt Farge = I FG Opasitet = α FG Bakgrunnsobjekt Farge = I BG Opasitet = irrelevant! I 3 α 3 I 2 α 2 I α I 0 α 0 = Resultatfarge: I = α FG I FG + ( α FG )I BG Merk: Nye objekter må blandes inn i retning mot øyet ("back-to-front")! (Begynn med det som er lengst vekk, bland inn det som er nest-lengst vekk osv.) I i = α i I i + ( - α i )I i-, i I 0 = I 0 I i = Fargen som er resultatet av å blande objekt 'i' med det som ligger bakenfor, altså I i-. INF2340 / V04 INF2340 / V04 2 3

Observasjon Ett enkelt objekt med α = er tilstrekkelig for å skjule alt bakenfor. α = α = 0 skjules! Hvis alle objekter har α < vil alle objekter med α > 0 bidra til den endelige fargen. α = α = 0 vil også bidra! INF2340 / V04 3 Ray Tracing (RT) Mer fotorealistisk sjatteringsalgoritme. Tar bedre hensyn til hvordan også andre objekter (og ikke bare lyskilder) kan påvirke belysningen av et punkt: Refleksjon. Skygger. Kan også modellere transparente objekter. Spesielt egnet for speilende refleksjon (andre metoder er bedre på diffus refleksjon) INF2340 / V04 4 Noen eksempler (laget med PovRay - www.povray.org) INF2340 / V04 5 INF2340 / V04 6 4

Essensen i RT Hvilke lysstråler treffer øyet, og hvor kommer de fra? Ide : Følg alle lysstråler fra alle lyskilder og ta vare på dem som (direkte eller indirekte) treffer øyet. UMULIG! Ide 2: Ta utgangspunkt i lysstrålene som faktisk treffer øyet. Følg dem bakover til dit de kom fra! INF2340 / V04 7 INF2340 / V04 8 RT - Overordnet algoritme Send ut en stråle fra øyepunktet gjennom hvert pixel og videre innover mot objektene (antar disse allerede er transformert til synskoordinater). Avgjør om en stråle skjærer et objekt, og i såfall hva fargebidraget fra skjæringspunktet blir. ( RT er en bilderekkefølge algoritme!) En del av dette fargebidraget kan evt. regnes ut ved å sende ut nye stråler rekursivt fra et punkt for å modellere speilende refleksjon og brytende transparens. Transparent objekt pixel = primær stråle = reflektert stråle = brutt stråle = skyggestråle = normalvektor INF2340 / V04 9 INF2340 / V04 20 5

RT - Pseudokode for <hvert pixel p> { ray = <strålen fra øyepunktet gjennom p> fargen i p = RT_trace(ray, ) procedure RT_trace(ray, depth) { if <skjæring med et objekt> return RT_shade(..., depth) else return <bakgrunnsfargen> procedure RT_shade(..., depth) { color = omgivelse-lys for <hver lyskilde> { finn ut (vha. skyggestråler) i hvilken grad lyset er blokkert av andre objekter og skalér leddene for diffus og speilende refleksjon tilsvarende før disse adderes til color if depth > maxdepth return color if <objektet er reflekterende> color += RT_trace(<refleksjonsstrålen>, depth + ) if <objektet er transparent> color += RT_trace(<brytningsstrålen>, depth + ) return color INF2340 / V04 2 INF2340 / V04 22 Skjæringsalgoritmer essensielle i RT! Parametrisert uttrykk for stråle gjennom pixel x = x(t), y = y(t), z = z(t), t 0 Kule (x a) 2 + (y b) 2 + (z c) 2 = r 2 Gir 2. gradslikning for t røtter r (a, b, c) Polygon Finn skjæringspunktet (hvis det eksisterer) mellom strålen og planet polygonet ligger i. Projiser skjæringspunktet og polygonet ned på xy-, xzeller yz-planet. Sjekk om punktet er inne i polygonet (2D problem - enklere). y x z INF2340 / V04 23 INF2340 / V04 24 6

Parametriske flater (splines etc.) Ressurskrevende skjæringsalgoritme! Kontrollpunkter RT er ressurskrevende! I prinsippet må vi sjekke skjæring for alle stråler (primære, reflekterte, brutte og skygge-) mot alle objekter. En skjæringsalgoritme kan i seg selv være ressurskrevende. Belysningsmodellen må evalueres i alle skjæringspunkter. INF2340 / V04 25 INF2340 / V04 26 RT-optimalisering Pakk objektene inn i omsluttende volumer ( bounding volumes ) med enklere (billigere) skjæringsalgoritme. Hvis en stråle ikke skjærer et omsluttende volum, vil den heller ikke skjære noen av objektene inne i volumet! 2 2 RT-optimalisering 2 Del bildet opp i n forskjellige utsnitt og la n prosessorer beregne hvert sitt utsnitt i parallell. 2 2 Prosessor Prosessor 2 Prosessor 3 Prosessor 4 INF2340 / V04 27 INF2340 / V04 28 7

Animasjon Å vise en sekvens med bilder etter hverandre i rask rekkefølge. Kino: Chaplin: 6 bilder / sek Moderne filmer: 24 bilder / sek Dataskjerm: 60-20 bilder / sek To typer animasjon på datamaskin Manuell (f.eks. ved interaktiv endring av kamera) Automatisk (tradisjonell film) INF2340 / V04 29 INF2340 / V04 30 Basisalgoritme for animasjon med 24 bilder / sek for (i = 0; i < n; i++) { <Slett bilde> <Tegn bilde> <Vent til /24 sek har passert> Problem ser kun delvis ferdig bilde S T V tid først her ser vi det ferdige bildet /24 sek Resultat: flimring og blinking! INF2340 / V04 3 INF2340 / V04 32 8

Løsning: Dobbeltbuffer Buffer Buffer 2 RGB-buffer 2 RGB-buffer Z-buffer Buffer vises på skjermen Buffer 2 vises på skjermen Buffer vises på skjermen? Video controller for (i = 0; i < n; i++) { <Slett bilde> <Tegn bilde> <Bytt om på bufferne> <Vent til /24 sek har passert> INF2340 / V04 33 INF2340 / V04 34 9