Renderöintimoottorin toteutus
Ruuskanen, Jarno (2016)
Ruuskanen, Jarno
Metropolia Ammattikorkeakoulu
2016
All rights reserved
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-201605198678
https://urn.fi/URN:NBN:fi:amk-201605198678
Tiivistelmä
Tämä insinöörityö käsittelee pelimoottorin pohjana toimivan renderöintimoottorin luontia. Insinöörityössä käydään läpi C++-ohjelmointikielellä luodun renderöintimoottorin toteutusta sekä perehdytään OpenGL-rajapinnan toimintaan. Tekstin luvut on tarvittaessa jaoteltu teoriaosuuksiin sekä toteutusosuuksiin.
Insinöörityössä keskitytään aluksi OpenGL:n peruskäsitteisiin, puhutaan SDL2:n käyttämisestä sovelluksen ikkunointikirjastona sekä tarkastellaan suhteellisen laajasti varjostimien toimintaa ja niiden vaikutusta ohjelman suoritukseen. Lisäksi käsitellään matriisilaskennan ja matriisien merkitystä sovelluksessa, tutkitaan 3D-mallien luontia OpenGL:llä sekä käydään läpi muutamia valaisumalleja. Lopuksi kerrataan ohjelman kirjoittamisen aikana ilmenneitä ongelmia ja puhutaan jatkokehityksestä.
Työn tuloksena syntyi renderöintimoottorin prototyyppi, joka osaa ladata käyttäjän sille syöttämiä fbx-tiedostoja ruudulle näkyviin tietyin rajoituksin. Sovellus osaa ladata tiedostoista niiden kulmapistetiedot, sijainti- ja skaalatiedot, tekstuurit, tekstuurien koordinaatit, materiaalitiedot sekä normaalit. Käyttäjä voi ladata useampia tiedostoja ja kokonaisia skenaarioita yhtäaikaisesti ruudulle. Sovelluksesta löytyy myös muutamia valaisutapoja sekä kamera, jolla skenaariota voi tarkkailla eri kulmista. Tarvittaessa käyttäjä voi myös kirjoittaa ohjelmaan omia varjostimia.
Insinöörityössä keskitytään aluksi OpenGL:n peruskäsitteisiin, puhutaan SDL2:n käyttämisestä sovelluksen ikkunointikirjastona sekä tarkastellaan suhteellisen laajasti varjostimien toimintaa ja niiden vaikutusta ohjelman suoritukseen. Lisäksi käsitellään matriisilaskennan ja matriisien merkitystä sovelluksessa, tutkitaan 3D-mallien luontia OpenGL:llä sekä käydään läpi muutamia valaisumalleja. Lopuksi kerrataan ohjelman kirjoittamisen aikana ilmenneitä ongelmia ja puhutaan jatkokehityksestä.
Työn tuloksena syntyi renderöintimoottorin prototyyppi, joka osaa ladata käyttäjän sille syöttämiä fbx-tiedostoja ruudulle näkyviin tietyin rajoituksin. Sovellus osaa ladata tiedostoista niiden kulmapistetiedot, sijainti- ja skaalatiedot, tekstuurit, tekstuurien koordinaatit, materiaalitiedot sekä normaalit. Käyttäjä voi ladata useampia tiedostoja ja kokonaisia skenaarioita yhtäaikaisesti ruudulle. Sovelluksesta löytyy myös muutamia valaisutapoja sekä kamera, jolla skenaariota voi tarkkailla eri kulmista. Tarvittaessa käyttäjä voi myös kirjoittaa ohjelmaan omia varjostimia.