Tik-111.5450 Tietokoneanimaatio 3. Asennon (pyörähdysliikkeen) esittäminen ja interpolointi 3.10.05 - Tassu Animaatio 2005 - luento 3 1
Sisältö matriisiesitys, matriisin komponenttivektorien merkitys perusakselien transformaatiot kiertymä mielivaltaisen akselin ympäri yleinen rotaatio: ortonormaali matriisi kuvat ja kaavat: interpolaatio: matriisi ei kelpaa (miksi?) Eulerin kulmat yleisen rotaation esittämisessä Watt & Watt Monikäsitteisyys interpolaation vaikeudet singulariteetit (gimbal lock) harjoitustehtävä: demonstroi näitä ongelmatilanteita quaterniot matemaattisena konstruktiona (anekdootti Hamiltonista) kierto mielivaltaisen akselin ympäri - yhteys kvaternioihin kvaternioiden interpolaatio: miksi ei sellaisenaan? slerp: perusidea, projektiivinen esitys, kaksi geodeettista reittiä yleinen splini-interpolaatio slerpille, algoritmi de Casteljaun tapaan 3.10.05 - Tassu Animaatio 2005 - luento 3 2
Rotaatiomatriiseista (1) Rotaatio = koordinaatiston muutos siten, että akselien pituudet, niiden väliset kulmat (ja järjestys), sekä origon paikka säilyvät Eulerin teoreema: mikä hyvänsä asennon muutos voidaan esittää yhtenä rotaationa sopivasti valitun akselin ympäri Matriisiesitys rivit/sarakkeet ovat muunnetun koordinaatiston kantavektoreita rotaatiomatriisi on ortonormaali ts. vektorit kohtisuorassa ja yksikön mittaisia pätee: R 1 (α) = R(- α) = R T (α) Perusakselien transformaatiot mikä hyvänsä rotaatio voidaan esittää näiden avulla (ei yksikäsitteisesti) 3.10.05 - Tassu Animaatio 2005 - luento 3 3
Rotaatiomatriiseista (2) Kierrätys mielivaltaisen akselin ympäri kaava laskettavissa valmiiksi (ks. kirja: appendix B.3.3) Interpolaatio kullekin avainasennolle matriisi, joka kuvaa kiertymän objektin perusasennosta tähän tilanteeseen, välivaiheet interpoloimalla matriisi sellaisenaan ei kelpaa intrerpoloitavaksi MIKSI EI? matriisi tarvitaan mallin pisteiden muuntamiseen kulmia tms. interpoloitaessa matriisi laskettava kuitenkin erikseen Eräs ratkaisu: etsitään akseli, jonka ympäri kierto siirtää objektin suoraan avainasennosta seuraavaan, interpoloidaan lineaarisesti kiertokulmaa. MIKSI EI HYVÄ? 3.10.05 - Tassu Animaatio 2005 - luento 3 4
Eulerin kulmat Mikä hyvänsä asennon muutos esitettävissä kombinaationa rotaatioista kolmen (jopa vain kahden) perusakselin ympäri Akselit kiinteitä maailmassa tai liikkuvassa objektissa Euler angle vs. Fixed angle representation Vain akselien soveltamisjärjestys vaihtuu R x (α) R y (β) R z (γ) = R Z (γ) R Y (β) R X (α) Akseleiden järjestys Matriisikertolasku ei kommutatiivinen R x (α) R y (β) R y (β) R x (α) mutta R x (α) R y (β) = [ R y (-β) R x (-α) ] -1 Järjestys sovittava - 12 eri vaihtoehtoa Esitystapa ei yksikäsitteinen Sama rotaatio esitettävissä monella tavalla Vaikuttaa interpolointiin: useita eri reittejä asennosta toiseen 3.10.05 - Tassu Animaatio 2005 - luento 3 5
Eulerin kulmat: esimerkki 3.10.05 - Tassu Animaatio 2005 - luento 3 6
Lukittuminen (gimbal lock) Eulerin kulmia käyttävässä esitystavassa esiintyvä singulariteetti Jos kierto johtaa tilanteeseen, jossa kaksi akselia ovat samansuuntaisia, menetetään kolmas vapausaste Seuraus: jonkin akselin ympäri kiertyminen mahdotonta Käytännössä gyroskooppikompassin mekaaninen ripustus lukittuu lentäminen pohjoisnavan yli? kamera-ajo seurattavan kohteen yli Ei ratkaistavissa akselien valinnalla! 3.10.05 - Tassu Animaatio 2005 - luento 3 7
Kvaterniot: referenssi Lue artikkeli Animating rotation with quaternion curves, K.Shoemake 1985 http://portal.acm.org/citation.cfm?id=325242 3.10.05 - Tassu Animaatio 2005 - luento 3 8
Mikä on kvaternio? Kvaterniot matemaattisena konstruktiona Hamilton: onko lukualue laajennettavissa imaginääriluvuista pidemmälle niin että laskusäännöt säilyvät? Algebrallinen määritelmä Komponentit: skaala ja suuntavektori q = (s,x,y,z) = (s,v) Algebralliset nolla (0,0,0,0) ja ykkönen (1,0,0,0) Laskentakaavoja summa (q 1 +q 2 ) ja skalaarilla kertominen (a q) komponenteittain kuten vektoreille tulo q 1 q 2 = (s 1 s 2 - v 1 v 2, s 1 v 2 +s 2 v 1 - v 1 v 2 ) itseisarvo q kuten vektorille (euklidinen pituus) yksikkönormeeraus kuten vektorille: q -1 q käänteisarvo q -1 = q -2 q 3.10.05 - Tassu Animaatio 2005 - luento 3 9
Kvaternio rotaationa Merkitään transformoitavaa pistettä vektorikvaterniona v = (0, v) Voidaan osoittaa, että operaatio yksikkökvaterniolla q v = q v q -1 toteuttaa vektorin rotaation, jos tulkitaan kvaternion ilmaisevan kierrätyksen määrää (θ) ja akselia (ψ=x,y,z) seuraavasti: q = Rot(θ, ψ) = (cos(θ /2), sin(θ /2) ψ) Kvaternion käänteisarvo toteuttaa vastakkaisen kierron q -1 = Rot(-θ, ψ) = (cos(-θ /2), sin(-θ /2) ψ) Kvaternion vastaluku toteuttaa saman kierron (vastakkainen kulma vastakkaisen akselin ympäri) -q = Rot(-θ, -ψ) = (cos(-θ /2), sin(-θ /2) -ψ) = q seuraus: kvaternioesitys ei täysin yksikäsitteinen Mielivaltainen kvaternio normeerattava ensin yksiköksi 3.10.05 - Tassu Animaatio 2005 - luento 3 10
Kaavojen johto Ks. Esim. Watt & Watt 3.10.05 - Tassu Animaatio 2005 - luento 3 11
Kvaternioiden interpolaatio (slerp) Esitetään avainasennot kvaternioina Miksi ei interpoloida sellaisinaan? Spherical Linear interpolation (slerp) interpoloidaan kvaternioita 4-ulotteisen yksikköpallon pinnalla, lineaarisesti vektoreiden välisen kulman suhteen kvaterniopallo on projektiivinen taso: vastakkaiset pisteet samoja kaksi geodeettista reittiä - valitaan näistä lyhempi Lineaarinen interpolaatio aiheuttaa kulmikkaan reitin pallolla MITÄ TÄMÄ MERKITSEE? 3.10.05 - Tassu Animaatio 2005 - luento 3 12
Kvaterniosplinit (1) Yleinen splini-interpolaatio slerpille Algoritmi de Casteljaun tapaan Rekursiivinen interpolaatiokaavio Slerp operaattorina (ohjelmakoodi valmiina) P 0 1 = slerp(p 0,P 1,t) P 0 2 = slerp(p 01,P 11,t) P 1 1 = slerp(p 1,P 2,t) P(t) = slerp(p 02,P 12,t) P 1 2 = slerp(p 11,P 21,t) P 2 1 = slerp(p 2,P 3,t) 3.10.05 - Tassu Animaatio 2005 - luento 3 13
Kvaterniosplinit (2) Tangentit avainpisteisiin analogisesti Catmull-Romin tapaan ekstrapoloimalla avainpisteet q n-1 q n q n+1 lineaarisilla vektoreilla pätisi B n = (q n-1 +q n+1 ) / 2 = (2 (q n q n-1 ) +q n+1 ) / 2 pallon pinnalla tehdään analogisesti 2a Bn = slerp(q n-1, q n+1, 0.5), missä q n-1 = slerp(q n-1, q n, 2) a b c = (a+b)/2 3.10.05 - Tassu Animaatio 2005 - luento 3 14
Käytännöllisiä näkökohtia Konversiot eri esitystapojen välillä Artikkelissa/kirjassa kaavat, koodia valmiina Yksikäsitteisyys Matriisiesitys aina sama Muunnos Eulerin kulmiksi ei yksikäsitteinen Muunnos kvaternioksi kaksikäsitteinen Kumuloituvat virheet inkrementaalisissa kertolaskuissa tarkkuus heikkenee käytä aina alkuperäisiä lähtötietoja, interpoloi niistä Avainkuvilla tehty rotaatio ei ole fysikaalista! 3.10.05 - Tassu Animaatio 2005 - luento 3 15
Harjoitustehtävät 1-2 Interpoloinnin harjoittelua tehtävä 1: paikan (translaation) interpolointia avainpisteiden kautta kirjoita inbetweening-toiminnon toteuttava ohjelma demonstroi erilaisia TCB-splinin ominaisuuksia tehtävä 2: asennon (rotaation) interpolointia jatkoa edelliseen: avainpisteissä myös asento demonstroi eri esitysmuotojen vaikutusta (matriisi sellaisenaan, Eulerin kulmat, kvaterniot), erityisesti pyri esittelemään ongelmatilanteita Ohjelmointiympäristöstä OpenGL, oltava ajettavissa TKK:n koneilla laiteriippumaton ohjelmarunko tarjolla valmiina Palautustapa ohjelmakoodi + animaatio tiedostona (.mov tai.avi) Tarkemmat ohjeet webissä http://www.tml.hut.fi/opinnot/t-111.5450/2005/harjoitustyot/ 3.10.05 - Tassu Animaatio 2005 - luento 3 16
Videot Classics High Fidelity Glider 2002 Academy Award Winner The ChubbChubbs! 3.10.05 - Tassu Animaatio 2005 - luento 3 17