Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

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.

Hasonló előadás


Az előadások a következő témára: "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."— Előadás másolata:

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 ) t prev = t start ; do t = Óra leolvasás; Szimuláció(t prev, t); 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; t prev = t; 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) Kvaterniók

7 Kvaternió interpoláció

8 l q 1 = [cos(  1 /2), w 1 sin(  1 /2)], |w 1 | = 1 l q 2 = [cos(  2 /2), w 2 sin(  2 /2)], |w 2 | = 1 q1q1 q2q2 q(t)q(t) q  [0,u]  q -1 = [0,v]

9 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

10 1. key Keyframe animáció 2.key3.key4.key5.key

11 Keyframe animáció görbéi

12 Görbék megváltoztatása

13 Interpoláció: 3-d rendű spline t0t0 t1t1 titi t i+1 tntn r0r0 r1r1 riri r i+1 rnrn r i (t) = a i t 3 + b i t 2 + c i t 1 + d i r i (t i ) = r i, r i (t i+1 ) = r i+1 r i ’(t i ) = v i r i ’(t i+1 ) = v i+1 vivi v i+1 Ismeretlen v i -k meghatározása: C 2 folytonosság követelményéből: spline r i ’’(t i+1 )= r i+1 ’’(t i+1 ) + sebesség a kezdő és végpontban Tervezési paraméterek alapján: Kohanek-Bartels, Catmull-Rom

14 Kohanek-Bartels (Catmull-Rom) „spline” t0t0 t i-1 titi t i+1 tntn r0r0 r i-1 riri r i+1 rnrn v i = 1212 r i+1 - r i t i+1 - t i r i - r i-1 t i - t i-1 + (1-  ) tension paraméter  = 1  = 0 Catmull-Rom  = -1(1-  )   =0.5  =0.9  =0.1 vivi

15 Keyframe animáció

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

17 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)r(t) orr: z

18 Ívhossz szerinti mozgás r(u) görbe: s(u) =  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 dsds dz = dz/du ·du

19 Fizikai animáció l Erők (pl. 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 rossz !

20 Egy kis mechanika F(r,v,t) erő m 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 } 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) r v

21 Folytonos-Diszkrét ütközés detektálás pontra és féltérre r(ti)r(ti) 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

22 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

23 Csontváz

24 Séta

25 Transzformáció hierarchia 22 l l 11 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); glRotatef(theta1, 0, 0, 1) glTranslatef(l, 0, 0); glVertex3f(x, y, z);

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

27 PMan 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); T0 T1 T2 Pman HeadTorsoLeg1Leg2ArmArm2 T0 T1, T2

28 Pman rajzolá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 Arm1Arm2HeadTorso

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

30 Inverz kinematika l1l1 22 11 l2l2 up(  1,  2 ) = l 1 sin  1 + l 2 sin(  1 +  2 ) forward(  1,  2 ) = l 1 cos  1 + l 2 cos(  1 +  2 )

31 Bőrözés

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

33 5. házi l 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 l Béka: –ugrik, min 1 sec pihenő l Síkra vetített árnyék

34 5. házi l 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 X1, Y1 P2P2 c1 c2 v1 u1 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ó P = vrp + (2X/XMAX-1)u + (2Y/YMAX-1)v

37 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)

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

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

40 Kompozitálás Blaskó Gábor


Letölteni 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."

Hasonló előadás


Google Hirdetések