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

Slides:



Advertisements
Samankaltaiset esitykset
1. Missä vietät joulun useimmiten?. 2. Missä viettäisit joulun mieluiten?
Advertisements

Yleistä Läsnäolovelvollisuus Poissaolojen selvitys Käyttäytyminen
Kokeen laatiminen ja arviointi Tiia Karpin
Pääotsikko – Rivi alaotsikkoa varten. ©2012 VJS. Otsikkorivi Vantaan Jalkapalloseura eli VJS on Länsi- ja Keski-Vantaalla toimiva jal- kapalloon erikoistunut.
Fysiikan ja kemian perusteet ja pedagogiikka Kari Sormunen Kevät 2012
Kasvaako pääni, kun opin?
Good Karma = Hyviä Seurauksia
Tämän esityksen avulla osaat ladata PAF 5
Yhtälön ratkaiseminen
Ompelukuvasarja laskosverhon valmistuksesta yksittäiskappaleena.
JavaScript (c) Irja & Reino Aarinen, 2007
VBA –ohjelmoinnin perusteet
Valosta 1.
Kiintolevyn osiointi.
Musiikin ryhmäkoulutus
ERIKOISKULJETUS TRAKTORILLA
Yhteystila-algoritmi
SUOMEN PANKKI | FINLANDS BANK | BANK OF FINLAND Yritysrahoituskysely 2012.
13. Pakkaukset.
Hyvän esityksen piirteitä – ja mitä kannattaa välttää
Sisältö / 1 Tietokonegrafiikan jatkokurssi T op Lauri Savioja 1/06 Kurssin sisältö.
Sceneg raph / 1 Tietokonegrafiikan jatkokurssi T op Lauri Savioja 02/06 Scenegraph.
Sisältö / 1 Tietokonegrafiikan jatkokurssi T op Lauri Savioja 1/06 Kertausta OpenGL:sta.
AS Automaation signaalinkäsittelymenetelmät
TAUOLLA TYÖKAVEREIDEN KANSSA
Elinkeinopoliittinen mittaristo 2014 Pelkosenniemi 1.
1 Senioreiden säästäminen ja maksutavat 2014 SENIOREIDEN SÄÄSTÄMINEN JA MAKSUTAVAT
TMA.003 / L3 ( )1 3. Funktioista 3.1. Kuvaus ja funktio Olkoon A ja B ei-tyhjiä joukkoja. Tulojoukon A  B = {(x,y) | x  A, y  B} osajoukko on.
Elinkeinopoliittinen mittaristo 2014
Valo ja ääni Valon ominaisuuksia heijastuminen värit taittuminen
Ohjelmoinnin tekniikkaa Sisällys for -lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely.
Kotisivukoulutus Ohjeet alasivujen tekoon ja kuvien lisäämiseen © SVS Länsi-Suomi.
1.1. Itseisarvo * luvun etäisyys nollasta E.2. Poista itseisarvot
2. Vuokaaviot.
Opetussuunnitelma, koulun kehittäminen ja arviointi 5op
13. Hyvä ohjelmointitapa (osa 1)
UMF I Luento 1. Aika Luennot, Klo 14–16 to 4.9 – ke 10.9 ke 24.9 – ke 1.10 ke – pe Demot, Klo 10–12/12–14/14–16 Pe 12.9, Ti 16.9, Pe 19.9.
miten teet rytmisoittimen ilmapallosta ja sanomalehtipaperista
1 Raha-asioiden suunnitteleminen ja nykyinen rahatilanne Senioritutkimus 2011.
Pienin ja suurin arvo suljetulla välillä
Kuinka tehdä blogi o365:ssä
Murtoyhtälöt - Yhtälö, jossa nimittäjässä tuntematon
Miksi tämä on vaikeaa? Ilman minkäänlaisia rajoitteita ongelmat ei ole vaikeita ratkaista. Siihen löytyy jopa valmis ”kaava”. Valitettavasti jokaisessa.
Syntaksin harjoituskurssi CYK140
UMF I Luento 7. Viime kerralta Lue II.5 ja II.6. Lause II.5.1 tapauksessa f(x,y) = (x, sin(y)) ja g(x, y) = (cos(x), y). Voit lähettää epäselvistä kohdista.
1. Usean muuttujan funktiot
3D -grafiikka ja animaatio
C 1. Testaus on ”sarja toimintoja” Itse asiassa, testaus on vuorovaikutusta, jota rytmittää ohjelmiston arviointi. Vaikka on hyödyllistä tunnistaa sarja.
Hyvä ohjelmointitapa (osa 2) Yleistä Lisää hyviä ohjelmointikäytäntöjä: − Jaa pitkä koodi osiin. − Käytä attribuutteja säästeliäästi.
Toistorakenne Toistorakennetta käytetään ohjelmissa sellaisissa tilanteissa, joissa jotain tiettyä ohjelmassa tapahtuvaa toimenpidekokonaisuutta halutaan.
Heuristinen arviointi Käyttöliittymäseminaari Jere Salonen.
S ysteemianalyysin Laboratorio Teknillinen korkeakoulu Esitelmä 15 – Mikko Harju Optimointiopin seminaari - Kevät 2010 Korreloitu tasapaino ja sosiaaliset.
Matkailun nettisivujen analysointi
Rinnakkaisuus Järjestelmässä, jossa voi olla useita prosesseja rinnakkain suorituksessa voi tulla tilanteita, joissa prosessien suoritusta täytyy kontrolloida.
Visual Basic -ohjelmointi
Tilastollinen testaus Χ 2 -testi nelikentässä kaikkein yksinkertaisin lähtökohta tilastolliselle testille Esim. materiaalin (rauta tai pronssi) ja korun.
S ysteemianalyysin Laboratorio Teknillinen korkeakoulu Esitelmä 2 - Jirka Poropudas Optimointiopin seminaari - Kevät 2005 / 1 Bayes-verkoista s
Visual Basic -ohjelmointi
1 3D -grafiikka ja animaatio Värivarjostus ja pintojen ominaisuudet Harri Airaksinen.
1 3D –grafiikka ja animaatio Lehtiä, videoita ja tenttikysymys alueita Harri Airaksinen;
Toistorakenne Toistorakennetta käytetään ohjelmissa sellaisissa tilanteissa, joissa jotain tiettyä ohjelmassa tapahtuvaa toimenpidekokonaisuutta halutaan.
Hyvän ja huonon esityksen piirteitä
Ti LÄHIVERKOT -ERIKOISTYÖKURSSI SAN: Storage Area Network Mikko Hellstén Ville Pesonen.
MapInfon tiedostot TAB – Tiedosto, jonka avulla tietokanta avataan MapInfossa. Tiedostossa tietoja kentistä ja koordinaattijärjestelmästä. DAT, XLS. TXT.
Toistorakenne Toistorakennetta käytetään ohjelmissa sellaisissa tilanteissa, joissa jotain tiettyä ohjelmassa tapahtuvaa toimenpidekokonaisuutta halutaan.
3D-grafiikka Kamera ja valot.
Suunnistuksen kuivaharjoitus
3D-grafiikka Pintamateriaalit.
3D-grafiikka Renderöinti Kertaus.
Kuvien piirtäminen LibreOffice Draw.
Esityksen transkriptio:

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

Näkyvyystarkastelut ja varjot / 2 Sisältö Näkyvyystarkastelu –Solurenderöinti –Portaalirenderöinti –Quad-/Octtree Varjot –Varjotekstuurit –Projektiovarjot –Varjotilavuudet

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

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

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ä

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 solu 2. Renderöi naapurisolut (3. Renderöi naapureiden naapurisolut)

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

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ä

Näkyvyystarkastelut ja varjot / 9 BSP Binary Space Partitioning Vapaat tai axis-aligned jakotasot

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

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

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

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

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.bdot-light[1]*plane.b-light[2]*plane.b-light[3]*plane.b -light[0]*plane.c-light[1]*plane.cdot-light[2]*plane.c-light[3]*plane.c -light[0]*plane.d-light[1]*plane.d-light[2]*plane.ddot-light[3]*plane.d light = valon sijainti plane = tason yhtälön kertoimet dot = light:n ja plane:n pistetulo Projisoidaan objektin kaikki vertexit

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

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 sourceBW image of obstacleFinal image Figure from Moller & Haines “Real Time Rendering”

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

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

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

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

Näkyvyystarkastelut ja varjot / 21 Varjotilavuudet OpenGL-pseudo implementaatio Draw(ambient); // maailma ambientilla valolla glDepthMask(GL_FALSE); // disabloidaan z-testi glStencilOp(..GL_INCR); // lisätään stenciliä glCullFace(GL_BACK); // piirretään vain etureunat DrawShadowVolumes(); glStencilOp(..GL_DECR); // vähennetään stenciliä glCullFace(GL_FRONT); // piirretään takareunat DrawShadowVolumes(); glDepthMask(GL_TRUE); glStencilFunc(GL_EQUAL, 0, 1) // piirto, jos stencil = 0 Draw(other); // maailma diffuusilla ja speculaarilla

Näkyvyystarkastelut ja varjot / 22 Shadow Maps Laske ”Depth map” valosta katsottuna Projisoi katseluavaruuteen Päättele mitkä alueet on varjossa

Näkyvyystarkastelut ja varjot / 23 Shadow maps In Renderman –(High-end production software)

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”

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

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

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