1 / 40

Animáció

Animáció. Szirmay-Kalos László. Animáció = időfüggés. T 1 ( t ). T V ( t ). T 2 ( t ). Transzformációk alak szín megjelenítési attribútumok, stb. Valós idejű animáció. Óra inicializálás (t start ) t prev = t start ; do t = Óra leolvasás ; Szimul áció(t prev , t );

tallis
Télécharger la présentation

Animáció

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Animáció Szirmay-Kalos László

  2. Animáció = időfüggés T1(t) TV(t) T2(t) Transzformációk alak szín megjelenítési attribútumok, stb

  3. Valós idejű animáció Óra inicializálás (tstart) tprev = tstart; do t = Óra leolvasás; Szimuláció(tprev, t); for each object o: modellezési transzf TM,o = TM,o(t); Nézeti transzformáció: TV = TV(t); Képszintézis; tprev = t; while (t < tend); Legalább 15 ciklus másodpercenként

  4. Valószerű mozgás • Fizikai törvények: • Newton törvény • ütközés detektálás és válasz: impulzus megmaradás • Fiziológiai törvények • csontváz nem szakad szét • meghatározott szabadságfokú ízületek • bőr rugalmasan követi a csontokat • Energiafelhasználás minimuma

  5. Newton törvény m d2 dt2 F/m = r = rL d2 dt2 TM(t) r(t) = rL TM(t) Az erő rugalmas mechanizmuson keresztül hat, azaz folytonosan változik TM(t) C2 folytonos

  6. TM(t): Mozgástervezés • Követelmény: ált. C2 , néha (C1,C0) folytonosság • Mátrixelemek nem függetlenek • Tervezés független paraméterek terében Kvaterniók pozíció: px, py, pz orientáció: , ,  skálázás: sx, sy, sz p(t) TM(t)= 1 1 1 px, py, pz, 1 cos -sin 1 sin cos 1 sx sy sz 1 cos sin -sincos 1 1 1 cossin -sincos 1

  7. Kvaternió interpoláció

  8. Kvaternió interpoláció q[0,u]q-1 = [0,v] • q1= [cos(1/2), w1sin(1/2)], |w1 | = 1 • q2= [cos(2/2), w2sin(2/2)], |w2 | = 1 q(t) q1 q2

  9. Mozgástervezés a paramétertérben • p(t) elemei ált. C2 , néha (C1,C0) folytonosak • p(t) elemeinek a definíciója: • görbével direkt módon (spline) • képlettel: script animation • kulcsokból interpolációval: keyframe animation • görbével indirekt módon: path animation • mechanikai modellből az erők alapján: physical animation • mérésekből: motion capture animation

  10. 2.key 3.key 4.key 5.key 1. key Keyframe animáció

  11. Keyframe animáció görbéi

  12. Görbék megváltoztatása

  13. vi+1 ri(t) = ait3 + bit2 + cit 1 + di ri(ti) = ri, ri(ti+1) = ri+1 ri’(ti) = vi ri’(ti+1) = vi+1 vi • Ismeretlen vi -k meghatározása: • C2 folytonosság követelményéből: spline • ri’’(ti+1)= ri+1’’(ti+1) + sebesség a kezdő és végpontban • Tervezési paraméterek alapján: Kohanek-Bartels, Catmull-Rom Interpoláció: 3-d rendű spline ri+1 r1 rn r0 ri t0 t1 ti ti+1 tn

  14.  = 1  = -1  = 0 Catmull-Rom vi tension paraméter (1-) =0.9 =0.5 =0.1  (1-) Kohanek-Bartels (Catmull-Rom) „spline” ri+1 ri-1 rn r0 ri t0 ti-1 ti ti+1 tn ri+1 -ri ri -ri-1 1 2 vi = + ti+1 -ti ti -ti-1

  15. Keyframe animáció

  16. Pálya (path) animáció t = spline paraméter vagy az ívhossz

  17. Pálya animáció: Transzformáció ym r(t) görbe: orr: z xm xm0(t) 0 ym0(t) 0 zm0(t) 0 r(t) 1 TM= r(t) zm Explicit up vektorFrenet keretek: zm = r’(t) zm = r’(t) xm = zm up xm = zmr’’(t) ym = zmxm ym = zmxm A függőleges, amerre az erő hat

  18. Ívhossz szerinti mozgás ds ívhossz dz= dz/du·du u r(u) görbe: s(u) = (dx/du)2 +(dy/du)2 +(dz/du)2 du s(u) Ívhossz szerinti mozgás Megtett út-idő függvény: s(u) = f(t), például a·t u = s-1(f(t)) r = r(u) u f(t) t

  19. Fizikai animáció • Erők (pl. gravitáció, turbulencia stb.) • Tömeg, tehetetlenségi nyomaték (F = ma) • Ütközés detektálás (metszéspontszámítás) • Ütközés válasz • rugók, ha közel vannak • impulzus megmaradás rossz !

  20. Egy kis mechanika F(r,v,t) erő ÜtközésDetektál m r sugár: r+v·t v v dr/dt = v dv/dt = F(r,v,t)/m metszés: t* Ha t* < dt Collision for( t = 0; t < T; t += dt) { F = Eredő erő(r,v) a = F/m v += a·dt if ( ÜtközésDetektál ) ÜtközésVálasz r += v·dt } ÜtközésVálasz n = CollisionNormal v’ v -n(v·n) v’ = [v - n(v·n)]-[n(v·n)·bounce]

  21. Folytonos-Diszkrét ütközés detektáláspontra és féltérre n ·(r - r0) > 0 r(ti) sugár: r+v·t v n ·(r - r0) = 0 metszés: t* Ha t* < dt Collision r(ti+1) n ·(r - r0) < 0

  22. Karakter animáció rL rw rw = rL· Rkéz·Talkar·Rkönyök·Tfelkar·Rváll·Tgerinc·Tember homogén koordináta 4-es

  23. Csontváz

  24. Séta

  25. Transzformáció hierarchia l (x,y,z) glTranslatef(l, 0, 0); glVertex3f(x, y, z); glTranslatef(l, 0, 0); glRotatef(theta2, 0, 0, 1) glVertex3f(x, y, z); l 2 l glRotatef(theta1, 0, 0, 1) glTranslatef(l, 0, 0); glVertex3f(x, y, z); 1

  26. Transzformáció hierarchia glRotatef(theta1, 0, 0, 1) glTranslatef(l, 0, 0); glRotatef(theta2, 0, 0, 1) glVertex3f(x, y, z); 2 l1 1 2 glTranslatef(x0, y0, z0); glRotatef(theta1, 0, 0, 1) glTranslatef(l, 0, 0); glRotatef(theta2, 0, 0, 1) glVertex3f(x, y, z); l1 1 (x0,y0,z0)

  27. PMan Pman T0 T1, T2 Head Torso Leg1 Leg2 Arm Arm2 T0 = Pman előremozog glTranslatef(xpm, ypm, zpm); T1= váll pozíció glTranslatef(xsh, ysh, zsh); T2= váll forgatás glRotatef(angle, xshax, yshax, zshax); T2 T1 T0

  28. Pmanrajzolás és animáció void DrawPman(float dt) { xpm += vx*dt; ypm += vy*dt; zpm += vz*dt; glPushMatrix(); glTranslatef(xpm, ypm, zpm); // T0 angle += av * dt; if (angle>30 || angle<-30) av*=-1; glPushMatrix(); glTranslatef(xsh, ysh, zsh); // T1 glRotatef(angle,xshax, yshax, zshax); // T2 DrawArm( ); glPopMatrix(); … Other arm, legs, torso, head glPopMatrix(); } Pman Arm1 Arm2 Head Torso

  29. Inverz kinematika T0 = előremozgás (forward, up) ??? T2 = láb forgatás(ang) leg ang Támaszkodó nem csúszkálhat up forward forward += leg * fabs(sin(angNew) - sin(angOld)); up = leg * cos(angNew);

  30. Inverz kinematika 1 l1 up(1,2) = l1 sin1 + l2 sin(1 +2) 2 l2 forward(1,2) = l1 cos1 + l2 cos(1 +2)

  31. Bőrözés

  32. Merev és sima bőrőzés

  33. 5. házi • Gólya lépeget: • J: jobbra ford (0.5sec) • B:balra ford (0.5sec) • SP: lecsap (0.5sec) • Sima bőrözés CPU-n • Béka: • ugrik, min 1 sec pihenő • Síkra vetített árnyék

  34. 5. házi • Mozgassa meg a 4. házi objektumait. A gólya lépeget előre 1 lépés/sec sebességgel. A támaszkodó láb nem csúszkál (inverz kinematika). A ‘J’ billentyű lenyomására 0.5 sec alatt 10 fokot jobbra fordul célszerűen a támaszkodó láb körül, hasonlóan a ‘B’ billentyű lenyomására balra. A SPACE hatására a nyakát előrehajtva lecsap és ha békatestet talál (végtagok nem számítanak), akkor a béka eltűnik. A békák merev testként akár véletlen irányokba ugrálhatnak, de két ugrás között 1 sec rákészülési időre van szükségük. A terepet illetően két lehetőség közül lehet választani. Az elsőben a terep sík és akkor a testeknek van árnyékuk rajta, amit a nap vet (síkra vetített árnyék algoritmus). A másik lehetőség, hogy a terep nem sík.

  35. Motion Capture animáció

  36. Sztereo látás P = vrp + (2X/XMAX-1)u + (2Y/YMAX-1)v c1 + (P1-c1) · t1 = (x, y, z) c2 + (P2-c2) · t2 = (x, y, z) 6 egyenlet, 5 ismeretlen (x, y, z, t1, t2) Hiba: kitérő egyenesek c2 c1 v1 u1 P2 P1 X1, Y1 w = (x, y, z) vrp1 c, u, v, vrp meghatározása: kamera kalibráció

  37. x t y t z t Motion capture eredmény Minden markerre: pozicióadatok M1 M2 M2 M3 x t y M3 cos=(M3-M2)0·(M2-M1)0 tengely: d=(M3-M2)x (M2-M1) M4 t z t

  38. Valóságos és virtuális világok képi illesztése Blaskó Gábor

  39. Kamera kalibráció v u X, Y (x, y, z) (x, y, z)  (X,Y) vrp Ismeretlenek: vrp, f, u, v 3 + 1+2+2 = 8

  40. Kompozitálás Blaskó Gábor

More Related