Juha Ylimäki. Valaisukartat reaaliaikaisessa renderöinnissä

Samankaltaiset tiedostot
Visualisoinnin perusteet

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

Videon tallentaminen Virtual Mapista

MALLIN RENDERÖINTI KUVAKSI TAI VIDEOKSI SOLIDWORKS 2010 VERSIOLLA

MALLIN RENDERÖINTI KUVAKSI TAI VIDEOKSI SOLIDWORKS 2012 VERSIOLLA

KUVAN TUOMINEN, MUOKKAAMINEN, KOON MUUTTAMINEN JA TALLENTAMINEN PAINTISSA

Scratch ohjeita. Perusteet

HELSINGIN YLIOPISTO TIEDEKASVATUS. helsinki.fi/tiedekasvatus v 1.2

C-kasetin digitointi Audacity-ohjelmalla

Posterin teko MS Publisherilla

KODU. Lumijoen peruskoulu

Rendaaminen Brazililla

Kuvien lisääminen ja käsittely

Avokelanauhan digitointi Audacity-ohjelmalla

Ohjeita kirjan tekemiseen

C-kasetin digitointi Audacity-ohjelmalla

Harjoitus Morphing. Ilmeiden luonti

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

Portfolio. Linda Siltakoski

KUVANKÄSITTELY THE GIMP FOR WINDOWS OHJELMASSA

Picasa 3 -kuvankäsittelyopas, osa 1, valokuvien muokkaus tutuksi

FOTONETTI BOOK CREATOR

C-kasetin digitointi Audacity-ohjelmalla

Sonera Viestintäpalvelu VIP VIP Laajennettu raportointi Ohje

Ohjeistus yhdistysten internetpäivittäjille

Harjoitus Bones ja Skin

Public Account-tili on pysyvä, joten kannattaa käyttää mieluummin sitä kuin kaupallisen tilin kokeiluversiota.

LP-levyn digitointi Audacity-ohjelmalla

Skype for Business ohjelman asennus- ja käyttöohje Sisällys

Graffa Suomi ryhmässä 3/2017-2/2018 julkaisemani vinkit

Ponnahdusikkunoiden ja karttatekstien hallitseminen ArcGIS Online kartoissa

Excel-taulukkoon X- ja Y-sarakkeisiin tallennettujen koordinaattien muuntaminen paikkatietokohteiksi

VATT Talouden rakenteet. Ohje: Pdf-dian liittäminen PowerPoint -esitykseen. Sisällys:

PERUSLASKUJA. Kirjoita muuten sama, mutta ota välilyönti 4:n jälkeen 3/4 +5^2

STL:n luonti IronCADillä

Digikuvan peruskäsittelyn. sittelyn työnkulku. Soukan Kamerat Soukan Kamerat/SV

Skype for Business ohjelman asennus- ja käyttöohje Sisällys

High Dynamic Range. Simo Veikkolainen

LP-levyn digitointi Audacity-ohjelmalla

WCONDES OHJEET ITÄRASTEILLE (tehty Condes versiolle 8)

PELIAIKASEURANTAOHJELMAN KÄYTTÖOHJE

Pedanet oppilaan ohje Aleksanteri Kenan koulu Eija Arvola

ELOKUVAKASVATUS SODANKYLÄSSÄ FINAL CUT EXPRESS HD OSA 2: SIIRTYMÄT, TEHOSTEET, KUVAMANIPULAATIO 1. RENDERÖINTI

LP-levyn digitointi Audacity-ohjelmalla

Tasohyppelypeli. Piirrä grafiikat. Toteuta pelihahmon putoaminen ja alustalle jääminen:

Picasa 3 -kuvankäsittelyopas, osa 2, käytä tehokkaasti

Jypelin käyttöohjeet» Ruutukentän luominen

ASCII-taidetta. Intro: Python

HP Photo Printing -pikaviiteopas

Julkaisun laji Opinnäytetyö. Sivumäärä 43

Kansionäkymä listasta suuriin kuvakkeisiin

2020 Fusion. What s New in Version 6? What s New in Version 6? 1 of Fusion

KUVAN LIITTÄMINEN TOISEEN KUVAAN PHOTOSHOP ELEMENTS 6 - OHJELMALLA

YH2: Office365 II, verkko-opiskelu

Miten siirrän omat työni Office 365:stä Peda.nettiin sekä jaan sen siellä muille Eija Arvola

PELIAIKASEURANTAOHJELMAN KÄYTTÖOHJE

Adobe Photoshop Elements, kuvakäsittelyn perusteet

Selkosanakirja sdfghjklöäzxcvbnmqwertyuiopåasdfghjklöäzxcvbnmq. Tietokoneet. wertyuiopåasdfghjklöäzxcvbnmqwertyuiopåasdfghjk 1.4.

Purot.net Wiki. Tutkielma. Paavo Räisänen. Centria Ammattikorkeakoulu

GPS Miten opin käyttämään? Mihin käytän?

Written by Administrator Monday, 05 September :14 - Last Updated Thursday, 23 February :36

1. STEREOKUVAPARIN OTTAMINEN ANAGLYFIKUVIA VARTEN. Hyvien stereokuvien ottaminen edellyttää kahden perusasian ymmärtämistä.

Kopioi cd-levyt kiintolevylle, niin fyysiset levyt joutavat eläkkeelle.

Pikaopas. Online-tilin näyttäminen tai vaihtaminen Jos käytät pilvipalvelua, voit muuttaa asetuksia tai vaihtaa tiliä valitsemalla Tiedosto > Tili.

Selainpelien pelimoottorit

Nuorten hyvinvointi tilastotietokannan käyttöohjeet Tieke

Oy Karltek Ltd internet-sivujen uusiminen. Eveliina Aaltonen

Tilauspalveluun pääsee osoitteessa

OpenOffice.org Impress 3.1.0

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana

Topfieldin sarjaporttipäivitystyökalun asennus(rs232)

UpdateIT 2010: Editorin käyttöohje

Kun olet valmis tekemään tilauksen, rekisteröidy sovellukseen seuraavasti:

Vasteaika. Vasteaikaa koskeva ohje ei ole juuri muuttunut Robert B. Millerin vuonna 1968 pitämästä esityksestä:

SIVIILEIHIN KOHDISTUNEET KONFLIKTIT AFRIKASSA. Matias Järvinen 2019

Pikaopas. Valintanauhan näyttäminen tai piilottaminen Avaa valintanauha napsauttamalla välilehteä, tai kiinnitä se pysyvästi näkyviin.

Adobe Premiere Elements ohjeet

Eye Pal Solo. Käyttöohje

Helppokäyttöisyyttä Windows Vista käyttöjärjestelmän asetuksilla

Jussi Klemola 3D- KEITTIÖSUUNNITTELUOHJELMAN KÄYTTÖÖNOTTO

Office 365 palvelujen käyttöohje Sisällys

TAMPEREEN TEKNILLINEN YLIOPISTO KÄYTTÖOHJE TIETOVARASTON KUUTIOT

TAHROJEN POISTO ADOBE PHOTOSHOP ELEMENTS 6:N AVULLA

Visma Nova. Visma Nova ASP käyttö ja ohjeet

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

Entiteetit erotetaan muusta tekstistä & ja puolipiste. esim. copyright-merkki näkyy sivulla

Sen jälkeen Microsoft Office ja sen alta löytyy ohjelmat. Ensin käynnistä-valikosta kaikki ohjelmat

Videon tallentaminen Virtual Mapista

Javan asennus ja ohjeita ongelmatilanteisiin

Linuxissa uusi elämä 1

TAMK Ohjelmistotekniikka G Graafisten käyttöliittymien ohjelmointi Herkko Noponen Osmo Someroja. Harjoitustehtävä 2: Karttasovellus Kartta

Esitystekniikoita ja visualisoinnin workflow

3. Vasemman reunan resurssiselaimen Omiin resursseihin luodaan uusi Handmade -niminen kansio.

lizengo Asennusopas Windows: in kopioiminen

SeaMonkey pikaopas - 1

CTRL+F Android-sovellus

Raspberry Pi. Yhden piirilevyn tietokone. Tässä dokumentissa kerrotaan yleistä tietoa Rasberry Pi- tietokoneesta ja. sen toiminnoista.

Articles... 3 Videon tallentaminen ipadista Flowboxiin... 4 Dokumentin lataaminen OneDrivesta Fronterin palautuskansioon...15

YH1b: Office365 II, verkko-opiskelu

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

Transkriptio:

Juha Ylimäki Valaisukartat reaaliaikaisessa renderöinnissä Metropolia Ammattikorkeakoulu Medianomi Viestintä Opinnäytetyö 19.12.2011

Tiivistelmä Tekijä(t) Otsikko Sivumäärä Aika Tutkinto Juha Ylimäki Valaisukartat reaaliaikaisessa renderöinnissä 28 sivua + 2 liitettä 19.12.2011 Medianomi Koulutusohjelma Viestintä Suuntautumisvaihtoehto 3D-animointi ja -visualisointi Ohjaaja(t) Lehtori Kristian Simolin Lehtori Jaro Lehtonen Tässä toiminnallisessa opinnäytetyössä toteutettiin reaaliaikaisen ympäristön valaisu valaisukarttoja hyödyntäen. Tavoitteena oli tutkia, mitä kaikkea on otettava huomioon, kun renderöidään valaisukartoitus reaaliaikaiseen pelimoottoriin, joka tässä opinnäytetyössä on Unity. Ohjelmat, joita opinnäytetyössä käytettiin, olivat Autodesk 3ds Max mallintamiseen ja renderöintiin, Adobe Photoshop valaisukarttojen jälkikäsittelyyn ja Unity reaaliaikaisen sovelluksen toteuttamiseen. Opinnäytetyössä käydään läpi miten valaisukartoitus luodaan. Prosessi käydään läpi valaisukartan UV-kartoituksesta jälkikäsittelyyn ja valaisukarttojen reaaliaikaiseen pelimoottoriin lisäämiseen. Lopputuotos löytyy liitteenä DVD-levyltä html-tiedostona, jossa valaisukartoitettua ympäristöä voi tarkastella reaaliaikaisena virtuaaliesityksenä selaimen kautta. Selaimeen pitää ensin asentaa Unity Web Player -sovellus. Avainsanat Valaisukartta, 3D, Max, Unity, Visualisointi

Abstract Author(s) Title Number of Pages Date Degree Juha Ylimäki Lightmaps In Realtime Rendering 28 pages + 2 appendices 19 December 2011 Bachelor of Arts Degree Programme Media Specialisation option 3D animation and visualization Instructor(s) Kristian Simolin, Lecturer Jaro Lehtonen, Lecturer The present thesis includes creating lightmaps for a real time environment. The goal was to study what has to be taken care of when rendering lightmaps for a game engine called Unity. Applications that was used in this thesis are as follows: first, Autodesk 3ds Max was used for modeling the environment and rendering. Following this, Adobe Photoshop was used for compositing the lightmaps. The third application was Unity, used for putting everything together. The present thesis focuses on how lightmaps are made. The work starts from UV-mapping and ends to compositing the lightmaps and then they are used in the game engine. The end result can be found as a html file where we can see the lightmaps as a realtime cirtual environment in a browser. Unity Web Player plugin is needed for the browser used. Keywords Lightmap, 3D, Max, Unity, Visualization

Sisällys 1 Johdanto 1 1.1 Työn tavoitteet 1 1.2 Keskeisiä käsitteitä 4 2 Valaisukartat 5 2.1 Käyttötarkoitus 5 2.1.1 Renderöinnin nopeuttaminen 5 2.1.2 Reaaliaikainen renderöinti 5 2.2 Valaisukarttoja edeltävä aika. 6 2.3 UV-kanavat valaisukartoituksessa 6 2.4 Valaisukartan luominen 7 2.4.1 Tekstuurille renderöinti 7 2.5 Pelimoottorin sisäinen valaisukartoitus 8 2.6 Valaisukartoitustekniikoiden yhdistäminen 9 2.7 Unityn sisäinen valaisukartoitus 9 2.8 Valaisukartan jälkikäsittely 11 2.8.1 EXR-tiedostomuoto 11 2.9 Valaisukartan rajoitukset 11 2.10 Pelimoottorien rajoitukset 12 3 Prosessin kuvaus 14 3.1 Toimeksianto 14 3.2 Kuvan jälkikäsittely reaaliaikaisessa sovelluksessa 21 4 Reaaliaikaisen sovelluksen käyttö 23 4.1 Käyttäjäystävällisyys 23 5 Pohdinta 26 5.1 Valaisukartoituksen kätevyys 26 5.2 Ambient Occlusion 27 5.3 Valaisukartoitus tulevaisuudessa 27 Lähteet 28

Liitteet Liite 1. DVD-levy Liite 2. Kuvakaappaukset projektin lopputuotoksesta

1 1 JOHDANTO Opinnäytetyöni käsittelee valaisukartoituksen luomista pelimoottorissa toimivaan reaaliaikaiseen virtuaaliympäristöön, joka tässä tapauksessa on arkkitehdin suunnittelema yhdeksästä huoneesta koostuva toimistotila. Tavoitteenani on selvittää mitä valaisukartat ovat ja miten ne yleisesti ottaen toimivat peliympäristöissä. Mitä on otettava huomioon valaisukarttoja renderöitäessä ja miten niitä voi jälkikäsitellä? Miten valaisukarttoja ylipäänsä luodaan? Tulen käyttämään opinnäytetyön aikana ainakin seuraavia ohjelmia, Autodesk 3ds Max, Adobe Photoshop ja Unity. Käytän myös valaisukarttojen tuotantoa helpottavaa 3ds Maxiin lisättävää liitännäistä nimeltä Flatiron. Opinnäytetyön lopullinen tuotos on selaimessa toimiva Unity-pelimoottorilla toteutettu reaaliaikainen visualisointi mallintamastani toimistotilasta. 1.1 Työn tavoitteet Tavoitteenani on syventyä Unity-pelimoottorin käyttöön ja yleisesti peliteollisuudessa käytettyihin tekniikoihin ympäristöjä rakennettaessa. Olen aiemmin tehnyt peleihin kenttiä ja ympäristöjä, mutta en ole tiennyt miten valaisukartat toimivat. Tämän opinnäytetyön tarkoituksena on tutkia tarkemmin miten valaisukartat toimivat. Työn motivaationa toimii Esko Nousiaiselta saamani työnanto, johon kuuluu seuraavalla sivulla olevan toimistotilan pohjapiirroksesta reaaliaikaisen 3D-visualisoinnin luominen. Haluan myös käydä läpi valaisukarttojen eri tekotapoja.

Kuvio 1. Toimistotilan pohjapiirros. Tämän kuvan päälle tila mallinnetaan. 2

Kuvio 2. Toimistotila mallinnettuna ja valaisukartoitettuna Unity-pelimoottorissa. 3

4 1.2 Keskeisiä käsitteitä Valaisukartta = Lightmap. 3D-ohjelmassa mallinnetun tilan valaistus laskettuna ja tallennettuna kuvatiedostomuotoon. Renderöinti = Prosessi, jossa tietokone laskee valaistuksen ja pintamateriaalien mukaiset heijastukset mallinnetulle pinnalle (Puhakka, 2008). Reaaliaikainen renderöinti = Tietokone laskee kuvaa ja valaistusta ruudulle reaaliaikaisesti. Eroaa siis yksittäisten kuvien ja animaatioelokuvien renderöinnistä siten, että kuva rendataan jatkuvasti uudelleen ja uudelleen yleensä noin 30-60 kuvaa sekunnissa. Reaaliaikainen renderöinti ei siis täten voi olla koskaan yhtä tarkkaa ja hienoa kuin yksittäisten kuvien ja animaatioelokuvien renderöinti, jossa yhtä kuvaa voi rendata monta tuntia. Tosin tekniikan kehittyessä raskaatkin renderöintioperaatiot ovat mahdollista rendata reaaliaikaisesti. Unity = Ilmainen pelimoottori, josta saa myös ilmaiseksi ladattua 30 päivän kokeiluversion laajemmasta Unity Pro -versiosta. Tämä opinnäytetyöprojekti on tehty Unitya käyttäen. UDK = Unreal Development Kit. Myös ilmaiseksi ladattava pelimoottori. Todella kallis kaupallinen lisenssi. Yleensä vain suurimpien pelistudioiden käytössä kaupallisena. UV-koordinaattien määrittely = 3D-objektin nylkeminen kaksiulotteiselle tasolle eli UV kartalle. Tämä mahdollistaa kaksiulotteisen kuvatiedoston käytön kolmiulotteisen objektin päällä. Käytän opinnäytetyössä sanaa "unwrapping" viitatessani kyseiseen toimintoon. UV-kanava = Kaikille 3D-objekteille on mahdollista tehdä useampi erilainen UV-kartta käyttäen eri UV-kanavia. Ambient Occlusion = Yleisvalon varjostus. Renderöintivaihe, jossa renderöidään objektien välisten etäisyyksien perusteella tehty varjostus. Tämä tuottaa siis kuvan jossa objektien nurkat ja kolot tulevat tummiksi. Useimmiten efekti luo realistisuutta kuvaan.

5 2 VALAISUKARTAT 2.1 Käyttötarkoitus Valaisukarttoja voidaan pääsääntöisesti hyödyntää kahdessa eri tapauksessa. Yksittäisten kuvien ja animaatioelokuvien renderöinnissä valaisukarttojen avulla voidaan nopeuttaa renderöintiä ja näin säästää aikaa. Reaaliaikaisessa renderöinnissä valaisukarttojen avulla voidaan toteuttaa monimutkaisia valaistuksia tekemällä staattisten valojen laskenta etukäteen ja tallentamalla tulokset valaisukartoiksi. 2.1.1 Renderöinnin nopeuttaminen Mikäli tiedetään, että mallinnetussa tilassa tai ympäristössä ei tule olemaan mitään liikkuvia osia, niin voidaan siitä renderöidä valaisukartat jotka laitetaan tekstuurien päälle. Täten valaistusta näihin kohtiin ei enää tarvitse uudelleen renderöidä ja näin säästetään aikaa, kun ympäristöstä esimerkiksi renderöidään videokuvaa jossa kamera liikkuu ympäristön läpi. 2.1.2 Reaaliaikainen renderöinti Sama logiikka pätee valaisukarttojen käytössä reaaliaikaisessa renderöinnissä. Kun valaistus on renderöity kuvatiedostoksi, niin se voidaan laittaa ympäristön tekstuurien päälle. Näin tekstuurit näyttävät kuin niihin vaikuttaisi jokin valo, vaikka mitään fyysistä valoa ei pelimaailmassa olisikaan ympäristöä valaisemassa. Tämä mahdollistaa monimutkaisen ja realistisen valaistuksen luomisen reaaliaikaisesti renderöitävässä ympäristössä tietokoneille, jotka eivät vielä kykene reaaliajassa tarkkaa valaistusta laskemaan. Varsinkin epäsuoran valaistuksen reaaliaikainen laskeminen on vielä tämän päivän tietokoneilla todella hidasta. Juurikin tämän epäsuoran valaisun mahdollistaminen reaaliaikaisen ympäristön pinnalle luo valaisukartoille suurta käyttöarvoa. Valaisukartoitusta käytetään vain staattisissa objekteissa. Liikkuviin objekteihin pelimoottorit laskevat reaaliaikaista valaisua, joka on kallista tietokoneen laskentatehon kannalta. Siksi on hyvä, että ympäristön valaisua ei tarvitse enää reaaliaikaisesti laskea.

6 Nykyään tietokoneiden tehon myötä pelimoottorit pystyvät laskemaan ympäristöstä reaaliaikaisia varjoja tietyn matkan päähän. Esimerkiksi Unityssa voi säätää kuinka pitkälle kamerasta katsottuna reaaliaikaiset varjot näkyvät ympäristössä ja missä kohtaa alkaa valaisukartoitettu ympäristö ja varjot. 2.2 Valaisukarttoja edeltävä aika. Ennen valaisukartoitusta pelimoottoreissa laskettiin valo reaaliaikaisena joka paikkaan "Gouraud shading" - nimisellä tekniikalla. (Wikipedia 2011, hakusana Lightmap) Tämä tekniikka laskee valon polygonin jokaiseen verteksiin ja laskee verteksien välille, eli polygonin pinnalle, verteksien välisen valomäärän. Tämä tapa laskea valotusta ei ole kovin kätevä suurille pinnoille joissa ei ole paljoa polygoneja, kuten esimerkiksi yhdestä polygonista koostuva tasainen huoneen lattia. Ympäristön valaisukartoitus tuli peleihin käyttöön ensimmäistä kertaa Quakessa. (Wikipedia 2011, hakusana Quake Engine) Quaken kenttäeditorissa ei ollut vielä mahdollista laskea epäsuoraa valaistusta. Tämä tarkoittaa sitä, että valoista lähtevät fonotit eivät kimpoilleet mihinkään ja täten nurkka jonka taakse valonlähde ei "nähnyt" jäi ainoastaan mustaksi. Nykyaikaisilla pelimoottoreiden valaisukartoitustyökaluilla on mahdollista laskea myös epäsuoraa valaistusta. Tästä johtuen ei pelikentän valaisusta huolehtivan henkilön enää välttämättä tarvitse tehdä epäsuoraa valaistusta erillisellä 3D-ohjelmalla, kuten esimerkiksi 3ds Maxilla. 2.3 UV-kanavat valaisukartoituksessa Yleensä pelimoottoreissa kaikilla objekteilla on käytössä kaksi UV-kanavaa. Näistä ensimmäistä käytetään tekstuurien asettamiseen objektien päälle. Objektin pitää olla tarkasti unwrapattynä ensimmäisellä UV-kanavalla, koska tämän perusteella tekstuuri piirretään objektin ympärille. Toiselle UV-kanavalle tulevan UV-kartan ei tarvitse olla mitenkään loogisesti unwrapattynä, koska tämä toinen UV-kanava on varattu valaisukartalle. Valaisukartan laskee tietokone, joten ei sille varattua objektin unwrappaystä tarvitse tehdä mitenkään ihmissilmälle loogiseksi. (3dmotive 2011)

7 Tietenkin pitää edelleen ottaa huomioon se, että mitä suuremman alueen jokin objektin osa UV-kartalla vie, sitä tarkemman valaistuksen se tulee siihen kohtaan saamaan. Yleensä valaistus halutaan yhtä tarkkana objektin tai ympäristön joka kohtaan. Täten voimme tulla siihen tulokseen, että toisen UV-kanavan unwrappays voidaan tehdä todella pikaisesti automaattisia unwrappays-työkaluja käyttäen. Monta objektia voi käyttää samaa valaisukarttaa, eli yhtä kuvatiedostoa, josta moni objekti ottaa valaisutietonsa. Tätä varten on 3ds Maxiin tehty liitännäinen nimeltä Flatiron, joka automaattisesti unwrappaa kaikki Maxin näkymästä valitut objektit ja sovittaa ne UV-kanavilleen siten, että niille voidaan tehdä yksi valaisukartta jota kaikki valitut objektit käyttävät. Näin säästetään suuresti aikaa, kun jokaista objektia ei tarvitse erikseen unwrapata eikä renderöidä jokaista objektia kohden omaa valaisukarttaa. Mikäli haluamme pelissämme olevaan ympäristöön tai objekteille myös ambient occlusionin, niin sen voi yhtä hyvin renderöidä joko ensimmäiselle tai toiselle UVkanavalle. Ambient occlusionin voi siis liittää joko suoraan tekstuurin päälle tai valaisukartan päälle kuvankäsittelyohjelmassa. 2.4 Valaisukartan luominen Teemme valaisukartat ensin 3ds Maxissa, josta sitten tuomme ne Unityyn, käyttämäämme pelimoottoriin. Unityn uusimmassa versiossa Unity 3:ssa, valaisukarttojen rendaamisen voi hoitaa suoraan Unityn sisällä sen omia valoja käyttäen. Tämä tapa on huomattavasti yksinkertaisempi ja nopeampi tapa hoitaa valaisu kuntoon. Tosin jos edelleen haluamme saada peliympäristömme valaistuksen näyttämään samalta miltä 3ds Maxissa, niin joudumme sen tekemään 3ds Maxin Render To Texture - työkalua käyttäen. 2.4.1 Tekstuurille renderöinti Kun olemme saaneet päätökseen ympäristön mallintamisen, niin alamme miettiä mitä kautta valaisukartoitusta voi lähteä tekemään. 3D-ohjelmista löytyy kaikista työkalu jonka avulla voi renderöidä valaistuksen tekstuuriin. Esimerkiksi 3ds Maxissa kyseinen työkalu on nimeltään "Render To Texture".

8 Tämän työkalun käyttö on ainakin 3ds Maxissa aika hidastempoista mikäli haluamme renderöidä monimutkaiseen peliympäristöön valaisukartoitusta. Hitaus tulee esille viimeistään siinä vaiheessa kun haluamme tehdä valaisukartan moneen eri objektiin. Tätä nopeuttamaan on ainakin 3ds Maxiin olemassa liitännäinen nimeltä Flatiron. Flatironin avulla monen objektin yhtäaikainen valaisukartoitus onnistuu kätevästi. Se automatisoi monen asian pariin napin painallukseen. Käytännössä Flatiron unwrappaa kaikki valitsemasi objektit ja sijoittaa ne UV-kartalle siten, että ne kaikki voivat käyttää samaa kuvatiedostoa valaisukarttana. Renderöin valaisukartat EXR-muotoon, jotta voin kätevästi säätää valon määrää kuvankäsittelyohjelmassa jälkikäteen ilman uutta renderöintiä 3D-ohjelmasta käsin. 2.5 Pelimoottorin sisäinen valaisukartoitus Pelimoottoreissa on nykyään myös sisäänrakennettuna oma valaisukartoitustyökalu. Esimerkkeinä Unity ja UDK. Nämä sisäänrakennetut työkalut ovat paljon kätevämpi tapa tehdä haluamamme valaisukartoitus peliympäristöön. Verrattuna edellä mainittuun tapaan, jossa valaisukartat renderöidään erillisellä 3D-ohjelmalla ja tuodaan sieltä käsin mahdollisten kompositointiohjelmien läpi pelimoottoriin. Mikäli edelleen haluamma, että ympäristön valaisukartat näyttävät samalta kuin esimerkiksi 3ds Maxissa Mental Rayllä renderöity valaisu, niin joudumme tietenkin käyttämään ensimmäistä tapaa tehdä valaisukartat. Jos taas tiedämme mihin pelimoottoriin olemme viemässä mallintamaamme ympäristöä ja meillä ei ole tarvetta tehdä valaisusta 3D-ohjelmassa renderöimämme näköistä, niin käytämme tietenkin valitsemamme pelimoottorin sisäistä valaisukartoitustyökalua. Nämä sisäänrakennetut valaisukartoitustyökalut mahdollistavat epäsuoran valaistuksen laskemisen ja valon kimpoamisen määrän säätämisen suoraan pelimoottorin omia valoja käyttäen. Tämä säästää aikaa ja antaa ympäristön valaisijalle paljon käyttäjäystävällisemmän työtavan säätää valotusta. Mikäli haluamme liikuttaa jotain objektia ympäristössä, niin voimme liikuttaa sitä suoraan pelimoottorin sisällä ja säätää valon paikkaa ja nähdä suoran valaistuksen ja varjojen paikan reaaliaikaisesti.

9 Epäsuora valaistus pitää aina renderöidä uudelleen mikäli valoja tai valaistuja objekteja siirrellään. 2.6 Valaisukartoitustekniikoiden yhdistäminen Koska valaisukartta on muodoltaan kuvatiedosto, niin voidaan sitä kuvankäsittelyohjelmalla jälkikäsitellä ja samalla yhdistää molempien edellämainittujen tekotapojen tuottamat valaisukartat keskenään. Voimme esimerkiksi ensin luoda valaisukartat pelimoottorissa ja sen jälkeen 3D-ohjelmassa renderöidä joitain yksittäisten lamppujen valaistuksia eri paikkoihin ympäristössä. 2.7 Unityn sisäinen valaisukartoitus Unityssa, kuten muissakin nykyaikaisissa pelimoottoreissa, valaisukartoitustyökalulla on mahdollista laskea myös epäsuora valaisu. Unity luo kaikille objekteille uuden toisen UV-kanavan johon se lisää luomansa valaisukartan. Unity luo valaisukartat EXRmuotoon. Unityn "Dual Lightmapping" eli tuplavalaisukartoitus on tekniikka jonka avulla Unityssa saa valaisukartoituksen kanssa toimimaan specular ja normal mapit ja sopivan sekoituksen reaaliaikaisia ja valmiiksirendattuja varjoja. Tekniikassa siis yhdistetään kahta valaisukarttaa. Kaukana olevaa "Far"- ja lähellä olevaa "Near"-valaisukarttaa. Kohtaa jossa nämä kaksi valaisukarttaa yhdistyvät voidaan säätää Unityssa. Mitä pidemmälle lähellä oleva valaisukartta näkyy, sitä raskaampaa se on laskea. Ympäristön kohdassa jossa kauempi valaisukartta näkyy on vain valaisukartta ja siitä otettu valaisu. Ympäristön kohdissa joissa lähempi valaisukartta näkyy on valaisukartasta otetut valon kimpoamiset ja Unityn omat reaaliaikaiset valot ja varjot. Seuraavana kaksi kuvaa Unityn nettisivuilta joissa havainnollistetaan Unityn "Dual Lightmapping" -tekniikan eri kohtia.

Kuvio 3. Unityn tuplavalaisukartoituksesta esille otettuja kohtia 10

11 2.8 Valaisukartan jälkikäsittely Valaisukarttoja voi jälkikäsitellä kuvankäsittelyohjelmilla kuten mitä tahansa kuvatiedostoa. Mikäli emme ole tyytyväisiä johonkin kohtaan valaistuksessa ja kyseinen valaistus on renderöity valaisukarttaan, niin voimme avata sen vaikka Photoshopissa ja säätää tätä tiettyä kohtaa kuvassa vaaleammaksi, tummemmaksi tai eriväriseksi. Joskus renderöinnin jäljiltä jää valaisukarttaan myös kohtia joissa valo on päässyt vuotamaan jostain läpi. Tämä johtuu usein renderöinnin alhaisista asetuksista, joita on nopea käyttää katselumielessä. Mikäli emme halua renderöidä uudestaan paremmilla ja aikaa vievillä asetuksilla koko valaisukarttaa uusiksi, niin voi yhtähyvin korjata pienet vuotokohdat jollain kuvankäsittelyohjelmalla. Esimerkiksi Photoshop Smudge- ja Stamp-työkaluilla. 2.8.1 EXR-tiedostomuoto Renderöidessä kannattaa käyttää EXR-kuvatiedostomuotoa. Siihen voi tallentaa renderöinnistä enemmän tietoa kuin mitä 3D-ohjelman renderöinti ikkunasta näkee kuvassa olevan. Kun EXR-muotoon tallennetut renderöidyt kuvat siirretään kuvankäsittelyohjelmaan, niin siellä kyseisen kuvan valotuksen määrää voi säätää reaaliaikaisesti. Ilman, että menettää informaatiota kuten perus 8-bittisen kuvatiedoston kanssa kävisi. Tämä johtuu siitä, että EXR-muoto tallennetaan aina joko 16- tai 32-bittiseen muotoon. TIFF-kuvamuodon voi myös tallentaa 16- tai 32-bittiseksi, mutta se vie enemmän tilaa kiintolevyltä kuin EXR-tiedosto. Kaiken tämän lisäksi EXR-muoto tukee myös "auxiliary channeleita" eli apukanavia jotka ovat käteviä 3D-kuvamateriaalin jälkikäsittelyssä (CG Sutra 2011). 2.9 Valaisukartan rajoitukset Perus yhden kuvan tai kuvasarjan renderöinnissä ei tarvitse ottaa huomioon valaisukarttojen koossa mitään erityistä. Tietenkin mitä isompia kuvia tekee, sitä enemmän ne vievät tilaa kiintolevyltä.

12 2.10 Pelimoottorien rajoitukset Yleensä pelimoottoreihin tehtäessä valaisukarttoja tai tekstuureja pitää ottaa huomioon kuvatiedoston mahdolliset suuruusluokat, jotka vaihtelevat kahden potenssissa. Kuvien sivujen pituuksien tulee olla myös kahdella jaollisia. Esimerkkeinä 1024x1024 ja 2048x2048. Kuvan kuvasuhde voi myös olla esimerkiksi 1024x2048. Kuvio 4. 2048x2048-kuvakoko vie neljä kertaa enemmän muistia kuin 1024x1024. Peliin ympäristöä luodessa on myös pystyttävä optimoimaan tekstuurien ja valaisukarttojen kokoja. On pyrittävä siihen, että mahdollisimman monen käyttäjän tietokone jaksaisi peliympäristöä pyörittää suhteellisen sulavasti. Siispä on hyvä ottaa huomioon kuvatiedostojen kokoja miettiessä, että aina kun suurennan kokoluokkaa, niin nelinkertaistuu sen tilan tarve myös muistista. Esimerkiksi 1024x1024 kokoinen kuvatiedosto mahtuu neljä kertaa 2048x2048 kuvatiedoston sisään. Jos käyttäjän

13 tietokoneen muisti loppuu kesken niin tietokone alkaa lataamaan tietoa kiintolevyn kautta joka hidastaa pelikokemusta suuresti. Hyvä nyrkkisääntö tekstuurien kokoja laatiessa on se, että läheltä katsottavien objektien tekstuurit ovat isompia kuin kaukana olevien objektien. Kun valaisukartassa on monta objektia tai mahdollisesti koko ympäristö sisällytettynä, niin voi sen koko ihan hyvin olla todella suuri. Riippuen tietenkin ympäristön koosta. Pelimoottoreissa on kehitetty tekstuureille Mipmap niminen tekniikka joka tekee tekstuureista pienempiä kun ne ovat kauempana kamerasta ja suuremmaksi kun ne ovat lähellä kameraa. (Wikipedia 2011, hakusana Mipmap)

14 3 PROSESSIN KUVAUS 3.1 Toimeksianto Projektini lähti liikkeelle siitä, kun sain toimeksiannon arkkitehti Esko Nousiaiselta. Tilaukseen kuului Nousiaisen suunnitteleman pohjapiirroksen mallintaminen kolmiulotteiseen muotoon. Huoneistoon piti pystyä myös tutustumaan reaaliaikaisesti. Unity pelimoottorista innostuneena ja siitä jo jotain etukäteen tietäneenä, otin sen käyttööni tätä tehtävänantoa aloittaessani. Unity omaa käyttäjäystävällisen käyttöliittymän johon on helppo tutustua. Ensimmäisenä liitin Autodesk 3ds Maxissa Nousiaiselta saamani pohjapiirustuskuvan sceneen. Sen päälle aloin top-view ikkunassa mallintamaan seiniä ja edelleen tarkempia yksityiskohtia. Loppua kohden mallinsin myös yksinkertaiset huonekalut ja joitain pienehköjä yksityiskohtia kuten listoja seinien ja lattioiden välille. Näistä yksityiskohdista sai kivasti uskottavuutta lopputuotokseen. Renderöinnin hoidin aluksi kokonaan 3ds Maxin puolella. Aloitin renderöinnin 3ds Maxin omalla Render To Texture -työkalulla. Muutaman kokeilun ja mallien unwrappailyjen jälkeen huomasin kuitenkin, että kyseinen työkalu ei ole kovinkaan pitkälle kehitetty ainakaan ympäristöjen valaisukarttojen tekemistä silmällä pitäen. Niinpä etsin internetistä lisää tietoa aiheesta ja löysin 3ds Maxiin liitännäisen nimeltä Flatiron, joka tekee paljon asioita valaisukarttojen tekijän puolesta. Flatironia käyttäen rupesin iteroimaan parasta tapaa mallintamani alueen valaisukartoittamiseksi. Aluksi valitsin tietyn määrän malleja mallintamastani ympäristöstä ja teetin niihin automaattisen unwrappayksen Flatironilla. Sen jälkeen renderöin Mental Ray -asetuksilla valaisukartat valitsemiini malleihin jotka äsken sain Flatironilla unwrapattyä. Tässä kohtaa projektia meni paljon aikaa oikean valaisukartan koon ja renderöintiasetuksien hakemisen kanssa. Projektin edetessä huomasin useasti, että käytin liikaa aikaa liian isojen testirenderöintikuvien kanssa.

15 Tähän projektiin renderöin siis valaisukartat kokonaan 3ds Maxin puolella. Tämä siitä syystä, että Unityssä projektia aloittaessani ei vielä ollut mahdollisuutta valaisukarttojen laskemiseen. Uusi versio Unitystä ilmestyi projektin loppuvaiheilla. Uudesta versiosta innostuneen kuitenkin renderöin valaisukartat myös Unityn puolella ja testailin, kumpi on parempi. Tulin lopputulokseen, jossa yhdistin kuvankäsittelyohjelmassa molempia, sekä 3ds Maxin rendaamia, että Unityn rendaamia valaisukarttoja keskenään. Ajan puutteen ja tehottoman tietokoneeni ansiosta myös aika kävi kortille ja paljon aikaa vievä renderöinti ja sen laatu olivat vain jätettävä tietyssä pisteessä sikseen ja alettava korjaamaan virheitä valaisukartoissa kuvankäsittelyohjelmalla. EXR-muotoisten kuvien valon määrää pystyy kätevästi säätämään jälkikäteen ilman informaation katoamista kuvatiedostosta. Photoshopissa käytin myös Smudge ja Stamp -työkaluja joilla säädin tiettyjä ongelmakohtia valaisukartoissani. Esimerkiksi katon ja seinän välissä olevien huonohkojen rendausasetuksien takia tulleita vuotoja oli nopea korjata kuvankäsittelyohjelman työkaluilla piiloon.

Kuvio 5. Ylemmässä kuvassa valo on vähäisten rendausasetusten takia valunut läpi seinien välistä. Alemmassa kuvassa vuoto on korjattu kuvankäsittelyohjelmassa. 16

Kuvio 6. Kuvissa näkyy valaisukarttaan jääneitä bugeja. Mustat alueet ovat valaisukartassa väärään kohtaan jääneitä mustia alueita, jotka piirtyvät täysin pimeinä kohtina pelimoottorissa. Nämä bugit voi korjata kuvankäsittelyohjelmalla. 17

Kuvio 7. Kuvassa mallintamani toimistotilan kaikki katto- ja lattia-alueet unwrapattynä ja rendattuna Flatiron liitännäistä käyttäen samalle valaisukartalle. Kyseiseen kuvatiedostoon voisi vaikka piirtää hymiön valkoisella jolloin se esiintyisi pelissä hymiön muotoisena valoalueena. 18

19 Kuvio 8. Kuvassa toimistotilan kaikki seinäalueet samalla valaisukartalla. Lasitiilet olivat ongelma reaaliaikaisen renderöinnin kannalta. Vanhemmalla Unitylla, jolla aloitin projektin, ei ollut mahdollista tehdä reaaliaikaisia lasimateriaaleja jotka olisivat läpinäkyviä ja päivittyisivät kameran liikkeen mukana. Ensimmäisen version lasitiilistä tein suoraan 3ds Maxin Mental Rayn lasimateriaalilla. Renderöintiaika oli pitkä, mutta lopputulos ihan siedettävä. Tosin reaaliaikaiseen sisätilan katselemiseen se ei oikein toiminut kunnolla.

20 Kuvio 9. Ylhäällä kuva 3ds Maxissa rendatusta lasitiilimateriaalista Unityssa. Alhaalla sama sivusta katsottuna. Ei näytä oikealta. Uudemmassa Unityn versiossa sain käyttööni reaalaikaisesti päivittyvän lasimateriaalin. Lasimateriaali toimii Unityssa siten, että pinnan läpi näkyvä alue vääristyy materiaaliin lisättävän normal mapin perusteella. Kyseistä materiaalia käyttäessäni pääsin eroon lasitekstuurien renderöinnistä ja lopputuloskin on realistisempi. 3ds Maxissa rendatussa lasitiilissä on toki puolensa ulkonäöllisesti, mutta reaaliaikaisuus vaatii myös reaaliaikaisesti päivittyvän lasimateriaalin.

21 Kuvio 10. Unityn oma lasimateriaali. Läpinäkyvä alue vääristyy materiaaliin lisättävän normal mapin perusteella. 3.2 Kuvan jälkikäsittely reaaliaikaisessa sovelluksessa Unityssa, kuin monessa muussakin pelimoottorissa, voi asettaa kuvan päälle rendattavia kuvan jälkikäsittelyefektejä. Halusin valaisukartoituksen luomasta valaisusta vielä enemmän irti laittamalla kameran kuvan päälle pienen määrän hehkua, vinjettiefektin sekä valolähteistä lähtevä erittäin pieni linssinheijastus. Tein myös minimaalista kontrastin korostusta ja värimaailman säätöä. pyrin pitämään efektit

22 mahdollisimman pieninä, etteivät ne osuisi silmään liian pahasti vaan toisivat ympäristöön pienen mukavan tunnelman korotuksen. Tässä kuvia neljästä Unityn jälkikäsittelyefekteistä joita projektissa kokeilin. Kuvissa efektit ovat äärimmilleen vietyinä. Kaikista Unityn efekteistä löytyy internetistä helposti lisää tietoa. Kuvio 11. Ylempänä kuva tilan keittiö Unityn "Vortex" nimistä jälkikäsittelyefektiä käyttäen. Efektin voi nähdä reaaliaikaisena liitteenä löytyvältä DVD-levyltä. Alemmassa kuvassa Unityn "Vignetting" efekti. Vinjetti efektillä voi säätää mustaa kuvan reunoille, sumeutta ja väripoikkeamaa.

23 Kuvio 12. Ylemmässä kuvassa Unityn "Noise" efekti, jolla voi luoda kameran kuvaan rakeisuutta. Mukaan saa myös kuvassa näkyviä naarmuja. Alemmassa kuvassa Unityn "Screen Space Ambient Occlusion" efekti. 4 REAALIAIKAISEN SOVELLUKSEN KÄYTTÖ 4.1 Käyttäjäystävällisyys Käyttäjän kokemusta reaaliaikaisessa sovelluksessa piti suunnitella ja yksinkertaistaa jonkin verran. Koska sovellus tulisi olemaan nettisivulla käyttäjien kokeiltavana, tuli sen

24 olla myös mahdollisimman käyttäjäystävällinen. Ensimmäinen ongelma oli hiirellä toimiva kameran pyörittäminen eli pelaajan katselukulman vaihtelu. Aina kun sovelluksen avasi selaimessa, niin sovellus alkoi lukemaan hiiren liikettä. Olipa hiiren osoitin missä tahansa, niin kamera liikkui sovelluksessa. Tämä aiheutti sekaannusta ja turhaa koneen laskentatehon käyttöä, jos sovellus olisi vaikka käyttäjällä jäänyt taustalle. Ratkaisuksi keksin laittaa kameran pyörittämiseen hiirellä rajoituksen, joka vaatii käyttäjää pitämään hiiren vasenta nappia pohjassa samalla kun hän haluaa pyörittää kameraa sovelluksessa. Kameran eteenpäin liikuttaminen eli pelaajan eteneminen toimii perus W, A, S ja D näppäinkomennoilla. Tosin halusin, että käyttäjä voi saada kaiken irti sovelluksesta pelkästään hiirtä käyttämällä. Siispä laitoin hiiren oikean näppäimen pohjassa pitämisen vaikuttamaan kameran liikuttamiseen eteenpäin. Aina kun käyttäjä pitää hiiren oikeaa pohjassa, pelaaja etenee kameran osoittamaan suuntaan. Ihan aluksi sovelluksessa pystyi myös hyppimään, mutta pidemmälle ajateltuna se on ihan turha koko sovelluksessa. Kyseisen sovelluksen kohdeyleisöstä eivät useimmat ole välttämättä koskaan pelanneet silmistä kuvattuja pelejä joissta on yleensä mahdollista hyppiä. Siispä useimmat eivät edes tietäisi kyseisen olevan mahdollista. Toisekseen hyppiminen loisi vain koomisuutta sovellukseen. Jos pelaajalla on mahdollisuus rueta hyppimään keittiönpöydälle, niin se luo komiikkaa ja turhaa sekavuutta sovelluksen käyttötarkoitusta silmällä pitäen (Rouse 2005). Kameran pyörittäminen oli aluksi sekä sivuttais-, että pystysuunnassa yhtä nopeaa. Tämä oli oletusarvo. Sama pätee useimmissa silmistä kuvatuissa peleissä. Eri kokeilujen jälkeen päädyin kuitenki kameran pyörittämisliikkeissä asetuksiin joissa pystysuunnassa liikkuminen oli hitaampaa kuin sivuttaisuunnassa. Tämä tuntui luonnollisemmalta sovelluksessa, jota esitetään erittäin laajassa kuvaformaatissa nettisivuilla. Visualisoinnissa on myös melko harvakseltaan mitään mielenkiintoista katossa, joten tämä on osasyy miksi pystysuunnassa kameran liike on hitaampaa. Tämä vaikeuttaa käyttäjää vahingossa heilauttamaan kameraa kattoon ja tuo samalla selvyyttä käyttäjälle, joka ei ole ennen hiirellä ohjattavia silmästä kuvattuja pelejä pelannut.

25 Lisäsin sovellukseen ihan loppumetreillä myös sovelluksen esitystilaisuutta varten muutaman pikku kokeilun. Käyttäjä voi M-näppäintä painamalla mennä ylhäältä kuvattuun karttatilaan josta voi nähdä koko tilan kerralla ja samalla nähdä missä käyttäjä on tilassa kyseisellä hetkellä. Käytännössä Unity vain vaihtaa kameran paikkaa pelaajan silmistä koko tilan yläpuolelle. Numeronäppäimet 1, 2, 3, 4 ja 5 vaihtavat keittiössä olevaa seinämateriaalia. Näppäimet "," ja "." vähentävät ja lisäävät Unityssa lisättyjen valojen tehoa. Kun nämä valot laittaa täysin nollaan niin voi nähdä ainoastaan valaisukarttojen luoman valon tekstuurien päällä.

26 5 POHDINTA 5.1 Valaisukartoituksen kätevyys Valaisukartoitus on kätevä ja laskentatehoa säästävä tapa hoitaa valaistus reaalaikaisen ympäristön staattisille objekteille. Vaikka valaisukarttojen renderöintiin saattaakin kulua paljon aikaa, niin on se vaivan väärti. Havainnollistamiseksi kuva keittiötilasta ilman valaisukarttaa ja valaisukartan kanssa. Kuvio 13. Ylempänä keittiötila ilman valaisukarttaa. Alempana valaisukartan kanssa.

27 Itselleni kävi valaisukartoitusta kokeillessa aika useasti niin, että renderöin aivan liian isoja kuvatiedostoja. Monessa tapauksessa huomasin, että pienempikin riittää. Niinpä ajan säästön kannalta kannattaa renderöidä mahdollisimman pienikokoisia valaisukarttoja esikatselua varten. Tämä on itsestäänselvyys, mutta voi unohtua aina silloin tällöin. Kokeilujen kautta päädyin mielestäni parhaaseen tulokseen reaaliaiakisen ympäristön valaisukartoituksessa siten, että tein valaisukartoituksen ensin pelimoottorin, tässä tapauksessa Unityn, omilla työkaluilla. Tämän jälkeen lisäsin 3D-ohjelmasta Mental Rayllä renderöityjä valotuksia, jotka kuvankäsittelyohjelmalla laitoin jo olemassa olevien valaisukarttojen päälle haluamaani kohtiin. 5.2 Ambient Occlusion Valaisukarttojen lisäksi käytin projektissani valaisun rakentamiseen Ambient Occlusion - tekniikkaa. Tämän lisäsin tekstuurien päälle kuvankäsittelyohjelmalla. Hyvälaatuisen Ambient Occlusionin renderöinti vie paljon aikaa ja jos sitä ei ole, niin kannattaa se mielestäni renderöidä ainakin ympäristön lattialle mikäli lattian päällä on esimerkiksi huonekaluja. Ambient Occlusionin avulla huonekalut näyttävät todella olevan lattiassa kiinni eikä leijumassa lattian yllä. 5.3 Valaisukartoitus tulevaisuudessa Valaisukartoitus on vielä tärkeä osa pelien kenttiä tehdessä. Tosin en usko, että menee kovinkaan kauan kunnes täysin reaaliaikainen epäsuoravalaisu tulee käyttöön pelimoottoreissa (Realtime Radiosity 2011). Nykyiset käyttäjien tietokoneet ja näytönohjaimet eivät vielä kykene kovinkaan sulavasti kyseistä asiaa laskemaan, mutta tietotekniikan kehitys on nopeaa. Esimerkkinä kehityksestä on Screen Space Ambient Occlusion, joka siis reaaliaikaisesti laskee Ambient Occlusionin kaikille kameran kuvassa näkyville liikkumattomille ja liikkuville esineille (Wikipedia 2011, hakusana Screen Space Ambient Occlusion). Valaisukartoitusta tullaan joka tapauksessa käyttämään, vaikka reaaliaikainen epäsuoravalaisu jonakin päivänä tulisikin peleihin käyttöön. Aina on kännykkäpelien kenttiä ja muiden reaaliaikaisten sovellusten 3D-ympäristöjä, joita halutaan pyörittää myös vanhemmilla ja vähemmän tehokkailla tietokoneilla (Gamasutra 2011).

28 LÄHTEET Puhakka, Antti. 2008. 3D Grafiikka. Talentum Media Oy, Helsinki, 2008. Rouse, Richard. 2005. Game Design Theory & Practice Second Edition. USA, Wordware Publishing, 2005. Wikipedia 2011, Lightmap. < http://en.wikipedia.org/wiki/lightmap > (luettu 5.10.2011) Wikipedia 2011, Quake Engine. < http://en.wikipedia.org/wiki/quake_engine > (luettu 6.8.2011) Wikipedia 2011, Mipmap. < http://en.wikipedia.org/wiki/mipmap > (luettu 6.10. 2011) Wikipedia 2011, Screen Space Ambient Occlusion. < http://en.wikipedia.org/wiki/screen_space_ambient_occlusion > (luettu 7.9.2011) Realtime Radiosity 2011 < http://realtimeradiosity.com > (luettu 3.9.2011) 3Dmotive, Creating a lightmap uv channel. 2011 < http://www.3dmotive.com/training/udk/creating-a-lightmap-uv-channel/ > (luettu 26.7.2011) Gamasutra, Dynamic vs Static Rendering. 2011 <http://www.gamasutra.com/blogs/davidmaletz/20110108/6752/dynamic_vs_static_r endering.php > (luettu 13.7.2011) CG Sutra, Introduction to Auxiliary Channels. 2011 < http://www.cgsutra.com/eyeon_fusion_kb/kb0006_auxiliary_channels_in_fusion.php > (luettu 21.9.2011)

Liite 1 1 (1) Liite 1 - DVD levy DVD-levy johon on kopioituna html-tiedosto. Avaamalla tämän html-tiedoston selaimella, pääset käyttämään tässä projektissa tehtyä reaaliaikaista tilavisualisointia.

Liite 2 1 (5) Liite 2 - Kuvakaappaukset projektin lopputuotoksesta Kuvakaappauksia valaisukartoitetusta reaaliaikaisesta toimistotilan visualisoinnista:

Liite 2 2 (5)

Liite 2 3 (5)

Liite 2 4 (5)

Liite 2 5 (5)