SuomiGameHUB

Maailma tarvitsee pelejä

PBR-materiaalit

Tänään keskitymme Unreal-pelimoottorin käyttämiseen pelin materiaalien luomisessa. Käytössäni on Unreal versio 4.25, joka ei ole uusin versio, mutta se on riittävä kaiken tässä tarvittavaan.

Jos haluat luoda HTML5-pelin Unrealilla, sinun on käytettävä hieman vanhempaa versiota, kuten 4.27, joka voi hyödyntää viimeisintä WebGL-Pluginia. Tässä ei tietenkään ole Unreal 5:n uusimpia ominaisuuksia, mutta WebGL ei kuitenkaan tue niitä, joten se ei ole ongelma.

Kun olemme käynnistäneet Unrealin, valitsemme luotavan pelityypin, kuten First Person ja annamme projektille nimen. Käynnistettyämme projektin, ensimmäinen tehtävämme on löytää sopivat tekstuurit. Hyviä ilmaisia tekstuuriresursseja tarjoaa esimerkiksi textures.com. Täältä voimme käyttää päivittäisiä ilmaiskrediittejämme ladataksemme haluamamme tekstuurit, kuten esimerkiksi kivitekstuureja.

Oppaassa käytetyt tekstuurit, “3D SCANNED ROCK SURFACE – 2X2 METERS”.

Kun tekstuurit on ladattu, siirrymme Unrealiin, luomme uuden kansion nimeltä “Tekstuurit” ja tuomme ladatut tekstuurit sinne. Nämä tekstuurit ovat pelin materiaalien rakennuspalikat. Materiaalit ovat monimutkaisempia kokonaisuuksia, jotka yhdistävät useita elementtejä ja tuovat pelimaailman fyysiset objektit eloon. Luomme myös erillisen kansion materiaaleille. Tuodessamme tekstuurit Unrealiin, ne ilmestyvät omiksi elementeikseen ja tuplaklikkaamalla niitä ne avautuvat editorissa.

Luomme uuden materiaalin oikealla klikkauksella Material-kansiossa. Nimeämme materiaalin ja avaamme sen uudessa ikkunassa. Tämän jälkeen raahaamme tekstuurimme materiaaliin, jolloin ne tulevat tekstuurisampleiksi materiaalieditorissa.

Unrealissa ja monissa muissa moottoreissa käytetään Physically Based Rendering (PBR) -materiaaleja, jotka pyrkivät jäljittelemään valon fyysistä käyttäytymistä oikeassa maailmassa. PBR-järjestelmässä käytetään useita erilaisia mappeja, jotka yhdessä muodostavat aidon näköisen materiaalin.

Käsittelemme ensimmäisenä Albedo-tekstuureja, jotka vastaavat objektin pinnan väriä. Vedämme Albedo-mapin RGB-täpän base color -inputtiin, jolloin materiaalin pohjaväri muuttuu kyseisen Albedon väriseksi. Vaikka tämä saattaa aluksi näyttää epätavalliselta, kuten kiiltävältä kumipallolta, se korjaantuu prosessin edetessä.

Värien jälkeen keskitymme materiaalin Ambient Occlusioniin (AO). AO tuo esille materiaalin tummemmat osat, jotka jäävät valon ulottumattomiin, kuten nurkat ja raot. Tämän AO:n lisääminen materiaaliin tekee siitä realistisemman, tuoden esiin varjoja ja tummia alueita.

Roughness-mappi on seuraava työkalu, jonka avulla säädetään materiaalin pinnan karkeutta. Kun Roughness-mappi liitetään, materiaalin pinta muuttuu karheammaksi, mikä vaikuttaa siihen, kuinka valo heijastuu pinnasta. Sileä pinta heijastaa valoa eri tavalla kuin karhea pinta ja tämä ero näkyy selvästi Roughness-mappin avulla. Esimerkiksi metallipinnat voivat näyttää joko kiiltäviltä ja sileiltä tai karheilta ja himmeiltä Roughness-mapin asetuksista riippuen.

Normaalikartta käyttää värikoodausta ilmoittamaan, mihin suuntaan pinnan eri osat osoittavat. Normaalikartan hyöty on sen kyvyssä simuloida pinnan yksityiskohtia ilman, että itse 3D-malliin tarvitsee lisätä monimutkaisuutta. Tämä on  hyödyllistä kun pienet yksityiskohdat kuten kolojen ja säröjen suunnat voidaan ilmaista ilman että 3d-malliin tarvitsee lisätä geometriaa. Normal mapin avulla valo kuitenkin reagoi luonnollisesti pinnan muotoihin.

Jos kuitenkin haluamme lisää geometriaa materiaaliimme, voimme tehdä sitä height mapilla (myös bump tai dispalcement map), joka tuo lisää syvyyttä ja muotoa materiaaliin. Sen käyttö vaatii kuitenkin enemmän prosessointia. Height-mapin integroimiseksi meidän on säädetettävä materiaalin ominaisuuksia, kuten tesselaatiota käyttämällä PN Triangles -asetusta ja lisättävä kaavoja, jotka muokkaavat materiaalin muotoa. Tesselaation Multiplierin säätäminen on myös tarpeellista, kun halutaan lisätä pintaan geometriaa.

Kun käytämme näitä neljää perusmappia (Albedo, AO, Roughness, ja Normal), voimme saavuttaa erittäin realistisen ja yksityiskohtaisen materiaalin jopa ilman height mappia. Materiaalin tallennusprosessi voi olla aikaa vievää, erityisesti kun käytetään monimutkaisia kaavoja. Tästä syystä materiaaleista luodaan usein instansseja, jotka mahdollistavat nopeamman muokkauksen ja tallennuksen. Klikkaa materiaalia kakkospainikkeella Content Browserissa ja valitse Create Material Instance.

Instanssien avulla voimme muokata materiaalin parametreja ilman, että alkuperäistä materiaalia tarvitsee ladata uudelleen. Jos haluat muuttaa jonkin arvon materiaalissa instanssissa muokattavaksi parametriksi, paina muuttujaa kakkospainikkeella ja valitse Convert to Parameter.

Kun materiaali on valmis, voimme testata sitä 3D-ympäristössä. Esimerkiksi luomalla pallon ja raahaamalla materiaalin sen päälle, voimme havainnoida, kuinka valo vaikuttaa materiaalin pintaan peliympäristössä. Liikkumalla valonlähteen ympärillä huomaamme, kuinka valo reagoi materiaalin pintaan, korostaen esimerkiksi kivipinnan kolot ja rakenteet.

Keskustelu

Aloita uusi keskustelu