1 / 48

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ó. Legalább 15 ciklus másodpercenként. Óra inicializálás (t start ) do t = Óra leolvasás

hailey
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ó Legalább 15 ciklus másodpercenként Óra inicializálás (tstart) do t = Óra leolvasás for each object o: modellezési transzf TM, o = TM, o(t) Nézeti transzformáció: TV = TV(t) Képszintézis while (t < tend)

  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 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. 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

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

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

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

  11. Keyframe animáció

  12. Pálya (path) animáció lokális modellezési transzf: y = fix z = görbe der. x = vektor  t = spline paraméter vagy az ívhossz

  13. 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

  14. Í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

  15. Pálya animáció

  16. Fizikai animáció • Erők (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 alapján

  17. Egy kis mechanika ÜtközésDetektál F(r,v,t) erő sugár: r+v·t m 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 = Erők számítása 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]

  18. 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

  19. Ütközés detektálás háromszög-háromszög gyorsítás: befoglalók O(n2)

  20. Real-time fizikai animáció Konyha Zoltán (autoszimulátor)

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

  22. 2D csont l  px,py x, y, 1 cossin 0 -sin cos 0 00 1 1 0 0 0 1 0 0l1 1 0 0 0 1 0 pxpy1

  23. Robot T0 Robot példa T1, T2, T3 Head Torso Leg1 Leg2 Arm1 Arm2 T0 = robot előrehalad glTranslatef(xr, yr, zr); T1= kar elhelyése glTranslatef(xv, yv, zv); T2= forgatás glRotatef(angle, 1.0f, 0.0f, 0.0f); T3= skálázás glScalef(1.0f, 4.0f, 1.0f); T2 T1 T0 T3

  24. Robot rajzolás + animáció void DrawRobot(float dt) { xr+= vx*dt; yr += vy*dt; zr += vz*dt; glPushMatrix(); glTranslatef(xr, yr, zr); angle += av*dt; if (angle>30 || angle<-30) av*=-1; glColor3f(1, 0, 0); // red glPushMatrix(); glTranslatef(xv, yv, zv); glRotatef(angle, 1, 0, 0); glScalef(1, 4, 1); // 1x4x1 cube DrawCube( ); glPopMatrix(); … Másik kéz, lábak, fej, törzs glPopMatrix(); } Robot Arm1 Arm2 Head Torso

  25. up forward „Inverz kinematika” T0 = előrehaladás (forward, up) ??? T2 = forgatás (ang) leg A láb (end effektor) földön legyen és ne csúszkáljon forward += leg * fabs(sin(angNew) - sin(angOld)); up = leg * (1 - cos(angNew));

  26. Csontváz felépítése E = (x, y, z, , , ) end effektor Állapotvektor = egyes ízületek állapota S = (px, py, pz, , , )|i=1..n Strukturális összefüggés: E = F( S )

  27. 2 szabadságfokú rendszer 2 l1 l2 S = (1,2) E = (x, y) 1 Strukturális összefüggés: x(1,2) = l1 cos1 + l2 cos(1 +2) y(1,2) = l1 sin1 + l2 sin(1 +2)

  28. Forward kinematika karakter állapot beállítás: S1,E1 karakter állapot beállítás: S2,E2 … karakter állapot beállítás: Sn,En S(t) interpolációval E(t) = F ( S(t) )

  29. Forward kinematika eredmény

  30. Inverz kinematikával karakter állapot beállítás: S1,E1 karakter állapot beállítás: S2,E2 … karakter állapot beállítás: Sn,En E(t) interpolációval S = F-1( E(t) )

  31. Inverz kinematika eredmény

  32. Inverz kinematika: S = F-1(E) • Az F strukturális függvény általában nem invertálható analitikusan • és az inverz nem egyértelmű: ITERATÍV MEGOLDÁS • t0-ra E0 , S0 ismert • ha Et, Stismert, számítsuk Et+dt= Et+dEt, St+dt = St+dS F  S1 F  Sn Et+dEt = F(St+dS) = F(St)+ dS1 +…+ dSn F1  S1 F1  Sn dEt,1 dS1 ... Jacobi-mátrix m n lineáris egyenletrendszer ... ... = ... ... Fm  S1 Fm  Sn dEt,m ... dSn

  33. m n-es egyenletek megoldása, túlhatározottság:m > n ym = Amn ·xn Anm· ym = AnmAmn · xn (AnmAmn)-1Anm·ym = xn T T T T A+ = Anm pseudo inverze minimális kvadratikus hibájú megoldás: |Amn·xn-ym|

  34. m x n-es egyenletek megoldása, alulhatározottság:m < n ym = Amn ·xn Anm·(AmnAnm)-1 ·ym = xn Behelyettesítés: Amn ·xn = Amn· Anm·(AmnAnm)-1 ·ym= ym T T A+ = Anxm pseudo inverze T T minimális energiájú megoldás: |xn|

  35. Inverz kinematika megoldás E = E0 , S = S0 for( t = t0; t < T; t += dt ) { S alapján a transzformációs mátrixok előállítása Képszintézis J(S) Jacobi mátrix számítása J+ = J pseudo-inverze E(t+dt) interpolációval (keyframe) dE = E(t+dt) - E(t) dS = J+ ·dE S += dS }

  36. Példa: 2 szabadságfokú rendszer 2 x(1,2) = l1 cos1 + l2 cos(1 +2) y(1,2) = l1 sin1 + l2 sin(1 +2) l1 l2 1 E = (x, y) S = (1,2) J(1 ,2 ) Jacobi mátrix -l1 sin1 - l2 sin(1 +2) dx -l2 sin(1 +2) d1 = dy l1 cos1 + l2 cos(1 +2) l2 cos(1 +2) d2

  37. Bőrözés

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

  39. Példa: sétáló mozgás

  40. Teljes,ciklikus séta

  41. Egyszerű karakteranimáció

  42. Motion Capture animáció

  43. Sztereo látás v1 X1, Y1 c2 P = vrp + X/XMAX u + Y/YMAX 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 c1 P1 P2 u1 W = [x, y, z] vrp1 c, u, v, vrp meghatározása: kamera kalibráció

  44. 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

  45. Valóságos és virtuális világok képi illesztése: kamera

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

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

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

More Related