Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Mer om Grafisk Databehandling. INF2340 / V042 Teksturering Øker detaljgraden uten å øke antall grafiske primitiver. Grafiske primitiver brukes som “bærere”

Liknende presentasjoner


Presentasjon om: "Mer om Grafisk Databehandling. INF2340 / V042 Teksturering Øker detaljgraden uten å øke antall grafiske primitiver. Grafiske primitiver brukes som “bærere”"— Utskrift av presentasjonen:

1 Mer om Grafisk Databehandling

2 INF2340 / V042 Teksturering Øker detaljgraden uten å øke antall grafiske primitiver. Grafiske primitiver brukes som “bærere” for bilder (f.eks. fotografier).

3 INF2340 / V043 Eksempel Bruk ett polygon for hver endring/fasett i bildet.  Ressurskrevende! "Klistre" bildet på kun ett polygon.  Teksturering! Alternativ 1 Alternativ 2

4 INF2340 / V044 Et annet eksempel

5 INF2340 / V045 Hovedstegene i teksturering Steg 1) Definer teksturen. En tekstur er en samling av teksturelementer - kalt texel’er - organisert i en matrise som enten er 1D, 2D, eller 3D. En texel inneholder informasjon om farge og transparens. Leses typisk inn fra en fil!

6 INF2340 / V046 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!)

7 INF2340 / V047 Steg 3) Angi teksturkoordinater for noder i geometriske primitiver. Teksturkoordinater typisk normaliserte, dvs. definert i intervallet [0, 1] (0.2, 0.8) (0.9, 0.87) (0.36, 0.2)

8 INF2340 / V048 Fordi det er såpass nyttig er teksturering ofte implementert i maskinvare!

9 INF2340 / V049 Transparens Skal se på et vanlig spesialtilfelle: –(helt eller delvis) gjennomsiktige objekter uten brytning Noen anvendelser: halvgjennomsiktig bilvindu helgjennomsiktig del av tekstur

10 INF2340 / V0410 Alfa Transparens representeres vanligvis som en alfa- verdi (A,  ) som betyr opasitet (ugjennomsiktighet). Alfa varierer fra 0 (helt gjennomsiktig) til 1 (helt ugjennomsiktig). Alfa spesifiseres vanligvis sammen med farge: RGBA (f.eks. polygon-node eller texel (tekstur- element))

11 INF2340 / V0411 Interpolert blanding av farger (vanlig modell) Forgrunnsobjekt Lysstråle mot øyet Bakgrunnsobjekt Resultatfarge: I =  FG I FG + (1 –  FG )I BG Farge= I FG Opasitet=  FG Farge= I BG Opasitet= irrelevant! 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.)

12 INF2340 / V0412 Generelt I0I0 0 = Global bakgrunn  0 = 1 I1I1 1 11 I2I2 2 22 I3I3 3 33 I i =  i I i + (1 -  i )I i-1, i  1 ´´ I 0 = I 0 ´ I i = ´ Fargen som er resultatet av å blande objekt 'i' med det som ligger bakenfor, altså I i-1. ´

13 INF2340 / V0413 Observasjon Ett enkelt objekt med  = 1 er tilstrekkelig for å skjule alt bakenfor. Hvis alle objekter har  0 bidra til den endelige fargen.  = 1  = 0 skjules!  = 1  = 0 vil også bidra!

14 INF2340 / V0414 “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)

15 INF2340 / V0415 Noen eksempler (laget med PovRay -

16 INF2340 / V0416

17 INF2340 / V0417

18 INF2340 / V0418 Essensen i RT Hvilke lysstråler treffer øyet, og hvor kommer de fra? Ide 1: 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!

19 INF2340 / V0419 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.

20 INF2340 / V0420 Transparent objekt pixel = primær stråle = reflektert stråle = brutt stråle = skyggestråle = normalvektor

21 INF2340 / V0421 for { ray = fargen i p = RT_trace(ray, 1) } procedure RT_trace(ray, depth) { if return RT_shade(..., depth) else return } RT - Pseudokode

22 INF2340 / V0422 procedure RT_shade(..., depth) { color = omgivelse-lys for { 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 color += RT_trace(, depth + 1) if color += RT_trace(, depth + 1) return color }

23 INF2340 / V0423 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 (a, b, c) røtter

24 INF2340 / V0424 Polygon  Finn skjæringspunktet (hvis det eksisterer) mellom strålen og planet polygonet ligger i.  Projiser skjæringspunktet og polygonet ned på xy-, xz- eller yz-planet.  Sjekk om punktet er inne i polygonet (2D problem - enklere). x y z

25 INF2340 / V0425 Parametriske flater (splines etc.) Kontrollpunkter Ressurskrevende skjæringsalgoritme!

26 INF2340 / V0426 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.

27 INF2340 / V0427 RT-optimalisering 1 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!

28 INF2340 / V0428 RT-optimalisering 2 Del bildet opp i n forskjellige utsnitt og la n prosessorer beregne hvert sitt utsnitt i parallell. Prosessor 1Prosessor 2Prosessor 3Prosessor 4

29 INF2340 / V0429 Animasjon Å vise en sekvens med bilder etter hverandre i rask rekkefølge. Kino: –Chaplin: 16 bilder / sek –Moderne filmer: 24 bilder / sek Dataskjerm: – bilder / sek

30 INF2340 / V0430 To typer animasjon på datamaskin Manuell (f.eks. ved interaktiv endring av kamera) Automatisk (tradisjonell film)

31 INF2340 / V0431 Basisalgoritme for animasjon med 24 bilder / sek for (i = 0; i < n; i++) { } tid STV 1/24 sek

32 INF2340 / V0432 Problem ser kun delvis ferdig bilde først her ser vi det ferdige bildet Resultat: flimring og blinking!

33 INF2340 / V0433 Løsning: Dobbeltbuffer RGB-buffer 1 RGB-buffer 2 Z-buffer Video controller ?

34 INF2340 / V0434 Buffer 1 Buffer 2 Buffer 1 vises på skjermen Buffer 2 vises på skjermen Buffer 1 vises på skjermen for (i = 0; i < n; i++) { }


Laste ned ppt "Mer om Grafisk Databehandling. INF2340 / V042 Teksturering Øker detaljgraden uten å øke antall grafiske primitiver. Grafiske primitiver brukes som “bærere”"

Liknende presentasjoner


Annonser fra Google