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

Animáció

  • 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

Page 1: Animáció

AnimációAnimáció

Szirmay-Kalos László

Page 2: Animáció

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

Page 3: Animáció

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

Page 4: Animáció

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

Page 5: Animáció

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

Page 6: Animáció

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)

Page 7: Animáció

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

Page 8: Animáció

1. key

Keyframe Keyframe animációanimáció

2.key3.key4.key5.key

Page 9: Animáció

Keyframe animáció görbéiKeyframe animáció görbéi

Page 10: Animáció

Görbék megváltoztatásaGörbék megváltoztatása

Page 11: Animáció

Keyframe animációKeyframe animáció

Page 12: 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

Page 13: Animáció

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

Page 14: Animáció

Í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

Page 15: Animáció

Pálya animációPálya animáció

Page 16: 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

Page 17: Animáció

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)

Page 18: Animáció

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

Page 19: Animáció

Ütközés detektálásÜtközés detektálásháromszög-háromszög gyorsítás: befoglalók

O(n2)

Page 20: Animáció

Real-time fizikai animációReal-time fizikai animáció

Konyha Zoltán (autoszimulátor)

Page 21: Animáció

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

Page 22: Animáció

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

Page 23: Animáció

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

Page 24: Animáció

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

Page 25: Animáció

„„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

Page 26: Animáció

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 )

Page 27: Animáció

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:

Page 28: Animáció

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

Page 29: Animáció

Forward kinematika eredményForward kinematika eredmény

Page 30: Animáció

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

Page 31: Animáció

Inverz kinematika eredményInverz kinematika eredmény

Page 32: Animáció

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

Page 33: Animáció

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 |

Page 34: Animáció

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 |

Page 35: Animáció

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

}

Page 36: Animáció

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

Page 37: Animáció

BőrözésBőrözés

Page 38: Animáció

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

Page 39: Animáció

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

Page 40: Animáció

Teljes,ciklikus sétaTeljes,ciklikus séta

Page 41: Animáció

Egyszerű karakteranimációEgyszerű karakteranimáció

Page 42: Animáció

Motion Capture animációMotion Capture animáció

Page 43: 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ó

Page 44: Animá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)

Page 45: Animáció

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

Page 46: Animáció

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

Page 47: Animáció

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)

Page 48: Animáció

KompozitálásKompozitálás

Blaskó Gábor