Tik-111.5450 Tietokoneanimaatio 8.luento: procedural shapes fractals, graftals, etc. 14.11.2005 - Tassu Animaatio 2005 - luento 8 1
Sisältö Periaate: proseduraalisesti määritelty muoto Sovelluksia: muuntuvat kappaleet, maasto, meri, pilvet, salamat, kasvit, niveljalkaiset Parametriset kappaleet Fraktaalit: periaatteet, sovelluksena maisemat L-systeemit: kielioppeja, kilpikonnagrafiikkaa Graftaalit: sovelluksena kasvit Evoluutiomenetelmät, GA/GP Erityistapauksia: vesi, pilvet (ks. SG tutorial 2002) Esimerkkejä videolla Harjoitustehtävä 14.11.2005 - Tassu Animaatio 2005 - luento 8 2
Proseduraalinen muoto Olion muoto määrätään laskennallisesti joka kuvassa erikseen ei ennalta määrättyä muotoa, jota animoidaan Vapaasti deformoituvia muotoja polygoneja sinne missä niitä tarvitaan Topologia voi muuttua esim. otuksen jalkojen määrä tai polygonien määrä esitettävällä pinnalla Yksityiskohtien määrä tarpeen mukaan detaljit mallinnetaan vain läheltä katsottaessa 14.11.2005 - Tassu Animaatio 2005 - luento 8 3
Parametriset kappaleet = räätälöityjä proseduureja eri muototyypeille Peruskappaleet monitahokkaat eri variaatioina pallo, sylinteri, torus, parametripinnat polygoneiksi muuttaminen dynaamisesti Perustransformaatiot dynaamisesti määriteltyinä ohjelmoituja rajoitusehtoja esim. skaalaus toisten kappaleiden liikettä seuraten Toistuvat rakenteet hammasratas (hampaiden lukumäärä) nivelikäs mato, tuhatjalkainen sääntöpohjaiset rakenteet: fraktaalit, graftaalit Toteutus parametrinen mallinnus/animaatio-ohjelmisto erikseen kirjoitettavia proseduureja (tämä kurssi) 14.11.2005 - Tassu Animaatio 2005 - luento 8 4
Peruskappaleet monitahokkaat säännölliset (Platon): tetraedri(4), kuutio(6), oktaedri(8), dodekaedri(12) ja ikosaedri(20) monenlaiset kiderakenteet yms. variaatioita: esim. ikosaedri kärjet katkaistuna = jalkapallo geometriset muodot sylinteri, kartio, pallo/ellipsoidi (myös muut 2 pinnat: hyperbolodi, paraboloidi), torus yleensä approksimoidaan polygoneilla - ongelmia: polygonien määrän optimointi huonojen polygonien (pitkät ja kapeat) välttäminen harjoitustehtävä: pallon approksimaatio kolmioilla niin, että ne ovat kaikki likimain samankokoisia 14.11.2005 - Tassu Animaatio 2005 - luento 8 5
Muotoiluoperaatot joukko-operaatiot (yhdiste, leikkaus, erotus) extrude, beveling, rounding, fillets, etc. voidaan toteuttaa monella eri perustekniikalla polygon mesh, NURBS, jne. edellyttävät geometrista laskentaa pisteen sijainti objektin suhteen reunaviivan ja tason leikkaus tasojen leikkausviivat topologia (polygonien liittymiset toisiinsa) algoritmien pidettävä huolta mallin konsistenssista 14.11.2005 - Tassu Animaatio 2005 - luento 8 6
Pyyhkäisymuodot (sweep) idea: objektin ulottuvuutta kasvatetaan animoimalla, aika-ulottuvuus tulkitaan geometriseksi: liikkuva piste = käyrä, liikkuva käyrä = pinta, liikkuva pinta = tilavuus, jne. perustapaukset translaatio rotaatio vapaa yhdistelmä mielivaltainen profiili liikkuu vapaamuotoista käyrää pitkin profiili itsekin voi samalla muuttua algoritmi toistetaan askel kerrallaan: profiilimuoto transformoidaan uuteen asemaansa yhdistetään pisteittäin edelliseen profiiliin (mahdollisesti) liitetään päätyprofiilit mukaan 14.11.2005 - Tassu Animaatio 2005 - luento 8 7
Pyyhkäisymallien sovelluksia laattamaiset ja pyörähdyssymmetriset esineet mm. teksti 3D-kappaleena ( flying logo ) putket, langat, karvat, jne. muotoillut esineet, elävien olioiden osat kasvavat orgaaniset rakenteet kotilon kuoret: http://www.mi.sanu.ac.yu/vismath/lucca/ 14.11.2005 - Tassu Animaatio 2005 - luento 8 8
Rekursiivinen osiinjako (subdivision surfaces) idea: pehmennetään kulmikasta polygonimuotoa pilkkomalla sen nurkkia (beveling) rekursiivisesti toistettuna interpolaationa tuottaa lopulta jatkuvan pinnan vrt. Bezier-pinnan generointi ohjauspisteverkosta binäärisellä osiinjaolla (de Casteljaun algoritmilla) monipuolinen, jos määrittely eri osissa mallia säädeltävissä http://grail.cs.washington.edu/projects/subdivision/ 14.11.2005 - Tassu Animaatio 2005 - luento 8 9
Fraktaalit Ei-kokonaislukudimensioisia objekteja esim. rantaviiva http://scidiv.bcc.ctc.edu/math/snowflake.html Usein rekursiivisesti määriteltyjä Kolme eri luokkaa self-similar (kasvit) ei-interpoloiva osiinjako! self-affine (maasto) invariant fractal sets (Mandelbrotin joukko) Sovelluksia salama, joki, kasvin runko, maiseman siluetti (1D) maastomallit, eliön pinta, tekstuuri (2D) taiteelliset abstraktit kuviot 14.11.2005 - Tassu Animaatio 2005 - luento 8 10
Fraktaalit Benoit Mandelbrot, Yale U 14.11.2005 - Tassu Animaatio 2005 - luento 8 11
Ken Musgrave http://www.kenmusgrave.com/ 14.11.2005 - Tassu Animaatio 2005 - luento 8 12
Maiseman teon perusteita Kolmioiden/neliöiden osiinjakoa Perusteet: ks. Fournier et al. 1982 Vettä ja pilviä voidaan tehdä samoilla periaatteilla Esimerkki ks. Musgrave 1996 14.11.2005 - Tassu Animaatio 2005 - luento 8 13
http://www.planetside.co.uk/terragen/ 14.11.2005 - Tassu Animaatio 2005 - luento 8 14
Biomorphit, "graftaalit" P. Prusinkiewicz, ym. 14.11.2005 - Tassu Animaatio 2005 - luento 8 15
L-systeemit Aristid Lindenmayer & Premyszlaw Prusinkiewicz Paljon kasvien mallinnusta... Yksinkertainen kielioppi ja korvaussäännöt 14.11.2005 - Tassu Animaatio 2005 - luento 8 16
Säännöstöt Initiator Generator Kochin lumihiutale Aksiooma säännöt Chomskyn mallissa säännöt sovelletaan peräkkäin L-systeemeissä säännöt rinnakkain Esimerkki w: aba p1: a->bb p2: b->a G1: bbabb G2: aabbaa G3: bbbbaabbbb G4: aaaabbbbaaaa 14.11.2005 - Tassu Animaatio 2005 - luento 8 17
Kilpikonnagrafiikka F, eteenpäin piirtäen d-pituisen janan f, eteenpäin d yksikköä ilman piirtoa +, käännös vasemmalle δ astetta -, käännös oikealle δ astetta Kochin saari (δ = 90 ) w: F-F-F-F http://www.logosurvey.co.uk/interact/applets.php p1: F -> F-F+F+FF-F-F+F 14.11.2005 - Tassu Animaatio 2005 - luento 8 18
3D kilpikonna &, käännös alaspäin (pitch down) ^, käännös ylöspäin (pitch up) \, roll left /, roll right, täyskäännös (180 astetta) 3D Hilbert-käyrä 14.11.2005 - Tassu Animaatio 2005 - luento 8 19
Haarautuminen Puissa, pensaissa, jne. on oksia -> tarvitaan haarautumisia Voidaan toteuttaa f primitiivillä, mutta helpompi tapa on määritellä pino-operaattorit: [, push laittaa kilpikonnan tilan pinon päälle ], pop palauttaa kilpikonnan pinon päällimäisenä olevaan tilaan ja poistaa sen pinosta. Solmu- ja särmäsäännöt (node and edge rewriting rules) 14.11.2005 - Tassu Animaatio 2005 - luento 8 20
Satunnaisuus Edelliset mallit täysin determinisitisiä, jolloin saman säännöstön ja alkutilan kasvit aina identtisiä Lisäämällä satunnaisuutta saadaan aikaan vaihtelua Tilastolliset säännöt w: F p1: F ->(0.33) F[+F]F[-F]F p2: F ->(0.33) F[+F]F p3: F ->(0.33) F->F[-F]F 14.11.2005 - Tassu Animaatio 2005 - luento 8 21
Kontekstiriippuvat L-systeemit Signaalien välittäminen Lisämääritykset: <, ehto oikealla >, ehto vasemmalla Esimerkki: w: baaaa p1: b<a -> b p2: b -> a G1: baaaa G2: abaaa G3: aabaa G4: aaaba 14.11.2005 - Tassu Animaatio 2005 - luento 8 22
Lisää kontrollia Parametriset L-systeemit Lehtien piirto määrätään reunaviiva {} määreillä Piirtoprimitiivit viiva / sylinteri värien käsittely Esimerkki 14.11.2005 - Tassu Animaatio 2005 - luento 8 23
14.11.2005 - Tassu Animaatio 2005 - luento 8 24
Geneettiset biomorfit Yoichiro Kawaguchi http://www.race.u-tokyo.ac.jp/~yoichiro/main.html 14.11.2005 - Tassu Animaatio 2005 - luento 8 25
Geneettiset algoritmit (GA) Analogia luonnon evoluutiosta: geenisekvenssi määrittelee millainen olio kulloinkin syntyy, risteytyksessä rekombinoidaan vanhempien geenejä Esitetään olion määrittelevät parametrit yhtenä vektorina (=genotyyppi) Alkaen satunnaisesti tuotetuista parametreista, toistetaan: kahden eri olion parametrivektorit risteytetään, vaihtamalla satunnaisesti valituista kohdista niiden parametriarvoja keskenään risteytysten tuloksista generoidaan uusia oliota (=fenotyyppi), evoluutioketjussa syntyy uusi sukupolvi syntyneistä olioista valitaan parhaat (jonkin sopeutumiskriteerin mukaan), joiden parametrivektoreita käytetään seuraavan sukupolven tuottamiseen risteytyksellä risteytyksen oheella voidaan käyttää variointiin myös satunnaismuutoksia (=mutaatio) 14.11.2005 - Tassu Animaatio 2005 - luento 8 26
Esimerkki www.genarts.com/karl/papers/siggraph91.html 14.11.2005 - Tassu Animaatio 2005 - luento 8 27
Genetic images Karl Sims http://www.genarts.com/karl/ 14.11.2005 - Tassu Animaatio 2005 - luento 8 28
Geneettinen ohjelmointi Variaatio GA:sta: parametrivektorien sijasta käsitellään suoraan ohjelmakoodia, joka generoi olioita Koodi kätevää esittää LISP-lausekkeina Rekombinaatio risteytyksessä voi tarkoittaa lausekerakenteen lehtisolmujen (operaattori, muuttuja tai vakio) tai kokonaisten alipuiden (osalausekkeiden) vaihtamista keskenään 2D-kuvat: lausekkeessa koordinaatit (x,y) muuttujina, evaluloidaan väriarvon tuottava lauseke joka pikselissä tuottaa animaatiota, jos muuttujana esiintyy myös aika 3D-animaatio: objektin rakenne ja muoto määräytyy parametreista aikariippuvat parametrit ohjaavat objektin sijaintia ja asentoa 3D-simulaatio: objektin rakenne ja käyttäytymissäännöt (motoriset ohjelmat) määrytyvät parametrisesti, animaatio syntyy simulaation tuloksena 14.11.2005 - Tassu Animaatio 2005 - luento 8 29
14.11.2005 - Tassu Animaatio 2005 - luento 8 30
Referenssejä Prusinkiewicz, Lindenmayer: The algorithmic beauty of plants. Springer 1990 Artikkeleita A.R.Smith: grammars, plants and graftals, Siggraph 1984 http://portal.acm.org/citation.cfm?id=808571 K Sims: http://www.genarts.com/karl/ Artificial Evolution for Computer Graphics", Siggraph 1991 Evolving Virtual Creatures, Siggraph 1994 Visual Mathematics http://members.tripod.com/vismath/mart.htm 14.11.2005 - Tassu Animaatio 2005 - luento 8 31
Videot Fraktaaleista Mandelzoom (Comp.Anim.Festival 2) Evoluutiomalleista Sims: Panspermia Latham: A sequence from the evolution of form (Comp.Anim.Festival 2) Kawaguchi 14.11.2005 - Tassu Animaatio 2005 - luento 8 32