Puukieliopit Olkoon käytössä kilpikonnagrafiikka: kursorina on kilpikonna, jolle voidaan antaa komentoja tyyliin liiku eteenpäin, käänny oikealle, nosta kynä ylös jne. Kilpikonnan absoluuttista paikkaa ei tunneta Puukielioppien avulla voidaan generoida kilpikonnan käskysarjoja, jotka piirtävät yksityiskohtaisia rekursiivisia kappaleita Puukielioppi koostuu lähtösymbolista ja joukosta korvaussääntöjä, joilla lähtösymbolista voidaan generoida uusia merkkijonoja Korvaussäännön käyttäminen korvaa merkkijonosta tietyn symbolin kaikki esiintymät pidemmällä symbolijonolla Esimerkki: olkoon kilpikonnan komennot 1. F: liiku eteenpäin piirtäen segmentti 2. L: käänny 60 astetta vasemmalle 3. R: käänny 60 astetta oikealle Olkoon kieliopin alkusymboli F, ja kieliopissa yksi korvaussääntö F FRFLLFRF tämä sääntö on itse asiassa Kochin käyrän rekursiivinen jako, kun käskyssä F liikuttava matka lyhenee kolmasosaan korvaussäännön jokaisella käyttökerralla Kochin lumihiutale saadaan helposti ottamalla käyttöön uusi lähtösymboli S sekä korvaussääntö S FLLFLLFLL, joka määrittelee tasasivuisen kolmion 496 497 Jos puukieliopilla halutaan kuvata haaroittuvia rakenteita, voidaan ottaa käyttöön symbolit [ ja ], jotka tarkoittavat kilpikonnan paikan ja suunnan työntämistä ja vetämistä pinoon Rakenteen haarautuessa kahteen suuntaan kilpikonnan asema työnnetään pinoon, piirretään ensimmäinen haara, asema vedetään pinosta ja piirretään toinen haara Puukielioppi saattaa sisältää monta korvaussääntöä samalle symbolille lopputulos riippuu siitä, mitä korvaussääntöä kussakin vaiheessa käytetään Käytettävä korvaussääntö voidaan valita satunnaisesti jonkin jakauman perusteella, ja korvattavan symbolin kuhunkin esiintymään liittyvä korvaussääntö voidaan valita satunnaisesti Muotokieliopit Edellistä ideaa voidaan soveltaa muutenkin kuin vain kilpikonnagrafiikkaan Ns. muotokieliopit koostuvat säännöistä, joilla annettu kappale voidaan korvata pienemmillä kappaleilla Esimerkiksi Sierpinskin matto kuutioille: kuutio voidaan korvata 20 pikkukuutiolla Säännöt voivat myös määrätä, minkä väriseksi kappale väritetään Hyvinkin yksinkertaisilla säännöillä ja kappaleilla voidaan saada aikaan monimutkaisia ja kauniita rakenteita Sovellus: biologisten kappaleiden mallintaminen stokastisilla muotokieliopeilla (Lindenmayerin järjestelmät) 498 499
Kielioppien toteuttamisesta Partikkelijärjestelmät Puu- ja muotokieliopeilla piirtämistä ei kannata toteuttaa siten, että ensin muodostetaan pitkä symbolijono, joka sitten merkki kerrallaan suoritetaan Parempi ratkaisu on toteuttaa kilpikonnan komennot tai kappaleen piirtäminen rekursiivisina proseduureina (vrt. Logo) Proseduurit saavat parametrikseen rekursiotason syvyyden rekursion ollessa riittävän syvä jotkut komennot eivät enää tee rekursiokutsuja, vaan esim. piirtävät suoran viivan vältetään päättymätön rekursio Kilpikonnan asema kannattaa pitää muistissa tarkemmin kuin pikselin tarkkuudella, vaikka piirtäminen tapahtuukin pikselin tarkkuudella Sumeita ja aikariippuvaisia kappaleita (pilvet, tuli) voidaan approksimoida joukkona pieniä partikkeleita Partikkelit voivat olla palloja, kuutioita tms. Parhaimmillaan animaatiossa, jossa partikkelit syntyvät ja liikkuvat jonkinlaisen stokastisen prosessin mukaan Esimerkki: ilotulitusraketin räjähdys synnyttää joukon partikkeleita, joiden paikka on aluksi sama, mutta joiden suunta ja nopeus on valittu satunnaisesti kukin partikkeli liikkuu maailmassa Newtonin lakien mukaisesti, ja sen kirkkaus on kääntäen verrannollinen sen ikään riittävän vanha partikkeli lakkaa olemasta muuten pyöristysvirheet voivat kasautua ja lopputulos kärsiä 500 501 Partikkelien piirtäminen Partikkelitekniikan sovelluksia Partikkelijärjestelmät eivät suoraan sovellu ray tracingiin, sillä säteen ensimmäisen leikkauspisteen laskeminen tuhansien partikkelien joukolle on raskasta Pilviä tms. kaasua voidaan kuitenkin mallintaa stokastisella ray tracingillä, kun kaasukappale koostetaan satunnaisista (isohkoista) partikkeleista Kun partikkeleita piirretään sellaisinaan, niin liikkuvalle partikkelille voidaan laskea alku- ja loppupiste matkalle, jonka partikkeli kulkee kuvanoton aikana partikkeli piirretään kuljetun avaruuden kattavana särmiönä Jos yksittäiset partikkelit ovat riittävät pieniä piirrettäviksi yksittäisinä pikseleinä, ei niille tarvitse tehdä valaistus- tai pintakuviointilaskelmia Klassinen esimerkki: Star Trek II -elokuvan planeetan Genesis-tuhoamiskohtaus, jossa partikkeleista koostuva tulimyrsky puhdistaa planeetan pinnan raskaan laskennan välttämiseksi käytettiin nokkelia erikoistemppuja, jotka eivät kuitenkaan vaikuttaneet animaation visuaaliseen laatuun Ruohon mallintaminen ampumalla partikkeleita maanpinnalta ylöspäin Newtonin lakien mukaan: partikkelin tietyssä ajassa kulkema matka muodostaa ruohonkorren Puita ja kasvillisuutta voidaan mallintaa staattisilla partikkeleilla, jotka pysyvät paikallaan, mutta haarautuvat ja kopioituvat tietyillä todennäköisyyksillä Tällöin ei myöskään yleensä tarvita törmäys- tai päällekkäisyystarkistuksia Joissakin sovelluksissa partikkelit kannattaa piirtää mainostauluina 502 503
Jousisysteemit Aaltojen mallintaminen Jousisysteemi koostuu partikkeleista, jotka on kytketty naapureihinsa kuvitteellisilla jousilla Jousivoima noudattaa Hookin lakia F = kx, missä x on poikkeama tasapainoasemasta ja k on jousivakio jousi pyrkii pitämään yhdistämänsä partikkelit tietyllä tasapainoetäisyydellä Partikkeleihin kohdistetut ulkoiset voimat vaikuttavat jousten kautta pehmeästi koko partikkelijoukkoon Esimerkki: kankaan mallintaminen kaksiulotteisena kuutiollisena pintana, jonka kontrollipisteet on yhdistetty toisiinsa jousilla Myös pehmeän kappaleen varauspisteet voidaan yhdistää jousilla Jousi voidaan myös määritellä katkeamaan, jos se venyy liian pitkäksi Varhaisimpia tietokonegrafiikalla mallinnettuja luonnollisen maailman ilmiöitä Nestepintaa esittävän tason pisteitä x poikkeutetaan z-suunnassa funktiolla p(x) =C sin( x c ) missä piste c on aallokon keskipiste, ja C aaltojen korkeuskerroin Jos aallot ovat kyllin kaukana katsojasta, riittää poikkeuttaa heijastusta pintaa kuhmuttamalla, ja pinta voidaan edelleen muuten piirtää tasopintana Kehittyneempi tekniikka on mallittaa vedenpinta parametroituna kuutiollisena pintana, jolloin malli ottaa huomioon taittuvat ja heijastuvat aallot, matalan pohjan vaikutukset jne. erittäin jäykillä jousilla saadaan aikaan kiinteitä kappaleita, jotka halkeavat ja murtuvat niihin osuvien iskujan voimasta 504 505 Reaktio-diffuusio-teksturointi Tekniikka, jolla kappaleen pinta voidaan kuvioida satunnaisilla läikillä ja raidoilla, jotka ovat kuitenkin halutulla tavalla tilastollisesti säännöllisiä Pinta jaetaan satunnaisesti mahdollisimman samankokoisiin soluihin, joiden kuvitellaan sisältävän yhtä tai useampaa kemikaalia hankalan muotoisen pinnan solut voidaan muodostaa vaikkapa levittämällä pinnalle n toisiaan hylkivää satunnaispistettä, ja iteroimalla tasapainotilaan asti tämän jälkeen pinnan pistejoukolle muodostetaan Voronoin diagrammi, jonka lokukset jakavat pinnan soluiksi Jokaisessa solussa on aluksi satunnainen määrä kutakin kemikaalia Kullakin iteraatiokierroksella tapahtuu kahdenlaisia askelia: Diffuusioaskeleessa solusta, jossa on suuri määrä jotakin kemikaalia, virtaa kyseistä kemikaalia naapurisoluun Reaktioaskeleessa saman solun kemikaalit reagoivat hävittäen tai synnyttäen muita kemikaaleja Kun tätä on iteroitu kylliksi, kunkin solun väri-, heijastustms. arvot määräytyvät sen kemikaalisisällöstä Solut voidaan värittää tasavärityksellä mosaiikkikuvioksi, tai vierekkäisten solujen värit voidaan liu uttaa pehmeästi Demo 506 507
Höyry- ja kaasupilvet Ihmisen mallintaminen (Voss 1985) Pilvet mallinnetaan neliulotteisen fraktaalin kolmiulotteisina projektioina, jossa neljäs komponentti esittää kyseisen pisteen vesihöyryn tiheyttä (Gardner 1984) Pilvet esitetään joukkona ellipsoideja, joiden läpinäkyvyys- ja heijastusominaisuudet määräytyvät pintakuvioinnista Pintakuviointifunktio puolestaan määritellään muokatulla fraktaalikohinalla T(x, y, z) = n (c i sin(f i x + p i )+T 0 ) i=1 + n (c i sin(g i y + q i )+T 0 ) i=1 missä f i ja g i ovat komponentin i taajuudet x- ja y-suunnassa, c i komponentin i painokerroin ja T 0 korjausvakio Luonnolliselta näyttävän ja liikkuvan ihmisen mallintaminen on tietokonegrafiikan suurin ja tärkein avoin ongelma On paljon helpompaa mallintaa huone täynnä luonnollisia kappaleita kuin yhdet realistiset ihmiskasvot Syy: ihminen on hyvä tunnistamaan kasvoja, ja havaitsee siksi hyvin herkästi epäluonnollisuudet ongelma vaikeutuu, jos kasvot ja muun vartalon liikkeet pitäisi vielä animoidakin lohikäärmeiden, örkkien, dinosaurusten tms. olentojen mallintamisessa, joista ihmisillä ei ole samanlaisia sisäänrakennettuja kokemuksia ja odotuksia (ja joilla ei ole karvoja), saadaan paljon uskottavampia tuloksia 508 509 Image-based rendering Perinteisesti piirtämisen perusyksikkönä on ollut yksittäinen monikulmio Image-based rendering (IBR) on yleisnimitys erilaisille tekniikoille, joissa perusyksikkönä onkin kaksiulotteinen pikselikuva Kappaleita esittävät pikselikuvat ovat esim. käsiteltyjä digitaalikameralla otettuja kuvia Monikulmioiden projisoimisen sijasta näkymä muodostetaan sijoittamalla pikselikuvia ruudulle sopivasti käänneltyinä ja muokattuina Monikulmioiden teksturointi on itse asiassa varhainen IBR-tekniikka Nykyaikaiset IBR-tekniikat eivät kuitenkaan tarvitse pikselikuvien lisäksi muita matemaattia malleja kappaleen geometriasta Perinteisiin menetelmiin verrattuna IBR tarjoaa useita etuja Piirron perusoperaatiot nopeita ja suhteellisen yksinkertaisia varsinkin jos näitä tuetaan laitteistotasolla Geometrista mallinrakennusta ei tarvita ollenkaan, vain muutama sopivasta kulmasta otettu digitaalikuva riittää kompleksisuus ja muistintarve riippumaton kappaleen monimutkaisuudesta Impostoritekniikassa IBR-tekniikkaa käytetään projektiopiirtämisen nopeuttamiseen Katsojan suhteen hitaasti liikkuvan kappaleen peräkkäiset pikselikuvat muistuttavat toisiaan hyvin paljon Kappaleen piksilöidystä projektiokuvasta kuvaustasolla muodostetaan impostoritekstuuri niin kauan kuin kappale on riittävän samassa asennossa katsojaan nähden, kappale piirretään impostorilla teksturoituna monikulmiona Portaalikarsinnassa portaalin läpi näkyvän maailman kuva muutetaan testuuriksi, jota käytetään portaalimonikulmion teksturoimiseen niin kauan kuin impostorin sisältö on riittävän oikea 510 511
Ei-fotorealistinen piirto Tulevaisuuden pohdintaa Ei-fotorealistinen piirto on yleisnimitys tekniikoille, jotka pyrkivät esittämään kappaleiden ominaisuudet perinteisen käsin piirtämisen klassillisilla menetelmillä konventioihin tottunut ihmissilmä täydentää itse visuaalisten vihjeiden perusteella kuvaan tarvittavat yksityiskohdat Esimerkkejä tekniikasta ovat ääriviivat, vauhtiviivat, vihjeviivat, piirtäminen erilaisilla siveltimillä, paperityypeillä ja väriaineilla, ei-fotorealistinen valaistus, impressionismi, pointillismi, käsin piirtämisen simulointi Ei-fotorealistiset tekniikat voidaan toteuttaa joko suoraan piirtoalgoritmissa tai erillisenä jälkikäsittelyvaiheena, jolloin tarvitaan monesti läpinäkyvyys- tai syvyysinformaatiota Jos piirroselokuvatasoisen animaatioruudun generointi vaatii kolme tuntia tietokoneaikaa, tarvitaan 150,000-kertainen nopeutus puristamaan tämä aika 1/12-sekuntiin jos Mooren lakia noudattaen tietokoneiden laskentateho kaksinkertaistuu aina 1,5 vuoden välein, tavoite saavutetaan 26 vuoden päästä grafiikkalaitteistojen teho on viime vuosina tuplaantunut noin puolen vuoden välein... Vuonna 1974 piilopintojen poistoalgoritmien vertailuun ei otettu mukaan nykyään yleisesti käytettävää Z-puskuritekniikkaa, koska se vei liikaa muistia jokin nykyisille resursseille liian raskas tekniikka saattaa tulevaisuudessa olla reaaliaikaisen grafiikan tekemiseen sopivin kuvien kompleksisuuden kasvaessa esimerkiksi ray tracing saattaa pitkällä tähtäimellä osoittautua nopeimmaksi tavaksi piirtää näkymä 512 513 JOHAN LOPPUI 514