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

Hasonló előadás


Az előadások a következő témára: "Animáció Szirmay-Kalos László."— Előadás másolata:

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) do t = Óra leolvasás
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: Fiziológiai 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 F/m = r dt2 = rL d2 TM(t) dt2 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)= sx sy sz 1 cos sin -sin cos 1 cos -sin 1 sin cos 1 px, py, pz, 1 1 cos sin -sin cos

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 Keyframe animáció 5.key 4.key 2.key 1. key 3.key

9 Keyframe animáció görbéi

10 Görbék megváltoztatása

11 Interpoláció: 3-d rendű spline
ri(t) = ai t3 + bi t2 + cit 1 + di ri(ti) = ri, ri(ti+1) = ri+1 ri’(ti) = vi ri’(ti+1) = vi+1 vi vi+1 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 ri+1 r1 rn r0 ri t0 t1 ti ti+1 tn

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

13 Keyframe animáció

14 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  t = spline paraméter vagy az ívhossz

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

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

17 Pálya animáció

18 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

19 Egy kis mechanika dr/dt = v dv/dt = F(r,v,t)/m -n(v·n)
ÜtközésDetektál F(r,v,t) erő m sugár: r+v·t 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]

20 Folytonos-Diszkrét ütközés detektálás pontra é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

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

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

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

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

25 Robot példa Robot T0 T1, T2, T3 T0 = robot előrehalad
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

26 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 glRotatef(angle, 1, 0, 0); glScalef(1, 4, 1); // 1x4x1 cube DrawCube( ); glPopMatrix(); … Másik kéz, lábak, fej, törzs } Robot Arm1 Arm2 Head Torso

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

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

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

30 Forward kinematika … S(t) interpolációval E(t) = F ( S(t) )
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) )

31 Forward kinematika eredmény

32 Inverz kinematikával … E(t) interpolációval S = F-1( E(t) )
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) )

33 Inverz kinematika eredmény

34 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 , St ismert, 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 x n lineáris egyenletrendszer ... ... = ... ... Fm  S1 Fm  Sn dEt,m ... dSn

35 m x n-es egyenletrendszerek megoldása
dEm = Jmxn ·dSn általában n > m Jnxm · dEm = Jnxm Jmxn ·dSn (Jnxm Jmxn)-1 Jnxm ·dEm = dSn T T T T J+ = Jnxm pseudo inverze: a lehetséges megoldásokból egyet választ, amely az állapotvektor változási sebességét minimalizálja

36 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 }

37 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 dx -l1 sin 1 - l2 sin(1 + 2) -l2 sin(1 + 2) d1 = dy l1 cos 1 + l2 cos(1 + 2) l2 cos(1 + 2) d2

38 Bőrözés

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

40 Példa: sétáló mozgás

41 Teljes,ciklikus séta

42 Egyszerű karakteranimáció

43 Motion Capture animáció

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

45 Motion capture eredmény
Minden markerre: pozicióadatok x t y z 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

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

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

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

49 Kompozitálás Blaskó Gábor


Letölteni ppt "Animáció Szirmay-Kalos László."

Hasonló előadás


Google Hirdetések