Kolmiulotteisten rakennusten proseduraalinen generointi generatiivisten kielioppien avulla

Samankaltaiset tiedostot
Laskennan mallit (syksy 2010) Harjoitus 8, ratkaisuja

Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen:

T Syksy 2002 Tietojenkäsittelyteorian perusteet Harjoitus 8 Demonstraatiotehtävien ratkaisut

Rajoittamattomat kieliopit (Unrestricted Grammars)

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

JOHDATUS TEKOÄLYYN TEEMU ROOS

M =(K, Σ, Γ,, s, F ) Σ ={a, b} Γ ={c, d} = {( (s, a, e), (s, cd) ), ( (s, e, e), (f, e) ), (f, e, d), (f, e)

Rekursiivinen Derives on periaatteessa aivan toimiva algoritmi, mutta erittäin tehoton. Jos tarkastellaan esim. kieliopinpätkää

Yhteydettömät kieliopit [Sipser luku 2.1]

Chomskyn hierarkia ja yhteysherkät kieliopit

S BAB ABA A aas bba B bbs c

uv n, v 1, ja uv i w A kaikilla

Testaa: Vertaa pinon merkkijono syötteeseen merkki kerrallaan. Jos löytyy ero, hylkää. Jos pino tyhjenee samaan aikaan, kun syöte loppuu, niin

Yhteydettömän kieliopin jäsennysongelma

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011

Laskennan teoria (kevät 2006) Harjoitus 3, ratkaisuja

2. Yhteydettömät kielet

11.4. Context-free kielet 1 / 17

Hakuperustainen proseduraalinen sisällöntuotanto tietokonepeleissä

JONI RÄSÄNEN Pythonin käyttö satunnaisen L-järjestelmän toteuttamisessa. Kandidaatintyö

Yleisten pelikenttien proseduraalisen generoinnin metodit

GeoGebra-harjoituksia malu-opettajille

Ei-yhteydettömät kielet [Sipser luku 2.3]

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Rajoittamattomat kieliopit

Määrittelydokumentti

8. Kieliopit ja kielet

Satunnaisalgoritmit. Topi Paavilainen. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Algoritmit 2. Luento 6 To Timo Männikkö

Kun yhtälöä ei voi ratkaista tarkasti (esim yhtälölle x-sinx = 1 ei ole tarkkaa ratkaisua), voidaan sille etsiä likiarvo.

8. Kieliopit ja kielet 1 / 22

Ohjelmistojen mallintaminen, mallintaminen ja UML

Äärellisten automaattien ja säännöllisten lausekkeiden minimointi

Ontologiakirjasto ONKI-Paikka

Proseduraalinen tiegeneraattori

Tehtävä 2: Loppuosataulukko

Kolmiulotteisen maaston generointi peleissä

Yleinen paikallinen vakautuva synkronointialgoritmi

Säännölliset kielet. Sisällys. Säännölliset kielet. Säännölliset operaattorit. Säännölliset kielet

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Muodolliset kieliopit

ETAPPI ry JOOMLA 2.5 Mediapaja. Artikkeleiden hallinta ja julkaisu

TAMPEREEN TEKNILLINEN YLIOPISTO

Projektisuunnitelma. Projektin tavoitteet

Esimerkki 2.28: Tarkastellaan edellisen sivun ehdot (1) (3) toteuttavaa pinoautomaattia, jossa päätemerkit ovat a, b ja c ja pinoaakkoset d, e ja $:

Ohjeissa pyydetään toisinaan katsomaan koodia esimerkkiprojekteista (esim. Liikkuva_Tausta1). Saat esimerkkiprojektit opettajalta.

Osoitamme, että jotkut kielet eivät ole säännöllisiä eli niitä ei voi tunnistaa äärellisellä automaatilla.

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Kaupunki-infrastruktuurin luonti proseduraalisin menetelmin

Pinoautomaatit. Pois kontekstittomuudesta

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. marraskuuta 2015

Graafin 3-värittyvyyden tutkinta T Graafiteoria, projektityö (eksakti algoritmi), kevät 2005

A-Tiilikate objektikirjasto

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 19. syyskuuta 2016

811120P Diskreetit rakenteet

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 19. tammikuuta 2012

9.5. Turingin kone. Turingin koneen ohjeet. Turingin kone on järjestetty seitsikko

Ongelma(t): Miten jollakin korkeamman tason ohjelmointikielellä esitetty algoritmi saadaan suoritettua mikro-ohjelmoitavalla tietokoneella ja siinä

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 6. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS. Pinoautomaatit.

Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä

δ : (Q {q acc, q rej }) (Γ k {, }) Q (Γ k {, }) {L, R}.

12. luento: Simplexin implementointi Mallinnusjärjestelmät. Simplexin implementointiin liittyviä asioita

FORMAALI SYSTEEMI (in Nutshell): aakkosto: alkeismerkkien joukko kieliopin määräämä syntaksi: sallittujen merkkijonojen rakenne, formaali kuvaus

Kielitieteellisten aineistojen käsittely

T Vuorovaikutteinen tietokonegrafiikka Tentti

TIETOKONE JA TIETOVERKOT TYÖVÄLINEENÄ

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

Platonin kappaleet. Avainsanat: geometria, matematiikan historia. Luokkataso: 6-9, lukio. Välineet: Polydron-rakennussarja, kynä, paperia.

Automaattinen regressiotestaus ilman testitapauksia. Pekka Aho, VTT Matias Suarez, F-Secure

Tik Tietokoneanimaatio

1 GDL-OBJEKTIN TUONTI...1

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

RADAR - RANDOM DATA GENERATOR

Käyttöohje. Aija. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

jäsentäminen TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 26. marraskuuta 2015 TIETOTEKNIIKAN LAITOS

Yhtälöryhmät 1/6 Sisältö ESITIEDOT: yhtälöt

Satunnaislukujen generointi

Äärellisten automaattien ja säännöllisten kielten ekvivalenssi

ongelma A voidaan ratkaista ongelman B avulla, joten jossain mielessä

Mainosankkuri.fi-palvelun käyttöohjeita

RAKENNUSTAPAOHJEET. Muutoksen kuvaus:

ABHELSINKI UNIVERSITY OF TECHNOLOGY

T Syksy 2006 Tietojenkäsittelyteorian perusteet T Harjoitus 7 Demonstraatiotehtävien ratkaisut

Muotokieliopit (Shape grammars)

Algoritmit 2. Luento 9 Ti Timo Männikkö

Introduction to Machine Learning

Säännöllisten kielten sulkeumaominaisuudet

1. Universaaleja laskennan malleja

TAMPEREEN TEKNILLINEN YLIOPISTO

Automaatit. Muodolliset kielet

arvostelija OSDA ja UDDI palveluhakemistoina.

Laskennan teoria

Ohjelmoinnin perusteet Y Python

MOBISITE-TYÖKALUN SISÄLTÄMÄT TOIMINNOT

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 6. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

811120P Diskreetit rakenteet

Alkioiden x ja y muodostama järjestetty pari on jono (x, y), jossa x on ensimmäisenä ja y toisena jäsenenä.

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa

POHDIN - projekti. Funktio. Vektoriarvoinen funktio

Transkriptio:

Kolmiulotteisten rakennusten proseduraalinen generointi generatiivisten kielioppien avulla Pauli Kostamo, Eero Kuurne Helsinki 11.12.2017 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Sisältö 1 Johdanto... 1 2 Säännöllisyyttä kieliopeilla... 1 2.1 Generatiiviset kieliopit... 2 2.2 L-systeemi... 3 2.3 Jakokieliopit... 3 3 CGA shape... 4 3.1 Komentosarjakieli rakennusten mallintamiseen... 5 3.2 Pohdinta... 7 4 Yhteenveto... 8 Lähteet... 10

1 1 Johdanto Rakennukset ovat olennainen osa monen pelin ja elokuvan visuaalista ympäristöä, ja ne kertovat paljon ympäröivästä maailmasta ja sen taustatarinasta. Arkkitehtuuri, rakennusten käyttötarkoitukset, pienet yksityiskohdat ja elämisen jäljet luovat ympäristöstä eloisan ja tunnelmallisen. Samalla rakennusten on oltava kuitenkin sopivan ainutlaatuisia, mutta noudattaa samankaltaisuutta ja sopia samaan ympäristöön. Yksittäisessä nykyaikaisessa pelissä tai elokuvassa voi olla jopa tuhansia erilaisia rakennuksia, ja niiden mallintaminen käsin voi olla erittäin työläs prosessi. Esimerkiksi Superman Returns elokuvan kaupungin mallintaminen ihmisvoimin vei noin 15 henkilötyövuotta (Parish & Müller, 2001, s. 621). Automatisoimalla rakennusten mallintamista voidaan säästää huomattavia määriä henkilötyötunteja. Kun sisällöntuotantoa automatisoidaan algoritmien avulla, sitä kutsutaan yleisesti proseduraaliseksi (sisällön)generoinniksi tai 3D-mallien tapauksessa proseduraaliseksi mallintamiseksi. Rakennusten ja kaupunkien proseduraalista mallintamista voidaan käyttää muun muassa peleissä, elokuvateollisuudessa ja kaupunkisuunnittelussa nopeuttamaan tuotantoprosessia (Parish & Müller, 2001). Tutkielmassa käsitellään kolmiulotteisten rakennusten proseduraalista generointia ja generatiivisten kielioppien ja CGA shape komentosarjakielen soveltuvuutta rakennusten generointiin. Ensimmäisessä luvussa kerrotaan, mitä ovat generatiiviset kieliopit ja kuinka niitä voidaan hyödyntää rakennusten proseduraalisessa generoinnissa. Tämän jälkeen perehdytään tarkemmin Pascal Müllerin ja Peter Wonkan kehittämään, generatiivisiin kielioppeihin perustuvaan CGA shape -menetelmään, jota voidaan käyttää monipuolisten rakennusten generointiin. 2 Säännöllisyyttä kieliopeilla Generatiiviset kieliopit ovat yksi tärkeimmistä proseduraalisen sisällöngeneroinnin menetelmistä, ja niitä voidaan käyttää monien erilaisten asioiden generointiin. Esimerkiksi luolastoja, tarinakaavioita, kenttäkaavioita, kasveja, puita ja rakennuksia voidaan tuottaa generatiivisten kielioppien avulla (Shaker, Togelius ja Nelson, 2016). Tässä luvussa käsitellään ensin generatiivisia kielioppeja, minkä jälkeen perehdytään tarkemmin L-systeemiin ja jakokielioppeihin.

2.1 Generatiiviset kieliopit 2 (Formaalilla) kieliopilla voidaan kuvata merkkijonoista koostuvan formaalin kielen rakenne. Kielioppiin kuuluu aakkosto, joka määrittelee kielen merkkijonojen mahdolliset merkit, sekä säännöt, joiden perusteella merkkijonot muodostuvat aakkoston merkeistä. Kielioppeja voidaan käyttää tunnistamaan kuuluuko annettu merkkijono kieleen tai muodostamaan kieleen kuuluvia merkkijonoja. Kun kielioppi määritellään tavalla, jolla sitä voidaan käyttää kieleen kuuluvien merkkijonojen muodostamiseen, sitä kutsutaan generatiiviseksi kieliopiksi (Chomsky, 1986). Yleensä kieliopeissa aakkosto jaetaan kahteen joukkoon: muuttujasymboleihin ja päätesymboleihin (Shaker, Togelius ja Nelson, 2016, s. 74). Muuttujasymbolit eli muuttujat ovat merkkejä, joita säännöt muuttavat, ja niitä kuvataan yleensä isoilla kirjaimilla. Päätesymbolit ovat merkkejä, jotka eivät muutu enää, kun ne on lisätty merkkijonoon, ja niitä kuvataan yleensä pienillä kirjaimilla. Kieliopin tuottama merkkijono koostuu pelkistä päätesymboleista. Säännöt esitetään usein muodossa A x y z, missä A on muuttuja ja x, y ja z ovat mielivaltaisia jonoja muuttujia ja päätesymboleja, joiksi muuttuja A voidaan muuttaa yhdellä iteraatiolla (Sipser, 2006, s. 102-103). Merkkijonon tuottaminen alkaa aina alustamalla merkkijono lähtösymbolilla, jota kuvataan yleensä S-kirjaimella. Tämän jälkeen algoritmi käy merkkijonon läpi jokaisella iteraatiolla ja kieliopin tyypistä riippuen soveltaa sääntöjä joko yhteen, useampaan tai kaikkiin merkkijonon muuttujiin kerralla, muuttamalla säännön vasemmalla puolella olevan muuttujan säännön oikealla puolella olevaksi merkkijonoksi. Jokaisen iteraation seurauksena käsiteltävä merkkijono muuttuu joko osittain tai kokonaan. Esimerkissä 1 havainnollistetaan yksinkertaisen kieliopin toimintaa. Esimerkin 1 kielioppi on yhteydetön ja epädeterministinen kielioppi eli muuttujat eivät ole riippuvaisia ympäröivistä merkeistä ja muuttujia muutetaan yksi kerrallaan vapaavalintaisesti. Muuttujia ovat S, A ja B, ja päätesymboleita a, b ja c. Esimerkissä 1 on kuvattu kieliopin säännöt ja merkkijonon "cabab" muodostaminen vaiheittain (eli merkkijonon "cabab" johto). S ca A AB a B BA b S ca cab caba cabab cabab cabab cabab cabab Esimerkki 1: Kieliopin säännöt ja merkkijonon cabab johto.

3 Kieliopin muodostamia merkkijonoja voidaan käyttää muodostamaan kaikenlaista sisältöä, jossa merkkijonon merkit muutetaan vastaamaan erilaisia sisällön elementtejä. Myöhemmissä luvuissa esitellään tarkemmin käytännön sovelluksia. 2.2 L-systeemi Rakennuksia ja kaupunkeja generoidaan usein L-systeemin johdannaisilla kielioppiperustaisilla malleilla (Parish & Müller, 2001). L-systeemi on alunperin kehitetty matemaattiseksi malliksi kasvien mallintamista varten (Prusinkiewicz & Lindenmayer, 1996, s. 1). L-systeemi on formaali kielioppi, joka perustuu uudelleenkirjoitukseen. Uudelleenkirjoituksessa alkuarvon toteuttamaa merkkijonoa iteroidaan erilaisten sääntöjen avulla, uudelleenkirjoittaen merkkijono kokonaan, luoden uusi merkkijono vanhan tilalle jokaisella iteraatiolla. Uudelleenkirjoittamisesta johtuen se sopiikin erittäin hyvin ajan funktiona kasvavien mallien mallintamiseen. Yksinkertaisimmillaan L-systeemi on yhteydettömässä ja deterministisessä DOL-systeemissä (Prusinkiewicz & Lindenmayer, 1996, s. 1). Ohessa esitetyssä esimerkin 2 DOL-systeemissä alkuarvona S on "b", säännön 1 mukaan merkkijono "a" uudelleenkirjoitetaan merkkijonolla "ab" ja säännön 2 mukaan merkkijono "b" uudelleenkirjoitetaan merkkijonolla "a". S: b 1: a ab 2: b a b a ab aba abaab Esimerkki 2: Kieliopin säännöt ja merkkijonon "abaab" johto. Oheisessa esimerkissä 2 on alkuarvolla "b" iteroitu sääntöjä 1 ja 2 neljä kertaa, ja saatu vastaukseksi merkkijono "abaab". 2.3 Jakokieliopit Perinteisen L-systeemin avulla on vaikea saada mallinnettua rakennuksia, sillä rakennuksilla on useita rajoitteita kokonsa ja mallinsa suhteen (Wonka, Wimmer, Sillion, & Ribarsky, 2003, s. 669). Wonka et. al. ovat tutkineet työssään Instant Architecture jakokielioppien (englanniksi split grammar) toimimista rakennusten mallintamisessa. Jakokieliopin mallissa rakennus yksinkertaisesti jaetaan lohkoihin käyttämällä jotain kielioppia. Syntyneet lohkot jaetaan uudelleen

4 lohkoiksi seuraavan kieliopin mukaan. Tätä iterointia jatketaan edelleen pienempiin lohkoihin uusilla kieliopeilla. Missä tahansa kieliopissa voi olla lohkon iteraation päättävä lopetusmerkki. Kun kaikissa muodostuneissa lohkoissa on vain lohkon iteraation päättäviä lopetusmerkkejä, rakennuksen raakamalli on valmis (Wonka et al., 2003, s.671-672). Kuvassa 1 on esitettynä jakokieliopilla toteutettu julkisivu. Kuvassa 1 nähdään kuinka jokaisen iteraation jälkeen otetaan käyttöön uuden kieliopin säännöt, kunnes jäljellä on vain lopetusmerkkejä. Kuva 1: Jakokieliopilla ja L-systeemillä toteutettu julkisivu. Kuvassa lopetusmerkit on merkitty suluin. 3 CGA shape Kieliopeilla itsellään käsitellään vain merkkijonoja. Jotta niitä voitaisiin hyödyntää rakennusten generoinnissa, on merkkijonojen ympärille rakennettava toteutus, joka muuttaa niiden avulla saavutetun säännöllisyyden halutuiksi elementeiksi. CGA shape on eräs käytännön toteutus, jonka avulla voidaan muodostaa rakennusten ulkomuodot ja generoida niihin julkisivu jakokielioppien avulla. Tässä luvussa käsitellään CGA shapen teoriaa ja esitetään muutamia havainnollistavia esimerkkejä.

3.1 Komentosarjakieli rakennusten mallintamiseen 5 CGA shape on Pascal Müllerin, Peter Wonkan et. al. kehittämä muotokielioppien (englanniksi shape grammar) kanssa käytettävä komentosarjakieli rakennusten proseduraaliseen mallintamiseen. Se on sisällytetty muun muassa CityEngine-sovelluskehykseen (Esri, 2008). CGA shapessa on pyritty syntaksin helppolukuisuuteen (Parish & Müller, 2001). Syntaksi on esitetty seuraavassa muodossa: id: edeltäjä: ehto seuraaja: todennäköisyys CGA shapessa jokainen objekti lasketaan heksaedrin perusteella, ja objekti voidaan sijoittaa vapaasti koordinaatistoon. CGA shapen muotokielioppi vaatii ennalta määrätyn joukon kolmiulotteisia malleja, joita yhdistelemällä rakennus saadaan mallinnettua. Objektin koko ilmoitetaan komennolla S(x,y,z). Kuvassa 2 objektin koon parametrit on ilmoitettu parametreilla Sx, Sy ja Sz. Objektia voidaan myös kääntää jonkin akselin suhteen paremetreilla Rx, Ry ja Rz, ja objektin sijainti koordinaatistossa määritellään translaatiovektorin T(x,y,z) avulla. Objektin muoto haetaan tietokannasta komennolla I("objektin nimi"). Kuvassa 3 on esitetty yksi CGA shapen sääntö, jossa kahdella ennalta määritetyllä mallilla muodostetut kolme objektia on sijoitettu koordinaatistoon.

6 Rakennusta mallinnettaessa jokaisen lopetusmerkittömän objektin kohdalle generoidaan sääntöjen perusteella uusia objekteja. Paikalla ollut objekti merkataan inaktiiviseksi, jolloin sitä ei piirretä, mutta objektia ei poisteta muistista. Tämä mahdollistaa täyden iteraatiohistorian rakennukselle. Historiatiedon perusteella on helppo selvittää kohtaako joku objekti jonkin toisen objektin. CGA shape sisältää vain muutaman peruskomennon, joiden avulla on mahdollista mallintaa hyvin monenlaisia rakennuksia. Jokainen CGA shapen luoma objekti sisältää tiedon omasta aktiivisuudestaan (objektin tila voi olla joko aktiivinen tai inaktiivinen). Objektilta voidaan myös kysyä kohtaako se jonkin toisen objektin, ja missä kohdassa tämä kohtaaminen tapahtuu. Objekti voidaan jakaa aliobjekteiksi Subdiv-komennolla. Repeat-komennolla taas voidaan täyttää haluttu alue yhdentyyppisillä elementeillä. Kuvassa 4 on esitetty objektin jakaminen Subdiv-komennolla, ja kuvassa 5 objektin täyttäminen Repeat-komennolla. Täytettäesä aluetta uusilla objekteilla, objektin koko voi olla joko staattinen tai relatiivinen. Relatiivisten objektien koko merkitään numeerisella arvolla ja kirjaimella r. Niiden lopullinen koko lasketaan täytettävän alueen tilasta, kun siitä on vähennetty staattisten objektien koko. Objekteille voidaan asettaa myös leikkausviivoja (snap line) ja leikkauskappaleita (snap shape). Kun objekti täytetään aliobjekteilla, leikkausviivaa lähimpänä oleva kahden objektin raja muokataan leikkausviivan kohdalle. Kuvassa 6 on esitetty leikkausviivan toiminta. Leikkausviivoilla voidaan estää esimerkiksi puolikkaan ikkunan päättyminen rakennuksen kulmaan.

7 Kuva 6: Vasemmalla objekti jaettu identtisen kokoisiin aliobjekteihin. Oikealla lähin objektien reuna sijoitettuna leikkausviivan kohdalle. Molemmissa kuvissa punainen leikkausviiva on samassa kohdassa. Kolmiulotteinen objekti voidaan jakaa kaksiulotteisiksi pinnoiksi Comp-komennolla. Tällä voidaan luoda esimerkiksi rakennukselle erilaisia julkisivua riippuen millä laidalla rakennusta ollaan. Kuvassa 7 on havainnollistettu valmiita CGA shapella luotuja rakennuksia, joille on generoitu julkisivut. Kuva 7: CGA shapella generoituja rakennuksia (Müller, Wonka, Haegler, Ulmer & Van Gool, 2006). 3.2 Pohdinta CGA shape soveltuu muokattavuutensa ansiosta erittäin hyvin monenlaisten rakennusten generointiin. Käyttäjän on mahdollista luoda erittäin laajoja sääntökokonaisuuksia, joiden avulla voidaan mallintaa lähes minkälaisia rakennuksia tahansa. Leikkausviivojen ansiosta voidaan myös välttää julkisivun elementtien joutuminen väärään paikkaan, mikä on yleinen ongelma rakennusten generoinnissa (Müller, Wonka, Haegler, Ulmer ja Van Gool, 2006). Koska CGA shape ei poista korvattuja objekteja, rakennusten mallintamiseen tarvittava muistin määrä on suurempi kuin tavassa, jossa inaktiiviset elementit poistettaisiin muistista. Kuvan 7 vasemman puoleisen rakennuksen generointi tuottaa 50 000 monikulmiota, ja sen generointiin kulunut aika vuonna 2001 on ollut noin sekunti (Parish & Müller, 2001). Mikäli myös rakennuksen yksityiskohdat generoitaisiin CGA shapen avulla, monikulmioita jouduttaisiin

8 generoimaan moninkertainen määrä. Tämä olisi hyvin tehotonta. Tämän takia rakennusten yksityiskohdat kannattaakin generoida esimerkiksi valmiiksi luoduilla kolmiulotteisilla malleilla. Müller et. al. kertovat myös, että vaikka CGA shapella voidaan generoida rakennuksia GIS ainestosta, näin generoidut rakennukset mallintuvat usein huonosti, ja että proseduraalinen generointi luo usein epäuskottavan näköisiä rakennuksia (Parish & Müller, 2001, s. 622). Tämä on yleinen ongelma rakennusten proseduraalisessa generoinnissa, ja usein parhaat lopputulokset saadaan ensin generoimalla rakennus ja sen jälkeen muokkaamalla niitä vielä käsin (Hendrikx, Mejer, Van Der Velden, Iosup, 2013). 4 Yhteenveto Nykyaikaisissa peleissä ja elokuvissa voi olla jopa tuhansia erilaisia rakennuksia. Uskottavan ympäristön luomiseksi rakennusten tulisi olla sopivan samankaltaisia, mutta kuitenkin ainutlaatuisia. Niiden mallintaminen ihmisvoimin voi olla erittäin työläs prosessi. Automatisoimalla rakennusten mallintamista algoritmien avulla voidaan säästää huomattavasti aikaa ja vaivaa. Sitä kutsutaan rakennusten proseduraaliseksi generoinniksi tai proseduraaliseksi mallintamiseksi. Rakennuksia ja kaupunkeja generoidaan usein kielioppiperustaisilla malleilla. Kielioppien avulla voidaan kuvata merkkijonoista koostuvan formaalin kielen rakenne, ja niitä voidaan käyttää tunnistamaan kuuluuko annettu merkkijono kieleen tai muodostamaan kieleen kuuluvia merkkijonoja. Kielioppeihin kuuluu merkeistä koostuva aakkosto ja säännöt, joiden avulla merkkijonoja muodostetaan. Monet rakennusten proseduraalisen generoinnin ratkaisut perustuvat Aristid Lindenmayerin kehittämään L-systeemiin, joka on alunperin kasvien mallintamista varten kehitetty formaali kielioppi. L-systeemi perustuu koko merkkijonon uudelleenkirjoittamiseen jokaisella iteraatiolla. Tästä johtuen se sopii erityisesti ajan funktiona kasvavien mallien mallintamiseen. Muita suosittuja kielioppeja ovat esimerkiksi jakokieliopit julkisivujen mallintamiseen ja muotokieliopit rakennuksen muotojen mallintamiseen. CGA shape on yksi hyvä käytännön esimerkki kielioppeihin perustuvasta rakennusten generoinnin menetelmästä. Se on Pascal Müller, Peter Wonkan et. al. kehittämä muotokieli-

9 oppien kanssa käytettävä komentosarjakieli, jota on käytetty muun muassa CityEngine-sovelluskehyksessä. CGA shapessa rakennus muodostetaan ensin yhdistelemällä yksinkertaisia kolmiulotteisia muotoja muotokieliopilla, minkä jälkeen muotojen päälle generoidaan jakokieliopin avulla julkisivu. CGA shape soveltuu muokattavuutensa ansiosta hyvin monenlaisten rakennusten generointiin, ja sen avulla generoidut rakennukset ovat parhaimmillaan erittäin uskottavan näköisiä. Rakennusten generointi vie kuitenkin paljon muistia, ja julkisivujen yksityiskohdat kannattaa generoida käsin tehdyillä 3D-malleilla. CGA shapea ja muita proseduraalisen rakennusten generoinnin tekniikoita käytetäänkin usein erityisesti apuna generoimaan alustavia rakennuksia, joita voidaan muokata käsin uskottavamman näköisiksi. Rakennusten proseduraalinen generointi voi auttaa rakennusten tuottamisessa, ja sen avulla voidaan säästää aikaa ja vaivaa. Olemassa olevilla tekniikoilla on kuitenkin vaikea saavuttaa rakennuksia, jotka olisivat yhtä uskottavia kuin käsin mallinnetut. Tulevaisuudessa mielenkiintoisen tutkimuskohteen luovat neuroverkot ja tekoäly, joiden avulla proseduraalisesta mallintamisesta saadaan todennäköisesti huomattavasti uskottavamman näköistä, kuin nykyisillä tekniikoilla.

Lähteet 10 Chomsky, N (1986). Knowledge of Language. Westport, CT: Greenwood Publishing Group. Esri (2008). CityEngine. Lainattu 11.12.2017: http://www.esri.com/software/cityengine Hendrikx, M., Mejer, S., Van Der Velden, J., Iosup, A. (2013). Procedural content generation for games: A survey. ACM Transactions on Multimedia Computing, Communications, and Applications, 9(1). Müller, P., Wonka, P., Haegler, S., Ulmer, A., Van Gool, L. (2006). Procedural modeling of Buildings. ACM Transactions on Graphics (TOG) - Proceedings of ACM SIGGRAPH 2006, 25(3), 614-623. Parish, Y. I. H., & Müller, P. (2001). Procedural modeling of cities. Proceedings of the 28th annual conference on computer graphics and interactive techniques, 301 308. New York, NY, USA: ACM. Prusinkiewicz, P., & Lindenmayer, A. (1996). The algorithmic beauty of plants. New York, NY, USA: Springer-Verlag New York, Inc. Shaker, N., Togelius, J. & Nelson, M. (2016). Procedural Content Generation in Games: A Textbook and an Overview of Current Research. Cham, CH: Springer. Sipser, M., Togelius, J. & Nelson, M. (2006). Introduction to the Theory of Computation, (Second Edition). Boston, MA: Thomson Course Technology. Wonka, P., Wimmer, M., Sillion, F., & Ribarsky, W. (2003, heinäkuuta). Instant architecture. ACM Trans. Graph., 22 (3), 669 677.