330 likes | 575 Views
Tik-111.450 Animaatio ja mallintaminen. 5.luento: rigid body dynamics, physically based models, constraints. Sisältö. fysiikan kertausta: Newtonin lait, vapaakappalemalli, translaatioliike pyörimisliike: erottaminen translaatiosta, liikeyhtälöt
E N D
Tik-111.450 Animaatio ja mallintaminen 5.luento: rigid body dynamics, physically based models, constraints Animaatio 2004 - luento 5
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. Animaatio 2004 - luento 5
Fysiikan kertausta (1) • Peruskäsitteitä • paikka x, nopeus v = dx/dt, kiihtyvyys a = dv/dt = d2x/dt2 • voima F, Massa m, • Newtonin lait (1) inertia (2) F = ma (3) vastavoima • Analogisesti pyörimisliikkeelle • asento f, kulmanopeus w = df/dt, kulmakiihtyvyys a = dw/dt = d2f/dt2 • kätevää esittää asento ja sen derivaatat vektorina tai kvaterniona • momentti T = Fh, hitausmomentti I (1) pyörimisnopeus ja -akseli säilyvät (2) T = Ia (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 Animaatio 2004 - luento 5
Yksinkertaisia tapauksia • vapaa liike avaruudessa, planeetat, raketti, heitetty esine… • Kuva Alonso-Finn Animaatio 2004 - luento 5
Fysiikan kertausta (2) • Liikemäärä p = mv [kg m/s] • törmäyksissä Sp säilyy • Liike-energia E = 1/2 mv2 = pv = p2/2m [kg m2/s2] • säilyy, jollei ulkoisia voimia • voiman tekemä työ E = F∆x [F ≈ kg m/s2] • Vuorovaikutusvoimia • jousivoima F ≈ ∆x • gravitaatio F ≈ m1m2/d2 • magneettikenttä F ≈ qB v • kitka F ≈ Fn • virtausvastus F ≈ vA • Potentiaalienergia voimakentässä • esim. gravitaatiolle E = mg∆x Animaatio 2004 - luento 5
F x m ß k Pistemassan liikeyhtälö m d2x/dt2 + ß dx/dt + k x = ∑ Fext • Käyttökelpoinen monessa yhteydessä! • Esim. teleskooppijalka • Ratkaisuna harmoninen liike x(t) = x0e-ßt cos(t √ k/m 2π) Animaatio 2004 - luento 5
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ä Animaatio 2004 - luento 5
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 lasketaannopeus 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 Animaatio 2004 - luento 5
Pyörimisliike • Kappaleen hitausmomentti z-akselin ympäri Iz = (x2 + y2) dV • Hitausmomentin laskenta kaikkien suuntien suhteeen matriisimuodossa Iobj = • 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) IobjR-1(t) Similariteettimuunnos siirtää maailman sopivaan koordinaatistoon, jossa Iobj operoi, ja sitten takaisin Tuttua grafiikasta ? vrt. rotaatio/skaalaus kiintopisteen suhteen… Animaatio 2004 - luento 5
Hitausmomentin laskenta • Numeerinen integrointi Iz = (x2 + y2) dV Iz ≈ ∑i (x2 + y2) Vi • 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 CMx = 1/M x dV , jossa M = dV Animaatio 2004 - luento 5
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) P = liikemäärä eli impulssi (linear momentum) L = impulssimomentti (angular momentum) • Lasketaan apusuureet I(t) = R(t)IobjRT(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 = [ R1, R2 , R3 ], Ri = sarake i • Näitä yhtälöitä integroidaan askelittain Animaatio 2004 - luento 5
Tilayhtälöt koottuna Laskentajärjestys: • Alustus: laske hitausmomentti Iobjja lähtötila S(t0) • Nykytilan analyysi:laske I(t), (t) ja v(t),sekä ulkoiset F(t) ja (t) • Integroi differentiaali-yhtälöstä seuraava tila S(t+∆t) • Tutki mahdolliset törmäykset;- jos on, niin päivitä momentteja P(t) ja L(t), ja laske samalla energiahäviö. • Renderoi kuva • Jatka iteraatiota kohdasta (2) Animaatio 2004 - luento 5
Vielä pyörähtelystä… • Myös massa m(t) voi riippua ajasta,mikä vaikuttaa hitausmomenttiin Iobj(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 Animaatio 2004 - luento 5
F x m ß k Esineiden törmäilyt • Joustavien matriaalien kohtaaminen • muodonmuutos mallinnetaan jousena • vaimennus otettava huomioon • Kosketuksen kesto ja syvyys hetkittäin • “collision detection” • geometrista etäisyyslaskentaa • Varoitus: “Neptune effect” • liian jäykkä materiaali • ratkaisu 1: adaptiivinenaskelpituus integroinnissa • ratkaisu 2: liikemäärän laskenta(ks. seuraavat sivut) • Muodonmuutoksen visualisointi Animaatio 2004 - luento 5
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 = p1 + p2 = p1* + p2*( * törmäyksen jälkeen ) ja 2*E = p1 ·v1 + p2 · v2 = p1*· v1* + p2*· v2* • Vastaavanlaiset yhtälöt pyörimisliikkeelle L = L1 + L2 = L1* + L2* ja 2*E = L1 1 + L2 2 = L1*1* + L2*2* Animaatio 2004 - luento 5
Impulssinvaihto • Periaate laskennassa: erotellaan liikemäärä komponentteihin • (a) yhteisen massakeskipisteen liike pCM = p1 + p2 • Säilyy törmäyksessä • (b) kummankin kappaleen liike CM:n suhteen p1’ = p1 - 1/2 pCM • Summa p1’ + p2’ = 0 säilyy • Saman kokoinen, vastakkaismerkkinen muutos molemmissa • impulssi ∆p vaihtuu kappaleesta toiseen (p1’ + ∆p) + (p2’ - ∆p) = 0 Animaatio 2004 - luento 5
Energian säilyminen • Energiaa voi myös hävitä muodonmuutoksiin • kokonaisliikemäärä säilyy tässäkin tapauksessa • Yleistetty Newtonin laki = “coefficient of restitution” • kimmoinen törmäys: energia säilyy = 1 • kimmoton törmäys: maksimaalinen energiahäviö = 0 (esineet sulautuvat toisiinsa) W = Animaatio 2004 - luento 5
Esimerkki 1: pomppiva pallo + simulointi ja animaatio eri aika-askelin /*** 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; } velocity[1] += SIMULSTEP * GRAVITY; ball [1] += SIMULSTEP * velocity[1]; if(ball[1] < BALLSIZE) /* bounce */ { moveback = BALLSIZE - ball[1]; bouncetime = time - (moveback / velocity[1]); ball[1] += 2 * moveback; velocity[1] = -DAMPING * velocity[1]; impulse = velocity[1]; printsndkey(bouncetime,0, 0.0, impulse); if(fabs(velocity[1]) < -GRAVITY*SIMULSTEP) break; } } + r y + y < r törmäyshetken laskenta tarkasti impulssin heijastuminen liike ei enää laskettavissa Animaatio 2004 - luento 5
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 • Vinossa törmäyksessä ∆p ei ole samansuuntainen kuin pallojen liike • liikemäärä “heijastuu” törmäyksen tangenttitasosta ∆p = 2 p N p (1) (2) ∆p (3) Animaatio 2004 - luento 5
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 p0 = p1 + p2 (p=mv) r p0 = r p1 + L (L = I) energiatasapaino: p02/m = p12/m + p22/M + L2/I • Ratkaisu p2 = . 1/m . p0 1/m + 1/M + r2/I ja p1 = p0 - p2 , L = r p2 r I M p0 (1) m p2 L (2) m p1 Laskuharjoitus: entä jos m jää kiinni kappaleeseen? Animaatio 2004 - luento 5
Monitahokkaiden törmäilyistä • Törmäyssuunta kohtisuorassa tasoa vastaan • jos nurkittain, niin approksimoidaan • Tormäyskohdan hakeminen ongeometrista laskentaa: • point-in-polyhedron • edge-face intersection • “back vector” tarkan kohdanselvittämiseksi Animaatio 2004 - luento 5
Force Velocity Kitka Fn • Usein jätetään huomiotta animaatioissa,mutta välttämätön luonnolliselle toiminnalle • esimerkki: dominopalikat pöydällä • Kitkavoima vastustaa liikettä Ft ≤ F (F = ulkoinen voima) Ft ≤ mFn • kerroin m ei ole vakio! • tarttumakitka ja liukumiskitka yksinkertaistuksia käyrästä: • Törmäyksissä tarkastellaan kontakti-impulssia • kontakti liukuu, jos seuraava ehto pätee • muussa tapauksessa kitka pitää esineet yhdessä • Artikkeleita: D.Baraff, J.Hahn F Ft Animaatio 2004 - luento 5
Holonomiset rajoitteet • Törmäystarkasteluissa epäyhtälö: esineiden etäisyys d ≥ 0 • Holonominen rajoite määrittelee yhtälön joka on pidettävä voimassa • esim. liukuminen annettua rataa/pintaa pitkin: vuoristorata, hyppyrimäki, pyöriminen pöydällä, jne. • Menetelmiä • Rankaisuvoima kosketuskohdassa • hetkittäin laskettava jousivoima kohtisuorassa pintaa vasten • toimii vain, jos rajoite on joustava ja simulointiaskel pieni • Variaatiolaskenta • ilmaistaan rajoite potentiaalifunktiona, jonka energia minimoidaan • liikkuminen rajoitetaan suuntiin jotka säilyttävät energiaminimin • Kinemaattisten rakenteiden dynamiikka • liitoskohdat kuvataan osien välisinä rajoitusyhtälöinä • ratkaistaan yhtälöryhmä matriisina Animaatio 2004 - luento 5
Käänteisdynamiikka • Teleologinen mallintaminen • alkutila ja lopputulos määritelty, laskettava tarvittavat voimat • mukavampaa ohjaajalle (vrt. käänteiskinematiikka) • Space-time constraints • Määritellään tavoitefunktio, esim. voiman käyttö koko liikkeessä R = | F(t) |2 dt , joka pyritään minimoimaan • Yleiselle liikeyhtälölle m d2x/dt2 + ß dx/dt + k x = F(t) annetaan reunaehtoina x(t) tiettyinä hetkinä (space-time constraint) • Etsitään yhtälölle iteratiivisesti optimiratkaisua, joka minimoi R:n • Artikkeli: Witkin & Kass • Esim. “Luxo learns to jump” Animaatio 2004 - luento 5
Urheilusuorituksia • Käänteisdynamiikan sovellus: fysikaalinen kävely, hyppiminen ja muut urheilusuoritukset • Askelmerkit / suoritettava liike määritelty, lihakset servomekanismeja: F = - k(x - xr) - ß dx/dt , xr = lepopituus • Ilmalennon aikana säädetään hitausmomenttia (raajat, vartalo) • Tukipisteen paikka ja käytettävä voima ohjaavat hyppyjen lentoa • voidaan ohjata nopeutta ja korkeutta • Artikkelit: Hodgins, Raibert & Hodgins Animaatio 2004 - luento 5
Harjoitustehtävä • Tehtävänä on jokin ei-triviaali fysikaalisesti mallinnettu simulaatio • biljardipallot • pöydälle putoava kuutio tai joukko palloja • hyppykeppi, kenguru tms. • kävelijän (ks. aiempi harjoitustyö) fysikaalinen toteutus • pallon tai kelkan liuku hyppyrimäestä • vapaasti leijuva avaruusalus, jota ohjataan rakettimoottoreilla • (ei niitä tapauksia sellaisinaan, jotka on jo valmiiksi analysoitu luennoilla) • Tehtävän ratkaisun vaikeustaso ja fysikaalinen yksityiskohtaisuus valittava harkinnan mukaan • kitkan huomioiminen, kappaleiden symmetria, vapausasteiden määrä pyörimisliikkeessä, jne. • Varoitus: yleispätevä simulaattori on väitöskirjan kokoinen työ! • http://www.tml.hut.fi/Opinnot/T-111.450/ Animaatio 2004 - luento 5
Vielä muuta… • 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&dl=ACM&coll=portal • 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&dl=ACM&coll=GUIDE • Raibert +: Animation of dynamic legged locomotion, Siggraph’91 • http://portal.acm.org/citation.cfm?id=122755&dl=ACM&coll=GUIDE • Jane Wilhelms: ??? • Witkin & Kass: Spacetime Constraints, Siggraph’88 • http://portal.acm.org/citation.cfm?id=378507&dl=ACM&coll=portal Animaatio 2004 - luento 5
Videot • State-of-the-art in Computer Graphics: New Dynamics • sisältää useita demoja (A.Barr, J.Hahn, J.Wilhelms, ym.) • Making Them Move • sisältää useita demoja (mm. Eurythmy, On the Run, …) • M.Girard & S.Amkraut: Eurythmy, 1989 • J.Hodkins: Atlanta in Motion, 1996 • D.Baraff ??? • HUOM. erinomainen lähde koko kurssia varten onRick Parent’in kotisivulla • http://www.cis.ohio-state.edu/~parent/animation/index1.html Animaatio 2004 - luento 5