• Ei tuloksia

Unity on ilmainen monialustainen pelimoottori, jolla pystyy luomaan 2D- ja 3D-pelejä, sovelluksia ja interaktiivisia kokemuksia. (Unity3D n.d.) Se julkaistiin vuonna 2005, tarkoituksena mahdollistaa pelienteko kaikille halukkaille osaami-sesta tai budjetista riippumatta. Unity on erittäin suosittu indie-, eli itsenäisten pelintekijöiden keskuudessa ja sillä onkin jo yli 6 miljoonaa aktiivista käyttäjää.

(Axon 2016.) Tässä opinnäytetyössä päädyttiin käyttämään Unityä, koska se on ilmainen ja se on käytössä Iceflake Studiosilla.

Unityn Standard shader on pelimoottoriin sisäänrakennettu shader, joka noudat-taa PBR:n periaatteita. Eli se noudatnoudat-taa energian säilyvyyttä ja simuloi Fresnel-heijastuksia. Idea sen taustalla oli saada käyttäjäystävällinen shader, joka rende-röi johdonmukaisesti uskottavia pintoja kaikissa valaisutilanteissa. Standard sha-der on suunniteltu pääasiassa kovia pintoja varten, mutta tekee kelpo jälkeä myös pehmeille pinnoille. (Unity documentation 2019) Unity sisältää myös useita ns.

Legacy shadereita, joita käytettiin ennen Standard shaderia. Shadereita on niin monta lähinnä niiden yksinkertaisuuden takia ja koska ne sopivat vain tiettyihin tilanteisiin. Perinteiseen teksturointiin nähden PBR on tässäkin tapauksessa huo-mattavasti yksinkertaisempi, sillä se tarvitsee ainoastaan yhden shaderin toimi-akseen oikein. Näin ollen, ei tarvitse luoda tekstuureja eri shadereiden ja valai-sutilandein mukaan.

KUVIO 38. Unityn Standard shaderin ominaisuudet

KUVIO 39. Esimerkki yhdestä Unityn Legacy shaderista (Unity documentation)

Kirveen 3D-malli ja Quixelissa pakatut tekstuurikartat tuotiin Unityyn. Tämän jäl-keen luotiin uusi materiaali, joka käyttää Unityn Standard shaderia. Aluksi katsot-tiin jokaisen tekstuurikartan vaikutus 3D-mallin pintaan yksittäin. Kaikki kartat muuttivat merkittävästi mallin pintaan, paitsi AO-kartta. Sen vaikutus on varsin huomaamaton kaikkialla muualla paitsi kädensijan nahkaremmin väleissä. Kir-veessä ei ole kovin montaa paikkaa, johon valon pääsyä pitäisi estää, joten tämä oli odotettavissa.

Lopulta lisättiin kartat yksitellen materiaaliin ja katsottiin kuinka ne vaikuttavat yh-dessä kirveen pintaan. Lopullinen materiaali käyttäytyy lähes samalla tavalla kuin

Quixelin 3DO-näkymässä, eikä mitään suurempia eroavaisuuksia ole havaitta-vissa. 3DO:ssa materiaalin pinta on hieman saturoituneempi ja tummempi kuin Unityssä. Tämä johtuu joko valaisutilanteesta tai eri shaderien tavasta renderöidä kirveen pinta. Molemmissa tapauksissa kirveen eri materiaalien pinnat näyttävät uskottavilta. Voidaan siis päätellä, että tällä teksturointimenetelmällä saadaan tehtyä nopeasti PBR:n periaatteita noudattava materiaali. Huonoja puolia työn-kulussa on yksityiskohtien menetys high poly -mallin poisjättämisestä ja täysi riip-puvuus materiaalikirjaston sisällöstä.

KUVIO 40. Teksturoitu kirves Unity-ohjelmassa ja Quixel 3DO-ohjelmassa

6 POHDINTA

Tämän opinnäytetyön tavoitteena oli kehittää PBR-periaatteita noudattava työn-kulku, joka noudattaa pinnan metallisuuteen perustuvaa lähestymistapaa. Tämän seurauksena luotiin 3D-malli, jonka pinta heijastaa valoa uskottavasti eri rende-röintimoottoreissa. Työnkulku oli nopea, noudatti opinnäytetyössä läpikäytyjä PBR:n periaatteita ja todettiin toimivaksi tavaksi teksturoida yksinkertainen 3D-malli. Toimeksiantajalle tämä työnkulku on hyvä alku, jota voisi vielä kehittää koko 3D-tiimille sopivaksi. Tiimillä ei ole tällä hetkellä yhteistä teksturointityönkulkua, vaan jokainen teksturoi pitkälti omien tottumuksien mukaan. Yhteinen toimiva työnkulku voisi tehostaa teksturointiprosessia ja yhtenäistää lopputuloksia. Työ-kalut vaihtuvat ja muuttuvat, mutta ajatus prosessin takana pysyy melko samana.

Opinnäytetyössä ei käyty läpi varsinaisten materiaalien luontia. Tämä prosessi ei ole pakollinen, sillä nykyään on saatavilla niin paljon valmiita fyysisesti realistisia materiaaleja, joita pystyy hyödyntämään teksturoinnissa. Valmiit materiaalit ra-joittavat tietenkin luovaa prosessia hieman, sillä silloin luovutaan materiaalien ominaisuuksien täydestä kontrollista. Tarkoituksena oli myös vertailla hieman pe-rinteistä teksturointia PBR:ään ja huomattiin, että PBR automatisoi prosessia huomattavasti, jolloin aikaa säästyy. Käsintehdyt varjot ja heijastukset voidaan kokonaan unohtaa ja keskittyä ainoastaan eri PBR-materiaalien ja tasojen yhdis-telyyn. Yksinkertaisesti se, että PBR-teksturoitu 3D-malli näyttää hyvältä missä tahansa valaisutilanteessa on tarpeeksi hyvä syy siirtyä pois perinteisistä mene-telmistä.

Opinnäytetyö tutustuttaa aloittelevalle 3D-artistille tarvittavat teksturointikäytän-nöt ja auttaa ymmärtämään mitä PBR on ja kuinka sen periaatteita sovelletaan.

Se on kuitenkin vasta pintaraapaisu siitä, mitä kaikkea PBR oikeasti käsittelee.

Sen taustalla olevaa teoriaa ja fysiikkaa on niin paljon, että 3D-artistin kannalta, sen läpikäyminen olisi turhan päätä sekoittavaa. PBR voi aluksi tuntua monimut-kaiselta ja rajoittavalta. Perus asioiden ymmärtämisen jälkeen voidaan kuitenkin todeta, että PBR tarjoaa valmiita työnkulkuja, jotka nopeuttavat teksturointipro-sessia ja pitävät materiaalit fyysisesti mahdollisina. PBR-periaatteita noudattava

shader hoitaa suurimman osan työstä, jolloin artisti voi keskittyä pääasiassa vaan työhön. PBR-työnkulku auttaa myös eri artisteista koostuvia tiimejä luo-maan suoraviivaisempia lopputuloksia, jotka toimivat kaikissa valaisutilanteissa.

3D-artistille on tarjolla niin paljon eri sovelluksia ja materiaalipankkeja, että PBR-teksturointiprosessi on lähes automaattista. Tämä tarkoittaa sitä, että lähes ketä vain pystyy saamaan aikaan todella realistisen näköisiä 3D-malleja vain muuta-malla napin painalluksella. Täytyy kuitenkin pitää mielessä se, että PBR-tekstu-rointi toimii tiettyjen periaatteiden mukaisesti. Vaikka ketä vain pystyy teksturoi-maan, virheiden välttämiseksi, tulisi kuitenkin ymmärtää PBR:n tärkeimmät omi-naisuudet.

LÄHTEET

Allegorithmic. n.d. The PBR Guide part 1 [verkkodokumentti] Luettu 25.09.2019.

https://academy.allegorithmic.com/courses/the-pbr-guide-part-1

Allegorithmic. n.d. The PBR Guide part 2 [verkkodokumentti] Luettu 25.09.2019.

https://academy.allegorithmic.com/courses/the-pbr-guide-part-2

Ashish. 17.12.2018. What is the Index of Refraction (Refractive Index)? Luettu 11.10.2019. https://www.scienceabc.com/pure-sciences/what-index-of-refrac-tion-defintion-examples-water-air-glass.html

Arvi VR. 07.11.2018. Ambient Occlusion 2 [verkkodokumentti] Luettu 15.11.2019. https://vr.arvilab.com/blog/ambient-occlusion%2007.11.2018 Dustin Maertz. n.d. Stanley Hand Planer No.5 [verkkodokumentti] Luettu 15.11.2019. https://dustinmaertz.artstation.com/projects/GXmbz

Eric Chadwick. n.d Stairs [verkkodokumentti] Luettu 15.11.2019. http://ericchad-wick.com/img/farmhouse_stairs.jpg

Erland Körner. 18.02.2015 Working with physically-based shading: a practical approach [verkkodokumentti] Luettu 17.10.2019.

https://blogs.unity3d.com/2015/02/18/working-with-physically-based-shading-a-practical-approach/

Jeff Russel. 01.11.2015 Basic theory of physically based rendering [verk-kodokumentti] Luettu 25.09.2019. https://marmoset.co/posts/basic-theory-of-physically-based-rendering/

Joe Wilson. 01.10.2015 Physically-based rendering, and you can too! [verkko-dokumentti] Luettu 25.09.2019. https://marmoset.co/posts/physically-based-ren-dering-and-you-can-too/

Joe Wilson. 01.10.2015 PBR Texture conversion [verkkodokumentti] Luettu 25.09.2019. https://marmoset.co/posts/pbr-texture-conversion/#metalvspec Mike Seymour. 04.07.2013 Game environments – Part A: rendering Remember Me terminology [verkkodokumentti] Luettu 25.09.2019.

https://www.fxguide.com/fxfeatured/game-environments-parta-remember-me-rendering/

Michael Franczak. 29.06.2018 Creating ID maps in Blender terminology [verk-kodokumentti] Luettu 17.10.2019.

https://evermotion.org/tuto-rials/show/11071/creating-id-maps-in-blender

Pluralsight. 16.01.2014 Start mastering Important 3D texturing terminology [verkkodokumentti] Luettu 22.09.2019.

https://www.pluralsight.com/blog/film-games/cover-bases-common-3d-texturing-terminology

Quixel. n.d. Quixel SUITE 2 Overview [verkkodokumentti] Luettu 17.10.2019.

https://quixel.se/tutorial/quixel-suite-2-overview/

Shadercat. 21.03.2016 What is a Shader? terminology [verkkodokumentti] Lu-ettu 22.09.2019. https://www.shadercat.com/what-is-a-shader/

Samuel Axon, 27.09.2016, Unity at 10: For better-or worse-game development has never been easier [verkkodokumentti] Luettu 17.10.2019. https://arstech- nica.com/gaming/2016/09/unity-at-10-for-better-or-worse-game-development-has-never-been-easier/

Scratchapixel 2.0. n.d. Reflection, Refraction (Transmission) and Fresnel. [verk-kodokumentti] Luettu 15.11.2019. https://www.scratchapixel.com/lessons/3d-ba-sic-rendering/introduction-to-shading/reflection-refraction-fresnel

Thomas Denham n.d. What is UV mapping & unwrapping? terminology [verk-kodokumentti] Luettu 22.09.2019. https://conceptartempire.com/uv-mapping-un-wrapping/

Unity3D n.d. Download Unity terminology [verkkodokumentti] Luettu 17.10.2019. https://unity3d.com/get-unity/download

Unity documentation 08.10.2019, Standard Shader [verkkodokumentti] Luettu 17.10.2019. https://docs.unity3d.com/Manual/shader-StandardShader.html Unity documentation 08.10.2019, Bumped diffuse [verkkodokumentti] Luettu 17.10.2019. https://docs.unity3d.com/Manual/shader-NormalBumpedDif-fuse.html