Tik-111.5450 Tietokoneanimaatio 5.luento: dynamiikka (rigid body dynamics, physically based models, constraints) 17.10.05 - Tassu Animaatio 2005 - luento 5 1
Sisältö fysiikan kertausta: Newtonin lait, vapaakappalemalli, translaatioliike pyörimisliike: erottaminen translaatiosta, liikeyhtälöt vuorovaikutusvoimia: gravitaatio, (sähkö/magnetismi), jousto, viskositeetti, törmäykset, kitka numeerista integrointia: Euler, Simpson,... vapaa liike avaruudessa, planeetat, raketti pyörimisliikkeen sivuvaikutukset: coriolis, prekessio kovien esineiden törmäykset, liikemäärän yhtälöt impulssin laskenta, esimerkkejä: biljardipallot, kuutiot jousiyhtälöt, joustava törmäys kitkavoimat holonomiset rajoitteet, kinemaattisten rakenteiden dynamiikka, rankaisuvoima käänteisdynamiikka, teleologinen mallintaminen esimerkkejä videolta... Harjoitustehtävä: biljardi, pöydälle putoava kuutio (tai palloja), tms. 17.10.05 - Tassu Animaatio 2005 - luento 5 2
Fysiikan kertausta (1) Peruskäsitteitä paikka x, nopeus v = dx/dt, kiihtyvyys a = dv/dt = d 2 x/dt 2 voima F, Massa m, Newtonin lait (1) inertia (2) F = ma (3) vastavoima Analogisesti pyörimisliikkeelle asento φ, kulmanopeus ω = dφ/dt, kulmakiihtyvyys α = dω/dt = d 2 φ/dt 2 kätevää esittää asento ja sen derivaatat vektorina tai kvaterniona momentti T = Fh (h=voiman etäisyys kiertoakselista), hitausmomentti I (1) pyörimisnopeus ja -akseli säilyvät (2) T = Iα (3) vastamomentti Vapaakappalemalli translaatio ja rotaatio erotetaan toisistaan: summataan voimat massakeskipisteeseen (CM) ja momentit CM:n ympäri kytketyt objektit irrotetaan (vuorovaikutus voimaparina) kappaleen liikeyhtälöt lasketaan CM:lle 17.10.05 - Tassu Animaatio 2005 - luento 5 3
Yksinkertaisia tapauksia vapaa liike avaruudessa, planeetat, raketti, heitetty esine Kuva Alonso-Finn 17.10.05 - Tassu Animaatio 2005 - luento 5 4
Fysiikan kertausta (2) Liikemäärä p = mv [kg m/s] törmäyksissä Σp säilyy Liike-energia E = 1/2 mv 2 = pv = p 2 /2m [kg m 2 /s 2 ] säilyy, jollei ulkoisia voimia voiman tekemä työ E = F x [F kg m/s 2 ] Vuorovaikutusvoimia jousivoima F x gravitaatio F m 1 m 2 /d 2 magneettikenttä F qb v kitka F Fn virtausvastus F va Potentiaalienergia voimakentässä esim. gravitaatiolle E = mg x 17.10.05 - Tassu Animaatio 2005 - luento 5 5
17.10.05 - Tassu Animaatio 2005 - luento 5 6
17.10.05 - Tassu Animaatio 2005 - luento 5 7
17.10.05 - Tassu Animaatio 2005 - luento 5 8
17.10.05 - Tassu Animaatio 2005 - luento 5 9
Pistemassan liikeyhtälö m d 2 x/dt 2 + ß dx/dt + k x = F ext Käyttökelpoinen monessa yhteydessä! Esim. teleskooppijalka Ratkaisuna harmoninen liike x(t) = x 0 e -ßt cos(t k/m 2π) m F x 1 0.8 k ß 0.6 0.4 0.2 0-0.2-0.4-0.6-0.8-1 17.10.05 - Tassu Animaatio 2005 - luento 5 10
Fysiikan numeerinen laskenta Perusyhtälöt integraaleja: a(t) = Σ F(t) / m ; v(t) = a dt ; x(t) = v dt Diskretoidaan differenssikaavoiksi: numeerista integrointia! Eulerin menetelmä: v(t+ t) = v(t) + t a(t); x(t+ t) = x(t) + t v(t) Ongelmia virheet kumuloituvat nopeasti epästabiilisuus Neptune effect Askeleen t pienentäminen pienentää virheitä lisää laskentatyötä 17.10.05 - Tassu Animaatio 2005 - luento 5 11
Muita integrointimenetelmiä Puolisuunnikassääntö A = x (f(x) + f(x+ x)) / 2 Midpoint rule A = x f(x+ x/2) virheet kumuloituvat paljon hitaammin! kuten Euler, mutta lasketaan nopeus puolen askeleen vaihesiirrossa a(t) = F(t) / m ; v(t+ t/2) = v(t- t/2) + t a(t) ; x(t+ t) = x(t) + t v(t+ t/2) Simpsonin kaava 2 polynomiapproksimaatio Runge-Kutta suositeltavin menetelmä A A 17.10.05 - Tassu Animaatio 2005 - luento 5 12
Pyörimisliike Kappaleen hitausmomentti z-akselin ympäri I z = ρ (x 2 + y 2 ) dv Hitausmomentin laskenta kaikkien suuntien suhteeen matriisimuodossa I obj = Rotaatiolla akselit käännettävissä niin että matriisi diagonaalinen saadaan kappaleen pääakselit Kunkin pääakselin ympäri pyöriminen helppoa, analogiset kaavat translaatioliikkeen kanssa Yleisessä tapauksessa hitausmomentti muuttuu pyörimisliikkeen mukana laskettava joka hetki uudelleen tapahtuu similariteettimuunnoksella I (t) = R(t) I obj R -1 (t) Similariteettimuunnos siirtää maailman sopivaan koordinaatistoon, jossa I obj operoi, ja sitten takaisin Tuttua grafiikasta? vrt. rotaatio/skaalaus kiintopisteen suhteen 17.10.05 - Tassu Animaatio 2005 - luento 5 13
17.10.05 - Tassu Animaatio 2005 - luento 5 14
Hitausmomentin laskenta Numeerinen integrointi I z = ρ (x 2 + y 2 ) dv I z i ρ (x 2 + y 2 ) V i Yksinkertaisille muodoille tarkkoja kaavoja Monimutkainen muoto jaetaan osiin, joiden hitausmomentit summataan (etäisyyden neliöllä painotettuina) esim. kuutiot karusellissa Hankalammat muodot pilkotaan viipaleiksi tai vokseleiksi, jotka summataan äärellisinä tilavuuselementteinä toimii myös tiheydeltään (ρ) vaihtelevalle materiaalille Analogisesti lasketaan muitakin tilavuusintegraaleja, esim. massakeskipiste CM x = 1/M ρx dv, jossa M = ρ dv 17.10.05 - Tassu Animaatio 2005 - luento 5 15
Pyörimisen kokonaisyhtälöt Kappaleen asema kullakin hetkellä voidaan ilmaista tilavektorilla S(t) = [ x(t), R(t), P(t), L(t) ] T missä x = paikka, R = asento (R matriisi, muut vektoreita) Lasketaan apusuureet P = liikemäärä eli impulssi (linear momentum) L = impulssimomentti (angular momentum) I(t) = R(t) I obj R T (t), ω(t) = I(t) -1 L(t), v(t) = P(t) / m Tilavektorin muutos ajassa on sitten ds/dt = [ v(t), ω(t)*r(t), F(t), τ (t) ] missä F = ulkoiset voimat, τ = ulkoiset momentit ja ω*r = [ ω R 1, ω R 2, ω R 3 ], R i = sarake i Näitä yhtälöitä integroidaan askelittain 17.10.05 - Tassu Animaatio 2005 - luento 5 16
Tilayhtälöt koottuna Laskentajärjestys: (1) Alustus: laske hitausmomentti I obj ja lähtötila S(t 0 ) (2) Nykytilan analyysi: laske I(t), ω(t) ja v(t), sekä ulkoiset F(t) ja τ(t) (3) Integroi differentiaaliyhtälöstä seuraava tila S(t+ t) (4) Tutki mahdolliset törmäykset; - jos on, niin päivitä momentteja P(t) ja L(t), ja laske samalla energiahäviö. (5) Renderoi kuva (6) Jatka iteraatiota kohdasta (2) 17.10.05 - Tassu Animaatio 2005 - luento 5 17
Vielä pyörähtelystä Myös massa m(t) voi riippua ajasta, mikä vaikuttaa hitausmomenttiin I obj (t) esim. avaruusraketti Vakiomassankin jakauma voi vaihdella esim. voltti/uimahyppy kierteellä, tai kiihdytyspiruetti luistimilla Video: Atlanta in motion Pyöriminen ulkoisten voimien vaikuttaessa Coriolis: esim. matalapainesykloni, hurrikaani prekessio: hyrrän akselin keinuminen 17.10.05 - Tassu Animaatio 2005 - luento 5 18
Esineiden törmäilyt Joustavien materiaalien kohtaaminen muodonmuutos mallinnetaan jousena vaimennus otettava huomioon m F x Kosketuksen kesto ja syvyys hetkittäin collision detection k ß geometrista etäisyyslaskentaa Varoitus: Neptune effect liian jäykkä materiaali ratkaisu 1: adaptiivinen askelpituus integroinnissa ratkaisu 2: liikemäärän laskenta (ks. seuraavat sivut) Muodonmuutoksen visualisointi 17.10.05 - Tassu Animaatio 2005 - luento 5 19
Kovien esineiden törmäys Törmäyshetkellä vaikuttaa hyvin nopeasti iso voima (impulssi) tavallinen voiman ja kiihtyvyyden laskenta ei toimi! lasketaan liikemäärän muutosta p = F(t)dt Yleensä riittää analysoida kahta kappaletta yhdessä (todennäköisyys monen yhtäaikaiseen törmäykseen hyvin pieni) Liikemäärä ja energia säilyvät kimmoisessa törmäyksessä p = p 1 + p 2 = p 1 * + p 2 * ( * törmäyksen jälkeen ) ja 2 E = p 1 v 1 + p 2 v 2 = p 1 * v 1 * + p 2* v 2 * Vastaavanlaiset yhtälöt pyörimisliikkeelle L = L 1 + L 2 = L 1 * + L 2 * ja 2 E = L 1 ω 1 + L 2 ω 2 = L 1 * ω 1 * + L 2 * ω 2 * 17.10.05 - Tassu Animaatio 2005 - luento 5 20
Impulssinvaihto Periaate laskennassa: erotellaan liikemäärä komponentteihin (a) yhteisen massakeskipisteen liike p CM = p 1 + p 2 Säilyy törmäyksessä (b) kummankin kappaleen liike CM:n suhteen p 1 = p 1-1/2 p CM Summa p1 + p2 = 0 säilyy Saman kokoinen, vastakkaismerkkinen muutos molemmissa impulssi p vaihtuu kappaleesta toiseen (p 1 + p) + (p 2 - p) = 0 17.10.05 - Tassu Animaatio 2005 - luento 5 21
Energian säilyminen Energiaa voi myös hävitä muodonmuutoksiin kokonaisliikemäärä säilyy tässäkin tapauksessa merkintä: W ω Yleistetty Newtonin laki ε = coefficient of restitution kimmoinen törmäys: kaikki energia säilyy ε = 1 kimmoton törmäys: maksimaalinen energiahäviö ε = 0 (esineet sulautuvat toisiinsa) 17.10.05 - Tassu Animaatio 2005 - luento 5 22
Esimerkki 1: pomppiva pallo /*** ball falling sequence ***/ lastframe = -1; for(time=0;time<=simultime;time+=simulstep) { frame = time * FRAMERATE; if(frame > lastframe) { makeframe(viewangle,eye,coi,ballname,ball,frame); lastframe = frame; } y < r velocity[y] += SIMULSTEP * GRAVITY; ball [Y] += SIMULSTEP * velocity[y]; if(ball[y] < BALLSIZE) /* bounce */ { moveback = BALLSIZE - ball[y]; bouncetime = time - (moveback / velocity[y]); törmäyshetken laskenta tarkasti } } simulointi ja animaatio eri aika-askelin ball[y] += 2 * moveback; velocity[y] = -DAMPING * velocity[y]; impulse = velocity[y]; // makesound(bouncetime, impulse); if(fabs(velocity[y]) < -GRAVITY*SIMULSTEP) break; liike ei enää laskettavissa r + + impulssin heijastuminen + y 17.10.05 - Tassu Animaatio 2005 - luento 5 23
Esimerkki 2: biljardipallot Tarkastellaan yhteisen massakeskipisteen suhteen Törmäysimpulssi p aina pallon säteen suunnassa vastaavaa kuin törmäys kiinteään seinään jos ei kitkaa, ei pallon pyöriminen vaikuta epärealistista! Suorassa törmäyksessä pallot vaihtavat koko liikemääränsä keskenään p 1* = p 2 ja p 2* = p 1 p p (1) (2) Vinossa törmäyksessä p ei ole samansuuntainen kuin pallojen liike liikemäärä heijastuu törmäyksen tangenttitasosta p = 2 p N (3) 17.10.05 - Tassu Animaatio 2005 - luento 5 24
Esim. 3: partikkeli ja kappale Partikkeli osuu liikkumattomaan esineeseen (2D-tarkastelu, törmäys pinnan normaalin suunnassa) Liikemäärän (p) ja impulssimomentin (L) yhteys: dp/dt = F, dl/dt = r F = r dp/dt L = r p Yhtälöt ennen/jälkeen törmäyksen p 0 = p 1 + p 2 (p=mv) r p 0 = r p 1 + L (L = Iω) energiatasapaino: p 02 /m = p 12 /m + p 22 /M + L 2 /I Ratkaisu p 2 =. 1/m. p 0 1/m + 1/M + r 2 /I ja p 1 = p 0 - p 2, L = r p 2 Laskuharjoitus: entä jos m jää kiinni kappaleeseen? m L m r p 0 p 1 I M p 2 (1) (2) 17.10.05 - Tassu Animaatio 2005 - luento 5 25
Monitahokkaiden törmäilyistä Törmäyssuunta kohtisuorassa tasoa vastaan jos nurkittain, niin approksimoidaan Tormäyskohdan hakeminen on geometrista laskentaa: point-in-polyhedron edge-face intersection back vector tarkan kohdan selvittämiseksi 17.10.05 - Tassu Animaatio 2005 - luento 5 26
Referenssejä Perusteellinen johdanto, kaavoja, koodia Witkin & Baraff: Siggraph 97 tutorial http://www-2.cs.cmu.edu/afs/cs.cmu.edu/user/baraff/www/sigcourse/ Kirja + video: Making Them Move (eds. Badler ) 1991 Artikkeleita Hahn: Realistic animation of rigid bodies, Siggraph 88 http://portal.acm.org/citation.cfm?id=378530 Baraff: useita artikkeleita, mm. Siggraph 89 http://www-2.cs.cmu.edu/~baraff/papers/index.html Hodgins: Animating Human Athletics, Siggraph 95 http://portal.acm.org/citation.cfm?id=218414 Raibert +: Animation of dynamic legged locomotion, Siggraph 91 http://portal.acm.org/citation.cfm?id=122755 Jane Wilhelms:??? Witkin & Kass: Spacetime Constraints, Siggraph 88 http://portal.acm.org/citation.cfm?id=378507 17.10.05 - Tassu Animaatio 2005 - luento 5 27
Videot Atlanta in Motion, J.Hodkins 1996 On the Run, MIT leg lab 1989 17.10.05 - Tassu Animaatio 2005 - luento 5 28