Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
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) d1 = dy l1 cos 1 + l2 cos(1 + 2) l2 cos(1 + 2) d2
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
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.