´ o´ Animaci
´ ıtog ´ epes ´ Szam´ Grafika
´ Gergely Klar
[email protected] ¨ os ¨ Lorand ´ ´ Eotv Tudomanyegyetem Informatikai Kar
´ ok ´ ep ´ helyett kepsorozat ´ All ´ tulajdonsagait ´ ´ Objektumok/kamera/vilag valtozatjuk
´ egy ido˝ pillanat Egy kep ´ ´ gyors Ñ folyamatos mozgast ´ erz ´ ekel ´ Kepsorozat eleg az emberi szem
˝ ´ ev ´ 2010/2011. oszi fel
´ Mi az, amit valtoztatunk?
´ o´ szintezis ´ Animaci
´ orientaci ´ o, ´ sz´ın, normal, ´ BRDF, stb. Lehet: poz´ıco, ´ ´ orientaci ´ o, ´ kamera ”Ertelme” van: poz´ıcio,
´ ot ´ alkalmazunk: Animaci
´ transzformaci ´ ora ´ a modellezesi ´ ora ´ a kamera transzformaci
´ trafo: ´ Legyen minden o objetumra, a modellezesi 4 4 Mo P R ´ V P R44 Legyen a kamera trafo:
´ ha V a View matrix, ´ Megjegyzes: akkor csak a kamera ´ at, ´ orientaci ´ oj ´ at ´ tartalmazza; ha V a View es ´ a pozicioj ´ osz ´ oget ¨ ´ ıtani Projection egyutt, is all´ ¨ akkor tudjuk vele a lat
˝ Legyen mindketto˝ ido˝ fugg ¨ o!
P R Ñ R44 V P R Ñ R44 Mo
´ anos ´ ´ os ´ program vaza ´ Altal animaci
while keep running : t = get time ( ) for o in objects : Mo = Mo pt q V = V pt q render scene ( )
´ o´ szintezis ´ Animaci
´ Valosidej u/interakt´ ıv: ˝
´ ´ os ´ program vaza ´ Valosidej u˝ animaci
d e f update ( ) : # vagy i d l e , vagy onFrameMove t = get time ( ) for o in objects : Mo = Mo pt q V = V pt q def render ( ) : # vagy d i s p l a y , vagy onFrameRender for o in objects : render object (o)
¨ on ¨ meg is jelen´ıtjuk ´ ´ rogt akat ¨ a kepkock ´ ıtasnak ´ ´ gyorsnak kell lennie a folytonossag ´ a szam´ eleg ´ ´ latszat ahoz ´ oi ´ esemenyekre ´ ´ kell a felhasznal ragalni ´ ´ amit meg ´ ´ıgy meg ñ olyan reszletgazdag lehet a sz´ınter, lehet jelen´ıteni ´ kepszint ´ ´ ´ ñ inkrementalis ezist hasznalunk
´ o´ szintezis ´ Animaci
´ ideju/offline: Nem valos ˝
´ ıt”, hogy mennyi ideig tart kiszam´ ´ ıtani egy ”Nem szam´ ´ ´ kepkock at ¨ ol ¨ a szintezis ´ ´ a visszajatsz ´ as ´ Elkul es ¨ on
˝ or ¨ elmentjuk ´ ´ Elosz akat ¨ a kepkock ´ majd videok ´ ent ´ lehet visszanezni ´ Aztan
´ oba ´ ñ a felhasznal´ o´ nem tud belenyulni ´ az animaci ´ ´ olyan bonyolult algoritmust ñ olyan reszletes sz´ınteret, es ´ ´ hasznalunk, amit ki tudunk varni
Offline rendering ∆ t = 1 /FPS f o r ( t = t s t a r t ; t
g e t t i m e () s t a r t t i m e ) : wait ( )
´ ´ o´ – jol ´ Valosidej u˝ animaci
¨ ˝ Hogyal lehet a legkonnyebben ezt megelozni? ´ ´ Sose azt taroljuk, hogy mennyivel kell valtoztatni, hanem, ´ ´ sebessege. ´ hogy mi a valtoz as
´ ıtas ´ elott ˝ kerj ´ uk Minden szam´ ¨ le, hogy mennyi ido˝ telt el az ˝ o˝ kepkocka ´ ´ ´ ezel szorozzuk a sebesseget. ´ eloz ota, es
Pl.: phi += phi step; helyett phi += get time since last frame() * phi speed; ´ ´ ¨ ido˝ telik el Gyorsabb gepen kevesebb, lasabb gepen tobb ´ kepkocka ´ ¨ ott ¨ ñ gyors gepen ´ ´ unk, ket koz kissebbeket lep ¨ lassabban nagyobbakat.
´ ´ o´ – rosszul Valosidej u˝ animaci
¨ ´ o´ Hogyal lehet a legkonnyebben elrontani az animaci ´ ıtast? ´ szam´
Azzal, ha nem vesszuk ¨ figyelembe, hogy mennyi ido˝ telt el ´ kepkocka ´ ¨ ott. ¨ ket koz
¨ eppontja ´ ¨ ul Pl.: A koz kor ¨ akarjuk forgatni az objektumot ´ ¨ ´ alland o´ szogsebess eggel. model = rotation(phi, 0,1,0); phi += phi step;
Az objektum olyan gyorsan fog forogni, amilyen ´ ´ reszlet ´ ´ gyakorisaggal ez a kod megh´ıvodik. ´ ¨ ¨ lasabb gepen ´ Gyorsabb gepen tobbsz or, kevesebbszer.
´ o´ Kamera animaci
´ A kamera tulajdonasgai:
szempozicio´ (eye), ´ (center), egy pont amire nez ´ felfele iranyt megado´ vektor (up), ´ ˝ ´ a keperny o/ablak oldal aranya (aspect), ´ ¨ (fovy). ny´ılassz og
¨ ¨ valtoztathat ´ ´ az animaci ´ o´ Ezek mind kul ul ok ¨ on-k ¨ on ´ ´ ahoz. ´ letrehoz as
´ orientaci ´ o´ Poz´ıcio´ es
´ os ´ parameterek ´ Orientaci
´ ”Hol van az objektum?” Poz´ıco: ´ o: ´ ”Hogy all, ´ merrefele nez ´ az objektum?” Orientaci
˝ ˝ szerenenk ´ valtoztatni. ´ Elsosorban ezt a kettot ˝ Mo pt q megadja mindkettot.
´ esetben Normalis
A11 A21 Mo pt q A31 px
A12 A13 A22 A23 A32 A33 py pz
0 0 , 0 1
~p
´ ´ ot. ´ Az A matrix tartalmazza az orientaci
Yaw, pitch, roll
´ A-t is idof ˝ ugg ˝ e! ´ Tegyuk ¨ ~p-t es ¨ ov ~p tagjait le´ırhatjuk kul ¨ fuggv ´ ul ennyel. ¨ un-k ¨ ¨ on ¨ ´ py -t valtoztatni. ´ Pl.: Valami esik, eleg ¨ ´ csak az orentaci ´ o´ erdekel ´ A-t tagjai osszef uggenek, es ¨ ˝ minket (nem erdekel: ´ ´ ´ ny´ıras). ´ belole meretez es, ´ o´ megadhato´ harom ´ ´ Az orientaci tengely menti forgatassal ´ ´ Ñ harom fuggetlen fuggv ennyel. ¨ ¨
ppx , py , pz q a poz´ıcio.´
˝ ´ Egy objektum fugg (yaw), kereszt- (pitch) es ¨ oleges´ hossztengelye (roll) menti elfordulasait egyszerre adjuk meg. ´ talalkoztunk ´ ´ ´ Mar vele, 3 3-as matrixszal megadhato, ´ ´ szorzata. harom forgatas ´ ´ szog ¨ evel ´ Harom tengely menti elfordulas megadhato´ ñ ´ ot ´ is. megadja az orientaci
´ ´ o´ Keplet animaci
´ valtoz ´ ´ at ´ egy megfelelo˝ Egy adott tulajdonsag as ´ fuggv ennyel ¨ ´ırjuk le. ´ ´ Pl: Ora mutatoi
´ yaw pt q t {10 Nagymutato: ´ yaw pt q t {240 Kismutato: ´ Ha t-t mp-ben adjum meg, a forgatasokat pedig fokban.
Pl: Pattogo´ labda
py pt q |sinpωt
θ0 q| ekt
´ o´ Kulcskocka (key frame) animaci
´ nehezkes ´ ´ Egy bonyolult mozgast lenne keplettel megadni. ´ adjuk csak bizonyos idok ˝ oz ¨ onk ¨ ent, ´ Inkabb hogy akkor mit ´ latni. ´ szeretnenk ´ Ezek a kulcskockak. ´ ´ kulcskocka koz ¨ ott ¨ interpolaci ´ oval ´ Egy tulajdonsagot ket ´ szamolunk ki.
´ interpolaci ´ o´ Linearis
´ kulcskockank ´ idopontja ˝ ´ t1 . Legyen a ket t0 es ´ ´ g. Legyen az interpolaland o´ tulajdonsag
´ interpolaci ´ oval ´ Linerais @t
P rt0, t1s-re kapjuk
t t0 t t0 g pt 0 q g pt 1 q g pt q 1 t1 t0 t1 t0
´ o´ Kulcskocka (key frame) animaci
´ oval ´ ´ Az interpolaci az objektum egyes parametereire ¨ et ´ illesztunk. folytonos gorb ¨ ´ o´ lejatsz ´ asa/elment ´ ´ soran ´ a program Az animaci ese ´ ´ ´ ekkel ´ ´ ekeli ´ minden kepkock aban a hozza´ tartozo´ t ert kiert ´ ´ az objektum parameter-f uggv enyeit. ¨ ˝ szam´ ´ ıtja a transzformaci ´ os ´ matrixokat. ´ Ezekbol ´ ´ asval ´ ´ ıja a kepet. ´ A matrixok felhasznal elo˝ all´
´ Esettanulmany
´ o´ ket ´ kulcskocka koz ¨ ott ¨ Interpolaci
´ interpolaci ´ oval? ´ K: Mi a baj a linearis ´ nez ´ ki termeszetesen. ´ ´ o´ soran ´ a sebesseg ´ V: Ritkan Animaci ˝ ´ konstans, elotte, utana nulla.
´ ora ´ hasznalhatunk: ´ Ilyen interpolaci
Elgur´ıtott labda: folyamatosan lassul. Zuhano´ zongora: folyamatosan gyorsul. ´ a Foldr ¨ ol ˝ a Marsra: gyorul, halad, lass´ıt. Raketa ¨ fuggv ´ Gyok enyt. ¨ ´ ´ Masodfok u´ fuggv enyt. ¨ ´ ¨ et. ´ Logisztikus fuggv enyt/g orb ¨
´ o´ Polinom interpolaci
n kulcspontra fel tudunk ´ırni n 1-ed foku´ polinomot. ´ os ´ polinom: minden kulcskockaban ´ ˝ ırt Interpolaci az elo´ ´ eket ´ ert veszi fel. ´ szam´ ´ ıthatok ´ Lagrange intelpolaci ´ oval. ´ Egyutthat ok ¨ ´ interpolaci ´ o´ a Lagrange intelpolaci ´ o´ specialis ´ A linearis esete n 2-re.
´ ¨ Gyakorlatban: Bezier gorbe
´ o´ Spline interpolaci
´ oval ´ ´ eseten ´ A polinom interpolaci kapott fv. magas fokszam ´ ¨ ott ¨ ”hullamzik”, ´ a szomszedos pontok koz ´ıgy elrontja az ´ ot. ´ animaci
´ o: ´ hasznaljunk ´ ¨ ´ Spline interpolaci tobb, egymashoz ´ o, ´ alacsony fokszam ´ u´ polinomot az kapcsolod ´ ohoz! ´ interpolaci
´ ´ o´ Palya animaci
´ at ´ megadhatjuk a bejarand ´ ´ Egy objektum mozgas o´ palya ´ aval ´ megadas is.
´ at ´ egy 3D gorb ¨ evel ´ A paly adjuk meg. ¨ en ´ halad vegig. ´ A model ezen a gorb
´ o´ megadasa ´ Orientaci
´ o´ megadasa ´ Orientaci
´ oj ´ at? ´ Hogyan adjuk meg az objetumunk orentaci ˝ ´ egy felfele irany ´ egyertelm ´ ´ Egy elore, es uen meghatarozza ˝ ezt. ´ v.o. ¨ kamera eseten ´ center-eye ill. up vektorok Megjegyzes:
´ ¨ ´ ´ akkor az megadja a Ha a palyag orbe differencialhat o, ´ ˝ sebessegvektort minden idopillanatban.
´ ˝ fele mutat. A sebessegvektor mindig elore
´Ivhossz szerinti parameterez ´ ´ – motivaci ´ o´ es
´ uk ´ gorb ¨ et! ´ Nezz ¨ meg a ez a ket g1 pt q g2 pt q
t t
sin t sin t
´Ivhossz szerinti parameterez ´ ´ es
¨ eket ´ A gorb ugy ´ kell megadnunk, hogy adott t-szerinti ´ eshez ´ lep mindig azonos ´ıvhosszhoz tartozzon.
¨ ´ t A gorbe hossza egy t0 ponttol s pt q
´ uk Kep ¨ ugyan az.
g1 pt q g2 pt q ? Nem!
´ esetben ugyan azon a paly ´ an!) ´ (De mindket
»t
t0
ig:
|g 1 px q|dx
´ ´ Ekkor g ´ıvhossz szerinti parameterez ese: ¯ pr q g ps1 pr qq g
?
´ unk, Ha t-vel egyenletesen lep akkor g1 szerint egyenletes ¨ ´ kapunk, de g2 szerint hol lassabban, hol mozgast ¨ en. ´ gyorsabban haladunk majd a gorb
´ megadas ´ ara ´ ket ´ lehetos ˝ eg ´ unk A felfele irany ¨ is van. ´ ´ Ha van egy termeszetes felfele, akkor hasznaljuk azt. ´ ami nem bol ˝ be a kanyarban.) (Mindennel, ´ is valtozik, ´ Ha ez az irany akkor ez megegyezik a ´ irany ´ aval, ´ ´ ¨ ´ gyorsulas azaz a palyag orbe masodik ´ anak ´ ´ aval. ´ derivaltj irany
´ szam´ ´ ıthato´ kenyelmesen. ´ ´ Bezier ´ Sajnos s ritkan (Meg ¨ ekre ´ ´ gorb sem! Ld. puthagoraszi hodografok)s ¨
´ ´ ´ anos ´ Numerikus modszereket kell hasznalni, ha altal ¨ eket ´ gorb meg akarunk engedni.
´ ´ u˝ gorb ¨ ek ´ Alland o´ sebesseg
˝ ´ alland ´ Hogyan lehetne ellenorizni, hogy legalabb o´ ´ ¨ sebesseget ad-e meg a gorbe?
g pt q px pt q, y pt q, z pt qq ´ A sebessegvektor t pillanatban: g 1 pt q. ´ ´ ´ akkor a sebesseg ´ is alland ´ ´ Ha g 1 pt q nagysaga alland o, o.
a ´ eke ´ Azaz |g 1 pt q| px 1 pt qq2 py 1 pt qq2 pz 1 pt qq2 ert
Hierachikus rendszerek
´ grafokn ´ ´ mar ´ talalkoztunk ´ Sz´ınter al ilyenekkel. ´ at ´ a szul ˝ oz ¨ viszony´ıtva Egy gyerek objektum mozgas ¨ oh adjuk meg. Gyerekeknek lehetnek ujabb gyerekei, s.i.t. ´ ´ – kapunk. Hierachikus rendszert – fat
˝ fuggetlen t-tol. ¨
´ Pelda: Emberi test
´ Kenyszerek (constraints)
´ szeretnenk ´ megengedni a szul ˝ oz ¨ Nem minden mozgast ¨ oh ´ kepest.
´ ´ Ezeket a megszor´ıtasokat ´ırhatjuk le kenyszerekkel. ´ ´ ¨ ok ¨ csak egy Korlatozhatjuk a szabadsagfokokat: pl. kony ´ tud forogni, de a csuklo´ ketto˝ tengely menten
´ ´ ha a fejuk ´ Vagy a tartomanyokat: kevesen b´ırjak, ¨ 90 -nel ¨ tobbet fordul.
˝ Elorehalad o´ kinematika
´ Pelda
´ allapotot ´ ´ ´ ´ ´ Veg hatarozunk meg az allapotv altoz ok ´ eben. ´ fuggv eny ¨ ´ okhoz ´ ´ hasznalhat ´ ´ Szimulaci jol o. ´ ot. ´ Minden elemre megadjuk, a hozza´ tartozo´ transzformaci ´ ˝ lefele haladva ert ´ ekelj ´ Ezeket a hierarchiaban felulr uk ¨ ol ¨ ki. ´ o´ az osszes ¨ ˝ es ´ a Az adott elemhez tartozo´ transzformaci os ´ transzformaci ´ o´ szorzata. sajat
´ Pelda – folyt.
´ Pelda – folyt.
´ ´ ´ Θ1 , Θ2 Allapotv altoz ok: ´ ´ (X ) poz´ıcioj ´ at ´ a gep ´ szamolja. ´ A vegberendez es
X
´ ´ ´ os ´ csuklokat ´ Ketszabads agfok u, tartalmazo´ rendszer. ´ rotaci ´ csak a Z tengely kor ¨ ul A csuklok ¨ fordulnak.
pl1 cos Θ1
l2 cospΘ1
Θ2 q, l1 sin Θ1
l2 sinpΘ1
Θ2 qq
´ ´ ´ ´ Az allapotv altoz okat megadhatjuk (pl. spline) fuggv ennyel. ¨
´ Pelda – folyt.
˝ Mit nem tud az elorehalad o´ kinematika?
´ ´ ´ ´ ekkel ´ ´ Az allapotv altoz okat megadhatjuk kezdeti ert es ´ sebesseggel.
˝ ´ ´ ha a Az elorehalad o´ kinematika nem hasznalhat o, ´ ¨ ´ ˝ ´ strukturalis osszefugg ¨ es erosen nem linearis ´ ´ ´ ´ Hiaba interpolalunk egyenletesen az allapott erben, a ´ ´ vadul kalimpalhat ´ ¨ ott ¨ vegberendez es a kulcspontok koz ´ as ´ esetek: Probelm
Inverz kinematika
´ Pelda
´ ´ helyzetet ´ Az inverz kinematika a kritikus vegberendez es ´ ´ ´ ´ ert ´ ek ´ et ´ interpolalja, majd az allapotv altoz ok ´ ´ interpolalt ´ helyzeteb ´ ol ˝ szam´ ´ ıtja vissza. vegberendez es ´ ´ ´ animaci ´ o. ´ Az inverz kinematika masik neve a cel-orient alt ´ megfogni, hogyan forgassam az ”Ezt szeretnem izuleteimet?” ¨
´ mozgasa ´ a talajon Lab ´ allapot ´ ´ de menet kozben ¨ ´ reszei ´ Veg jo, a berendezes ´ ´ atmehetnek egymason.
´ ´ helyzeteb ´ ol ˝ visszaszamoljuk ´ A vegberendez es az ´ ´ ´ ert ´ ek ´ et. ´ allapotv altoz ok
´ ak ´ Problem
´ Pelda
´ ´ ´ szama: ´ Egyenletek szama: 2, ismeretlen valtoz ok 3ñ ´ ´ Vegtelen sok megoldas! ´ ´ DOF Rendszer DOF ¡ vegberendez es
´ kb 70 DOF! Az emberi csontvaz
´ ”termeszetesnek ´ ´ o” ´ mozgast ´ le´ırni vele. Nehez latsz ´ kiszam´ ´ ıtasa ´ nem trivialis, ´ Az inverz fuggv eny ¨
´ nem is egyertelm ´ es u˝ (redundancia).
´ Pelda
´ ´ o˝ megoldas ´ Nem egyertelm u, ˝ ill. nem letez