mer om grafisk databehandling n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Mer om Grafisk Databehandling PowerPoint Presentation
Download Presentation
Mer om Grafisk Databehandling

Loading in 2 Seconds...

play fullscreen
1 / 34

Mer om Grafisk Databehandling - PowerPoint PPT Presentation


  • 92 Views
  • Uploaded on

Mer om Grafisk Databehandling. Teksturering. Øker detaljgraden uten å øke antall grafiske primitiver. Grafiske primitiver brukes som “bærere” for bilder (f.eks. fotografier). Eksempel. Alternativ 2. Alternativ 1. Bruk ett polygon for hver endring/fasett i bildet.  Ressurskrevende!.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Mer om Grafisk Databehandling' - zeal


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
teksturering
Teksturering
  • Øker detaljgraden uten å øke antall grafiske primitiver.
  • Grafiske primitiver brukes som “bærere” for bilder (f.eks. fotografier).

INF2340 / V04

eksempel
Eksempel

Alternativ 2

Alternativ 1

Bruk ett polygon for

hver endring/fasett i bildet.

 Ressurskrevende!

"Klistre" bildet på kun ett polygon.

 Teksturering!

INF2340 / V04

et annet eksempel
Et annet eksempel

INF2340 / V04

hovedstegene i teksturering
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!

INF2340 / V04

slide6

All farge kommer fra teksturen, eller

  • Teksturfargen blandes med eller påvirker den underliggende fargen (nødvendig for å få med belysning!)
  • Steg 2) Angi hvordan teksturen skal påvirke hvert pixel.

INF2340 / V04

slide7

Teksturkoordinater typisk normaliserte, dvs. definert i intervallet [0, 1].

  • Steg 3) Angi teksturkoordinater for noder i geometriske primitiver.

1

0

0

1

(0.2, 0.8)

(0.9, 0.87)

(0.36, 0.2)

INF2340 / V04

slide8

Fordi det er såpass nyttig er teksturering

ofte implementert i maskinvare!

INF2340 / V04

transparens
Transparens
  • Skal se på et vanlig spesialtilfelle:
    • (helt eller delvis) gjennomsiktige objekter uten brytning
  • Noen anvendelser:

helgjennomsiktig del av tekstur

halvgjennomsiktig bilvindu

INF2340 / V04

slide10
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))

INF2340 / V04

interpolert blanding av farger vanlig modell

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.)

Interpolert blanding av farger(vanlig modell)

Lysstråle mot øyet

Bakgrunnsobjekt

Forgrunnsobjekt

Farge = IBG

Opasitet = irrelevant!

Farge = IFG

Opasitet = FG

Resultatfarge: I = FGIFG + (1 – FG)IBG

INF2340 / V04

generelt

2

3

0 = Global bakgrunn

1

I2

I3

I0

I1

´

´

Ii = iIi + (1 - i)Ii-1 , i 1

´

Ii =

0 = 1

1

2

3

Fargen som er resultatet av å blande

objekt 'i' med det som ligger bakenfor,

altså Ii-1.

´

I0 = I0

´

Generelt

INF2340 / V04

observasjon

 = 1

 = 0

skjules!

Observasjon
  • Ett enkelt objekt med  = 1 er tilstrekkelig for å skjule alt bakenfor.
  • Hvis alle objekter har  < 1 vil alle objekter med  > 0 bidra til den endelige fargen.

 = 1

 = 0

vil også bidra!

INF2340 / V04

ray tracing rt
“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

essensen i rt
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!

INF2340 / V04

rt overordnet algoritme
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.

INF2340 / V04

slide20

= primær stråle

= reflektert stråle

= brutt stråle

= skyggestråle

Transparent objekt

= normalvektor

pixel

INF2340 / V04

slide21

RT - Pseudokode

for <hvert pixel p> {

ray = <strålen fra øyepunktet gjennom p>

fargen i p = RT_trace(ray, 1)

}

procedure RT_trace(ray, depth) {

if <skjæring med et objekt>

returnRT_shade(..., depth)

else

return <bakgrunnsfargen>

}

INF2340 / V04

slide22

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 + 1)

if <objektet er transparent>

color += RT_trace(<brytningsstrålen>, depth + 1)

return color

}

INF2340 / V04

skj ringsalgoritmer essensielle i rt
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 = r2

Gir 2. gradslikning for t

røtter

(a, b, c)

r

INF2340 / V04

slide24

y

x

z

  • 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).

INF2340 / V04

slide25

Kontrollpunkter

  • Parametriske flater (splines etc.)

Ressurskrevende skjæringsalgoritme!

INF2340 / V04

rt er ressurskrevende
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

rt optimalisering 1
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!

2

2

2

1

2

1

1

1

INF2340 / V04

rt optimalisering 2

Prosessor 1

Prosessor 2

Prosessor 3

Prosessor 4

RT-optimalisering 2
  • Del bildet opp i n forskjellige utsnitt og la n prosessorer beregne hvert sitt utsnitt i parallell.

INF2340 / V04

animasjon
Animasjon
  • Å vise en sekvens med bilder etter hverandre i rask rekkefølge.
  • Kino:
    • Chaplin: 16 bilder / sek
    • Moderne filmer: 24 bilder / sek
  • Dataskjerm:
    • 60-120 bilder / sek

INF2340 / V04

to typer animasjon p datamaskin
To typer animasjon på datamaskin
  • Manuell (f.eks. ved interaktiv endring av kamera)
  • Automatisk (tradisjonell film)

INF2340 / V04

basisalgoritme for animasjon med 24 bilder sek

tid

Basisalgoritme for animasjon med 24 bilder / sek

for (i = 0; i < n; i++) {

<Slett bilde>

<Tegn bilde>

<Vent til 1/24 sek har passert>

}

S

T

V

1/24 sek

INF2340 / V04

problem
Problem

ser kun delvis ferdig bilde

først her ser vi det ferdige bildet

Resultat: flimring og blinking!

INF2340 / V04

l sning dobbeltbuffer

Video controller

Løsning: Dobbeltbuffer

Z-buffer

RGB-buffer 2

RGB-buffer 1

?

INF2340 / V04

slide34

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++) {

<Slett bilde>

<Tegn bilde>

<Bytt om på bufferne>

<Vent til 1/24 sek har passert>

}

INF2340 / V04