Portfolio - Johannes Raunio

Harkka 4 - Olkkari 2.0


Kuvankaappaus ohjelmasta

Neljännen harjoituksen tehtävänanto oli yksinkertaisuudessaan: tehkää jotain kolmiulotteista. Mielestäni aihe oli erityisen mielenkiintoinen siksi, että minulla, eikä muullakaan ryhmällä ollut juuri mitään aikaisempaa kokoemusta 3D-grafiikan tuottamiseen liittyen. Toisaalta kuten aavistelinkin, juuri tästä syystä, harjoitus osoittautui koko kurssin työläimmäksi. Tämänkertainen aihe, olkkarin mallintaminen, tupsahti mieleeni varsin nopeasti ja sain koko ryhmän myös innostumaan siitä. Työn jakaminen osoittautui kuitenin varsin hankalaksi, koska kenelläkään ei tuntunut olevan selkeää käsitystä siitä, mistä kannattaisi lähteä liikkeelle. Päädyimme kuitenkin varsin nopeasti siihen, että olkkaria ei kannata lähteä mallintamaan koodaamalla, vaan mielummin jollain oikealla 3D-mallinnustyökalulla. Aluksi assistenttimme ehdotti, että voisimme hyödyntää uuden olkkarin suunnittelussa käytettyö Google SketchUp-mallia. Teinkin aika paljon töitä sen eteen, että olisimme saaneet mallin muutettua .obj-muotoon, mutta kun se ei ottanut onnistuakseen, päätin tehdä koko mallin alusta alkaen Blender-ohjelma käyttäen.

Tässä vaiheessa idea oli hioutunut jo valmiiseen muotoonsa: bileet olkkarilla. Päätimme että bileissä tulee ehdottomasti olla diskopallo, värivaloja ja musiikkia. Jaoimme näiden toteutuksen siten, että Liisa lähti tutkimaan diskopallon piirtämistä ja teksturointia, satu leikkimään valojen kanssa, ja inkeri ottamaan Processingin Minim-musiikkikirjastoa haltuun. Inkerille tuli lisäksi tehtävä suunnitella vapaasti liikuteltava kamera. Törmäsin kuitenkin olkkarin 3D-mallin kanssa nopesti ongelmiin: jo parilla valonlähteellä valaistun mallin ruudunpäivitysnopeus oli aivan web-kameratasoa (noin 5-10 fps). Tästä tuskastuneena yritin ensin vähentää 3D-mallin verteksejä todella radikaalisti. Kun sekään ei tuonut lopullista ratkaisua, sorruin jo todella epätoivoisiin OpenGL-optimointiyrityksiin. Kun niistäkään ei hirvittävän työmäärän jälkeen paljoakaan nopeutta herunut, aloin jo miettiä, että pitääkö koko olkkari-ideasta luopua. Tarkastin kuitenkin vielä varmuuden vuoksi varsinaisen piirtokoodin... OHOPS! Siellähän se ongelma olikin. Olin unohtanut 3D-mallin piirtokäskyn for-loopin sisään, josta aiheutui sel että mallia ei piirrettykkän kerran joka freimissä vaan itseasiassa kolme kertaa. Yhtäkkiä framerate hipoikin jo lähes 60:tä. Kun saimme vielä Sadun tekemät valot, Liisan diskopallon ja Inkerin kameran ja musiikit yhdistettyä tekemääni 3D-malliin, alkoi kokonaisuus näyttää ja kuulostaa varsin vakuuttavalta.

En kuitenkaan ollut vielä täysin tyytyväinen. Olin bileidean alusta alkaen halunnut toteuttaa jonkinlaisen savuefektin. Se ei kuitenkaan enää Processingin 3D-ominaisuuksiin paremmin perehdyttyäni vaikuttanut kovin totauttamiskelpoiselta. Sen sijaan päätin lisätä ohjelmaan vielä viimeisen illan sykähdyksenä jotain näyttävää. Loppujenlopuksi päädyin toteuttamaan yksinkertaisen diskopalloefektin, joka imitoi diskopallosta heijastuvia valopisteitä piirtämällä seiniin ja kattoon liikkuvia itsevalaisevia pieniä neliöitä. Kaikeinkaikkiaan olin lopputulokseen erittäin tyytyväinen, mutta en ollut ollenkaan varma miten kurssin henkilökunta siihen suhtautuisi, koska siinä ei loppujenlopuksi ole juurikaan vuorovaikutteisuutta tai muutakaan toimintaa. Onneksi tuotoksemme vakuutti lopulta myös assarit täysien pisteiden arvoisesti.

Lessons learned

- 3D-mallinnus, lyhyt oppimäärä
- OpenGL, lyhyt oppimäärä
- avaruudellisen hahmottamisen haastavuus
- Processingin todella puuttellinen 3D-ominaisuuksien dokumentaatio

Arvosana 20/20

Kokeile ohjelmaa