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

Slides:



Advertisements
Hasonló előadás
Mozgások I Newton - törvényei
Advertisements

Az anyagi pont dinamikája A merev testek mechanikája
A PONTSZERŰ ÉS KITERJEDT TESTEK MOZGÁSA
I S A A C N E W T O N.
A munkasebesség egyenlőtlensége
Dr. Angyal István Hidrodinamika Rendszerek T.
2D képszintézis Szirmay-Kalos László.
Geometriai Transzformációk
Analitikus (koordináta) geometriai gyorstalpaló
Inkrementális 3D képszintézis
Geometriai modellezés
Sugárkövetés: ray-casting, ray-tracing
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.
Inkrementális 3D képszintézis Szirmay-Kalos László.
2D képszintézis Szirmay-Kalos László. Számítógépes grafika feladata képszintézis Virtuális világ modell modellezés Metafórák: 2D rajzolás világ = sík.
Geometriai modellezés
Számítógépes grafika Szirmay-Kalos László
Sugárkövetés: ray-casting, ray-tracing Szirmay-Kalos László.
3D Játékok készítése OpenGL környezetben
3D képszintézis fizikai alapmodellje
Regresszió számítás Mérnöki létesítmények ellenőrzése, terveknek megfelelése Geodéziai mérések – pontok helyzete, pontszerű információ Lineáris regresszió.
Függvények BMEEPAGA301 Építész informatika 1
Transzformációk kucg.korea.ac.kr.
Számítógépes grafika, PPKE-ITK, Benedek Csaba, D képszintézis 4. előadás.
Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010 Geometriai modellezés 2. előadás.
Modellezés és szimuláció c. tantárgy Óbudai Egyetem Neumann János Informatikai Kar Intelligens Mérnöki Rendszerek Intézet Mechatronikai Mérnöki MSc 8.
Mérnöki objektumok leírása és elemzése virtuális terekben c. tantárgy Budapesti Műszaki Főiskola Neumann János Informatikai Kar Intelligens Mérnöki Rendszerek.
Mérnöki számítások MÁMI_sz1 1.
2. Előadás Az anyagi pont dinamikája
3. Vetületi ábrázolások számítási eljárásai
PTE PMMK Matematika Tanszék dr. Klincsik Mihály Matematika III. előadások MINB083, MILB083 Gépész és Villamosmérnök szak BSc képzés 2007/2008. őszi félév.
Matematika III. előadások MINB083, MILB083
Mérnöki Fizika II előadás
Mérnöki Fizika II előadás
Fizika 2. Mozgások Mozgások.
2D képszintézis és textúrák
A PONTSZERŰ ÉS KITERJEDT TESTEK MOZGÁSA
I. Törvények.
A Galilei-transzformáció és a Galileiféle relativitási elv
Mechanika KINEMATIKA: Mozgások leírása DINAMIKA: a mozgás oka erőhatás
Mechanika KINEMATIKA: Mozgások leírása DINAMIKA: a mozgás oka erőhatás
Fraktálok Szirmay-Kalos László.
Grafikus alaphardver Szirmay-Kalos László. Jelfeldolgozási megközelítés modellezés modell képszintézis Digitális kép megjelenítés Analog Digitál Képinformáció.
Térfogatvizualizáció
Sugárkövetés: ray-casting, ray-tracing
2D képszintézis Szirmay-Kalos László.
Analitikus geometria gyorstalpaló
Játékfejlesztés Szirmay-Kalos László.
Inkrementális 3D képszintézis Szirmay-Kalos László.
Számítógépes grafika Bevezetés
3D képszintézis fizikai alapmodellje Szirmay-Kalos László Science is either physics or stamp collecting. Rutherford.
Transzformációk Szirmay-Kalos László. Transzformációk (x,y) (x’,y’) = T(x,y) l Tönkre tehetik az egyenletet l Korlátozzuk a transformációkat és az alakzatokat.
2D grafikus rendszerek Szirmay-Kalos László.
Inkrementális 3D képszintézis
Animáció és szimuláció Jeni László Attila
A függvény deriváltja Digitális tananyag.
A tehetetlenség törvénye. A tömeg.
Geometriai transzformációk
Pontszerű test – kiterjedt test
2. előadás.
A mozgás egy E irányú egyenletesen gyorsuló mozgás és a B-re merőleges síkban lezajló ciklois mozgás szuperpoziciója. Ennek igazolására először a nagyobb.
Newton gravitációs törvényének és Coulomb törvényének az összehasonlítása. Sípos Dániel 11.C 2009.
A MECHANIKA MEGMARADÁSI TÖRVÉNYEI
Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010 Geometriai modellezés 2. előadás.
Ütközés detektálás Ács Zsombor.
Variációs elvek (extremális = min-max elvek) a fizikában
Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010
Szécsi László 3D Grafikus Rendszerek 7. előadás
A tehetetlenség törvénye. A tömeg.
Animáció Szirmay-Kalos László.
Előadás másolata:

Animáció Szirmay-Kalos László

Animáció = időfüggés T1(t) TV(t) T2(t) Transzformációk alak szín megjelenítési attribútumok, stb

Valós idejű animáció Óra inicializálás (tstart) tprev = tstart; do t = Óra leolvasás; Szimuláció(tprev, t); for each object o: modellezési transzf TM,o = TM,o(t); Nézeti transzformáció: TV = TV(t); Képszintézis; tprev = t; while (t < tend); Legalább 15 ciklus másodpercenként

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

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

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 Kvaterniók pozíció: px, py, pz orientáció: , ,  skálázás: sx, sy, sz p(t) TM(t)= 1 px, py, pz, 1 sx sy sz 1 cos sin -sin cos 1 cos -sin 1 sin cos 1 cos sin -sin cos

Kvaternió interpoláció

Kvaternió interpoláció q[0,u]q-1 = [0,v] q1 = [cos(1/2), w1 sin(1/2)], |w1 | = 1 q2 = [cos(2/2), w2 sin(2/2)], |w2 | = 1 q(t) q1 q2

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

Keyframe animáció 5.key 4.key 2.key 1. key 3.key

Keyframe animáció görbéi

Görbék megváltoztatása

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

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

Keyframe animáció

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

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

Í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

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

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

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

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

Csontváz When bone animation is defined, the bones and joints connecting them are also included in the mesh representing the skin. By default, a skin vertex will be transformed by the transformation of that bone which is closest to it. During animation, the bones are rotated in the joints and upper level bones naturally modify all other bones connected to it via joints. The skin is deformed with the resulting transformation matrices of the bones.

Séta

Transzformáció hierarchia 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); l 2 To examine how this can be done in OpenGL, let us consider a skin vertex attached to the cyan bone. When this correspondence is made, the skin vertex is expressed relative to its bone, i.e. in the coordinate system of the bone, resulting in (x,y,z). This point can also be expressed in the coordinate system of the parent bone (brown bone), just the transformation between the reference systems of the two bones should be executed. This is currently a translation along axis x with the length of the bone l. If the child (cyan) bone is rotated, this rotation applies to the skin in its coordinate system, thus rotation happens before applying the translation to the parent system. If the parent bone is rotated, the skin is translated first to the parent’s coordinate system, then rotation takes place. l glRotatef(theta1, 0, 0, 1) glTranslatef(l, 0, 0); glVertex3f(x, y, z); 1

Transzformáció hierarchia glRotatef(theta1, 0, 0, 1) glTranslatef(l, 0, 0); glRotatef(theta2, 0, 0, 1) glVertex3f(x, y, z); 2 l1 1 If both bones are rotated, first child rotation, then translation to the parent’s system, finally rotation of the parent are executed. If the parent is also a child of some other node, or the parent is placed in the world, then new transformations must be added on the top of the hierarchy. Generally, a bone is a rotation transformation for its own skin and a rotation + translation to its children, which should be applied recursively on hierarchical characters. 2 glTranslatef(x0, y0, z0); glRotatef(theta1, 0, 0, 1) glTranslatef(l, 0, 0); glRotatef(theta2, 0, 0, 1) glVertex3f(x, y, z); l1 1 (x0,y0,z0)

PMan Pman T0 T1, T2 T0 = Pman előremozog T1= váll pozíció Head Torso Leg1 Leg2 Arm Arm2 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); T2 T1 T0 Our simple example is the primitive man, which consists of a head, torso, two independent legs and two arms. Let us consider just an arm. Pman swings his arm while walking. The swing rotation is defined in a coordinate system where the origin is the shoulder position. Then, the position of the shoulder with respect to Pman should be defined, i.e. the swinging arm should be expressed in a coordinate system having the origin in the center of Pman. This is a translation. Finally, Pman moves forward, i.e. its center is translated in the world coordinate system. So the arm is first rotated (T2), then translated (T1), and translated again (T0). From these transformations, T0 and T2 change in time, but T1 remains constant, which defines the physiological constraints of the body: Pman can move its complete body and can swing its arm, but cannot remove its arm from its shoulder.

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; glTranslatef(xsh, ysh, zsh); // T1 glRotatef(angle, xshax, yshax, zshax); // T2 DrawArm( ); glPopMatrix(); … Other arm, legs, torso, head } Pman Arm1 Arm2 Head Torso Transformations follow each other in the program in reverse order of their execution or in normal order of the hierarchy traversal. Only the parameters of T0 and T2 are updated. T2 is a periodic swinging rotation, which is defined by two key frames defining the two extreme angles and the rotation angle is linearly interpolated in between according to the elapsed time. Note that when we step on a lower hierarchy level, the transformation matrix is pushed on stack, and then restored since objects on the same level should not interfere (arms are independent, so are legs). However, the parent affects all its children.

Inverz kinematika T0 = előremozgás (forward, up) ??? T2 = láb forgatás(ang) leg ang up The motion defined by constant forward moving velocity and constant angular speed in the hips and shoulders is not realistic since the leg will slip on the floor (like a break dancer) and the body will fly over the floor. In realistic walking one leg should stand still on the floor. In an animation, the point of interest for which constraints are given is called the end effector (a term inherited from robotics). The end effector of the walking is the leg holding the weight of the body. The problem is that we define the character state from top to bottom by setting a sequence of transformations. This is called forward kinematics. The end effector at the end of the transformation sequence will be affected by all transformations. The task is to determine the upper level transformations in a way that the resulting end effector position meets the specified constraint. Such problems are called inverse kinematics. In this simple problem, we can explicitly solve the inverse kinematics problem since the relationship between the position of the character (forward and up) a hip rotation (ang) is defined by a right triangle of hypotenuse equal to the leg length. The end effector is always on the ground, so up directly specifies the distance from the floor. However, Pman walks forward, so its location along the forward direction is not constant. The actual forward position is just relative to the leg, which means that forward is updated incrementally. Támaszkodó nem csúszkálhat forward forward += leg * fabs(sin(angNew) - sin(angOld)); up = leg * cos(angNew);

Inverz kinematika 1 l1 2 l2 up(1,2) = l1 sin 1 + l2 sin(1 + 2) In case of multiple joints and bones, the correspondence between the rotation angles and the relative position of the origin and the end effector may become complicated if the rotation axes are different. However, when rotation axes are parallel (more or less, this is the case for hip and knee rotations), a simple analytic expression can be elaborated. forward(1,2) = l1 cos 1 + l2 cos(1 + 2)

Bőrözés

Merev és sima bőrőzés

5. házi Gólya lépeget: Béka: Síkra vetített árnyék J: jobbra ford (0.5sec) B:balra ford (0.5sec) SP: lecsap (0.5sec) Sima bőrözés CPU-n Béka: ugrik, min 1 sec pihenő Síkra vetített árnyék

5. házi 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.

Motion Capture animáció

Sztereo látás P = vrp + (2X/XMAX-1)u + (2Y/YMAX-1)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 c2 v1 u1 P1 P2 X1, Y1 w = (x, y, z) vrp1 c, u, v, vrp meghatározása: kamera kalibráció

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

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

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

Kompozitálás Blaskó Gábor