Tartalom
´ ıtog ´ epes ´ Szam´ Grafika ´ Valasek Gabor
[email protected] ¨ os ¨ Lorand ´ ´ Eotv Tudomanyegyetem Informatikai Kar
˝ ´ ev ´ 2011/2012. oszi fel
´ o´ Animaci
´ o´ Animaci ´ ´ Attekint es ´ o´ szintezis ´ Animaci ´ o´ Kamera animaci ´ orientaci ´ o´ Poz´ıcio´ es ´ ´ o´ Keplet animaci ´ o´ Kulcskocka animaci ´ ´ o´ Palya animaci Hierachikus rendszerek ˝ Elorehalad o´ kinematika Inverz kinematika
´ ´ os ´ modszerek ´ Hagyomanyos animaci
I
´ ´ kul ¨ megrajzolni Minden egyes kepkock at ¨ on I
I
I I
´ statikusak, kul ¨ osen ¨ Sz´ıntereink ritkan interakt´ıv ¨ on ´ ´ alkalmazasok eseten ´ o: ´ kepek ´ ´ utani ´ sorozata Animaci egymas ´ gyorsan kovetik ¨ ´ akkor folytonos mozgas ´ Ha eleg egymast, ´ ´ erzete alakul ki (ld. CFF korabban)
I
I
´ ıtani Mindent tudunk pontosan irany´ ´ ´ draga) ´ Rendk´ıvul (es ¨ munkaigenyes
Cel animation I
I
I
´ ´ ´ ´ akon ´ Retegek (layerek) hasznalata, ujrahaszn alhat o´ foli a ´ ´ egyes reszei ´ sz´ınter ´ a fo˝ rajzolok, ´ az Kulcskereteket (keyframe-eket) rajzoljak ´ ´ (inbetween) a ”fiatalabbak” felelosek ˝ atmenetek ert (a ´ ˝ megadott utas´ıtasoknak megfeleloen) ´ erben ´ ´ ˝ De: ha minden mozog a hatt ez is elkepeszt oen ´ ´ draga: ´ munkaigenyes (es pl. The Wings of Honneamise)...
´ ´ os ´ modszerek ´ Hagyomanyos animaci
´ ıtog ´ eppel ´ ´ o´ Szam´ seg´ıtett animaci
I
´ o´ Kulcskeret (keyframe) alapu´ animaci I
I
I
´ animaci ´ o´ Proceduralis I I
I
´ ´ ´ Tovabbi erdekess egek: ”Principles of Traditional Animation Applied to 3D Computer”, SIGGRAPH’87, pp. 35-44.
´ ıtog ´ eppel ´ ´ o´ Szam´ seg´ıtett animaci I
´ algoritmikus le´ırasa ´ A mozgas ´ aul ´ pattogo´ labda magassaga ´ ´ eben: ´ Peld az ido˝ (t) fuggv eny ¨ m(t) = |sin(ωt + θ0 )|e−kt
´ Mit animalhatunk?
´ o´ Fizikai alapu´ animaci I
I
I
I
¨ ´ os ´ fazisok ´ ´ ıtes ´ enek ´ ´ asa: ´ A koztes animaci elkesz´ automatizal ´ ´ ´ ´ ”csak” a kulcskeret kepkock akat kell elkepsz´ ıteni es ´ atmenetek ´ ´ megadni a k´ıvant parametereit ´ e´ munkaigenyes ´ ´ mindig komoly Rugalmas, kevesb de meg ´ ´ ´ kepzetts eget igenyel (ujakat is) ´
˝ ´ ¨ A sz´ınterunk latjuk el (tomeg, ¨ elemeit fizikai jellemzokkel ˝ rugalmassag ´ stb.) erok, ¨ enyei ´ ´ fel´ırt egyenletek megoldasak ´ ´ A fizikai torv alapjan ent ´ az animaci ´ o´ elo˝ all ´ csinaljuk), ´ ´ irany´ ´ ıtani Realisztikus (ha jol de nehez
Motion capture I
¨ ıteni amint valaki/valami elvegzi ´ ´ Muszerekkel rogz´ a k´ıvant ˝ ´ ´ modellre at ´ ultetni mozgasokat majd ezt egy digitalis ¨
I
I
I
´ ´ ´ ´ ´ Lenyeg eben barmit, ami befolyasolja a megjeleno˝ kepet a ´ ol ˝ (modellek poz´ıcoja, ´ orientaci ´ oja, ´ sz´ıne, sz´ınterr ´ ohoz ´ ¨ od ˝ o˝ tulajdonsagai, ´ reprezentaci kot BRDF stb.) ˝ ´ kamera transzformaci ´ okkal ´ Elsosorban a modell es foglalkozunk most csak ´ ˝ ol ˝ fugg ˝ e´ A feladatunk ezeknek a parametereknek idot ¨ ov ´ tetele
´ o´ szintezis ´ Animaci
I
I
´ (vilag) ´ Legyen minden o objetumra a modellezesi ´ o´ Mo ∈ R4×4 transzformaci ´ ´ o: ´ V ∈ R4×4 Legyen a nezeti (kamera) transzformaci
I
´ 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
I
´ Legyen mindketto˝ az ido˝ fuggv enye! ¨
I
Mo ∈ R → R4×4
I
V ∈ R → R4×4
´ o´ szintezis ´ Animaci
I
´ Valosidej u/interakt´ ıv: ˝ I I
I I
I
¨ 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 reagalni ´ ´ amit meg ´ ´ıgy meg ⇒ olyan reszletgazdag lehet a sz´ınter, lehet jelen´ıteni ´ kepszint ´ ´ ´ ⇒ inkrementalis ezist hasznalunk
´ anos ´ ´ os ´ program vaza ´ Altal animaci
while keep running : t = get time ( ) for o in objects : Mo = Mo (t) V = V (t) render scene ( )
´ ´ os ´ program vaza ´ Valosidej u˝ animaci
d e f update ( ) : # FrameUpdate ( ) / UpdateScene ( ) t = get time ( ) for o in objects : Mo = Mo (t) V = V (t) def render ( ) : # Render ( ) / DrawScene ( ) for o in objects : render object (o)
´ o´ szintezis ´ Animaci I
´ ideju/offline: Nem valos ˝ I
I
´ ıt”, hogy mennyi ideig tart kiszam´ ´ ıtani egy ”Nem szam´ ´ ´ kepkock at ¨ ol ¨ a szintezis ´ ´ a visszajatsz ´ as ´ Elkul es ¨ on I I
I I
I
˝ or ¨ elmentjuk ´ ´ Elosz akat ¨ a kepkock ´ majd videok ´ ent ´ lehet visszanezni ´ Aztan
´ o´ nem tud belenyulni ´ oba ´ ⇒ a felhasznal ´ az animaci ´ ´ olyan bonyolult algoritmust ⇒ olyan reszletes sz´ınteret, es ´ ´ hasznalunk, amit ki tudunk varni ´ a kolts ¨ egvet ´ ´ keretet szab: Final Fantasy: Spirits Azert es ˝ csapat 4 eves ´ ´ volt (kb. Within (2001), egy 200 fos munkaja ´ osszes´ ¨ ´ ıtes ´ ere ´ 960 120 emberev ıtve), aminek elkesz´ ´ ´ hasznaltak. ´ ˝ allt ´ munkaallom ast A film 141964 frame-bol ´ ul ´ ˝ ott! ¨ veg 90 percig renderelot ¨ (15TB), egy frame atlagosan
´ ´ o´ – rosszul Valosidej u˝ animaci I
¨ ´ o´ Hogyan lehet a legkonnyebben elrontani az animaci ´ ıtast? ´ szam´
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
I
¨ ˝ Hogyal lehet a legkonnyebben ezt megelozni? ´ ´ Sose azt taroljuk, hogy mennyivel kell valtoztatni, hanem, ´ ´ sebessege. ´ hogy mi a valtoz as
I
Azzal, ha nem vesszuk ¨ figyelembe, hogy mennyi ido˝ telt el ´ kepkocka ´ ¨ ott. ¨ ket koz
I
I
¨ eppontja ´ ¨ ul Pl.: A koz kor ¨ akarjuk forgatni az objektumot ´ ¨ ´ alland o´ szogsebess eggel. model = rotation(phi, 0,1,0); phi += phi step;
I
´ ıtas ´ elott ˝ kerj ´ uk Minden szam´ ¨ le, hogy mennyi ido˝ telt el az ˝ o˝ kepkocka ´ ´ ´ ezzel szorozzuk a sebesseget. ´ eloz ota, es
I
I
Az objektum olyan gyorsan fog forogni, amilyen ´ ´ reszlet ´ ´ gyakorisaggal ez a kod megh´ıvodik.
I
I
´ ¨ ¨ lassabb gepen ´ Gyorsabb gepen tobbsz or, kevesebbszer ´ semmi sem garantalja, ´ ´ ´ es hogy ugyanazon a gepen ket ´ koz ¨ ott ¨ egyaltal ´ an ´ ugyanannyi ido˝ telne el! h´ıvas
Pl.: phi += phi step; helyett phi += get time since last frame() * phi speed; ´ ´ ¨ ido˝ telik el Gyorsabb gepen kevesebb, lassabb gepen tobb ´ kepkocka ´ ¨ ott ¨ ⇒ gyors gepen ´ ´ unk, ket koz kisebbeket lep ¨ ´ a ”loty ¨ og ¨ es” ´ sem szam´ ´ ıt lassabban nagyobbakat - es ´ ¨ ott ¨ eltelt ido˝ valtoz ´ ´ (h´ıvasok koz asa)
´ o´ Kamera animaci
I
´ A kamera tulajdonsagai: I I I I I
szempozicio´ (eye), ´ (center), egy pont amire nez ´ felfele´ iranyt megado´ vektor (up), ´ ˝ ´ a keperny o/ablak oldal aranya (aspect), ´ ¨ (fovy). ny´ılassz og
I
¨ ¨ valtoztathat ´ ´ az animaci ´ o´ Ezek mind kul ul ok ¨ on-k ¨ on ´ ´ ahoz. ´ letrehoz as
I
´ aul ´ a szempoz´ıciot ´ a mult ´ an ´ latott ´ Peld parametrikus ´ or ¨ ekkel ´ ´ gorb is megadhatjuk, ahol a parameter az ido˝ lesz! ´ b-be 5 masodperc ´ Pl. a-bol alatt a p(t) = (1 − 5t )a + 5t b, ´ ´ t = 0-ban indulunk a-bol ´ ha t masodpercekben adott es
´ orientaci ´ o´ Poz´ıcio´ es I I
I
˝ ˝ szeretnenk ´ valtoztatni. ´ Elsosorban ezt a kettot ˝ Mo (t) megadja mindkettot.
I
´ esetben Normalis
I
A11 A12 A13 px A21 A22 A23 py Mo (t) = A31 A32 A33 pz , 0 0 0 1 I I
´ os ´ parameterek ´ Orientaci
I I I
I
´ A-t is idof ˝ ugg ˝ e! ´ Tegyuk ¨ p-t es ¨ ov ¨ fuggv ´ p tagjait le´ırhatjuk kul ul ennyel. ¨ un-k ¨ ¨ on ¨ ´ py -t valtoztatni. ´ Pl.: Valami esik, eleg ¨ ´ csak az orentaci ´ o´ erdekel ´ A tagjai osszef uggenek, es ¨ ˝ ´ ´ ´ ´ belole minket (nem erdekel: meretezes, ny´ıras). ´ o´ megadhato´ harom ´ ´ Az orientaci tengely menti forgatassal ´ ´ → harom fuggetlen fuggv ennyel. ¨ ¨
´ p = (px , py , pz ) a poz´ıcio. ´ ´ ot. ´ Az A matrix tartalmazza az orientaci
Yaw, pitch, roll
I I
´ ”Hol van az objektum?” Poz´ıco: ´ o: ´ ”Hogy all, ´ merrefele nez ´ az objektum?” Orientaci
I
I
I
˝ ´ 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´ megadhato´ vele, de animaci ´ on ´ al ´ Tetszoleges orientaci ´ vigyazzunk, mert...
”How about sending me a fourth gimbal for ´ aja ´ Christmas?” - Mike Collins, az Apollo 11 pilot
Gimbal lock
´ ´ o´ Keplet animaci
´ o´ Kulcskocka (key frame) animaci
I
I
´ valtoz ´ ´ at ´ egy megfelelo˝ Egy adott tulajdonsag as ´ fuggv ennyel ¨ ´ırjuk le. ´ ´ Pl: Ora mutatoi I I I
I
´ yaw(t) = t/10 Nagymutato: ´ yaw(t) = t/120 Kismutato: ´ Ha t-t mp-ben adjuk meg, a forgatasokat pedig fokban.
Pl: Pattogo´ labda I
py (t) = |sin(ωt + θ0 )| · e−kt
I I
I I
´ 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.
´ o´ Kulcskocka (key frame) animaci
I
I
I I
´ 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. ¨
´ interpolaci ´ o´ (emlekeztet ´ ˝ Linearis o)
I I I
˝ szam´ ´ ıtja a transzformaci ´ os ´ matrixokat. ´ Ezekbol ´ ´ asval ´ ´ ıtja a kepet. ´ A matrixok felhasznal elo˝ all´
´ es ´ gombi ¨ ´ interpolaci ´ o´ Linearis linearis
´ kulcskockank ´ idopontja ˝ ´ t1 . Legyen a ket t0 es ´ ´ g. Legyen az interpolaland o´ tulajdonsag ´ interpolaci ´ oval ´ Linearis ∀t ∈ [t0 , t1 ]-re kapjuk t − t0 t − t0 g(t) = 1 − g(t0 ) + g(t1 ) t1 − t0 t1 − t0
´ o´ ket ´ kulcskocka koz ¨ ott ¨ Interpolaci
´ a baj a linearis ´ interpolaci ´ oval? ´ K: Mi meg ´ ´ ´ ´ o´ soran ´ a sebesseg ´ V: Ritkan nez ki termeszetesen. Animaci ˝ ´ konstans, elotte, utana nulla. I I I
I
´ ora ´ hasznalhatunk: ´ Ilyen interpolaci I I I
I
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. ¨ ...
´ ¨ Gyakorlatban: Bezier gorbe
´ o´ Polinom interpolaci
I I
I
I
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 interpolaci ´ oval ´ ´ Egyutthat ok is akar ¨ ´ ´ ¨ ¨ (de: nagy fokszam - nagy ”kilengesek” adatpontok kozott itt is!). ´ interpolaci ´ o´ a Lagrange intelpolaci ´ o´ specialis ´ A linearis esete n = 2-re.
´ ´ o´ Palya animaci
´ o´ Spline interpolaci I
´ oval ´ ´ eseten ´ A polinom interpolaci kapott fv. magas fokszam ´ ¨ ott ¨ ”hullamzik”, ´ a szomszedos pontok koz ´ıgy elrontja az ´ ot. ´ animaci
I
´ o: ´ hasznaljunk ´ ¨ ´ Spline interpolaci tobb, egymashoz ´ o, ´ alacsony fokszam ´ u´ polinomot az kapcsolod ´ ohoz! ´ interpolaci
´ o´ megadasa ´ Orientaci
I I
´ at ´ megadhatjuk a bejarand ´ ´ Egy objektum mozgas o´ palya ´ aval ´ megadas is.
I
I
´ at ´ egy 3D gorb ¨ evel ´ A paly adjuk meg. ¨ en ´ halad vegig. ´ A model ezen a gorb
I
I
´ 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:
I
´ ¨ ´ ´ akkor az megadja a Ha a palyag orbe differencialhat o, ´ ˝ sebessegvektort minden idopillanatban.
I
´ ˝ fele mutat. A sebessegvektor mindig elore
´ o´ megadasa ´ Orientaci
I I
I
´ megadas ´ ara ´ ket ´ lehetos ˝ eg ´ unk A felfele irany ¨ is van. ´ ´ Ha van egy termeszetes felfele, akkor hasznaljuk azt. ´ ami nem dol ˝ 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
´ Pelda: Emberi test
Hierachikus rendszerek
I I
I I
´ grafokn ´ ´ mar ´ talalkoztunk ´ Sz´ınter al ilyenekkel. ´ at ´ a szul ˝ oz ¨ viszony´ıtva Egy gyerek objektum mozgas ¨ oh adjuk meg. Gyerekeknek lehetnek ujabb gyerekei stb. ´ ´ – kapunk. Hierachikus rendszert – fat
´ Kenyszerek (constraints)
I
´ szeretnenk ´ megengedni a szul ˝ oz ¨ Nem minden mozgast ¨ oh ´ kepest.
I
´ ´ Ezeket a megszor´ıtasokat ´ırhatjuk le kenyszerekkel. ´ ´ ¨ ok ¨ csak egy Korlatozhatjuk a szabadsagfokokat: pl. kony ´ tud forogni, de a csuklo´ ketto˝ tengely menten
I
I
´ ´ ha a fejuk ´ Vagy a tartomanyokat: kevesen b´ırjak, ¨ 90◦ -nel ¨ tobbet fordul.
˝ Elorehalad o´ kinematika
´ Pelda I I
I
I I I I
´ 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.
I
´ ´ ´ Θ1 , Θ2 Allapotv altoz ok: ´ ´ (X ) poz´ıcioj ´ at ´ a gep ´ szamolja. ´ A vegberendez es
I
X = (l1 cos Θ1 + l2 cos(Θ1 + Θ2 ), l1 sin Θ1 + l2 sin(Θ1 + Θ2 ))
I
´ ´ ´ os ´ csuklokat ´ Ketszabads agfok u, tartalmazo´ rendszer. ´ rotaci ´ csak a Z tengely kor ¨ ul A csuklok ¨ fordulnak.
´ Pelda – folyt. I
´ ´ ´ ´ Az allapotv altoz okat megadhatjuk (pl. spline) fuggv ennyel. ¨
´ Pelda – folyt. I
˝ Mit nem tud az elorehalad o´ kinematika?
´ ´ ´ ´ ekkel ´ ´ Az allapotv altoz okat megadhatjuk kezdeti ert es ´ sebesseggel. I
I
I
˝ ´ ´ 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 I I
Inverz kinematika
´ Pelda I
I
I I
´ ´ 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
I
´ ´ ´ szama: ´ Egyenletek szama: 2, ismeretlen valtoz ok 3⇒ ´ ´ Vegtelen sok megoldas! ´ ´ DOF Rendszer DOF > vegberendez es
I
´ kb 70 DOF! Az emberi csontvaz
I
I
´ ”termeszetesnek ´ ´ o” ´ mozgast ´ le´ırni vele. Nehez latsz ´ kiszam´ ´ ıtasa ´ nem trivialis, ´ Az inverz fuggv eny ¨
I
´ nem is egyertelm ´ es u˝ (redundancia).
I
´ Pelda
´ ´ o˝ megoldas ´ Nem egyertelm u, ˝ ill. nem letez