Upload
hailey
View
32
Download
0
Embed Size (px)
DESCRIPTION
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 - PowerPoint PPT Presentation
Citation preview
AnimációAnimáció
Szirmay-Kalos László
Animáció = időfüggésAnimáció = időfüggés
T1(t)
T2(t)
TV(t)
Transzformációkalakszínmegjelenítési attribútumok, stb
Valós idejű animációValós idejű animáció
Óra inicializálás (tstart)do
t = Óra leolvasásfor each object o: modellezési transzf TM, o = TM, o(t)Nézeti transzformáció: TV = TV(t)Képszintézis
while (t < tend)
Legalább 15 ciklusmásodpercenként
Valószerű mozgásValó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
Newton törvényNewton törvény
r(t) = rL TM(t)
F/m = r = rL
d2
dt2
d2
dt2TM(t)
Az erő rugalmas mechanizmusonkeresztül hat, azaz folytonosanváltozik
TM(t) C2 folytonos
m
cos sin-sin cos 1
1
TTMM(t): Mozgástervezés(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, pzorientáció: , , skálázás: sx, sy, sz
TM(t)=
sx sy sz
1
cos -sin 1sin cos 1
1 cos sin -sin cos
1
1 1 1px, py, pz, 1
p(t)
Mozgástervezés a paramétertérbenMozgá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
1. key
Keyframe Keyframe animációanimáció
2.key3.key4.key5.key
Keyframe animáció görbéiKeyframe animáció görbéi
Görbék megváltoztatásaGörbék megváltoztatása
Keyframe animációKeyframe animáció
Pálya (path) animáció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
Pálya animáció: TranszformációPálya animáció: Transzformáció
Explicit up vektor Frenet keretek:zm = r’(t) zm = r’(t) xm = zm up xm = zm r’’(t) ym = zm xm ym = zm xm
zm
xm
ym
TM = xm0(t) 0ym0(t) 0zm0(t) 0r(t) 1
A függőleges,amerre az erő hat
r(t) görbe:
r(t)
orr: z
Ívhossz szerinti mozgásÍvhossz szerinti mozgás
r(u) görbe:s(u) =
s(u)
u
Ívhossz szerinti mozgásMegtett ú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)
t
u
ds
dz = dz/du ·du
Pálya animációPálya animáció
Fizikai animáció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
Egy kis mechanikaEgy kis mechanikaF(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]
vsugár: r+v·t
metszés: t*Ha t* < dt Collision
ÜtközésDetektál
ÜtközésVálasz
dr/dt = vdv/dt = F(r,v,t)/m
-n(v·n)
Folytonos-Folytonos-Diszkrét Diszkrét ütközés detektálásütközés detektálás pontra és pontra és fféltérreéltérre
r(ti)
r(ti+1)
n ·(r - r0) = 0
n ·(r - r0) > 0
n ·(r - r0) < 0
vsugár: r+v·t
metszés: t*Ha t* < dt Collision
Ütközés detektálásÜtközés detektálásháromszög-háromszög gyorsítás: befoglalók
O(n2)
Real-time fizikai animációReal-time fizikai animáció
Konyha Zoltán (autoszimulátor)
Karakter animációKarakter animáció
rw = rL · Rkéz·Talkar·Rkönyök·Tfelkar·Rváll·Tgerinc·Tember
rw rL
homogén koordináta 4-es
22D csontD csont
l
px,py
1 0 00 1 00 l 1
cos sin 0-sin cos 0 0 0 1
x, y, 1 1 0 00 1 0px py 1
Robot Robot példapélda
T0 = robot előrehaladglTranslatef(xr, yr, zr);
T1= kar elhelyéseglTranslatef(xv, yv, zv);
T2= forgatásglRotatef(angle, 1.0f, 0.0f, 0.0f);
T3= skálázásglScalef(1.0f, 4.0f, 1.0f);
T0
T1T2
T3
Robot
Head Torso Leg1 Leg2 Arm1 Arm2
T0T1, T2, T3
Robot rajzolás + animáció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); // redglPushMatrix();
glTranslatef(xv, yv, zv); glRotatef(angle, 1, 0, 0);
glScalef(1, 4, 1); // 1x4x1 cubeDrawCube( );
glPopMatrix(); … Másik kéz, lábak, fej, törzs glPopMatrix();}
Robot
Arm1 Arm2 Head Torso
„„Inverz kinematika”Inverz kinematika”
T0 = előrehaladás (forward, up) ???
T2 = forgatás (ang)
A láb (end effektor) földön legyen és necsúszkáljon
forward += leg * fabs(sin(angNew) - sin(angOld));up = leg * (1 - cos(angNew));
leg
forwardup
Csontváz felépítéseCsontvá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 )
2 szabadságfokú rendszer2 szabadságfokú rendszer
1
2
l1 l2
E = (x, y)S = (1,2)
x(1,2) = l1 cos 1 + l2 cos(1 + 2)y(1,2) = l1 sin 1 + l2 sin(1 + 2)
Strukturális összefüggés:
Forward kinematikaForward kinematikakarakter á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) )
Forward kinematika eredményForward kinematika eredmény
Inverz kinematikávalInverz 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) )
Inverz kinematika eredményInverz kinematika eredmény
Inverz kinematika: S = FInverz kinematika: S = F-1-1(E)(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
Et+dEt = F(St+dS ) = F(St)+ dS1 +…+F S1
F Sn
dSn
=
F1
S1
Fm
S1
F1
Sn
Fm
Sn
...
...
... ...
dEt,1
...
dEt,m
dS1
...
dSn
Jacobi-mátrixm n lineáris egyenletrendszer
m m nn-es egyenletek megoldása-es egyenletek megoldása, , ttúlhatározottság:úlhatározottság: m > nm > n
ym = Amn ·xn
Anm · ym = Anm Amn · xn
(Anm Amn)-1 Anm ·ym = xn
T T
T T
A+ = Anm pseudo inverze
minimális kvadratikus hibájú megoldás: |Amn·xn - ym |
m m x x nn-es egyenletek megoldása-es egyenletek megoldása, , alulhatározottság:alulhatározottság: m < nm < n
ym = Amn ·xn
Anm ·(Amn Anm)-1 · ym = xn
Behelyettesítés:
Amn ·xn = Amn · Anm ·(Amn Anm)-1 · ym = ym
T
T
T
A+ = Anxm pseudo inverze
T
minimális energiájú megoldás: |xn |
Inverz kinematika megoldásInverz kinematika megoldásE = E0 , S = S0
for( t = t0; t < T; t += dt ) {S alapján a transzformációs mátrixok előállításaKépszintézisJ(S) Jacobi mátrix számításaJ+ = J pseudo-inverzeE(t+dt) interpolációval (keyframe)dE = E(t+dt) - E(t)dS = J+ ·dE S += dS
}
Példa: 2 szabadságfokú rendszerPélda: 2 szabadságfokú rendszer
1
2l1 l2
E = (x, y)S = (1,2)
x(1,2) = l1 cos 1 + l2 cos(1 + 2)y(1,2) = l1 sin 1 + l2 sin(1 + 2)
=dx
dy
d1 -l1 sin 1 - l2 sin(1 + 2)
d2
-l2 sin(1 + 2)
l1 cos 1 + l2 cos(1 + 2) l2 cos(1 + 2)
J(1 , 2 ) Jacobi mátrix
BőrözésBőrözés
Merev és sima Merev és sima bőrőzésbőrőzés
Példa: sétáló mozgásPélda: sétáló mozgás
Teljes,ciklikus sétaTeljes,ciklikus séta
Egyszerű karakteranimációEgyszerű karakteranimáció
Motion Capture animációMotion Capture animáció
Sztereo látásSztereo látásX1, Y1
P2
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ó
Motion capture eredményMotion capture eredmény
x
ty
tz
t
Minden markerre: pozicióadatok
x
ty
tz
t
M2
M3
M1
M2
M3
M4cos=(M3-M2)0 ·(M2-M1)0
tengely:
d=(M3-M2) x (M2-M1)
Valóságos és virtuális világok Valóságos és virtuális világok képi illesztése: kameraképi illesztése: kamera
Valóságos és virtuális világok Valóságos és virtuális világok képi illesztéseképi illesztése
Blaskó Gábor
Kamera kalibráció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)
KompozitálásKompozitálás
Blaskó Gábor