Презентация загружается. Пожалуйста, подождите

Презентация загружается. Пожалуйста, подождите

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

Similar presentations


Presentation on theme: "Animáció Szirmay-Kalos László. Animáció = időfüggés T1(t)T1(t) T2(t)T2(t) TV(t)TV(t) Transzformációk alak szín megjelenítési attribútumok, stb."— Presentation transcript:

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

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

3 Valós idejű animáció Óra inicializálás (t start ) do t = Óra leolvasás for each object o: modellezési transzf T M, o = T M, o (t) Nézeti transzformáció: T V = T V (t) Képszintézis while (t < t end ) Legalább 15 ciklus másodpercenként

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

5 Newton törvény r(t) = r L T M (t) F/m = r = r L d2dt2d2dt2 d2dt2d2dt2 TM(t)TM(t) Az erő rugalmas mechanizmuson keresztül hat, azaz folytonosan változik T M (t) C 2 folytonos m

6 cos  sin  -sin  cos  1 T M (t): Mozgástervezés l Követelmény: ált. C 2, néha (C 1,C 0 ) folytonosság l 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 T M (t)= sx sy sz 1 cos  -sin  1 sin  cos  1 cos  sin  -sin  cos  1 px, py, pz, 1 p(t)

7 Mozgástervezés a paramétertérben l p(t) elemei ált. C 2, néha (C 1,C 0 ) folytonosak l 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 1. key Keyframe animáció 2.key3.key4.key5.key

9 Keyframe animáció görbéi

10 Görbék megváltoztatása

11 Keyframe animáció

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

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

14 Ívhossz szerinti mozgás r(u) görbe: s(u) =  s(u) 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) ívhossz  (dx/du) 2 +(dy/du) 2 +(dz/du) 2 du f(t)f(t) t u ds dz = dz/du ·du

15 Pálya animáció

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

17 Egy kis mechanika F(r,v,t) erő m 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 } v n = CollisionNormal v’ v’ = [v - n(v·n)]-[n(v·n)·bounce] v sugár: r+v ·t metszés: t* Ha t* < dt Collision ÜtközésDetektál ÜtközésVálasz dr/dt = v dv/dt = F(r,v,t)/m -n(v·n)

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

19 Ütközés detektálás háromszög-háromszöggyorsítás: befoglalók O(n 2 )

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

21 Karakter animáció r w = r L · R kéz ·T alkar ·R könyök ·T felkar ·R váll ·T gerinc ·T ember rwrw rLrL homogén koordináta 4-es

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

23 Robot példa 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); T0 T1 T2 T3 Robot HeadTorsoLeg1Leg2Arm1Arm2 T0 T1, T2, 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 Arm1Arm2HeadTorso

25 „Inverz kinematika” T0 = előrehaladás (forward, up) ??? T2 = forgatás (ang) 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)); leg forward up

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

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

28 Forward kinematika karakter állapot beállítás: S 1, E 1 karakter állapot beállítás: S 2, E 2 … karakter állapot beállítás: S n, E n 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: S 1, E 1 karakter állapot beállítás: S 2, E 2 … karakter állapot beállítás: S n, E n 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 t 0 -ra E 0, S 0 ismert ha E t, S t ismert, számítsuk E t+dt = E t +dE t, S t+dt = S t +dS E t +dE t = F( S t +dS ) = F( S t )+ dS 1 +…+ F S1F S1 F SnF Sn dSndSn = F1 S1F1 S1 Fm S1Fm S1 F1 SnF1 Sn Fm SnFm Sn... dE t,1... dE t,m dS1dS1... dSndSn Jacobi-mátrix m  n lineáris egyenletrendszer

33 m  n-es egyenletek megoldása, túlhatározottság: m > n y m = A m  n ·x n A n  m · y m = A n  m A m  n · x n (A n  m A m  n ) -1 A n  m ·y m = x n T T TT A + = A n  m pseudo inverze minimális kvadratikus hibájú megoldás: | A m  n ·x n - y m |

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

35 Inverz kinematika megoldás E = E 0, S = S 0 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 11 22 l1l1 l2l2 E = (x, y) S = (  1,  2 ) x(  1,  2 ) = l 1 cos  1 + l 2 cos(  1 +  2 ) y(  1,  2 ) = l 1 sin  1 + l 2 sin(  1 +  2 ) = dx dy d1d1 -l 1 sin  1 - l 2 sin(  1 +  2 ) d2d2 -l 2 sin(  1 +  2 ) l 1 cos  1 + l 2 cos(  1 +  2 )l 2 cos(  1 +  2 ) J(  1,  2 ) Jacobi mátrix

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 X1, Y1 P2P2 c1 c2 v1 u1 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 P1 vrp1 W = [x, y, z] c, u, v, vrp meghatározása: kamera kalibráció

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

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ó (x, y, z)  (X,Y) c v u vrp (x, y, z) f Ismeretlenek: vrp, f, u, v 3 + 1+2+2 = 8 (X,Y)

48 Kompozitálás Blaskó Gábor


Download ppt "Animáció Szirmay-Kalos László. Animáció = időfüggés T1(t)T1(t) T2(t)T2(t) TV(t)TV(t) Transzformációk alak szín megjelenítési attribútumok, stb."

Similar presentations


Ads by Google