HELSINKI UNIVERSITY OF TECHNOLOGY 7.4.2003 Telecommunications Software and Multimedia Laboratory Tik-111.500 Tietokonegrafiikan seminaari Kevät 2003



Samankaltaiset tiedostot
HELSINGIN TEKNILLINEN KORKEAKOULU Tietoliikenneohjelmistojen ja Multimedian Laboratorio Tik Tietokonegrafiikan seminaari Kevät 2003

Luento 10: Näkyvyystarkastelut ja varjot. Sisältö

Luku 6: Grafiikka. 2D-grafiikka 3D-liukuhihna Epäsuora valaistus Laskostuminen Mobiililaitteet Sisätilat Ulkotilat

Tilanhallintatekniikat

Kenguru 2016 Student lukiosarja

Kenguru 2012 Junior sivu 1 / 8 (lukion 1. vuosi)

5. Grafiikkaliukuhihna: (1) geometriset operaatiot

Luento 4: Näkyvyystarkastelut ja varjot

Mohrin-Mascheronin lause kolmiulotteisessa harppi-viivaingeometriassa

Luento 3: 3D katselu. Sisältö

KVARTAL S U O M I SUUNNITTELU: MITAT: HYVÄ TIETÄÄ: HOITO: IKEA of Sweden

Luento 6: Piilopinnat ja Näkyvyys

Kenguru 2012 Student sivu 1 / 8 (lukion 2. ja 3. vuosi)

Cloud rendering. Juho Karppinen 49480E

Näin lisäeristät 4. Sisäpuolinen lisäeristys. Tuotteina PAROC extra ja PAROC-tiivistystuotteet

Kohdissa 2 ja 3 jos lukujen valintaan on useita vaihtoehtoja, valitaan sellaiset luvut, jotka ovat mahdollisimman lähellä listan alkua.

Ohjelmiston kuvakkeiden kuvaus

Seuraa huolellisesti annettuja ohjeita. Tee taitokset tarkkaan,

Potentially Visible Set (PVS)

2016/06/21 13:27 1/10 Laskentatavat

Kenguru 2014 Ecolier (4. ja 5. luokka)

Algoritmit 2. Luento 6 To Timo Männikkö

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Kenguru 2016 Student lukiosarjan ratkaisut

Vektoreita GeoGebrassa.

Kuvien kanssa työskentely GeoGebrassa

MAY1 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty Julkaiseminen sallittu vain koulun suljetussa verkossa.

Osakesalkun optimointi. Anni Halkola Turun yliopisto 2016

Avid Pro Tools Äänityksen perusteet. Petri Myllys 2013 / Taideyliopisto, Sibelius-Akatemia tp48 Äänitekniikan perusteet

Malleja ja menetelmiä geometriseen tietokonenäköön

Luento 6: Tulostusprimitiivien toteutus

matematiikka Martti Heinonen Markus Luoma Leena Mannila Kati Rautakorpi-Salmio Timo Tapiainen Tommi Tikka Timo Urpiola

Hakusuosikit. Unifaun Online

Solmu 3/2001 Solmu 3/2001. Kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa oli seuraava tehtävä:

Peliteoria luento 1. May 25, Peliteoria luento 1

Luento 6: Geometrinen mallinnus

Geometrialtaan mielivaltaisen huonetilan pintojen näkyvyyskertoimien laskenta

LED VALON KÄYTTÖSOVELLUKSIA.

Kenguru 2012 Cadet (8. ja 9. luokka)

3 Suorat ja tasot. 3.1 Suora. Tässä luvussa käsitellään avaruuksien R 2 ja R 3 suoria ja tasoja vektoreiden näkökulmasta.

Asuinalue (ruskea tausta) Kalatori Viljatori

Luento 7: 3D katselu. Sisältö

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Puzzle-SM Loppukilpailu Oulu

Kenguru 2011 Benjamin (6. ja 7. luokka)

f(x, y) = x 2 y 2 f(0, t) = t 2 < 0 < t 2 = f(t, 0) kaikilla t 0.

LATTIALÄMMITYS UPONOR CONTROL SYSTEM. Uponor Control System Energiaa säästävä lämmönsäätö - Lisää mukavuutta vähemmällä energiankulutuksella

Matematiikan tukikurssi

Malliratkaisut Demot

oppilaan kiusaamista kotitehtävillä vai oppimisen työkalu?

Muodonmuutostila hum

Matematiikan tukikurssi

Sisällys. T Tietokonegrafiikan perusteet. OpenGL-ohjelmointi 11/2007. Mikä on OpenGL?

Muita kuvankäsittelyohjelmia on mm. Paint Shop Pro, Photoshop Elements, Microsoft Office Picture Manager

Yksinkertaistaminen normaalitekstuureiksi

Avaruuden kolme sellaista pistettä, jotka eivät sijaitse samalla suoralla, määräävät

Kenguru 2016 Mini-Ecolier (2. ja 3. luokka) Ratkaisut

PERUSKOULUN MATEMATIIKKAKILPAILU LOPPUKILPAILU PERJANTAINA

x + 1 πx + 2y = 6 2y = 6 x 1 2 πx y = x 1 4 πx Ikkunan pinta-ala on suorakulmion ja puoliympyrän pinta-alojen summa, eli

Johdatus verkkoteoriaan luento Netspace

Matikkaa KA1-kurssilaisille, osa 3: suoran piirtäminen koordinaatistoon

Näin lisäeristät 2. Purueristeisen seinän ulkopuolinen lisäeristys. Eristeinä PAROC Renova tai PAROC WPS 3n

2 Pistejoukko koordinaatistossa

Möbiuksen nauha. Välineet: paperisuikaleita, paperiristejä (liitteenä) lyijykynä, teippiä, sakset, värikyniä, liimaa ja värillistä paperia

Kenguru 2016 Benjamin (6. ja 7. luokka)


Luento 2 Stereokuvan laskeminen Maa Fotogrammetrian perusteet 1

Reitityksen ja realiaikatiedon virheelliset tilanteet

Monikulmiot 1/5 Sisältö ESITIEDOT: kolmio

Merkitse kertolasku potenssin avulla ja laske sen arvo.

a b c d

Datatähti alkukilpailu

Avaruuslävistäjää etsimässä

Opetusmateriaali. Fermat'n periaatteen esittely

50mk/h minimipalkaksi

Tarkastellaan neliötä, jonka sivun pituus on yksi metri. Silloinhan sen pinta-ala on 1m 1m

LUMATE-tiedekerhokerta, suunnitelma AIHE: PELIT JA TAKTIIKAT

Suora. Määritelmä. Oletetaan, että n = 2 tai n = 3. Avaruuden R n suora on joukko. { p + t v t R},

Toisessa kyselyssä alueella on 1 ruudussa A ja 3 ruudussa B, joten suosituin ehdokas on B.

Kerro kuvin 3:n uudet ominaisuudet

T Vuorovaikutteinen tietokonegrafiikka Tentti

VAASAN YLIOPISTO TEKNILLINEN TIEDEKUNTA SÄHKÖTEKNIIKKA. Lauri Karppi j SATE.2010 Dynaaminen kenttäteoria DIPOLIRYHMÄANTENNI.

VIISIPALLO PELI JOKA KEHITTÄÄ YHTENÄISYYTTÄ YHTEISTYÖTÄ YHTEISÖÄ

JOKAPÄIVÄINEN PAPERIMME

1. Tarkista ennen asennuksen aloittamista että sinulla on kaikki siihen vaadittavat osat.

Kenguru 2010 Cadet (8. ja 9. luokka) sivu 1 / 5

Pyramidin yleiset säännöt

Materiaalifysiikan perusteet P Ratkaisut 1, Kevät 2017

Kenguru Écolier (4. ja 5. luokka) sivu 1/5

PELIOHJEET (suomeksi) Koira. Peli on kaksivaiheinen: Vaihe 1:

/X.WXWNLHOPD 5HDDOLDLNDLVHWYDUMRWMD YDUMRVlUPL DOJRULWPL

10. Globaali valaistus

Valmistelut: Aseta kartiot numerojärjestykseen pienimmästä suurimpaan (alkeisopiskelu) tai sekalaiseen järjestykseen (pidemmälle edenneet oppilaat).

Kanta ja Kannan-vaihto

Google-dokumentit. Opetusteknologiakeskus Mediamylly

10.2. Säteenjäljitys ja radiositeettialgoritmi. Säteenjäljitys

Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan toistaminen silmukalla. Esimerkkejä:

Yritysturvallisuuden perusteet

Luku 3. Listankäsittelyä. 3.1 Listat

Transkriptio:

HELSINKI UNIVERSITY OF TECHNOLOGY 7.4.2003 Telecommunications Software and Multimedia Laboratory Tik-111.500 Tietokonegrafiikan seminaari Kevät 2003 Portaalit ja peilit Henrik Lönnroth 45894L

Portaalit ja peilit Henrik Lönnroth hlonnrot@cc.hut.fi Tiivistelmä Tässä työssä käsitellään reaaliaikaisen kolmiulotteisen tietokonegrafiikan renderöintiä portaalien avulla, sekä miten portaalien avulla voidaan näkymättömissä olevat pinnat jättää piirtämättä. Työssä käydään läpi portaalien idea ja toteutus. Lisäksi esitellään miten portaalien avulla voi luoda esimerkiksi peilejä, valvontakameroita tai valonlähteitä. 1. JOHDANTO Realistisissa kolmiulotteissa maailmoissa, kuten nykyaikaisissa peleissä, alueet ovat kasvaneet niin valtavaksi, että koko alueen läpikäyminen piirtovaiheessa aiheuttaa turhan paljon hidastumista. Helppo tapa olisi jättää piirtämättä ne alueet jotka ovat liian kaukana katsojasta tai näkökentän ulkopuolella. Tässäkin tapauksessa kuitenkin toistensa taakse jääviä alueita joudutaan laskemaan turhaan. Vielä parempi vaihtoehto prosessin nopeuttamiseksi on piirtää ainoastaan se, mikä katsojan näkökulmasta näkyy. Kuitenkin monessa tekniikassa maailman on oltava staattinen eikä reaaliaikaisia muutoksia voi tehdä. Tämä tarkoittaa että esimerkiksi ovia ei voi avata tai valoja ei voi siirtää jne. Portaalitekniikan avulla on mahdollista luoda maailmoja joissa tiloja voi muuttaa koko ajan. Portaalit mahdollistavat myös erilaisten efektien luomisen. Portaalitekniikkaa käytetään monissa kolmiulotteisia maailmoja kuvaavissa ohjelmissa, kuten peleissä. Esimerkiksi Hybrid Graphicsin kehittämässä dvps näkyvyysoptimisointi kirjastossa portaalitekniikka on oleellisessa osassa. (Timo Aila, Ville Miettinen 2001) Portaalien avulla voidaan toistensa taakse jäävät osat jättää kokonaan piirtämättä. Portaalit toimivat yksinkertaisella periaatteella jossa maailma jaetaan pienempiin kolmiulotteisiin kappaleisiin eli soluihin. Solujen täytyy olla suljettuja, jolla tarkoitetaan ettei solusta ole ulospääsyä osumatta yhteenkään polygoniin. Yksinkertaisimmat solut ovat konvekseja, mutta grafiikkakorttien z-puskurin avulla voidaan toteuttaa myös konkaaveja soluja. Konveksilla solulla tarkoitetaan sitä, ettei missään solun sisäpuolella sijaitsevan kahden pisteen väliin voi vetää suoraa viivaa ilman että se läpäisisi jonkin polygonin. Kaikkein yksinkertaisin solu on kuution muotoinen huone, joka muodostuu neljästä seinästä, katosta ja lattiasta. Kuva 1a: Suljettu, konveksi Kuva 1b: Suljettu, konkaavi 1

Kuvan 1b tila ei ole konveksi koska pisteiden A ja B väliin vedetty viiva kulkee kahden polygonin läpi. Kuvan 1b tila voitaisiin halutessa muuttaa konveksiksi jakamalla se pienempiin osiin sijoittamalla portaaleja osien väliin. Solut kiinnittyvät toisiinsa portaalien avulla. Portaali on polygoni jonka läpi voi nähdä toiseen soluun. Otetaan esimerkiksi talo, jossa on neljä huonetta. Huoneista voi nähdä ja siirtyä toiseen huoneeseen ovien läpi. Huoneet ovat tässä tapauksessa soluja ja ovet portaaleja. Portaalit toimivatkin parhaiten juuri sisätilojen esittämiseen. 2. PORTAALITYYPIT Portaalimaailma muodostuu soluista ja portaaleista. Soluja on olemassa siis sekä konvekseja tai konkaaveja. Portaalit voidaan jakaa fyysisiin ja virtuaalehin portaaleihin. Solut jakavat kuvattavan maailman yksittäisiin osiin. Solut sijoitetaan aina maailman koordinaatistoon, mutta solun sisäiset esineet ja niihin liitettävät portaalit sijoitetaan portaalin sisäiseen koordinaatistoon. Tämä mahdollistaa sen, että solut voivat olla joko staattisia tai dynaamisia, kuten esimerkiksi huoneet liikkuvassa avaruusaluksessa. 2.1 Konveksi solu Konveksien solujen hyöty on se, ettei niitä käytettäessä mitkään polygonit tule piirretyksi päällekkäin. Näin ollen itse piirtojärjestyksellä ei ole väliä, vaan polygonit voidaan piirtää missä järjestyksessä tahansa. Konveksit solut varmistavat myös sen ettei solun sisällä liikuttaessa kamera koskaan joudu solun ulkopuolelle, koska konveksin solun määritelmähän takaa ettei solun sisäisten pisteiden väliin voi tulla polygonia. Kuitenkaan soluja ei käytännössä kannata jakaa konvekseihin soluihin. Vähänkin monimutkaisempien maailmojen jakaminen ainoastaan konvekseihin soluihin aiheuttaisi suuren määrän soluja, joka taas lisäisi kustannuksia, muistin tarvetta, sekä hidastaisi itse renderöintiä. Pahin tapaus konveksille solujaottelulle on esimerkiksi huone, jonka keskellä on pyöreä pylväs. Tässä tapauksessa jokainen pylvään polygoni pitäisi sijoittaa omaan soluunsa. Suuri määrä soluja aiheuttaa myös sen että liikkuvat esineet joudutaan sijoittamaan yhä useampaan soluun samaan aikaan. 2.1 Konkaavi solu Huomattavasti suurempi hyöty portaaleista saadaan käytättämällä konkaaveja soluja ja antamalla grafiikkakortin z-puskurin hoitaa solussa päällekkäin olevien polygonien piirtämisen. Suunnittelija tai ohjelmoija voi asettaa solut järkevämmin käsin kuin jakamalla ne automaattisesti konvekseiksi soluiksi. Näin yksi solu voi suoraan esittää yhtä kokonaista huonetta riippumatta huoneen muodosta. Tällä tavalla myös itse renderöinti nopeutuu, vaikka pientä päällekkäispiirtämistä aiheutuisikin. Tosin konkaavit solut aiheuttavat enemmän työtä esim. törmäystesteissä koska solun sisällä liikuttaessa kahden pisteen välillä on varmistettava ettei kamera kulje vahingossa solun ulkopuolelle. 2.2 Fyysinen portaali Fyysiset portaalit ovat tavallisia yhteyksiä kahden vierekkäisen solun välillä. Tavallisella yhteydellä tarkoitetaan esimerkiksi ovea josta voi kulkea viereiseen 2

huoneeseen tai ikkunaa josta näkee viereiseen soluun. Fyysisiä portaaleja luodessa portaali on yhdistettävä johonkin soluun ja sille on asetettava solun sisäinen koordinaatisto, johon soluun kuuluvat polygonit ja esineet sijoitetaan. Tämän lisäksi on vielä merkittävä portaalille toinen kohdesolu. 2.3 Virtuaalinen portaali Virtuaalisen portaalin läpi ei voi kulkea ja toisin kun fyysinen portaali, se ei yhdistä kahta solua toisiinsa. Virtuaaliset portaalit ovat yhteyksiä kahden eri portaalin välille. Virtuaalisen portaalin merkittävin ero fyysiseen portaaliin verrattuna on se, että virtuaalinen portaali voi taittaa valoa. Kun fyysisestä portaalista nähdään vain suoraan viereiseen soluun, voidaan virtuaalisen portaalin läpi nähdä esimerkiksi maailman toisella puolella sijaitsevaan soluun tai jopa takaisin samaan soluun. Virtuaalisia portaaleja käytetään lähinnä efektien, kuten pelien ja teleporttien luomiseen. Virtuaalisen portaalin luominen on hieman fyysistä portaalia hankalampaa. Kun luodaan virtuaalinen portaali, on luotava myös toinen portaali johon alkuperäinen portaali yhdistetään. Virtuaaliportaaliin on lisäksi liitettävä transformaatiomatriisi joka kuvaa miten portaalin läpi kulkeminen hoidetaan. Transformaatiomatriisi kuvaa miten esimerkiksi valvontamonitorin läpi mentäessä katsomispiste on siirrettävä monitoriin liitetyn kameran paikalle. Transformaatiomatriisi on matriisi jonka avulla valonsäteet taitetaan portaalin läpi mentäessä. 3. PORTAALIEN RENDERÖINTI Seuraavaksi käsittelemme portaalien toimintaa erilaisissa tilanteissa sekä käymme esimerkin avulla läpi kolmiulotteisen maailman piirtämisen portaalien avulla. 3.1 Portaalien renderöintiperiaate Portaalien avulla renderöitäessä lähdetään aina liikkeelle siitä solussa missä katselupiste on. Muista soluista ei tarvitse vielä välittää ollenkaan. Katselupisteestä lähtevä näkökenttä on rajattu neliön muotoiseen tasoon (Kuva 2) grafiikkakortin avulla. Lähileikkaustasoa ei kannata käyttää, koska se saattaisi aiheuttaa lähellä olevan portaalin leikkautumisen pois kokonaan. Kuva 2: Näkökenttä-pyramidi Solussa olevat polygonit, portaalit mukaan lukien, käydään läpi. Mikäli polygoni jää näkökentän ulkopuolelle se on näkymätön, eikä siitä tarvitse välittää. Muuten se on ainakin osittain näkyvä. Jos polygoni on tavallinen polygoni, kuten esim. tiiliseinä, ja se on kokonaisuudessaan näkökentän sisäpuolella, se piirretään ja siirrytään seuraavaan polygoniin. Jos taas kyseessä on tavallinen polygoni, joka on vain osittain näkökentän sisäpuolella, hoitaa grafiikkakortti polygonin rajauksen. 3

3.2 Polygonin rajaus Näkökentän rajausta ei nykyaikaisten grafiikkakorttien ansiosta tarvitse tehdä. Grafiikkakortille määritetään nelikulmainen alue jonka ulkopuolelle jäävät osat kortti jättää piirtämättä. Tämä nopeuttaa operaatiota huomattavasti koska itse polygonien leikkaaminen on hidas operaatio. 3.3 Portaalien käyttäytyminen Kun tarkasteltava polygoni onkin portaali täytyy toimia hieman eri tavalla. Mikäli portaali on kokonaan näkökentän sisällä, eli esim. oviaukko näkyy kokonaan, ei tarvitse tehdä rajauksia. Jos taas portaali on vain osittain näkökentässä se rajataan aivan kuten tavallinenkin polygoni. Tällöin siis asetetaan grafiikkakortille oviaukon kokoinen piirtoalue. Tämä saattaa kuitenkin joissakin tapauksissa aiheuttaa ongelmia joihin palataan kappaleessa 5. Nyt tarkastellaan polygoneja siinä solussa mihin portaali yhdistää alkuperäisen solun. Toisin sanoen tarkastellaan viereistä huonetta portaalin läpi. Katselupiste pysyy alkuperäisessä paikassaan, mutta näkökenttä pienennetään siten että se kulkee vain tarkasteltavan portaalin läpi. Seuraavaksi jatketaan aivan normaalisti polygonien tarkastelemista kuten aiemminkin. Kun kaikki viereisen huoneen polygonit on piirretty palataan alkuperäiseen huoneeseen piirtämään loputkin polygonit. Kun kaikki polygonit on käyty läpi on piirtäminen suoritettu. Ainoastaan näkyviä polygoneja on käytetty huolimatta siitä miten iso koko maailma on. 3.4 Portaalit käytännössä Seuraavaksi käydään esimerkin avulla läpi kolmiulotteisen huoneen piirtäminen esimerkin avulla. Kuva 3: Maailman pohjapiirustus Kuva 4: Solut ja portaalit Kuvassa 3 on esitetty tyypillisen kolmiulotteisen huoneen pohjapiirustus. Aluksi huone on jaettava sopiviin soluihin (Kuva 4) jotka täyttävät vaadittavat ehdot. Maailma muodostuu siten neljästä solusta (A,B,C,D) ja neljästä portaalista (P1,P2,P3,P4). Tämä ei ole suinkaan ainoa mahdollinen portaalien asettamismahdollisuus. Voitaisiin käyttää myös konkaaveja soluja asettamalla vain kaksi portaalia, toinen P1:n ja P3:n väliin sekä toinen P2:n ja P4:n väliin ja antaa z-puskurin huolehtia kulman taakse jäävien polygonien peittämisestä. Asettamalla portaalit kuvassa esitetyllä tavalla saadaan kuitenkin mahdollisimman yksiselitteinen ratkaisu. 4

Maailman renderöinti aloitetaan aina siitä solusta missä katselupiste on. Aluksi tarkastellaan mitkä polygonit (tai portaalit) ovat kameran näkökentässä. Kuten kuvasta 5 näkyy, jää näkökentän sisäpuolelle kaksi tavallista polygonia sekä kaksi portaalia. Sekä toinen portaaleista että toinen polygoneista ei kuitenkaan ole kokonaan näkökentästä joten ne rajataan poikki. Tavalliset polygonit renderöidään siirrytään tarkastelemaan portaalia P1. Kuva 5: Näkökenttä solussa A Kuva 6: Näkökenttä P1 läpi soluun B Portaalin P1 läpi solussa B näkyy vain osa yhdestä tavallisesta polygonista (Kuva 6), joten se renderöidään ja palataan takaisin tarkastelemaan portaalia P2. Kuva7: Näkökenttä P2 läpi soluun C Kuva 8: Näkökenttä P4 läpi soluun D Asetetaan se osa portaalista P2 näkökentäksi joka kuvassa 5 jäi alkuperäisen näkökentän sisäpuolelle. Nyt kentässä on yksi tavallinen polygoni sekä osa portaalista P4. Renderöidään seinäpolygoni ja siirrytään tarkastelemaan solua D portaalin P4 läpi. Rajataan viimeinen polygoni näkökentän mukaan ja renderöidään se. Näin kaikki katselukulmasta näkyvät polygonit ovat piirretty eikä yhtäkään polygonia piirretty toisen päälle. Kaiken kaikkiaan maailmassa renderöitiin kaksi alkuperäistä polygonia, kolme rajattua polygonia sekä käytettiin yhtä alkuperäistä portaalia sekä kahta rajattua portaalia. Tässä tapauksessa kuitenkin jouduttiin käymään kaikki maailmassa olevat solut läpi. Maailma voisi kuitenkin jatkua vielä esimerkiksi solun D alalaidasta vaikka kuinka pitkälle, eikä sitä osaa silti jouduttaisi käymään läpi. 5

4. PORTAALIEN KÄYTTÖ EFEKTIEN LUOMISEEN Portaalejen käyttö ei rajaudu pelkästään piilopintojen poistamiseen, vaan niitä voidaan käyttää myös reaaliaikaisten efektien luomiseen. Seuraavaksi käymme läpi yleisimmät efektit. 4.1 Ikkunat Yksinkertaisin efekti joka voidaan portaalien avulla luoda on tavallinen lasiruutu. Toteutus on muuten samanlainen kun tavallisella fyysisellä portaalilla, mutta kun lasin läpi näkyvät solut on käyty läpi renderöidään lasiefekti portaalin päälle. Helpoin tapa on käyttää alpha kanavallista tekstuuria. Toinen tapa on esimerkiksi tummentaa portaalin toisella puolella olevia polygoneja. 4.2 Peilit Reaaliaikainen peili on toinen efekti missä portaalit ovat edukseen. Portaalin voi merkitä oviaukon sijasta heijastavaksi peiliksi. Tämä tarkoittaa että sen sijaan että portaali johtaisi toiseen vierekkäiseen soluun se osoittaakin takaisin alkuperäiseen soluun. Tämä toteutetaan siirtämällä katselupiste portaalin toiselle puolelle ja peilaamalla näkökenttä. Virtuaalisen portaalin, tässä tapauksessa peilin, transformaatiomatriisi määrittelee miten pelin läpi mennään. Tällöin portaalin direction of flight (DOF) vektori eli peilitason normaalivektori käännetään toiseen suuntaan. Eli solusta portaalin läpi ulos mentäessä palataankin takaisin alkuperäiseen soluun. Peilin voi myös yhdistää ikkunaan, jolloin ikkunalasi taittaa osan valosta lasin tiheyden mukaan ja peilaa osan valosta takaisin alkuperäiseen huoneeseen. Näin kuvan 9 katsojalle kohdassa VPo muodostetaan kuva yhdistämällä läpinäkyvä (C1) ja heijastunut (C2) kuva. Kuva 9. Osittain heijastava ikkuna. 6

4.3 Valvontakamerat Kuten peilien kanssa täytyy myös valvontakameroita katselupiste siirretään pois alkuperäiseltä paikaltaan. Valvontaruutua piirtäessä täytyy katselupiste siirtää valvontakameran kohdalle ja tarkastella sitä solua mitä valvontakamera tarkkailee. Näin valvontaruudulle piirtyy se näkymä jonka valvontakamera näkee. Katselupisteen siirtyminen suoritetaan valvontaruudun portaaliiin liitetyn transformaatiomatriisin avulla. Kuva 10: Valvontakamera ja monitori 4.4 Valot ja varjot Reaaliaikaisten valojen ja varjojen luominen on myös mahdollista portaalien avulla. Tämä on kuitenkin vain yksi mahdollinen ratkaisu valojen ja varjojen laskemiselle. Muitakin tehokkaampia tekniikoita on olemassa. Varjojen laskeminen on tehtävä ennen itse maailman renderöintiä ja se on tehtävä erikseen jokaiselle valonlähteelle. Periaate on sama kuin tavallisesti portaalien avulla piirtämisessä mutta nyt katselupisteen virkaa esittää itse valonlähde. Näkökenttä on sama kuin valonlähteestä lähtevä valokiila. Aivan kuten maailmaa piirtäessä, käydään läpi näkyvät polygonit yksi kerrallaan. Jos valo osuu johonkin polygoniin se merkitään valaistuksi ja siirrytään seuraavaan. Jos polygoni on vain puoliksi valaistu on polygoni jaettava osiin sen mukaan miten valo siihen osuu. Jaetut polygonit on merkittävä muistiin jotta sitten kuin itse huonetta piirretään tiedetään mitkä polygonit on jaettu kahtia. Jaetusta polygonista valaistu osa merkitään myös valaistuksi. Kun itse ruutua piirretään on huomioitava mitkä polygonit on valaistu ja mitkä varjossa ja renderöitävä ne sen mukaan. 5. ONGELMIA PORTAALITEKNIIKASSA Portaalitekniikka ei ole täysin ongelmavapaa ja toimiva ratkaisu kaikissa tilanteissa. Seuraavaksi käydään läpi portaaleihin liittyviä ongelmia ja rajoituksia. 5.1 Maailman jakaminen soluihin Yksi suuri portaaleihin liittyvä rajoitus on se, että parhaan tuloksen saamiseksi on maailma jaettava soluihin ja portaaleihin käsin. Tämä on kuitenkin aikaa vievä ja 7

hankala prosessi. Parhaan tuloksen aikaansaamiseksi kannattaa tilat jakaa konkaaveihin soluihin ja yritettävä pitää solujen lukumäärä mahdollisimman alhaisina. Automaattisesti soluja asettamalla on vaarana saada liian monta turhan pientä solua. 5.2 Ulkotilat Suurin ongelma portaalien kanssa on se, etteivät ne sovi ulkoilmamaailmoiden kuvaamiseen. Tilan on oltava suljettu, jotta portaalit ovat edukseen. Avarassa ulkotiloissa maailman jakaminen soluihin on mahdotonta, koska periaatteessa yhdestä paikasta näkee kaikkialle. Ulkoilman piirtämiseen kannattaakin käyttää jotain muuta menetelmää. 5.3 Portaalien asettaminen päällekkäin Kuten kappaleessa kolme mainittiin, voidaan portaalit rajata automaattisesti antamalla grafiikkakortille neliön muotoinen alue jonka ulkopuolella olevat esineet jätetään piirtämättä. Yleisimmissä tapauksissa, kuten tavallisen oven kohdalla tämä ei aiheuta ongelmia. Kuvissa 11a ja 11b esitetään tilanne jossa on kolme vierekkäistä portaalia. (Timo Aila, Ville Miettinen 2001) Portaalien ollessa pystysuorassa (kuva 11a), grafiikkakortti rajaa portaalit oikein, mutta jos portaalit ovatkin viistossa (kuva 11b), niiden ympärille määritelty neliönmuotoinen alue sisältää osia myös viereisistä portaaleista. Tämä aiheuttaa ongelmia piirtovaiheessa. jos esimerkiksi kaikki kolme portaalia ovat ovia samaan huoneeseen jossa on jokin osittain läpinäkyvä esine. Tällöin jotkin osat esineestä tulee renderöityä useampaan kertaan. Kuva 11a: Portaalit pystysuorassa Kuva 11b: Portaalit vinosti Helpoin ratkaisu olisi asettaa kaikki portaalit, P1, P2 ja P3 yhdeksi suureksi portaaliksi. Tämä ratkaisu ei kuitenkaan toimi, jos esimerkiksi keskimmäinen portaali P2 on valvontaruutu tai muu virtuaalinen portaali ja reunimmaiset portaalit ovat ovia samaan huoneeseen. Tällöin ainoa tapa on käyttää hyväkseen stencil-puskuria. Stencil puskuria käytettäessä piirretään kuva portaalin läpi ensin stencil puskuriin. Tämän jälkeen asetetaan portaalin muotoinen stencil maski ja lasketaan lopullinen kuva loogista AND operaatiota käyttäen. 5.3 Liian suuri määrä portaaleja Portaalien määrä on hyvä yrittää pitää mahdollisimman pienenä. Jokainen portaalin läpi meneminen lisää prosessointiaikaa. Myös muistin tarve lisääntyy solujen lukumäärän 8

kasvaessa. Samalla mitä useampia portaaleja maailmassa on, sitä useimmin liikkuvat esineet kuuluvat samanaikaisesti useampaan soluun. 5.5 Peili keskellä huonetta Tilanne jossa peili on asetettu keskelle huonetta on oltava tarkkana, että tilanne piirretään oikein. Tällöin on mahdollista että z-puskurin arvot on asetettu jo lähemmäksi kuin mitä esineet toisessa solussa ovat. Parhaiten ongelman välttää jos z-puskuri tyhjennetään ennen kuin tarkastellaan peilin heijastumista. 5.4 Useammat peilit Jos samassa solussa on useampia peilejä ja katselupiste on kahden peilin välissä on vaarana että joudutaan tilanteeseen, jossa heijastumiset toistetaan loputtomasti. Tällöin ruutua ei saada koskaan piirrettyä valmiiksi. Tämän ongelman välttämiseksi voidaan käyttää useampaa ratkaisua. Peilejä voidaan esimerkiksi pitää epäideaalisina jolloin ne heijastavat joka kerta hieman tummemman peilikuvan. Kun heijastuminen on tapahtunut tarpeeksi monta kertaa voidaan piirtää peliin ainoastaan musta heijastuminen. Toinen tapa on rakentaa heijastuspuu ja rajata heijastuminen suoraan esimerkiksi kahteen. Tällöin kahden heijastumisen jälkeen heijastumista ei enää lasketa. 5.5 Liikkuvat esineet Liikkuvat esineet aiheuttavat hankaluuksia, koska niiden siirtyessä solusta toiseen on esineiden kuuluttava samaan aikaan kahteen (tai useampaan) eri soluun. Mitä useammassa solussa esineet samanaikaisesti sijaitsevat, sitä enemmän muistia ja laskentatehoa tarvitaan. Myös tämän takia solujen määrän pitäminen mahdollisimman alhaisena on hyödyllistä. 6. YHTEENVETO Portaalien avulla voidaan suurikin maailma jakaa pienempiin osiin takaamalla samalla ettei maailman koko rajoita piirtonopeutta. Portaalit rajaavat helposti tarkastettavan alueen ja vähentää päällekkäispiirtämistä huomattavasti. Kuvissa 12a, 12b ja 12c esitetään portaalien tuottama hyöty (Frederic My, 2001). Kuvassa 12a on renderöity tavallinen kolmiulotteinen maailma. Kuva 12b esittää tilanteen jossa maailma on piirretty portaalien avulla. Kuvassa 12c nähdään miten ilman portaaleja joudutaan ottamaan huomioon myös takana, näkymättömissä, oleva huone piirtovaiheessa. Kuva 12a: 3D Maailma Kuva 12b: Portaalit käytössä Kuva 12c: Ilman portaaleja Parhaiten portaalit toimivat sisätiloissa kuten taloissa, jossa huoneet voidaan jakaa omiksi soluikseen. Työläin vaihe portaalien käytössä on niiden paikalleen asettaminen 9

käsin. Asettamisen voi myös tehdä automaattisesti, mutta yleensä paras tulos saadaan aikaan manuaalisella asettelulla. Portaalit mahdollistavat myös dynaamisia maailmoja, joissa voidaan lisätä portaaleja ja siirtää soluja reaaliaikaisesti. Vaikka portaalit toimivatkin huonosti esimerkiksi laajojen ulkoalueiden esittämiseen, yksi niiden huomattava etu on se, että portaalitekniikan voi helposti yhdistää muihinkin renderöintiperiaatteisiin. Portaali voi hyvin olla ikkuna toiseen tilaan joka renderöidäänkin toisella algoritmilla. Näin esimerkiksi esitettävän maailman talot tai luolat voidaan renderöidä portaalien avulla ja ulkotilat jollakin muulla tavalla. Portaalien avulla on myös helppo luoda erilaisia effektejä kuten peilejä ja valvontakameroita. 10

LÄHTEET Aila, Timo and Miettinen, Ville. 2001. dpvs Reference Manual version 2.10. pp 54-63, 272-277 http://www.hybrid.fi/download/dpvs_online.pdf Aurora 3D Tutorials. 2000. Portals The basic ideas behind a portal engine. 6p. http://gamecode.tripod.com/tut/tut06.htm Constant, Paul. 1998 3D Game Engine. 25 p. http://freespace.virgin.net/paul.constant/project/index.htm Elmqvist, Niklas. 1999: Introduction to Portal Rendering - Indoor scene rendering made easy. Chalmers Medialab. 4p. http://www.medialab.chalmers.se/c2c/doc/portals.html Imagination Technologies Ltd (PowerVR). 1999. Rendering of multiple portals. 4p. http://www.pvrdev.com/doc/f/portal%20techniques%20(multiple).htm Luebke, David P. and Georges, Chris 1995. Portals and Mirrors: Simple, Fast Evaluation of Potentially Visible Sets. Proceedings of Symposium on Interactive 3D Graphics, pp 105-106. http://www.cs.virginia.edu/~luebke/publications/portals.html My, Frederic. 2001. World management Portals. 21 p. http://www.fairyengine.com/articles/portals.htm Perez, Adrian. 1998. Peeking Through Portals. 2p. http://cubonics.net/programming/docportal.html Tyberghein, Jorrit. 2000. The Portal Technique for Real-time 3D Engines 4p. http://crystal.sourceforge.net/csdocs/portal.html 11