Tik-111.5450 Tietokoneanimaatio 2. Avainkuvat ja interpolointi 26.9.05 - Tassu Animaatio 2005 - luento 2 1
Sisältö avainkuvatekniikka yleisesti lineaarinen interpolaatio esimerkkinä, ongelmana derivaatan epäjatkuvuus interpolaatio yleisesti: parametrisillä funktioilla painotettu summa ohjeuspisteistä esimerkkeinä Bezier ja B-splini: eivät kulje ohjauspisteiden kautta interpoloiva splini: käyriä välipisteiden kautta jatkuvuusehdot: C 0 - C 1 - C 2 - C, parametrinen vs. geometrinen jatkuvuus Hermiten käyrä: ekvivalenssi Bezierin kanssa kardinaalisplini: tangentiaalinen jatkuvuus Catmull & Rom: automaattinen tangentin asettaminen Kochanek & Bartels: tension, continuity, bias liikkeen ajoituksen määrittely erillisellä funktiolla parametrointi käyränpituuden suhteen, käyrän pituuden laskenta pisteiden laskeminen käyrällä suora sijoitus summakaavaan; optimointi: monta käyrää peräkkäin vs. rinnakkain Inkrementaalinen laskenta differenssimenetelmällä de Casteljaun menetelmä käyrän uudellen parametrointi ja binäärinen ositus 26.9.05 - Tassu Animaatio 2005 - luento 2 2
Liikkeen määrittely Käsin asettelemalla (perinteinen tapa) Interpoloimalla avainasentoja (keyframing) Erikoistuneilla ohjelmilla (procedural) Rakennekuvauksilla (representational) Satunnaisprosesseilla (stochastic) Käyttäytymissäännöillä (behavioral) 26.9.05 - Tassu Animaatio 2005 - luento 2 3
Liikkeen määrittely (jatkuu) Vaikka proseduraalista animaatiota varten on kehitetty skriptikieliä, on avainkuvatekniikka suosituin: välikuvien laskenta vähentää käsityötä helppo käyttöliittymä (ei ohjelmointia) voi ohjatusti poiketa säännönmukaisuudesta (juuri halutunlaisen liikkeen ohjelmointi on vaikeaa) sekä liikkeen että muodonmuutoksen määrittely samalla kertaa 3D animaatiossa 4 ulottuvuutta (paikka + aika) 26.9.05 - Tassu Animaatio 2005 - luento 2 4
Esimerkki: pomppiva pallo Parabolinen lentorata, muuttuva nopeus Äkillinen suunnanvaihto törmäyksessä Litistyminen ja venyminen squash & stretch 26.9.05 - Tassu Animaatio 2005 - luento 2 5
Parametrinen määrittely (1) Lähtökohta jokainen animoitava ominaisuus on numeerinen muuttuja jokaisessa kuvassa samat toisiaan vastaavat parametrit käyttäjälle parametrit esitetään mieluiten graafisina (pisteen sijainti, viivan suunta, väri, jne.) Mitä hyvänsä voidaan parametroida ja siten animoida olion paikka/nopeus, asento, koko ja muoto osien suhde kokonaisuuteen (esim. silmät päässä) esineiden värit ja tekstuurit (mm. heijastusominaisuudet) valolähteet (paikka, väri, suunta, rajaus, jne.) kameran paikka, asento, kuvakulma, syvyystarkkuus, jne. ääni (rakenne, kaiku, Doppler-efekti, jne.) proseduraalisen määrittelyn parametrit hierarkkinen oliokeskeinen ajattelutapa 26.9.05 - Tassu Animaatio 2005 - luento 2 6
Parametrinen määrittely (2) Avainkuva (keyframe) määrittelee yhdessä animoitavan parametrijoukon tietyssä animaation vaiheessa koko kuva voi muodostua eri tahtiin animoitavista kerroksista täsmällinen aika/kuvanumero voidaan määritellä erikseen Välivaiheet (inbetweens) muodostetaan interpoloimalla lineaarisesti, yhtenäisillä polynomeilla ongelmia paloittain splinifunktioilla Parametrikäyrät: (x,y,z) = ƒ(p1,p2,..., t) 26.9.05 - Tassu Animaatio 2005 - luento 2 7
Parametrikäyrät Vektoriarvoinen yhden muuttujan funktio P(t) = (x,y,z)(t) = ƒ(t) = ( f x (t), f y (t), f z (t) ) Yleensä rajatulla välillä, esim. t [ 0,1 ] Derivaatta on myös vektori Dƒ(t) = dƒ(t)/dt = ( df x /dt, df y /dt, df z /dt )(t) Geometrinen tulkinta on eri asia x = f(y) ei ole yleeensä funktio dx/dy ei aina edes määritelty MILLOIN? vektorin arvona voi olla muutakin kuin geometriaa, esim. värejä (R,G,B,A) tai nivelkulmia (α,β,γ,θ,φ) 26.9.05 - Tassu Animaatio 2005 - luento 2 8
Realistinen interpolointi Jatkuva liike sijainnin jatkuvuus (ei äkillisiä siirtymiä) nopeuden jatkuvuus (1. derivaatta) kiihtyvyyden jatkuvuus (2. derivaatta) Kinetiikka liikkeen aloitukset ja lopetukset, kiihdytykset, jarrutukset Jatkuvuus muutoksissa - vaihdokset interpoloinnista toiseen Avainkuvan paikallinen vaikutus vaikutusta vain seuraavaan/edelliseen avainkuvaan asti 26.9.05 - Tassu Animaatio 2005 - luento 2 9
Interpoloinnin aspekteja Interpolointi vs. approksimointi Jatkuvuus C 0 (ei derivoituva) jatkuva käyrä C 1 (1. aste) tangentit samansuuntaisia C 2 (2. aste) kaarevuus sama C (rajattomasti derivoituva) määrittely ei paloittainen Mallinnuksessa voidaan tarvita 2. asteen jatkuvuutta, yleensä animaatiossa 1. aste riittää vastaesimerkki: ajoradan kaarteet MIKSI? Paikallinen vs. globaali kontrolli 26.9.05 - Tassu Animaatio 2005 - luento 2 10
Geometrinen jatkuvuus G - ei jatkuva G 0 jatkuva, kulmikas G 1 tangentiaalisesti jatkuva G 2 kaarevuusjatkuva 26.9.05 - Tassu Animaatio 2005 - luento 2 11
Palapolynomit eli splinit Matala-asteiset polynomit käteviä parametrifunktioina laskennallisesti helppoja derivoituvia (C ) Yhden polynomin käyttö koko käyrällä hankalaa asteluku = vapausasteiden määrä approksimoiva käyrä ei sivua ohjauspisteitä interpoloiva käyrä (Lagrange) käyttäytyy villisti pisteiden välillä http://www.ibiblio.org/e-notes/splines/lagrange.htm Ratkaisu: splini eli palapolynomi matala-asteisia polynomikäyriä solmuparien välillä knot = käyrällä sijaitseva piste, jossa määrittely vaihtuu käytännössä yleensä 3 polynomi riittävä jatkuvuusehdot solmukohdissa järjestettävissä 26.9.05 - Tassu Animaatio 2005 - luento 2 12
Bezier-käyrä ja B-splini Yksi polynomifunktio koko käyrälle ohjauspisteiden määrä = asteluku+1 Globaali ohjaus jokainen ohjauspiste vaikuttaa koko käyrään Approksimoiva interpoloi päätepisteitä Palapolynomi asteluku valittavissa Lokaali ohjaus ohjauksen vaikutusalue asteluvun mukaan Approksimoiva voidaan määritellä päätepisteitä interpoloivaksi solmupisteet käyrällä mutta eivät ohjattavissa 26.9.05 - Tassu Animaatio 2005 - luento 2 13
Hermiten käyrä Hermiten kantafunktiot (ranskalainen matemaatikko Charles Hermite) Interpoloi ohjauspisteitä ja niissä määriteltyjä tangentteja johdannainen Lagrangen polynomeista (interpoloi annettuja pisteitä polynomilla) polynomin aste = 2 x ohj.pisteiden määrä - 1 Käytännöllinen splinikäyrän yhden solmuvälin esittämisessä (2 pistettä 3 käyrä) kussakin solmussa määriteltävä myös tangentti 26.9.05 - Tassu Animaatio 2005 - luento 2 14
Hermite (jatkuu) Interpolointi yleensä 3. asteen polynomit tarjoavat riittävästi vapausasteita (4 kpl): kuljetaan alkupisteen kautta kuljetaan loppupisteen kautta tangentti alussa tangentti lopussa Ekvivalenssi Bezier-käyrän kanssa Bezier-käyrän päätepisteessä tangentti = 3 x (ohjauspisteiden erotusvektori) 26.9.05 - Tassu Animaatio 2005 - luento 2 15
Hermite (jatkuu) P = päätepiste D = päätetangentti 26.9.05 - Tassu Animaatio 2005 - luento 2 16
Kardinaalisplinit Perustuu Hermiten käyriin kullakin solmuvälillä polynomikäyrä lokaali ohjaus: piste + tangentit Tangentiaalinen jatkuvuus (C 1 ) haluttaessa tangenttivektorit säädettävissä interaktiivisesti, tai automaattisesti viereisten ohjauspisteiden perusteella Catmull-Rom-splini erikoistapauksena tangentti = naapuripisteiden erotusvektori / 2 päätepisteessä tangentti määriteltävä erikseen 26.9.05 - Tassu Animaatio 2005 - luento 2 17
Catmull-Rom splini P 2 D 1 = (P 3 - P 1 ) / 2 P 4 P 1 P 3 D 2 = (P 4 - P 2 ) / 2 26.9.05 - Tassu Animaatio 2005 - luento 2 18
TCB-splini Lue artikkeli: Kochanek & Bartels http://portal.acm.org/citation.cfm?id=808575 Kardinaalisplinien laajennus tangenttivektorit solmupisteissä määrittyvät painotettuna summana naapuripisteistä kolme parametria (Tension, Continuity, Bias) kullekin ohjauspisteelle 26.9.05 - Tassu Animaatio 2005 - luento 2 19
TCB splini (jatkuu) tangenttivektorit DS ja DD muodostuvat vierekkäisten ohjauspisteiden erotuksista, mutta painokertoimet voivat vaihdella kuten Catmull-Rom, mutta kerroin voi olla muutakin kuin 1/2 t,c,b [ -1,+1 ] 26.9.05 - Tassu Animaatio 2005 - luento 2 20
TCB: tension käyrän kireys (kaarevuussäde) liitoskohdassa säädeltävissä parametrinen jatkuvuus säilyy, tangenttivektorin pituus muuttuu 26.9.05 - Tassu Animaatio 2005 - luento 2 21
TCB: continuity liitoskohdassa tangentiaalinen epäjatkuvuus syntyvä kulma säädettävissä piikki (c < 0) lovi (c > 0) 26.9.05 - Tassu Animaatio 2005 - luento 2 22
TCB: bias liitostangentin kaltevuus säädeltävissä ylilyönti (b > 0) ennakointi (b < 0) 26.9.05 - Tassu Animaatio 2005 - luento 2 23
TCB: yhdistetty ohjaus parametrit (t,c,b) määriteltävissä erikseen kullekin ohjauspisteelle paljon mahdollisuuksia! t=c=b=0 Catmull-Rom 26.9.05 - Tassu Animaatio 2005 - luento 2 24
Luonnollinen splini Ohjauspisteiden interpolointi fysikaalisesti taipuisa viivotin pakotetaan menemään pisteiden kautta, tangentteja ei sidota taivutusenergia minimoidaan tuloksena 3 splinikäyrä Globaali ohjaus hankalahko laskea 26.9.05 - Tassu Animaatio 2005 - luento 2 25
Rationaalisplinit Tavanomainen polynomikäyrä (x,y,z)(t) = Σ P i B i (t) P i = ohjauspiste kullekin koordinaatille polynomi samasta kannasta B(t) vektorifunktio on painotettu summa ohjauspisteistä Rationaalikäyrä (x,y,z,w)(t) = Σ P i B i (t) kullekin koordinaatille rationaalifunktio x(t)/w(t) ohjauspisteille painokertoimet w(t) vapauksia mm. tarkka esitys 2 käyrille (ellipsi/parabeli/hyperbeli) Voidaan soveltaa mille hyvänsä käyrätyypeille, erityisen suosittu on NURBS: non-uniform rational B-spline polynomikantana B-splinit rationaalimuodossa solmupisteet eivät tasavälisesti parametriasteikolla 26.9.05 - Tassu Animaatio 2005 - luento 2 26
Spliniyhteenveto Splinit Approksimoivat Interpoloivat Bezier B-splinit Beta-splinit Luonnolliset splinit Hermiten splinit Kardinaalisplinit Catmull-Rom TCB 26.9.05 - Tassu Animaatio 2005 - luento 2 27
Nopeuden hallinta (1) Edelliset keskittyivät paikan jatkuvuuteen Aikaulottuvuus tekee interpoloinnin haasteellisemmaksi muotoa ohjaava parametrointi saattaa käyttäytyä yllättävästi! Toteutetaan käyräparametrin muutosta säätelemällä ( s(t) ) funktion oltava monotoninen ja jatkuva voidaan toteuttaa keyframe-tekniikalla (aika kunkin avainkuvan kohdalla) tai erikseen editoitavalla käyrällä käyrä parametroitava pituuden (s) suhteen 1.20 1.00 0.80 0.60 s 0.4 1.0 0.40 t = 0.0 0.6 0.20 0.00 t 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 (x,y,z)(s) = Σ P i B i i (s) i (s) s s = f(t) f(t) 26.9.05 - Tassu Animaatio 2005 - luento 2 28
Nopeuden hallinta (2) Tyypillinen tavoite: Ease-in/Ease-out vain päätepisteille, ei väliohjauspisteille voidaan toteuttaa cos-funktiolla laskennallisesti helpompaa on määritellä kiihtyvyys nopeus saadaan integroimalla kiihtyvyys paikka saadaan integroimalla nopeus Voidaan luonnollisesti tehdä myös splineillä Käyrän pituuden laskenta integroimalla ks. oppikirja analyyttisesti (sopii polynomi-splineille) numeeerisesti approksimoimalla askelittain Huom. geometrinen jatkuvuus == käyrän derivoituvuus pituusparametrin suhteeen 26.9.05 - Tassu Animaatio 2005 - luento 2 29
Pisteiden laskenta (1) Suora sijoitus summakaavaan (x,y,z)(t) = Σ P i B i (t) optimointi: monta arvoa peräkkäin (t muuttuu) vai vektorina rinnakkain (x,y,z samalle t-arvolle)? termien järjestely minimoi laskutoimitusten määrän at 3 + bt 2 + ct + d = ((at + b)t + c)t + d Yleiskaaava sama sama kaikille kaikille splineille -- erona erona kantafunktiot B i (t) i (t) ja ja se, se, mitkä mitkä indeksit indeksit i i mukana mukana summassa. Inkrementaalinen laskenta differenssimenetelmällä diskreetti differentiointi summakaavalle x(t+ t) = x(t) + ƒ(t, t) differenssifunktio ƒ() on astetta alempi polynomi samaa kaavaa voidaan soveltaa rekursiivisesti soveltuu tasavälisten arvojen perättäiseen laskentaan 26.9.05 - Tassu Animaatio 2005 - luento 2 30
Pisteiden laskenta (2) de Casteljaun menetelmä kätevä mielivaltaisen pisteen laskentaan rekursiivisesti lineaarisen interpolaation (lerp) avulla P 0 1 (t) = (1-t) P 0 + t P 1 P 0 2 (t) = (1-t) P 0 1 (t) + t P 1 1 (t) P (t) = (1-t) P 0 2 (t) + t P 1 2 (t) toteuttaa samalla käyrän uudelleen parametroinnin oheistuotteena ohjauspisteet ositetulle käyrälle P 0, P 0 1 (t), P 0 2 (t), P(t) rekursiivinen osiinjako algoritmina erityisen helppoa laskea käyrän keskipiste (t = 0.5) mielivaltainen piste löytyy puolitushaulla sovelluksia parametripintojen käsittelyssä! ekvivalenssi Bezier-käyrän kanssa sama tulos, kun summakaavan termit järjestetään sopivasti http://www.ibiblio.org/e-notes/splines/bezier.htm 26.9.05 - Tassu Animaatio 2005 - luento 2 31
Harjoitustehtävä assistenttitiimi: Teemu Mäki-Patola Tommi Tykkälä Markku Reunanen ohjelmointiympäristönä OpenGL laiteriippumaton ohjelmarunko tarjolla valmiina harjoitustehtävissä ohjelmarunkoon lisätään liikkeen määrittely (esim. kuinka pupu hyppelee) tarkemmat ohjeet ensi luennolla, ja piakkoin myös webissä http://www.tml.hut.fi/opinnot/t-111.5450/2005/harjoitustyot/ 26.9.05 - Tassu Animaatio 2005 - luento 2 32
Videot Klassikoita 80-luvulta (tyypillistä jäykät geometriset muodot ja yksinkertaiset liikeradat) Odyssey Intro Quest Adam Powers Works Oscar-voittaja vuodelta 1998 Best animated short Bunny (Chris Wedge) Luennon aiheeseen liittyvää muuta materiaalia http://escience.anu.edu.au/lecture/cg/spline/parametric.en.html 26.9.05 - Tassu Animaatio 2005 - luento 2 33