tietokonegrafiikan jatkokurssi t-111.5300 4 op

27
Näkyvyystarkastelut ja varjot / 1 Tietokonegrafiikan jatkokurssi T-111.5300 4 op Lauri Savioja 02/06 Luento 4: Näkyvyystarkastelut ja varjot

Upload: alder

Post on 19-Jan-2016

25 views

Category:

Documents


1 download

DESCRIPTION

Tietokonegrafiikan jatkokurssi T-111.5300 4 op. Lauri Savioja 02/06. Luento 4: Näkyvyystarkastelut ja varjot. Sisältö. Näkyvyystarkastelu Solurenderöinti Portaalirenderöinti Quad-/Octtree Varjot Varjotekstuurit Projektiovarjot Varjotilavuudet. Näkyvyystarkastelu. Miksi? - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Tietokonegrafiikan jatkokurssi T-111.5300  4 op

Näkyvyystarkastelut ja varjot / 1

Tietokonegrafiikan jatkokurssiT-111.5300

4 op

Lauri Savioja02/06

Luento 4: Näkyvyystarkastelut ja varjot

Page 2: Tietokonegrafiikan jatkokurssi T-111.5300  4 op

Näkyvyystarkastelut ja varjot / 2

Sisältö• Näkyvyystarkastelu

– Solurenderöinti– Portaalirenderöinti– Quad-/Octtree

• Varjot– Varjotekstuurit– Projektiovarjot– Varjotilavuudet

Page 3: Tietokonegrafiikan jatkokurssi T-111.5300  4 op

Näkyvyystarkastelut ja varjot / 3

Näkyvyystarkastelu• Miksi?

– Maailmat liian suuria– Näytönohjaimet ja tietokoneet liian hitaita– Voidaan tarkastella vain pientä osaa maailmasta– Turha piirtää sellaista mikä ei ole näkyvissä

• Vaatii yleensä oman tietorakenteen• Vaatii myös jonkin verran laskentaa

Page 4: Tietokonegrafiikan jatkokurssi T-111.5300  4 op

Näkyvyystarkastelut ja varjot / 4

Näkyvyystarkastelu• Tarkoituksena löytää mahdollisimman pieni PVS (Potentially

Visible Set)• PVS sisältää renderöitävät polygonit• Saattaa sisältää joitain näkymättömissä olevia polygoneja• Jotkin editykselliset algoritmit saattavat parantaa PVS:ää ajan

kuluessa, vaikka mikään ei olisi liikkunutkaan• Tälläinen on mm. Hybrid Graphics:n dPVS

Page 5: Tietokonegrafiikan jatkokurssi T-111.5300  4 op

Näkyvyystarkastelut ja varjot / 5

Solurenderöinti• Jaetaan maailma soluihin• Renderöidään nykyinen solu ja sen naapurit• Haluttaessa voidaan renderöintialuetta laajentaa

• Helppo implementoida• Sopii parhaiten suljettuihin sisätiloihin• Ongelma, jos naapurisolun läpi voi nähdä

Page 6: Tietokonegrafiikan jatkokurssi T-111.5300  4 op

Näkyvyystarkastelut ja varjot / 6

Solurenderöinti• Implementointi

– Jaetaan maailma soluihin– Solujen ei tarvitse olla tasakokoisia, yleensä huonejako on sopiva– Määritetään soluille naapuruussuhteet– Renderöidään nykyinen solu ja tarvittava määrä muita soluja

1. Renderöi nykyinen solu2. Renderöi naapurisolut(3. Renderöi naapureiden naapurisolut)

Page 7: Tietokonegrafiikan jatkokurssi T-111.5300  4 op

Näkyvyystarkastelut ja varjot / 7

Portaalirenderöinti• Maailma soluissa kuten solurenderöinnissäkin• Solujen välillä portaalipolygonit• Portaalipolygonia ei piirretä näkyviin• Toiseen soluun voi nähdä vain portaalipolygonin läpi

– eli yleensä ovet ja ikkunat ovat portaalipolygoneja

• Riittää tarkistaa, onko yhtään portaalipolygonia näkyvissä

1. Renderöi nykyinen solu (huone)2. Näkyykö portaalipolygoneja?3. Jos näkyy, niin renderöi niiden takana oleva solu ja toista

portaalitestaus

Page 8: Tietokonegrafiikan jatkokurssi T-111.5300  4 op

Näkyvyystarkastelut ja varjot / 8

Portaalirenderöinti• Portaalin takana oleva solu voidaan leikata portaalipolygonin

reunoihin• Tällä voidaan minimoida piirrettävä polygonimäärä• Toisaalta sen leikkaaminen aiheuttaa lisää laskentaa

• Portaaleilla on helppoa tehdä peili• Laitetaan vain portaalipolygoni osoittamaan takaisin samaan

soluun• Peilien kanssa kannattaa olla varovainen, ettei tule

päättymätöntä heijastusketjua• Yleensä heijastusportaaleissa lisätään laskuria, jolla voidaan

rajoittaa rekursiosyvyys johonkin järkevään

• Remedy:n Max Payne käyttää portaalirenderöintiä

Page 9: Tietokonegrafiikan jatkokurssi T-111.5300  4 op

Näkyvyystarkastelut ja varjot / 9

BSP

• Binary Space Partitioning

• Vapaat tai axis-aligned jakotasot

Page 10: Tietokonegrafiikan jatkokurssi T-111.5300  4 op

Näkyvyystarkastelut ja varjot / 10

Quad-/Octtree• Maailma voidaan myös jakaa esim. Quadtree:llä osiin• Puurakenteesta voidaan piirtää riittävän suuri haara, jolloin

voidaan olettaa melko suurella todennäköisyydellä, että piirrettävään näkymään ei jää aukkoja

• Tämä ei kuitenkaan ole täysin varmaa

• Mikäli quadtree:tä käytetään esim. törmäystarkistuksiin, niin tällöin on helppo käyttää sitä myös renderöinnin rajoittamiseen

• Sisätiloissa Quadtree:tä ei kannata käyttää, mutta ulkoilmaan se sopii paremmin

Page 11: Tietokonegrafiikan jatkokurssi T-111.5300  4 op

Näkyvyystarkastelut ja varjot / 11

Varjot

• Varjoilla saadaan paljon realistisemman näköistä valaistusta

• Varjot vaativat aika paljon laskentaa

• Varjot voidaan laskea monella eri tavalla– Varjotekstuurit– Projisoidut varjot– Varjotilavuudet– Shadow Map

Page 12: Tietokonegrafiikan jatkokurssi T-111.5300  4 op

Näkyvyystarkastelut ja varjot / 12

Varjotekstuurit

• Varjotekstuurit usein staattisia• Voidaan myös animoida hahmon animaation mukana• Varjotekstuurit nopeita käyttää• Resoluutio ei riitä varjojen heittämiseen kauas• Jos varjotekstuurin resoluutio riittävän suuri, niin

silloin tekstuuri vie liikaa muistia• Varjotekstuurit lasketaan yleensä etukäteen, cpu:ta

säästämättä, esim. radiositeetilla

Page 13: Tietokonegrafiikan jatkokurssi T-111.5300  4 op

Näkyvyystarkastelut ja varjot / 13

Projektiovarjot

• Heittää objektin varjon tasolle• Projisoitu kuva blendataan tason väriin• Melko nopea

• Objekti projisoidaan tasolle valon näkökulmasta– Objekti projisoidaan tasolle– Piirretään mustalla -> varjo

Page 14: Tietokonegrafiikan jatkokurssi T-111.5300  4 op

Näkyvyystarkastelut ja varjot / 14

Projektiovarjot• Projisointiin tarvittava projisointimatriisi

dot-light[0]*plane.a -light[1]*plane.a -light[2]*plane.a -light[3]*plane.a-light[0]*plane.b dot-light[1]*plane.b -light[2]*plane.b -light[3]*plane.b-light[0]*plane.c -light[1]*plane.c dot-light[2]*plane.c -light[3]*plane.c-light[0]*plane.d -light[1]*plane.d -light[2]*plane.d dot-light[3]*plane.d

light = valon sijaintiplane = tason yhtälön kertoimetdot = light:n ja plane:n pistetulo

• Projisoidaan objektin kaikki vertexit

Page 15: Tietokonegrafiikan jatkokurssi T-111.5300  4 op

Näkyvyystarkastelut ja varjot / 15

Projektiovarjot• Projisoinnissa otettava huomioon syvyystesti• 1. Varjon voi laittaa hieman erilleen tasosta• 2. Syvyystestin voi ottaa pois käytöstä varjojen piirron ajaksi

• Stencil-puskurilla voidaan rajoittaa varjojen piirtoalue halutulle alueelle tasossa

• Monta valonlähdettä -> monta projisointia

• Ongelmia– Eivät toimi konkaaveilla objekteilla– Ei ole hyvää tapaa heittää varjoa toisen objektin päälle

• Voidaan tehdä käsittelemällä jokaista polygonia projisoitavana tasona

– Tasossa olevat heijastukset näkyvät varjon läpi

Page 16: Tietokonegrafiikan jatkokurssi T-111.5300  4 op

Näkyvyystarkastelut ja varjot / 16

Fake Shadows using Projective Textures• Separate obstacle and receiver• Compute b/w image of obstacle from light• Use image as projective texture for each receiver

Image from light source BW image of obstacle Final imageFigure from Moller & Haines “Real Time Rendering”

Page 17: Tietokonegrafiikan jatkokurssi T-111.5300  4 op

Näkyvyystarkastelut ja varjot / 17

Varjotilavuudet

• Idea: Heitetään viivat valonlähteestä objektin reunojen kautta

• Näistä luodaan varjotilavuus objektin taakse

• Kun varjotilavuus on luotu, pitää vielä määritellä mitkä pisteet kuuluvat ko. tilavuuteen

Page 18: Tietokonegrafiikan jatkokurssi T-111.5300  4 op

Näkyvyystarkastelut ja varjot / 18

Varjotilavuudet• Varjotilavuuden luontiin tarvitaan objektin siluetti• Siluetti löytyy esim. niin, että sen toisella puolella olevan

polygonin normaali osoittaa kohti valoa ja toisella puolella poispäin valosta

• Pisteen testaus:– Heitetään säde maailmasta kohti katsojaa ja lasketaan kuinka

monta kertaa se menee tai poistuu varjotilavuudesta– Tähän voidaan käyttää stencil-puskuria

Page 19: Tietokonegrafiikan jatkokurssi T-111.5300  4 op

Näkyvyystarkastelut ja varjot / 19

Shadow Volumes• Shoot a ray from the eye to the

visible point• Increment/decrement a counter each

time we intersect a shadow volume polygon (check z buffer)

• If the counter ≠ 0,the point is in shadow

Page 20: Tietokonegrafiikan jatkokurssi T-111.5300  4 op

Näkyvyystarkastelut ja varjot / 20

Varjotilavuudet• 1. Renderöi maailma normaalisti ambientilla ja emissiivisellä

valaistuksella• 2. Renderöi varjotilavuudet, disabloi kirjoitus kuvapuskuriin ja

syvyyspuskuriin ja kirjoita vain stencil-puskuriin, laske kuinka montaa kertaa mennään varjotilavuuteen sisään (piirrä siis vain etureunat varjoista)

• 3. Renderöi kuten kohdassa 2., mutta nyt lasketaan poistumiset varjotilavuudesta, eli takareunat ja vähennetään ne stencilistä

• 4. Renderöi maailma diffuusilla ja heijastusvalaistuksella vain sellaisista kohdista, joissa stencil-puskurissa on nollaa

• Ongelmia:– Hidas, vaatii neljä rendausta– Kauempi leikkaustaso voi leikata varjotilavuuden takareunan pois,

jolloin varjot saattavat muuttua “negatiiveiksi” tai ne voivat häipyä kokonaan

Page 21: Tietokonegrafiikan jatkokurssi T-111.5300  4 op

Näkyvyystarkastelut ja varjot / 21

Varjotilavuudet• OpenGL-pseudo implementaatio

Draw(ambient); // maailma ambientilla valollaglDepthMask(GL_FALSE); // disabloidaan z-testiglStencilOp(..GL_INCR); // lisätään stenciliäglCullFace(GL_BACK); // piirretään vain etureunatDrawShadowVolumes();glStencilOp(..GL_DECR); // vähennetään stenciliäglCullFace(GL_FRONT); // piirretään takareunatDrawShadowVolumes();glDepthMask(GL_TRUE);glStencilFunc(GL_EQUAL, 0, 1)

// piirto, jos stencil = 0Draw(other);

// maailma diffuusilla ja speculaarilla

Page 22: Tietokonegrafiikan jatkokurssi T-111.5300  4 op

Näkyvyystarkastelut ja varjot / 22

Shadow Maps

• Laske ”Depth map” valosta katsottuna

• Projisoi katseluavaruuteen

• Päättele mitkä alueet on varjossa

Page 23: Tietokonegrafiikan jatkokurssi T-111.5300  4 op

Näkyvyystarkastelut ja varjot / 23

Shadow maps• In Renderman

– (High-end production software)

Page 24: Tietokonegrafiikan jatkokurssi T-111.5300  4 op

Näkyvyystarkastelut ja varjot / 24

Shadow Mapping• Texture mapping with depth information• ≥ 2 passes through the pipeline

– Compute shadow map (depth from light source)

– Render final image(check shadow map to see if points are in shadow)

Figure from Foley et al. “Computer Graphics Principles and Practice”

Page 25: Tietokonegrafiikan jatkokurssi T-111.5300  4 op

Näkyvyystarkastelut ja varjot / 25

Pehmeät varjot• Reaalimaailman varjot lähes aina pehmeitä• Tietokoneella raskas tehdä pehmeitä varjoja• Säteen seuranta ja radiositeetti ei reaaliaikatekniikoita

• Viime aikoina ilmaantunut muutamia eri tekniikoita tehdä pehmeitä varjoja yksinkertaisille maailmoille reaaliajassa– Objektien siluetteihin voidaan liittää pehmentävä reunus varjojen

laskentaa varten

Page 26: Tietokonegrafiikan jatkokurssi T-111.5300  4 op

Näkyvyystarkastelut ja varjot / 26

Säteen seuranta• Säteen seurannassa (path tracing) seurataan ruudusta

maailmaan “heitettyjä” säteitä• Säteen osuessa pintaan se heijastuu ja siroaa, materiaalin

mukaan• Lopullinen väri määräytyy, kun riittävä määrä heijastuksia on

tullut tai kun säde on osunut valonlähteeseen

• Tuloksena realistinen kuva ja pehmeät varjot

Page 27: Tietokonegrafiikan jatkokurssi T-111.5300  4 op

Näkyvyystarkastelut ja varjot / 27

Radiositeetti• Radiositeettilaskennalla saavutetaan täydelliset varjot ideaalissa

diffuusissa tapauksessa• Vaatii paljon laskenta-aikaa, ei reaaliaikatekniikkaa• Lasketaan pinnoilta toisille heijastuvia valoja• Saadaan pehmeät varjot ja muutenkin realistinen kuva