Painting on 3D Objects During a Game’s Runtime
Malkki, Sakari (2023)
Malkki, Sakari
2023
All rights reserved. This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-202303153602
https://urn.fi/URN:NBN:fi:amk-202303153602
Tiivistelmä
Unity-pelimoottori tarjoaa tietyt työkalut, joilla peliobjekteja tai -hahmoja voidaan maalata pelissä. Nämä työkalut toimivat hyvin joissakin yksinkertaisissa tarkoituksissa silloin, kun kohteena ovat staattiset 3D-objektit. Monimutkaisemmat tarpeet, erityisesti silloin, kun kohteena ovat skinnatut ja animoidut 3D-hahmot, vaativat työläämpiä ratkaisuja.
Peliobjekteihin ja -hahmoihin maalaaminen on hyvin keskeinen ominaisuus, kun peleistä halutaan tehdä responsiivisen ja dynaamisen tuntuisia, joilla suoraan vaikutetaan pelikokemukseen. Tämän tutkimuksen kontekstina toimiva peli Para Bellum - Frontlines tarvitsee tietyt toiminnot, joissa tarvitaan peliobjekteihin tai hahmoihin maalaamista. Esimerkkejä näistä ominaisuuksista ovat luodinreiät staattisissa peliobjekteissa ja veriroiskeet ja lammikot pelin ympäristöissä.
Insinöörityön tarkoituksena oli selvittää tehokkaimmat ratkaisut pelin tarpeiden mukaisesti ja implementoida ne käyttäen erilaisia teknologioita ja ratkaisuja. Lisäksi tarkoituksena oli tehdä implementaatioista niin yleiskäyttöisiä, että niitä voidaan käyttää myös tulevissa projekteissa suhteellisen pienellä vaivalla.
Eri käyttötarkoituksia varten tehtiin muutama eri ratkaisu. Niihin käytettiin Unityn Universal Render Pipelinen kanssa yhteensopivaa Decal Renderer -ominaisuutta, shadereita, tekstuurien reaaliaikaista muokkausta ja kolmannen osapuolen tarjoamaa Skinned Mesh Decals -työkalua.
Valmiit ratkaisut osoittautuivat toimiviksi niiden käyttötarkoituksia ajatellen, ja niiden implementointi onnistui siinä määrin yleiskäyttöisesti, että niitä voidaan suhteellisen vaivattomasti käyttää tulevissa projekteissa ja eri käyttötarkoituksissa. Luodinreiät, veriroiskeet ja -lammikot toteutettiin käyttämällä Unityn Decal Renderer -ominaisuutta, ampumahaavoihin käytettiin Unity Render Textureita sekä kolmannen osapuolen työkalua nimeltä Skinned Mesh Decals. Veriteksturointi tehtiin käyttämällä shadereitä ja tekstuurien reaaliaikaista modifiointia. Vaikka ratkaisuihin jäi vielä parantamisen varaa esimerkiksi performanssin ja erityisolosuhteiden aiheuttamien ongelmien kanssa, tulokset olivat lupaavia ja hyöty tulevien projektien kannalta ilmeinen.
Peliobjekteihin ja -hahmoihin maalaaminen on hyvin keskeinen ominaisuus, kun peleistä halutaan tehdä responsiivisen ja dynaamisen tuntuisia, joilla suoraan vaikutetaan pelikokemukseen. Tämän tutkimuksen kontekstina toimiva peli Para Bellum - Frontlines tarvitsee tietyt toiminnot, joissa tarvitaan peliobjekteihin tai hahmoihin maalaamista. Esimerkkejä näistä ominaisuuksista ovat luodinreiät staattisissa peliobjekteissa ja veriroiskeet ja lammikot pelin ympäristöissä.
Insinöörityön tarkoituksena oli selvittää tehokkaimmat ratkaisut pelin tarpeiden mukaisesti ja implementoida ne käyttäen erilaisia teknologioita ja ratkaisuja. Lisäksi tarkoituksena oli tehdä implementaatioista niin yleiskäyttöisiä, että niitä voidaan käyttää myös tulevissa projekteissa suhteellisen pienellä vaivalla.
Eri käyttötarkoituksia varten tehtiin muutama eri ratkaisu. Niihin käytettiin Unityn Universal Render Pipelinen kanssa yhteensopivaa Decal Renderer -ominaisuutta, shadereita, tekstuurien reaaliaikaista muokkausta ja kolmannen osapuolen tarjoamaa Skinned Mesh Decals -työkalua.
Valmiit ratkaisut osoittautuivat toimiviksi niiden käyttötarkoituksia ajatellen, ja niiden implementointi onnistui siinä määrin yleiskäyttöisesti, että niitä voidaan suhteellisen vaivattomasti käyttää tulevissa projekteissa ja eri käyttötarkoituksissa. Luodinreiät, veriroiskeet ja -lammikot toteutettiin käyttämällä Unityn Decal Renderer -ominaisuutta, ampumahaavoihin käytettiin Unity Render Textureita sekä kolmannen osapuolen työkalua nimeltä Skinned Mesh Decals. Veriteksturointi tehtiin käyttämällä shadereitä ja tekstuurien reaaliaikaista modifiointia. Vaikka ratkaisuihin jäi vielä parantamisen varaa esimerkiksi performanssin ja erityisolosuhteiden aiheuttamien ongelmien kanssa, tulokset olivat lupaavia ja hyöty tulevien projektien kannalta ilmeinen.