• Ei tuloksia

Arkkitehtoninen visualisointi pelimoottorilla

N/A
N/A
Info
Lataa
Protected

Academic year: 2022

Jaa "Arkkitehtoninen visualisointi pelimoottorilla"

Copied!
25
0
0

Kokoteksti

(1)

2020

Waltteri Nuutinen

ARKKITEHTONINEN VISUALISOINTI

PELIMOOTTORILLA

(2)

OPINNÄYTETYÖ (AMK) | TIIVISTELMÄ TURUN AMMATTIKORKEAKOULU Tieto- ja viestintätekniikka

2020 | 25 sivua, 0 liitesivua

Waltteri Nuutinen

ARKKITEHTONINEN VISUALISOINTI PELIMOOTTORILLA

Click here to enter text.

Opinnäytetyön tarkoitus oli tutkia Unreal Engine -pelimoottorin käyttöä fotorealistiseen visualisointiin. Unreal Engineä voi nykyään käyttää ilmaiseksi, jos vuosituotot ovat alle miljoona Yhdysvaltain dollaria. Lisäksi Unrealin omistaja Epic Games osti Megascans-sovellusten tekijän Quixelin, joten Unrealia käytettäessä Megascans-sovellusten käyttö muuttui ilmaiseksi. Näiden muutosten takia Unrealin ja Quixelin käyttö on houkutteleva vaihtoehto visualisointiin.

Opinnäytetyössä keskityttiin vertailemaan eri tapoja valaistukselle, erilaisia tapoja materiaalien tuottamiseen sekä videon renderöintiin Unrealilla. Vertailtiin eri mahdollisuuksia valaistuksessa:

miten dynaamiset ja staattiset valot saadaan näyttämään parhaalta ja millaisella kustannuksella suorituskyvyssä. Lopputuloksena tehtiin demo Turun Ammattikorkeakoulun uudesta kampuksesta, Educityn rakennuksesta renderöidyn videon muodossa, jossa kuvataan rakennusta sisä- ja ulkopuolelta.

Työn johtopäätöksenä todettiin Unreal Enginen sopivan hyvin visualisointiin, ja se tuo lisää vaihtoehtoja erilaisten visualisointitapojen tekoon. Kuvien ja videoiden tuottamiseen se voisi korvata renderöintiohjelman säästäen aikaa renderöinnistä, ja lisäksi pelimoottorina sillä voidaan myös tuottaa reaaliaikaisia sovelluksia. Lisäksi Unreal Enginen seuraavassa versiossa tulevat päivitykset lupaavat dynaamisten valojen laadun lähentyvän esilaskettuja valoja, ja 3D-malleihiin liittyvät päivitykset vähentäisivät mallien yksinkertaistamiseen tarvittavaa aikaa.

ASIASANAT:

Visualisointi, pelimoottori, arkkitehtuuri, peliteknologia, virtuaalitodellisuus

(3)

Information and Communications Technology 2020 | 25 pages, 0 pages in appendices

Waltteri Nuutinen

ARCHITECTURAL VISUALIZATION USING A GAME ENGINE

Click here to enter text.

The goal of this thesis was to study the use of the game engines for photorealistic visualization.

Unreal Engine is now free to use if the profits from the produced software or material do not exceed 1 million U.S. dollars in a year. In addition to this Epic Games, the owner of Unreal Engine, acquired the 3D-material producer Quixel, and made all the Quixel tools free if used together with Unreal Engine. With these changes the use of Unreal and Quixel tools has become a very tempting option for visualization.

In this thesis the focus was on comparing different options for lighting, different ways to produce and use materials and on how to render a video or pictures from Unreal Engine. Different options for lighting were compared, including how to make dynamic and static lights look the best and how big of an impact they have on the performance. As a result, a demo of the new building for Turku University of Applied Sciences was produced, filming around the building and inside the main lobby. This project uses fully dynamic lighting as the baked lighting took too long to calculate with the available hardware.

As a conclusion Unreal Engine works well as a visualization tool, and it gives more options than the traditional tools used for visualization. For the production of video and photos it could replace some rendering tools and save time from rendering, and as a game engine it can also be used for real-time solutions. In addition to this the upcoming features in future versions of Unreal should bring the dynamic lighting to a comparable level with precalculated lights, and the 3D-model related updates could save time by eliminating the need to retopologize models.

KEYWORDS:

(4)

SISÄLTÖ

KÄYTETYT LYHENTEET 6

1 JOHDANTO 1

2 SUUNNITTELU JA TEKNOLOGIOIDEN TUTKINTA 2

2.1 Mallinnus 2

2.2 Valot ja varjot 4

2.2.1 Valojen erot 4

2.2.2 Varjot 6

2.3 Materiaalit 7

2.4 Jälkiprosessointi ja värit 9

3 TYÖN TOTEUTUS 10

3.1 3D-mallit 10

3.1.1 Educity 10

3.1.2 Ympäröivä alue 11

3.1.3 Materiaalit 12

3.3 Kameroiden valmistelu ja animointi 13

3.4 Renderöinti ja käsittely 14

4 LOPUKSI 16

LÄHTEET 18

(5)

Kuva 1. Tesseloinnin erot geometriassa 3

Kuva 2. Pinnan erot tesseloinnissa. 3

Kuva 3. Tesseloinnin erot lähempää kuvattuna 4

Kuva 4. Erilaisten valaistusten vertailu 5

Kuva 5. Kuvassa vasemmalla on valaistettu malli, keskellä visualisoidut Distance

Fieldit, ja oikealla niiden tekemä okkluusio. 7

Kuva 6. Substance Designerilla täysin proseduraalisesti tehty materiaali. 8 Kuva 7. Yksinkertaistettu työjärjestys materiaalin tuottamisesta. 8 Kuva 8. Vertailu oletusasetuksien väreistä ja muokatusta värikartasta. 9

Kuva 9. Värien hakutaulu eli LUT 9

Kuva 10. Educityn kampusta ympäröivä alue Blenderissä. 11 Kuva 11. Distance Fieldien aiheuttamat virheet varjoissa. Oikealla näkyy muodostetun Distance Fieldin vääristymä johtuen 3D-mallin muodosta. 13 Kuva 12. Educity Lemminkäisenkadun suunnalta kuvattuna. 15

Kuva 13. Educity sisältä 15

(6)

KÄYTETYT LYHENTEET

Educity Turun AMK:n uusi rakennus Kupittaalla

FBX Autodeskin omistama tiedostomuoto

IFC Kansainvälinen standardi ja tiedostomuoto rakennussuunnittelussa

LOD Level of Detail, 3D-mallin yksityiskohtaisuuden tasot.

LPV Light Propagation Volume. Alkuperäisesti Crytekin kehittämä tapa laskea valon heijastumista tilassa.

Post process Esimerkiksi väreihin ja valoihin liittyvät efektit jotka lisätään kuvaan valaistuksen jälkeen.

Unreal Engine Epic Gamesin kehittämä pelimoottori

VR Virtuaalitodellisuus

(7)

1 JOHDANTO

Opinnäytetyön tavoitteena on tutkia miten saavutetaan mahdollisimman fotorealistinen kuvanlaatu, ja tuottaa video Turun Ammattikorkeakoulun uudesta Educity- rakennuksesta. Tähän liittyvät mallinnus, valot, materiaalit, sekä renderöintiin liittyvät vaihtoehdot kuten kamerat ja post process efektit. Tutkitaan mikä on paras tapa tuoda mallit materiaaleineen Unreal Engineen, jolloin ne voidaan korvata lopullisilla materiaaleilla. Materiaaleja tehdessä vertaillaan Quixelin työkaluja muihin tapoihin, kuten esimerkiksi Substancen ohjelmiin. Valaistusta tehdessä verrataan eri vaihtoehtoja laadun ja suorituskyvyn mukaan. Reaaliaikaisessa sovelluksessa dynaaminen valaistus voi olla liian raskas, mutta esilaskettua valaistusta käyttäessä erilaisten valaistusten tekemiseen menee paljon aikaa. Tällöin lightmap-tekstuurit johon valaistus tallennetaan pitää laskea valaistuksen muuttuessa uudelleen. Opinnäytetyössä tutkitaan myös esimerkiksi Distance Fieldien käyttöä varjojen tekemiseen. Tarkoituksena on löytää tasapaino parhaan mahdollisen kuvanlaadun sekä ohjelman raskauden välillä. Työhön liittyvät myös Unrealin virtuaaliset kamerat ja post-prosessointi, renderöiminen, sekä videon käsittely. Lopuksi tutkitaan miten hyvin projekti toimisi reaaliaikaisena sovelluksena, esimerkiksi VR-lasien kanssa.

Opinnäytetyössä tutkitaan visualisointia käyttäen Unreal Engine -pelimoottoria.

Ruotsalainen Quixel julkaisi maaliskuussa 2019 demon käyttäen skannattuja materiaaleja ja Unreal Engine 4:ää. Unreal Enginen sivuilla julkaistiin artikkeli demosta, ja myöhemmin marraskuussa ilmoitti ostaneensa Quixelin (Quixel 2019 N.d.a.). Tämän johdosta Quixelin työkalujen ja materiaalikirjaston käyttö muuttui ilmaseksi, kun niitä käytetään yhdessä Unreal Enginen kanssa.

Lisäksi Unreal on ilmainen visualisointikäytössä, jos tarkoitus on tuottaa vain kuvia tai videomateriaalia. Yhdessä ilmaisen 3D-mallinnussovelluksen kuten esimerkiksi Blenderin kanssa, käytössä on täysin ilmaiset työkalut visualisointiin. Jos ne ovat käytössä verrattavia maksullisiin työkaluihin kuten 3ds Max, Substance, Vray tai muut visualisoinnissa käytettävät ohjelmat, näiden yhdistelmä olisi houkutteleva vaihtoehto.

Opinnäytetyön toisessa luvussa käydään läpi erilaisia vaihtoehtoja projektin tekoon, ja kolmannessa luvussa tutkitaan millaiseen toteutukseen päädyttiin ja miksi. Tutkitaan löytyykö tähän prosessiin yleinen työnkulku jota voisi noudattaa, ja verrataan eri työkaluja ja menetelmiä.

(8)

2

TURUN AMK:N OPINNÄYTETYÖ | Waltteri Nuutinen

2 SUUNNITTELU JA TEKNOLOGIOIDEN TUTKINTA

Fotorealistista renderöintiä tavoitellessa projektin osa-alueet on jaettu neljään osaan (Price 2012). Kaikkien osa-alueiden pitää olla riittävällä tasolla jotta laatu olisi mahdollisimman realistinen. Mallinnus on projektin pohja, koska 3D-mallien tarkkuus määrää objektien muodon lisäksi myös esimerkiksi varjojen muodot sekä pintojen tarkkuuden. Toisena osa-alueena on valaistus, joka vaikuttaa myös nähtäviin väreihin ja varjojen laatuun. Kolmantena osa-alueena on materiaalit, joilla mallien pinnoista saadaan realistisen näköisiä antamalla niille tekstuurit ja värit, sekä muokkaamalla objektin pinnan muotoa. Viimeisenä osa-alueena on itse renderöinti. Näkyviin väreihin, virtuaalisen kameran asetuksiin sekä itse kuvan tarkkuuten voidaan vaikuttaa. Kun halutaan kuvan näyttävän siltä että se olisi kuvattu oikealla kameralla, voidaan lisätä erilaisia efektejä jotka vastaavat esimerkiksi linsseistä johtuvia pieniä vääristymiä tai kuvan tarkennusta ja sumennusta.

2.1 Mallinnus

Tarkkoja malleja varten myös tasaiset pinnat jaetaan pieniin osiin, jotta esimerkiksi valojen aiheuttamat pienet varjot objektin pinnassa ovat realistisempia. Samalla pitää huomioida että erittäin tarkka geometria objektien pinnassa laskee suorituskykyä.

LOD:ien (engl. Level of Detail) käytöllä tätä voidaan helpottaa (Denham, N.d.). LOD:eja varten objekteille tehdään useampi eri 3D-malli, jossa yksityiskohtaisesta mallista pelkistetään yksityiskertaisempia malleja. Yksityiskohdat eivät erotu kaukaa katsoessa, joten malli korvataan asteittain yksinkertaisemmilla malleilla.

Jos aiotaan käyttää displacement-tekstuureja jotka muokkaavat objektin pinnan muotoa, mallin pitää olla tarpeeksi tesseloitu eli jaettu pienempiin osiin, jotta tarkkuus riittää pinnan muokkaamiseen (Burke 2015). Unreal Enginessä materiaalit voivat tesseloida objektin pintaa, jakaen geometriaa pienempiin osiin. Tesseloinnin määrä Unrealissa on kuitenkin rajoitettu suorituskyvyn ylläpitämiseksi (Unreal Archive 2014), jolloin tesselointia kannattaa lisätä jo 3D-malleja tehdessä (Kuva 1.).

(9)

Kuva 1. Tesseloinnin erot geometriassa

Täten displacement-tekstuurilla on enemmän ”resoluutiota”, jonka kanssa muokata pinnan muotoa.

Kuvassa (Kuva 2.) verrataan samaa materiaalia kahdessa eri objektissa joiden ainoa ero on pinnan tesseloinnissa. Kauempaa katseltuna ero näkyy parhaiten pintojen reunoissa ja varjoissa.

Kuva 2. Pinnan erot tesseloinnissa.

(10)

4

TURUN AMK:N OPINNÄYTETYÖ | Waltteri Nuutinen

Lähempää otetussa kuvassa (Kuva 3.) näkyy selvästi ero tesseloinnin tarkkuuksien välillä. Kuvat on samasta kohdasta otettu, ainoana erona on pinnan tesselointi.

Kuva 3. Tesseloinnin erot lähempää kuvattuna

Suunnittelualalla käytössä on yleensä CAD-ohjelma, joita käytetään yleensä teknisten piirrustusten tai 3D-mallien tarkkaan suunnitteluun. 3D-mallinnusohjelmissa ominaisuudet on taas suunnattu 3D-mallien vapaampaan muokkaamiseen sekä valmisteluun esimerkiksi animaatioita tai pelejä varten.

2.2 Valot ja varjot

2.2.1 Valojen erot

Valaistusta tehdessä on valittavissa pääasiassa kaksi erityyppistä valaistusta (Platteaux 2017). Erimuotoisia valonlähteitä voi olla useita, mutta kaikki valot ovat joko esilaskettuja tai reaaliajassa päivittyviä. Esilaskettuja valoja kutsutaan staattisiksi, ja reaaliaikaisia valoja dynaamisiksi. Esilasketut valot lisätään projektiin, jonka jälkeen niiden antama valaistus ”lasketaan” ja lisätään lightmap-tekstuureihin. Lightmap-tekstuureilla säästetään sovelluksen suorituskykyä, koska valaistus ja varjot on laskettu ennen sovelluksen suorittamista. Reaaliaikaiset valot lasketaan joka kerta kun kuva päivittyy joten valojen laskemista ei tarvitse odottaa, mutta se tekee sovelluksen suorittamisesta raskaampaa. Reaaliaikaiset valot eivät tarvitse siis lightmap-tekstuureja. Esilaskettujen valojen laatu on perinteisesti ollut dynaamista valaistusta parempi, koska sen

(11)

laskemiseen voidaan käyttää enemmän aikaa. Esilaskettujen valonsäteiden heijastuksia voidaan laskea moninkertaisesti dynaamiseen valaistukseen verrattuna, jolloin myös epäsuora valaistus sekä varjojen tarkkuus paranee.

Lightmap-tekstuureja käytettiin ensimmäisenä id Softwaren vuonna 1996 julkaisemassa videopelissä Quake (Abrash 2000). Jos valaistusta halutaan muuttaa, lightmapit pitää tehdä uudelleen (Epic Games N.d.b.). Voidaan käyttää myös molempia, mutta esimerkiksi staattisten valojen aiheuttamat varjot eivät silloin muutu vaikka dynaamiset valot muuttuisivat. Dynaamisten valojen raskauteen vaikuttaa se kuinka useaan objektiin niiden valo vaikuttaa, ja näiden objektien verteksien määrä. Voidaan käyttää myös esilaskettujen ja reaaliaikaisten yhdistelmää. Täten dynaamisten valojen määrää voidaan vähentää, mutta esimerkiksi auringon valosta aiheutuvat varjot voivat olla dynaamisia, mutta sisätilojen varjot esilaskettuja.

LPV (engl. Light Propagation Volume) on dynaaminen vaihtoehto epäsuoralle valaistukselle. Ensimmäiseksi LPV:n tapaisen valaistuksen kehitti Crytek (Kaplanyan 2009), ja Lionhead Studios kehitti oman versionsa Fable Legends- peliä varten.

Lionheadin kehittämä LPV lisättiin ominaisuutena Unreal Engineen, mutta sen kehitys jäi kesken Fable Legendsin julkaisun peruunnuttua. Unreal ei jatkanut kehitystä, ja viimeinen päivitys siihen tuli elokuussa 2015 (Unreal Engine 2015). Vuonna 2021 julkaistavassa Unreal Engine 5:ssä uutena ominaisuutena luvataan olevan sen korvaava Lumen-teknologia. LPV:n epäsuoran valaistuksen väri riippuu heijastavan pinnan väristä. Tämä voidaan myös korvata eri värillä materiaalin asetuksissa.

Kuvassa (Kuva 4.) vasemmalla on vain suora auringon valo ilman heijastuksia, keskellä auringon valo ja epäsuora valaistus käyttäen Sky Lightia, ja oikealla LPV:n ja Sky Lightin yhdistelmä. Muut asetukset pysyvät samoina.

Kuva 4. Erilaisten valaistusten vertailu

(12)

6

TURUN AMK:N OPINNÄYTETYÖ | Waltteri Nuutinen

2.2.2 Varjot

Varjojen muodostamiseen on teknologian kehittyessä erilaisia tapoja (Evanson 2020).

Unreal Enginessä esilaskettujen valojen aiheuttamat varjot lisätään valaistuskarttoihin kun valaistusta lasketaan, kun taas dynaamisten valojen aiheuttamat varjot päivittyvät samalla valojen kanssa. Itse varjojen muodostamiseen on myös useampia tapoja, jotka vaikuttavat varjojen tarkkuuteen sekä muotoon (Epic Games N.d.d.).

Suorituskykyä voidaan parantaa käyttämällä varjoja, joiden tarkkuutta säädetään asteittain etäisyydestä riippuen (engl. Cascaded Shadow Maps). Kun kuvassa on paljon varjoja aiheuttavia objekteja, niiden laskemiseen tarvitaan paljon laskutehoa.

Kauempana oleville objekteille käytetään yksinkertaisempia varjoja, säästäen laskemiseen kuluvaa aikaa. Tasoja voidaan lisätä jotta eri varjojen välistä eroa ei huomaisi (Dimitrov 2007).

Varjoja varten voidaan käyttää myös Distance Fieldejä (Wright 2015). Distance Fieldit muodostavat tekstuurin joka kertoo etäisyydestä objektin pintaan. Distance Field varjoja voidaan käyttää myös yhdessä tasoittaisten varjojen kanssa, jolloin määrätyn etäisyyden jälkeen varjojen laskemiseen käytetään Distance Field varjoja. Distance Fieldien käyttö nopeuttaa dynaamisten valojen laskemista, koska valonsäteitä laskiessa ns. tyhjän alueen yli voidaan hypätä käyttämällä Sphere Tracing -algoritmia. Valonsäteen lähtökohdasta lasketaan pallon muotoinen alue, kunnes pallo osuu johonkin objektiin.

Täten valonsäteestä pallon reunaan asti on joka suuntaan tyhjää, ja tyhjän alueen yli voidaan hypätä. Lisäksi niitä voidaan käyttää pehmeämpien varjojen tekemiseen tai ympäristön okluusioon (Kontkanen & Laine 2005) eli tummentamaan pintoja joihin valo ei paista suoraan, esimerkiksi huoneiden nurkat.

Kuvassa (Kuva 5.) valo ei paista suoraan rappusiin, mutta heijastuva valo valaistaa rappusten tasaisia pintoja. Nurkat jäävät tummemmiksi koska niihin ei heijastu yhtä paljon valoa. Unrealissa myös dynaamisen epäsuoran valaistuksen varjot tehdään Distance Fieldeillä.

(13)

Kuva 5. Kuvassa vasemmalla on valaistettu malli, keskellä visualisoidut Distance Fieldit, ja oikealla niiden tekemä okkluusio.

2.3 Materiaalit

Unreal Engineä käytettässä materiaaleja varten houkutteleva vaihtoehto on Epic Gamesin omistaman Quixelin sovellukset (Quixel 2019 N.d.a). Quixel on ruotsalainen kuvaskannaukseen ja materiaalien sekä assettien tuottamiseen keskittynyt yritys.

Quixelin työkalut ovat ilmaisia käyttää Unreal Enginen kanssa, mutta lisenssimaksulla sitä voidaan käyttää kaikkien tunnetuimpien 3D-sovellusten kanssa. Quixelin Megascans-kirjastosta löytyy yli 12 tuhatta materiaalia ja 3D-mallia. Quixelin ohjelmia ovat Bridge, joka yhdistää Megascans-kirjaston eri sovelluksiin sekä 3D- teksturointiohjelma Mixer.

Quixelin Bridge-sovelluksella voi selata Megascans-materiaaleja ja 3D-malleja, ja ne voi tuoda suoraan avoimena olevaan projektiin. Bridge toimii yhdessä lähes jokaisen renderöintiin käytettävän ohjelman kanssa. Megascans-lisäosassa on asetuksia jossa voidaan esimerkiksi valita käytetäänkö esimerkiksi displacement-tekstuureja tai LOD:eja. Materiaalit toimivat instanssina, jossa tekstuurit korvaavat master-materialin tekstuurit. Master-materiaali on materiaali, joissa tekstuurit ovat parametreja.

Materiaaleja tuodessa Bridgellä master-materiaalista tehdään automaattisesti instanssi, johon Bridge vaihtaa tuotavan materiaalin tekstuurit. Tällöin muita asetuksia säätäviä parametreja ei tarvitse erikseen tehdä jokaiselle materiaalille, tekstuureja ei tarvitse käsin liittää materiaaleihin, ja esimerkiksi materiaalin skaalaaminen on helppoa.

(14)

8

TURUN AMK:N OPINNÄYTETYÖ | Waltteri Nuutinen

Toinen suosittu tapa tuottaa materiaaleja on Adoben omistama Substance, jonka työkaluilla voidaan tuottaa materiaaleja ja teksturoida 3D-malleja. Substancen kirjastossa on valmiita materiaaleja, ja uusia voidaan tuottaa valokuvista tai jopa proseduraalisesti ”tyhjästä”.

Substancen Designer on node-pohjainen proseduraalinen ohjelma, jolloin materiaalien tekemiseen ei välttämättä tarvita esimerkiksi valokuvia tai muuta vastaavaa. Designerilla voidaan yhdistää ja muokata erilaisia muotoja tai tekstuureja, ja värjätä niitä materiaalin tekemiseksi. Muotoa vääristämällä saadaan aikaan uusia muotoja, joita yhdistetään kerroksittain.

Esimerkkinä tästä on materiaali multaisesta maasta jossa on juuria tai oksia, sekä pieniä lammikoita (Kuva 6. ja Kuva 7.).

Kuva 7. Yksinkertaistettu työjärjestys materiaalin tuottamisesta.

Substancen Painter on objektien teksturointiin käytettävä ohjelma, jossa eri materiaaleja voidaan yhdistää kerroksittain, ja värjätä esimerkiksi objektin muodon mukaan.

Kuva 6. Substance Designerilla täysin proseduraalisesti tehty materiaali.

(15)

2.4 Jälkiprosessointi ja värit

Jälkiprosessoinnin asetuksissa on efektejä kuvan muokkaamiseen, kuten kuvan valotus, värit, ja erilaiset kameran efektit. Unreal Enginessä jälkiprosessointi lisätään projektiin kuution mallisena ”tilana”, jonka sisällä efektit vaikuttavat kameraan. Alueita voi olla useampia, ja jos ne ovat päällekkäin niille voidaan antaa tärkeysjärjestys jolla määrätään kumpi on käytössä kun kamera on molempien alueella. Jälkiprosessoinnin alue voidaan myös asetuksista määrätä ”loputtomaksi”, jolloin se vaikuttaa koko projektiin. Esimerkiksi Unityssä jälkiprosessointi lisätään koodina kameraan, jolla efektejä voidaan säätää.

Jälkiprosessointiefekteihin kuuluvat esimerkiksi anti-aliasing, kuvan automaattinen valotus, värien korjaus sekä erilaiset efektit kuten syväterävyysalueen säädöt ja ”linssin”

aiheuttama heijastus. Asetuksissa on mahdollisuus muokata värien sekä varjojen sävyjä ja intensiteettiä tai kontrastia, sekä kontrastin gammakorjausta.

Jälkiprosessoinnin asetuksissa on myös vaihtoehto värien hakutaulun eli LUT:n (engl.

Lookup Table) käytölle (Kuva 9.). Normaalisti käytössä on neutraali LUT jossa on periaatteessa ”kaikki” värit, ja LUT:ia muokkaamalla tiettyjen värien arvoja voidaan muuttaa. Scenestä voidaan ottaa kuvakaappaus, jota muokataan esimerkiksi Photoshopilla (Kuva 8.). Samat muunnokset tehdään myös normaaliin LUT:iin, jolla sitten korvataan Unrealissa oleva LUT. Tällöin Photoshopissa tehty kuvan muokkaus saadaan suoraan Unreal Engineen.

Kuva 9. Värien hakutaulu eli LUT

Kuva 8. Vertailu oletusasetuksien väreistä ja muokatusta värikartasta.

(16)

10

TURUN AMK:N OPINNÄYTETYÖ | Waltteri Nuutinen

3 TYÖN TOTEUTUS

Opinnäytetyön toimeksiantajana toimi Turku Game Lab. Game Labissa Educityn mallia on käytetty eri projektissa Unityn kanssa sekä eri materiaaleilla. Tarkoituksena tutkia Unreal Enginen sekä Quixelin käyttöä visualisoinnissa. Tavallisesti visualisoinnissa on käytetty arkkitehtuurissa yleisiä 3D-sovelluksia kuten Autodeskin 3ds Max, Rhino 3D, Vray tai muita vastaavia ohjelmia. Esimerkiksi Rhinossa voidaan animoida vain kameroita ja aurinkoa. 3ds Maxilla voidaan animoida objekteja ja renderöidä videoita, mutta reaaliaikaiseen sovellukseen tarvitaan pelimoottori. Perinteisillä 3D-sovelluksilla etuna on yhteensopivuus suunnittelussa käytettyjen tiedostomuotojen kanssa, mutta Unrealin Datasmith-lisäosalla niiden tuominen Unrealiinkin onnistuu.

3.1 3D-mallit

3.1.1 Educity

Educityn 3D-mallit saatiin CAD-mallista, joka oli jaettu kerroksittain moneen osaan.

Alkuperäinen CAD-malli on yhdessä tiedostossa joka on IFC-tiedostomuodossa (engl.

Industry Foundation Classes). IFC-muotoisesta tiedostosta muuttaessa tiedoston kansiorakenne meni sekaisin, joten FBX-muotoon muutettaessa rakennus jaettiin osiin.

3D-malleja tuodessa Unreal Engineen ongelmaksi muodostui keskusmuistin loppuminen. Malli on jaettu moneen osaan, joten tuominen onnistuu FBX- muodossa olevana 3D-mallina kun tarkkailee vapaana olevan muistin määrää. Unrealin sammuttamalla muisti tyhjenee, jolloin mallit saatiin tuotua osissa. IFC-mallin suoraan Unrealiin onnistuu Datasmith-lisäosalla, mutta alkuperäinen IFC-malli ei ollut optimoitu joten päädyttiin käyttämään suurta FBX-mallia. Osiin jaettunakin mallit pitää tuoda yksi kerrallaan Unrealiin, jottei muisti lopu kesken. Samannimiset materiaalit voidaan yhdistää malleja tuodessa Unrealiin. Alkuperäiset materiaalit olivat vain värejä joiden nimet kuvasivat erilaisia rakennusmateriaaleja, joten valitsemalla kaikki samoja materiaaleja käyttävät osat niiden materiaalit voi helposti korvata Megascans- materiaaleilla. Suurimmaksi osaksi ne olivat oikeissa osissa, mutta joihinkin näkyviin malleihin vaihdettiin materiaalit jotta ne vastaisivat todellisuutta. FBX-mallin geometriassa oli hieman eroa alkuperäiseen verrattuna. Näkyviin paikkoihiin käytettiin Unrealin 3D-objekteja, jolloin näkyvät aukot saatiin piiloon.

(17)

Educityn edellä oleva piha tehtiin Unrealin ulkopuolella, jotta pintojen tesselointia voitiin lisätä. Unrealin 3D-objekteissa pintojen tesselointi on erittäin matala. 3ds Maxissa objektiin voidaan käyttää Tesselation-tasoa, joka tekee pintojen tesseloinnista helppoa.

Blenderissä tähän löytyy Subdivision-työkalu.

3.1.2 Ympäröivä alue

Educity ympäröivä alue tehtiin OpenStreetMapin avulla. OpenStreetMap on vapaasti muokattava, avoin karttapalvelu. Karttoja saa käyttää vapaasti, ja sitä päivittävät vapaaehtoiset tukijat. OpenStreetMappia käyttäviä tunnettuja sovelluksia ovat esimerkiksi Snapchat ja Pokémon GO (International Business Times 2017). Haluttu alue rajataan, ja sivulta ladataan tiedosto joka voidaan muuttaa 3D-malliksi. Tällä tavalla tehty malli ei ole kovin tarkka, mutta vähällä muokkauksella siitä saa sopivan taustan renderöintiä varten.

OpenStreetMap-dataa varten löytyy myös lisäosa Blenderiin (Kuva 10.), jolla valittu alue kartasta voidaan tuoda suoraan Blenderiin. Mallissa on materiaalit esimerkiksi katoille ja seinille, ja ne voidaan korvata omilla materiaaleilla kuten esimerkiksi seiniä kuvaavilla tekstuureilla. Kaikki seinät korvattiin aluksi yhdellä materiaalilla, ja niihin rakennuksiin jotka nähdään lähempää lisättiin vaihtelevia tekstuureja. Suurin osa rakennuksista on melko kaukana, joten niiden materiaalit sekoittuvat taustaan. Lisäksi kartan alueen ympärille lisättiin maastoa kuvaava 3D-malli.

Kuva 10. Educityn kampusta ympäröivä alue Blenderissä.

(18)

12

TURUN AMK:N OPINNÄYTETYÖ | Waltteri Nuutinen

3.1.3 Materiaalit

Materiaaleihin käytettiin Quixelin työkaluja. Materiaalit ovat kuvaskannattuja ja Unreal Engineä käytettäessä ilmaisia käyttää. Quixelin uudella Mixer-sovelluksella materiaaleja voi myös yhdistää tasoittain.

Materiaalien tekemiseen harkittiin Quixelin työkalujen lisäksi Substancen eri ohjelmia.

Designerilla voisi tehdä kokonaan uusia materiaaleja ja Painterilla ”maalata” tiettyjä malleja lisäten yksityiskohtia ja vaihtelua.

Opinnäytetyön tekemiseen valittiin Quixelin työkalut siksi että ne eivät tarvitse lisenssiä, eikä Painterin käyttö ollut tarpeellista. Malleja kuvataan melko kaukaa jolloin pienet yksityiskohdat eivät erottuisi tarpeeksi työmäärään nähden. Jos jotain materiaalia haluttiin muuttaa, Mixerillä on helppo yhdistää tai muuttaa Megascans materiaaleja, ja Educityn malliin vain korvattiin sen alkuperäiset materiaalit. Mixerin kehitys on vielä alkuvaiheessa, Painterin ollessa hyvin edistynyt. Materiaalien yhdistämistä varten Mixer toimii kuitenkin erittäin hyvin, ja sillä pystyy myös tekemään erilaisia pintoja yhdistämällä korkeustekstuureja ja valmiita materiaaleja.

Materiaalien tuominen Unrealiin toimii helposti Quixelin Bridge sovelluksella. Kun 3D- malleja valitsee, Unrealin asetuksissa näkyvät kaikki valittujen osien materiaalit. Näiden tilalle vaihdettiin Megascans-materiaalit. Joidenkin mallien kohdalla päädyttiin tekemään uudet instanssit materiaaleista jotta niitä voitaisiin muokata tiettyä osaa varten. Instance- toiminnolla tämä on helppoa, koska itse materiaalin asetuksiin ei tarvitse koskea.

3.2. Valaistuksen tekeminen

Unreal-projekteissa automaattivalotus on yleensä automaattisesti päällä. Tämä asetus muuttaa valotusta näkyvän alueen kirkkauden mukaan. Valotusta voidaan säätää kun valaistus on valmis, mutta sitä tehdessä automaattivalotus häiritsee asetuksien vertailua, joten se säädettiin pois päältä. Kun liikkuu scenessä esimerkiksi sisä- ja ulkotilojen välillä, valojen kirkkaus on usein erilainen jolloin automaattivalotus muuttaa kuvan kirkkautta. Jos valotus muuttuu jatkuvasti on mahdotonta vertailla valaistuksen eroja, koska kuvan kirkkaus muuttuu kameraa liikuttaessa.

(19)

Projektissa käytettiin Unrealin SunSky-objektia, joka lisättiin Unrealiin versiossa 4.24.

SunSky yhdistää useamman valaistukseen liittyvän objektin yhteen, ja lisäksi siinä on erilaisia asetuksia jotta auringon liike saadaan vastaamaan koordinaateilla määritettyä todellista sijaintia. SunSky-objektin asetuksilla voidaan muuttaa näkyvää auringon valoa väriä annetun kellonajan ja sijainnin mukaan. Kun ”aurinko” liikkuu taivaalla, valon väri muuttuu. Alkuperäisillä arvoilla valon väri muuttuu punaisemmaksi niin kuin se muuttuisi oikesti, koska sininen valo ei läpäise ilmakehää yhtä hyvin kuin punainen. Mitä lähempänä horisonttia aurinko on, sen pidemmän matkan valo liikkuu ilmakehässä.

Valon suodattumisen määrää pystyy myös muokkaamaan, sekä minkä väristä valoa suodatetaan jos tavoitteena tehdä fiktiivinen valaistus. Lisäksi SunSkyssa on asetuksia vuoden ajalle ja koordinaateille, joten auringon liikeradan voi saada samallaiseksi kuin rakennuksen todellisessa sijainnissa.

Dynaaminen Sky Light aiheutti ongelmia Distance Field varjojen kanssa (Kuva 11.). Sky Lightia käytetään tavallisesti Unrealissa epäsuoraan valaistukseen. Suurien tasaisten pintojen keskelle ilmestyi varjoja. Vaihtamalla epäsuora valaistus LPV:ksi varjot poistuivat. Tällä voidaan myös korvata Sky Lightin antama epäsuora valaistus kokonaan, säätämällä LPV:n voimakkuutta ja eri asetuksia.

Kuva 11. Distance Fieldien aiheuttamat virheet varjoissa. Oikealla näkyy muodostetun Distance Fieldin vääristymä johtuen 3D-mallin muodosta.

3.3 Kameroiden valmistelu ja animointi

Kameran animaatioiden tekemiseen voidaan käyttää Unrealin sequenceria (Epic Games N.d.c.), jolla voidaan myös samalla ohjata esimerkiksi valoja, ääniä tai objektien liikkumista. Sequencer toimii kuten animointi-ohjelmat, jossa esimerkiksi kameran paikalle ja suuntaukselle määrätään ”avainkehykset”, ja liike automaattisesti kiihtyy ja

(20)

14

TURUN AMK:N OPINNÄYTETYÖ | Waltteri Nuutinen

hidastuu liikkuessa avainkehyksestä toiseen. Näin kameran liikkeestä tulee pehmeää ilman käsin hidastamista.

Unrealissa on vaihtoehtoja erilaisille kameroille ja linsseille (Epic Games N.d.a, N.d.e).

Virtuaalisen kameran kennon ja linssin kokoa, polttoväliä ja muita asetuksia voidaan muuttaa. Nämä muuttavat kuvasuhdetta sekä kameran käyttäytymistä kuten esimerkiksi syväterävyysaluen kokoa, etäisyyttä kamerasta ja sumennuksen määrää.

Videon tekemiseen valittiin 16:9-kuvasuhteella oleva virtuaalinen kamera 30 mm:n objektiivilla. Sequencerillä voidaan muuttaa kameran asetuksia kesken animaation.

Koska suurin osa demosta on kuvattu kaukaa, tarkka alue säädettiin erittäin suureksi jotta se kattaa koko rakennuksen.

Kameran syväterävyysalue säädettiin erittäin laajaksi, jotta koko rakennus näkyy selvästi kuvassa. Sumennuksen määrä säädettiin sellaiseksi että vain kaukana olevat rakennukset ovat todellä sumennettuja, ja hieman lähempänä oleville rakennuksille sumennus ei ole yhtä suuri. Tämä onnistuu jälkiprosessoinnin asetuksista, sumennuksen siirtymän kokoa muuttamalla. Samalla asetuksella tarkasta alueesta saadaan suurempi.

3.4 Renderöinti ja käsittely

Jälkiprosessoinnissa ensimmäisenä säädettiin automaattinen valotus pois päältä, koska valoa tullaan säätämään sequencerillä jolloin muuttuva valotus muuttaisi kuvan kirkkautta. Lisäksi saturaatiota ja kontrastia lisättiin pieni määrä, koska ilmakehän sumu tekee kuvasta hieman haalean. Kuvan ympärille lisättiin vinjetti, kevyt tumma reunus kuvan reunoille. Okkluusiota lisättiin, jolloin esimerkiksi puiden lehdille saatiin näkyvämmät varjot.

Värien muokkaamien LUT:illa jätettiin pois, koska osa videosta on rakennuksen sisältä ja osa ulkoa. Molempiin sopiva LUT ei vaikuta kuvan väreihin paljoa, joten projektia tehdessä parhaalta vaihtoehdolta tuntui säätää värejä vain jälkiprosessoinnin kanssa.

Parasta laatua varten renderöidään aluksi suuremmalla resoluutiolla mitä lopuksi tullaan käyttämään. Näin vähennetään laskostumista. Video renderöidään suurella resoluutiolla, joka sitten kompressoidaan lopullista videota varten. Video renderöitiin aluksi 4K- tarkkuudella ja 60fps kuvataajuudella, joka kompressointiin 1080p-tarkkuuteen.

(21)

Unrealista renderöity video on AVI-muodossa, tai vaihtoehtoisesti kuvasarjana esimerkiksi PNG-kuvina. Videot ovat todella suuria tiedostoja, ja raskaita toistaa. Tämä johtaa videon pätkimiseen. Ongelmaan löytyi ratkaisu videota kompressoimalla.

Unrealista renderöity video muutetaan eri muotoon, jolloin voidaan samalla kompressoida videon resoluutio 4K-laadusta 1080p-resoluutioon. Tähän käytettiin ilmaista, avoimeen lähdekoodiin perustuvaa Handbrake-ohjelmaa. Handbrake noudattaa GPL-lisenssiä (engl. GNU General Public License).

Kompressoinnin jälkeen video pyörii tasaisella 60fps kuvataajuudella, ja tiedoston koko on huomattavasti pienempi.

Kuva 12. Educity Lemminkäisenkadun suunnalta kuvattuna.

Kuva 13. Educity sisältä

(22)

16

TURUN AMK:N OPINNÄYTETYÖ | Waltteri Nuutinen

4 LOPUKSI

Visualisointikäytössä Unreal Engine osoittautui erittäin tehokkaaksi. Pienemmillä projekteilla kuten yhden huoneen visualisoinnissa lightmap-tektsuureilla tehdyt scenet ovat verrattavia perinteisten visualisointityökalujen laatuun, ja dynaamisillakin valoilla laatu on jo nyt erittäin hyvä.

Perinteiseen visualisointityökaluihin verrattuna Unreal toimi hyvin kuvien tuottamisessa.

Esimerkiksi 3ds Maxin ja Mental Ray-renderöijän käytössä kuvien renderöimiseen kuluu paljon aikaa. Jos kuvassa huomataan virhe tai siihen halutaan tehdä muutoksia, renderöimiseen kuluvaa aikaa kertyy paljon. Yleensä renderöintiä varten on käytössä renderöintifarmit, jossa useampi tietokone on lisätty tietoverkkoon vain renderöintiä varten jotta kuvia voidaan tuottaa useampi samaan aikaan. Renderöinnin tuloksen näkee kuitenkin vasta kuvan valmistuttua. Kun käytössä on pelimoottori, lightmap-tekstuurien teon jälkeen kuvia voidaan ottaa vapaasti eikä renderöintiin enää menee aikaa.

Dynaamisilla valoilla aikaa säästyisi vielä enemmän.

Dynaamiseen valaistukseen päädyttiin koska lightmap-tekstuurien laskeminen vei liikaa aikaa, ja rakennusta haluttiin kuvata erilaisissa valaistuksissa kuten esimerkiksi auringon liikkuessa. Alhaisimmallakin laadulla lightmap-tekstuurien laskemiseen olisi mennyt vuorokausia projektin koon takia. Tämä nopeutuu tehokkaammilla tietokoneilla, mutta aikaa kuluu joka tapauksessa melko paljon.

Materiaaleja tehdessä parhaaksi vaihtoehdoksi tähän projektiin osoittuivat Quixelin työkalut. Materiaalien tuonti projektiin on helppoa, eikä Substancen Painter-sovelluksen tapaista työkalua tarvittu. Jos tarkoituksena on tehdä yksityskohtaisempia materiaaleja pienemmille objekteille, Substancen työkalut olisivat ainakin tässä vaiheessa tehokkaampia. Materiaalien yhdistäminen toimii tehokkaasti Quixelin Mixer työkalulla, jossa materiaaleja voidaan sekoittaa lineaarisesti ylä- tai alapuolelta. Esimerkiksi ”lian”

lisääminen tiiliseinän tiilien väliin onnistuu muutamassa sekunnissa, ja tuotettu materiaali voidaan tuoda suoraan Unreal Engineen.

Reaaliaikasena sovelluksena rakennuksen mallin koko tuotti myös hankaluuksia. Videon tekemiseen käytetyssä skenessä kuvataajuus oli alle 5, ja usein myös pysähtyi hetkeksi.

Valoja on paljon, ja rakennuksessa on yli 10 000 objektia joihin moni valo vaikuttaa.

(23)

Rakennuksen mallin toimintaa pitäisi optimoida paljon, jotta projektista saisi sopivan reaaliaikaiseen käyttöön.

Toukokuussa 2020 Epic Games julkaisi demon, jossa oli käytössä Unreal Engine 5.

Unreal Engine 5:n julkaisua odotetaan vuonna 2021. Tämän opinnäytetyön aiheisiin liittyen demossa julkaistiin uutta teknologiaa; Lumen ja Nanite. Lumen on uusi teknologia epäsuoralle valaistukselle. Se on dynaaminen ja reagoi valaistuksen muutoksiin. Sen on tarkoitus laskea epäsuoraa valaistusta jatkuvasti päivittyvillä loputtomilla heijastuksilla, jolloin kuvanlaatu vastaisi esilaskettua valaistusta mutta toimien dynaamisesti ilman lightmap-tekstuureja. Nanite on teknologia 3D-malleille, joka mahdollistaisi 3D-mallien käytön Unreal Enginessä ilman optimointia tai topologian yksinkertaistamisa. Nanite skaalaa näkyvien objektien tarkkuuttaa reaaliaikaisesti, jolloin LOD:eja ei enää tarvittaisi.

Jos ne toimivat yhtä hyvin kuin demossa ja Lumenin epäsuora valaistus vastaa esilasketun valaistuksen laatua, staattisten valojen käytön voisi jättää vain niihin tapauksiin, joissa tarvitaan mahdollisimman kevyttä ohjelmaa.

Lisäksi Unrealin rojaltimaksujen rajaa nostettiin; viiden prosentin rojalteja pitää maksaa vasta kun ohjelmasta syntyvä tuotto ylittää miljoonan dollarin rajan. (Epic Games 2020) Tulevaisuudessa Unreal Engine siis vaikuttaa erittäin tehokkaalta työkalulta visualisointikäyttöön. Uudella Lumen-teknologialla dynaaminen valaistus lähenee entistä enemmän esilaskettujen lightmap-tekstuurien laatua, ja dynaamisena vaihtoehtona se nopeuttaa erilaisten valaistusten tekoa ja antaa mahdollisuuden valaistuksen muuttamiseen reaaliaikaisesti. Lisäksi pelimoottorina sillä onnistuu helposti myös videoiden renderöinti tai reaaliaikainen visualisointi, joka muissa visualisointiin käytettävissä ohjelmissa ei aina ole mahdollista.

(24)

18

TURUN AMK:N OPINNÄYTETYÖ | Waltteri Nuutinen

LÄHTEET

Abrash, M. 2000. Quake’s Lighting Model: Surface Caching. Viitattu 1.6.2020 https://www.bluesnews.com/abrash/chap68.shtml

Burke, S. 2015. Defining Tesselation. Viitattu 12.6.2020 https://www.gam- ersnexus.net/guides/1936-what-is-tessellation-game-graphics

Denham, T. What is LOD (Level of Detail) in 3D Modeling? Viitattu 10.6.2020 https://conceptartempire.com/3d-lod-level-of-detail/

Dimitrov, R. 2007. Cascaded Shadow Maps. Viitattu 15.6.2020 http://developer.download.nvidia.com/SDK/10.5/opengl/src/cascaded_shadow_maps/doc/casca ded_shadow_maps.pdf

Epic Games 2020. A first look at Unreal Engine 5. Viitattu 29.5.2020 https://www.unrealengine.com/en-US/blog/a-first-look-at-unreal-engine-5

Epic Games N.d.a Cinematic Cameras. Viitattu 31.5.2020 https://docs.unrealengine.com/en- US/Engine/Sequencer/HowTo/CineCameraActors/index.html

Epic Games N.d.b. Lightmass. Viitattu 31.5.2020 https://docs.unrealengine.com/en- US/Engine/Rendering/LightingAndShadows/Lightmass/index.html

Epic Games N.d.c Sequencer Overview https://docs.unrealengine.com/en-US/Engine/Se- quencer/Overview/index.html Viitattu 31.5.2020

Epic Games N.d.d. Shadow Casting. Viitattu 29.5.2020 https://docs.unrealengine.com/en- US/Engine/Rendering/LightingAndShadows/Shadows/index.html

Epic Games N.d.e Using Cameras. Viitattu 31.5.2020 https://docs.unrealengine.com/en- US/Gameplay/HowTo/UsingCameras/index.html

Handbrake – Open-source video transcoder. Viitattu 29.5.2020 https://handbrake.fr/

Inigo Quilez N.d Distance Fields. Viitattu 29.5.2020

https://iquilezles.org/www/articles/raymarchingdf/raymarchingdf.htm

International Business Times 2017. Viitattu 9.7.2020 https://www.ibtimes.com/pokemon-go-map- updated-osm-google-maps-what-openstreetmap-2622624

Kaplanyan, A. 2009. Light Propagation Volumes in CryEngine 3. Viitattu 1.6.2020 http://advances.realtimerendering.com/s2009/Light_Propagation_Volumes.pdf

Kontkanen, J; Laine, S. 2005. Ambient Occlusion Fields. Viitattu 1.6.2020 https://dl.acm.org/doi/10.1145/1053427.1053434

OpenStreetMap. About OSM. Viitattu 8.6.2020 https://www.openstreetmap.org/about

Platteaux, J. 2017. Lighting with Unreal Engine Masterclass. Viitattu 25.5.2020 https://www.youtube.com/watch?v=ihg4uirMcec

Price, A. 2012. Achieving Photorealism in Blender Viitattu 6.6.2020 https://www.blender- guru.com/articles/achieving-photorealism-in-blender

Quixel 2019 N.d.a Quixel join Epic Games. Viitattu 29.5.2020 https://quixel.com/blog/2019/11/12/quixel-joins-forces-with-epic-games

(25)

Quixel 2019 N.d.b Rebirth: Introducing photorealism in UE4. Viitattu 8.6.2020 https://www.youtube.com/watch?v=9fC20NWhx4s

Quixel 2020 Mixer. Viitattu 31.5.2020 https://quixel.com/blog/2020/2/27/mixer-2020-a-new-textur- ing-paradigm

Thomas, A. 2018. CAD vs. Modeling. Viitattu 8.6.2020

https://www.shapeways.com/blog/archives/27653-cad-vs-modeling-which-3d-software-to- choose.html

Unreal Archive 2014. Unrealin vastaus tesselointikysymykseen. Viitattu 31.5.2020 https://answers.unrealengine.com/questions/8982/tessellation-limit.html?sort=oldest

Unreal Engine 2015. 4.9 Release Notes. Viitattu 1.6.2020 https://www.unrealengine.com/en- US/blog/unreal-engine-49-released

Unreal Engine 2019 N.d.a Epic Games and Quixel join forces to empower creators. Viitattu 8.6.2020 https://www.unrealengine.com/en-US/blog/epic-games-and-quixel-join-forces-to- empower-creators

Unreal Engine 2019 N.d.b Quixel creates real-time photoreal cinematic “Rebirth” in UE4. Viitattu 8.6.2020 https://www.unrealengine.com/en-US/spotlights/quixel-creates-real-time-photoreal- cinematic-rebirth-in-ue4

Wright, D. 2015. Dynamic Occusion with Signed Distance Fields. Viitattu 1.6.2020 http://advances.realtimerendering.com/s2015/DynamicOcclusionWithSignedDistanceFields.pdf Evanson, N. 2020. How 3D Game Rendering Works: Lighting and Shadows. Viitattu 22.6.2020 https://www.techspot.com/article/1998-how-to-3d-rendering-lighting-shadows/

Viittaukset

LIITTYVÄT TIEDOSTOT

Jalkaterän lateraalisyrjän pitää olla samansuuntaisesti kuvalevyn kanssa, jotta telaluun kupolin anteriorinen ja posteriorinen osa sijoittuvat oikein sekä pohjeluu on

Lisäkysymyksinä nousivat esille: miten yrityksen toimintoja tulisi kehittää, jotta myös asiakkuuksien kehittäminen sujuisi entistä paremmin ja miten myynnin johtamisen

Yhteensopivuuden osa-alueet voidaan jakaa seuraaviin neljään alueeseen: tieto- sisällön jäsennys (mm. aihekate, luokitukset, hierarkiat ja notaatiot), lingvistinen taso (asia-

Laadun osa-alueet on mittarissa jaettu ohjauksen toimintaedellytyksiin ja toteutukseen sekä sellaisiin taustamuuttujiin, joilla aikaisempien tutkimusten mukaan oli ollut

(Otsikko, HS 1992.) Kehitys näyttää siten olevan laajenta- massa alue-sanan käyttöä yhä ››euroop- palaisempaan›› suuntaan, ruotsin poly- seemisen område-sanan ja samalla

sipiiri jaettu neljään osa—alueeseen. Kyrön— ja Lapuanjokilsakson aluetta var ten valmistui suunnitelma vuonna 1968, mutta tämä on jo osittain vanhentunut,

Onkinevan itäiset osa-alueet ovat muuttunutta isovarpurämettä ja luonnontilaista nevaa.. Alueiden ravinneisuustaso

Aluevalvontalaki kattaa aluevalvonnan eri osa-alueet eli toimet maa-alueiden, merialu- eiden sekä ilmatilan alueellisen koskematto- muuden valvomiseksi. Ympäröivässä yhteis-