Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010 2D képszintézis 4. előadás.

Slides:



Advertisements
Hasonló előadás
Koordináta transzformációk 2
Advertisements

L ÁTHATÓSÁG MEGHATÁROZÁSA tavaszi félév.
Számpélda a földelt kollektoros erősítőre Adatok: Rg=0.5k; RB=47k;
Grafika. 2 Mértékek és koordináta rendszer Használjuk a RGB és QBColor függvényeket a színekhez Grafika létrehozása Load/change picture futási időben.
Koordináta transzformációk
Koordináta transzformációk
2D képszintézis Szirmay-Kalos László.
Geometriai Transzformációk
2D grafikus rendszerek Szirmay-Kalos László. 2D grafikus editor: GUI, use-case, dinamikus modell L L L R LD LU MouseLDown első pont MouseLDown második...
Geometriai transzformációk
Inkrementális 3D képszintézis
GPU Szirmay-Kalos László.
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ó.
Számítógépes grafika Szirmay-Kalos László
3D képszintézis fizikai alapmodellje
Virtuális világ tárolása Szirmay-Kalos László. Belső világ tárolása l Geometria: pontok koordinátái l Topológia: élek-pontok; lapok-pontok;... l hierarchia:
Bevezetés.  A számítógépes grafika inkrementális képszintézis algoritmusának hardver realizációja  Teljesítménykövetelmények:  Animáció: néhány nsec.
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ó.
Csoportosítás megadása: Δx – csoport szélesség
GRAFIKUS PRIMITÍVEK KITÖLTÉSE
A számítógépi grafika matematikai háttere
Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010 Geometriai modellezés 2. előadás.
Textúrák, világmodellek
Színek és megvilágítás
A számítógépes grafika céljai és feladatai
A számítógépes grafika céljai és feladatai
A virtuális technológia alapjai Dr. Horváth László Budapesti Műszaki Főiskola Neumann János Informatikai Kar, Alkalmazott.
Modellezés és szimuláció c. tantárgy Óbudai Egyetem Neumann János Informatikai Kar Alkalmazott Matematikai Intézet Mechatronikai Mérnöki MSc 2. Kontextuális.
A GEOMETRIA MODELLEZÉSE
3. Vetületi ábrázolások számítási eljárásai
2. Koordináta-rendszerek és transzformációk 2.1. Koordináta-rendszerek 2.2. Az egyenes és a sík egyenlete 2.3. Affin transzformációk 2.4. Projektív transzformációk.
2D képszintézis és textúrák
Relációk.
3. Vetületi ábrázolások számítási eljárásai
Pixel műveletek, képek 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ó.
Sugárkövetés: ray-casting, ray-tracing
Csipkézettség csökkentés (anti-aliasing) Szirmay-Kalos László.
Vektorok különbsége e-x = [ex-xx ey-xy ez-xz] e e-x x szempozíció
Sugárkövetés: ray-casting, ray-tracing
2D képszintézis Szirmay-Kalos László.
Analitikus geometria gyorstalpaló
Inkrementális 3D képszintézis Szirmay-Kalos László.
Számítógépes grafika Bevezetés
Animáció Szirmay-Kalos László.
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.
Inkrementális 3D képszintézis
3. Vetületi ábrázolások számítási eljárásai
2.2. Az egyenes és a sík egyenlete
Fotorealisztikus képszintézis valós időben Szirmay-Kalos László, Csébfalvi Balázs BME IIT.
Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010 Színek és megvilágítás 5. előadás.
Számítógépes grafika I. AUTOCAD alapok 2. előadás.
Geometriai transzformációk
Bevezetés - Vonalak. Koordinátarendszer Windows form x y Az y lefelé nő Transzformáció a hagyományosra x Eltolás y Ellentett és eltolás.
Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010 Geometriai modellezés 2. előadás.
Informatikai eszközök a virtuális valóság szolgálatában Hapák József ELTE-IK X. Eötvös Konferencia.
4. A grafikus szerelőszalag - áttekintés 4.0. Bevezetés.
ALAKZATOK TRANSZFORMÁCIÓJA ÚJ KÉPSÍKOK BEVEZETÉSÉVEL
A számítógépes grafika alapjai, PPKE-ITK, Benedek Csaba, 2010 Tanagyag forrás © Szirmay-Kalos László, BME A számítógépes grafika céljai és feladatai 1.
Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010
Vizualizáció és képszintézis
Grafikus Rendszerek 6. Camera.
Vizualizáció és képszintézis
Előadás másolata:

Számítógépes grafika, PPKE-ITK, Benedek Csaba, D képszintézis 4. előadás

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME 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

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME 2D képszintézis Cél: objektumok képernyőre transzformálása és a nézetbe eső részek megjelenítése Megjelenítés = a megfelelő pixelek kiszínezése Kiindulás: lokális koordináta rendszerekben definiált objektumok Fő feladatok: Objektumok transzformálása a világkoord.rsz-be Ablak téglalap elhelyezése (2D kamera) A képernyő koordinátarendszerébe való vetítés A geometriai elemeket közelítő pixelek meghatározása

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME 2D képszintézis lépései 1. Vektorizáció: A virtuális világban tárolt szabadformájú elemeket (például körívek, interpolációs vagy spline görbék) pontok, szakaszok és poligonok halmazával közelítjük. 2. Transzformáció: a lokális koord.rsz →világ koord.rsz → képernyő koord.rsz, homogén lineáris transzformáció 3. Vágás: csak az jeleníthető meg, ami a nézet téglalapján belül van, 4. Pásztakonverzió, avagy raszterizáció: geometriai elemek közelítése pixelek átszínezésével

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME 2D képszintézis lépései

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Vektorizáció [0,1]: 0, t 1, t 2,..., t n, 1 r 1 =r(0), r 2 = r(t 2 ), …, r n = r(1) r1r1 r(t)r(t) r2r2 rn rn A szabadformájú elemek közelítése pontokkal, szakaszokkal vagy poligonokkal Homogén lineáris transzformáció és vágás nem változtatja meg az elemek típusát Felosztás finomsága paraméter Pl néhány pixel hosszú szakaszok nem növelik jelentősen a raszterizáció amúgy is jenlévő hibáját

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Modellezési transzformáció p=(x, y) = o +  u +  v u x u y 0 v x v y 0 o x o y 1 [x, y, 1] = [ , , 1]  TMTM u v o ,  ) (x, y) [0, 0, 1] [o x o y 1 ] [1, 0, 1] [o x +u x o y +u y 1 ] [0, 1, 1] [o x +v x o y +v y 1 ] S x S y cos  sin  0 -sin  cos  p x p y 1 p= [x,y] u=[u x,u y ] v=[v x,v y ]

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Ablak-nézet transzformáció (x, y) ablak nézet (X, Y) X = (x-w x ) v w /w w + v x Y = (y-w y ) v h /w h + v y (wx,wy)(wx,wy) w whwh (vx,vy)(vx,vy) vwvw vhvh v w /w w 0 0  v h /w h 0 v x -w x v w /w w v y -w y v h /w h 1 [X, Y, 1] = [x, y, 1] TVTV

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Összetett transzformáció T V nézeti transzformáció számítása for each object o T M előállítása T C = T M T V for each point of object o: transzformáció T C –vel enfor endfor [X, Y, 1] = ([ , , 1] T M ) T V [X, Y, 1] = [ , , 1] (T M T V ) = [ , , 1] T C

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Vágás Ablakra vs. nézetre vágás Vektorizáció miatt: pont, szakasz, poligon Pontok vágása x > x min, x y min, y < y max x min x max y min y max

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Szakasz vágás félsíkra x1, y1x1, y1 x2, y2x2, y2 xi, yixi, yi Esetek (példa: x max egyenes): minkét végpont jó oldalon: triviális elfogadás minkét végpont rossz oldalon: triviális eldobás végpontok ellentétes oldalon: metszéspont számítás kell x1, y1x1, y1 x2, y2x2, y2 x max x1, y1x1, y1 x2, y2x2, y2

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Szakasz vágás félsíkra: metszéspont számítás x(t) = x 1 + (x 2 - x 1 )t, y(t) = y 1 + (y 2 - y 1 )t x = x max Metszéspont: x max = x 1 + (x 2 - x 1 )t  t = (x max -x 1 )/(x 2 -x 1 ) x i = x max y i = y 1 + (y 2 - y 1 ) (x max -x 1 )/(x 2 -x 1 ) x1, y1x1, y1 x2, y2x2, y2 x max xi, yixi, yi

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Cohen-Sutherland vágás C2C2 Kód=C 3 C 2 C 1 C 0 C0C0 C1C1 C3C3

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME #define Code(p) ((p.x < xmin) + ((p.y < ymin)<<1) + \\ ((p.x > xmax) ymax)<<3) bool LineClip(Vector& p1, Vector& p2) { for( ; ; ) { int c1 = Code(p1), c2 = Code(p2); if (c1 == 0 && c2 == 0) return true; if ((c1 & c2) != 0) return false; if ((c1 & 1)) p1 = IntersectX(p1, p2, xmin); else if ((c1 & 2)) p1 = IntersectY(p1, p2, ymin); else if ((c1 & 4)) p1 = IntersectX(p1, p2, xmax); else if ((c1 & 8)) p1 = IntersectY(p1, p2, ymax); else if ((c2 & 1)) p2 = IntersectX(p1, p2, xmin); else if ((c2 & 2)) p2 = IntersectY(p1, p2, ymin); else if ((c2 & 4)) p2 = IntersectX(p1, p2, xmax); else if ((c2 & 8)) p2 = IntersectY(p1, p2, ymax); } Cohen-Sutherland algoritmus

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Poligonok vágása Továbbra is: négy félsíkra vágás... Csúcspont belső pont: a vágott poligonnak is belső pontja Csúcspont külső pont: eldobhatjuk, de egy új csúcspont is létrejöhet, ha az aktuális él metszi a vágás egyenesét!

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Sutherland-Hodgeman poligonvágás PolygonClip(p[n]  q[m]) m = 0; for( i=0; i < n; i++) { if (p[i] belső) { q[m++] = p[i]; if (p[i+1] külső) q[m++] = Intersect(p[i], p[i+1], vágóegyenes); } else { if (p[i+1] belső) q[m++] = Intersect(p[i], p[i+1], vágóegyenes); }

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Konkáv poligonok vágása Konkáv poligon több részre eshet szét Kétszeres él = nem él valójában q[0] q[1] q[2] q[3] q[4] q[5] q[6] q[7]

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Raszterizáció Alakzatok formáinak közelítése: pixelek átszínezése útján Alapegység: pixel egy geometria objektumhoz több ezer/millió pixel tartozhat Következmény: az elvárt sebesség nagyságrendileg haladja meg az eddigi műveleteket!

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Pászta konverzió (raszterizáció) transzformációvágás raszterizációPixel műveletek rasztertár model Geometriai primitívek: microsec / primitív Pixelek nanosec / pixel

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Szakasz rajzolás Egyenes egyenlete: y = mx + b Egyeneshúzás (0 < m < 1): m=(y2-y1)/(x2-x1) b=y1-x1*(y2-y1)/(x2-x1) for( x = x1; x <= x2; x++) { Y = m*x + b; y = Round( Y ); write( x, y ); } x1x1 x2x2 Példa: enyhén emelkedő egyenes: 0 < m < 1: minden oszlopban 1 pixel Elvárások: a szakasz (1) ne legyen lyukas (2) ne legyen túl vastag

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Inkrementális elv Y(X) kiszámítása Y(X) = F( Y(X-1) ) = Y(X-1) + dY/dX Szakasz rajzolás: Y(X) = mX + b = m(X-1)+b+m Y(X) = F( Y(X-1) ) = Y(X-1) + m Összeadás: fixpontos ábrázolás: y = Y 2 T T: hiba < 1 a leghosszabb műveletsornál N 2 -T log 2 N N: leghosszabb szakasz hossza round( y ): y+0.5-t csonkítjuk (= „tört” bitek levágása)

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME DDA szakaszrajzolás DDADrawLine(x1, y1, x2, y2) { m = (y2 - y1)/(x2 - x1) y = y FOR X = x1 TO x2 { Y = round(y)trunc(y) WRITE(X, Y, color) y = y+m }

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME DDA szakaszrajzoló hardver X számlálóy regiszter x1 m y1 0.5 = XY  CLK

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Bresenham szakaszrajzoló algoritmus DDA: gyors, de a fixpontos ábrázolás és egészrész képzés eltolást (shift) igényel szakaszonként egyszer lebegőpontos osztás (m) Megoldás: Bresenham algorithmusa ( lásd tankönyv 103. oldal...

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Terület elárasztás működése Flood(x, y) { if (pixel[x][y] belső pont) { Write(x, y, color); Flood(x, y-1); Flood(x, y+1); Flood(x-1, y); Flood(x+1, y); } Belső pont = sötétkék mag Cél: adott kezdeti pontból egy adott határvonal átlépése nélkül elérhető pixelek átszínezése

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Területkitöltés Geometriai reprezentáció alapján p1,p2,...,pn csúcsok p1-p2, p2-p3,...,pn-p1 élek Belső pixel páratlanszor metszünk élt, ha végtelenből jövünk végtelen: vágás után a nézet széle

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Területkitöltés p1 p2 p3 p4 y x1 x4x2x3 Feldolgozás: vízszintes pásztánként:

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Naív módszer: FillPolygonSlow(q, m) % q = [q[0],…,q[m-1]] for Y = 0 to Ymax do scanline = Y k=0 for e=0 to m-1 do if scanline a q[e] és q[e+1] között van then x[k++]=(q[e],q[e+1]) szakasz és a scanline metszéspontja endif endfor x[k] tömb rendezése for i=0 to k/2-1 do for X=x[2i] to x[2i+1] do Pixel(X,Y,Color(X,Y)) endfor end Nem hatékony, mert minden pásztánál minden élt figyelünk 

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Kitöltés gyorsítása Vizsgálatok csak az aktív élekre aktív élek frissítése a megelőző pásztából Metszéspontszámítás inkrementális elv szerint a megelőző pászta metszéspontjából: y x(y) Dx/Dy x(y+1)x(y+2) Dx/Dy y+1 y+2

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Aktív él lista ymax Dx/Dy x nextAETymax Dx/Dy x next ymin=0 ymin=1 ymin=1024 ymax Dx/Dy x1 next ET éltábla: előzetesen rendezzük valamennyi élet ymin érték szerint AET: aktív éltábla – az aktuális pásztánál releváns élek Metszéspont x koordinátája az aktuális pásztával

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Poligonkitöltés FillPolygonFast(q, m) % q = [q[0],…,q[m-1]] for Y = 0 to Ymax do for e=0 to m-1 do edge = (q[e],q[e+1]) if ymin(edge) == Y then Put_AET(edge) endfor for minden edge élre az AET-ben do if ymax(edge) >= Y then Delete_AET(edge) endfor Resort_AET for minden második l élre az AET-ben do for X=round(x[l]) to round(x[l+1]) to SetPixelColor(X,Y,Color(X,Y)) endfor for minden l élre az AET-ben do x[l]+=dx/dy endfor end

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME 2. rész - ANIMÁCIÓ képszintézis Virtuális világ modell modellezés Metafórák: 2D rajzolás világ = sík

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Animáció = időfüggés T 1 (t) T 2 (t) T V (t) Transzformációk mozgás alak szín megjelenítési attribútumok, stb kameranézet Nézeti transzformáció (kamera pozíció, orientáció, látószög, vágósík)

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Valós idejű animáció Óra inicializálás (t start ) do t = Óra leolvasás Nézeti transzformáció: T V = T V (t) for each object o: modellezési transzf T M, o = T M, o (t) endfor Képszintézis while (t < t end ) Legalább 15 ciklus másodpercenként

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Folyamatás mozgatás - OpenGL Követelmények: animáció folyamatosan fusson (azaz a felhasználó- nak ne kelljen minden lépésnél „léptetni”) a rendszer reagáljon a felhasználói beavatkozásra (pl leállítás, lövés…) nem jó egyszerű végtelen ciklus-hurok! Megoldás: olyan ciklus, amely felváltva hajt végre egy-egy lépést a rendszer eseménykezelő hurkából és a program szimulációs hurkából

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME GLUT Üresjárati eseménykezelő függvény: glutIdleFunc(myIdleFunc) Idő lekérdezés: glutGet(GLUT_ELAPSED_TIME) Minta program: long oldTime; void IdleFunc(void) { long newTime=glutGet(GLUT_ELAPSED_TIME); myStepFunction(newTime-oldTime); oldTime=newTime; }

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Képszintézis és megjelenítés Animációs hurok: képek előállítása és megjelenítése ciklikusan ismételve Inkrementális képszintézis eljárások villogáshoz vezethetnek (képet fokozatosan építjük fel) Megoldás: két külön rasztertár Egyikben készül a kép, míg a másikat jelenítjük meg Új képkocka megjelenítése: a két rasztertár gyors kicserélése Rasztertár 1. Rasztertár 2. monitor

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Dupla buffer animációhoz (GLUT) Rasztertár 1. Rasztertár 2. monitor glClear(GL_COLOR_BUFFER_BIT); rajzol… glutSwapBuffers( ); Inicializálás: glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Való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

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Newton törvény r(t) = r L T M (t) F/m = r = r L d 2 dt 2 d 2 dt 2 T M (t) Az erő rugalmas mechanizmuson keresztül hat, azaz folytonosan változik T M (t) C 2 folytonos m

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME T M (t): Mozgástervezés Követelmény: ált. C 2, néha (C 1,C 0 ) folytonosság Mozgás = a transzformációs elemek időbeli változtatása Tetszőleges pozíció+orientáció megadható az alábbi mátrixszal: De az orientáció (A mátrix) szabadsági foka csak 3! szabályos orientáció: sorvektorok egymásra merőleges egységvektorok a11  a12 a13 0 a21  a22 a23 0 a31  a32 a33 0 px py pz 1 T M (t)=

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME T M (t): Mozgástervezés T M (t) m átrixelemek nem függetlenek! Tervezés független paraméterek terében cos  sin  -sin  cos  1 pozíció: px, py, pz orientáció: , ,  cos  -sin  1 sin  cos  1 cos  sin  -sin  cos  1 px, py, pz, 1 p(t)=[px, py, pz, , ,  ](t) T M (t)=   

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Orientáció tervezés – gondok… Változó orientáció-animálás a , ,  csavaró- billentő-forduló szögek független interpolációjával PRO: minden pillanatban érvényes orientációt kapunk KONTRA: képzeletbeli tengelyek körül forgatunk, ezért a mozgás nem lesz valósszerű  a paraméterek egyenletes változtatása egyenetlen mozgást eredményez, a képzeletbeli tengelyek láthatóvá válnak megoldás: interpoláció kvaterniókkal  (érdeklődőknek részletek: Szirmay-Kalos László et. al. „Háromdimenziós grafika, animáció és játékfejlesztés” 312 oldal – lásd könyvtárban)

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Mozgástervezés a paramétertérben p(t) elemei ált. C 2, néha (C 1,C 0 ) folytonosak p(t) elemeinek a definíciója: görbével direkt módon (spline) képlettel: script animation pl: origóból (v x, v y ) kezdősebességgel kilőtt lövedék mozgása x(t)=v x t, y(t) = v y t - g t 2 /2 kulcsokból interpolációval: keyframe animation görbével indirekt módon: path animation mechanikai modellből az erők alapján: physical anim. mérésekből: motion capture animation

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Interpoláció: 3-d rendű spline t0t0 t1t1 titi t i+1 tntn r0r0 r1r1 riri r i+1 rnrn vivi v i+1 C 2 folytonosság követelményéből: spline Ismeretlen v i -k meghatározása: r i ’’(t i+1 )= r i+1 ’’(t i+1 ) + sebesség a kezdő és végpontban bonyolult lineáris egyenletrendszer megoldását igényli  Tervezési paraméterek alapján: Kohanek-Bartels, Catmull-Rom Feladjuk a C 2 folytonosság követelményét a görbeszegmensek kapcsolódási pontjaiban Legalább szép sima legyen a pálya… r (t) = a i (t- t i ) 3 + b i (t- t i ) 2 + c i (t- t i ) 1 + d i ha t i ≤t< t i+1 r(t i ) = r i, r(t i+1 ) = r i+1 r’(t i ) = v i r’(t i+1 ) = v i+1

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Catmull-Rom „spline” t0t0 t i-1 titi t i+1 tntn r0r0 r i-1 riri r i+1 rnrn v i = 1212 r i+1 - r i t i+1 - t i r i - r i-1 t i - t i-1 + vivi r (t) = a i (t- t i ) 3 + b i (t- t i ) 2 + c i (t- t i ) 1 + d i ha t i ≤t< t i+1 ai=ai= v i+1 +v i (t i+1 - t i ) 2 2(r i+1 - r i ) (t i+1 - t i ) 3 – bi=bi= 3(r i+1 – r i ) (t i+1 - t i ) 2 v i+1 + 2v i (t i+1 - t i ) – c i = v i d i = r i Sebességek előírása: r’(t i ) = v i r’(t i+1 ) = v i+1

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Pálya animáció: Transzformáció Explicit up vektorFrenet keretek: zm = r’(t)zm = r’(t) xm = zm  upxm = zm  r’’(t) =r’(t)  r’’(t) ym = zm  xmym = zm  x zm xm ym TM =TM = xm 0 (t) 0 ym 0 (t) 0 zm 0 (t) 0 r(t) 1 A függőleges, amerre az erő hat r(t) görbe: r(t)

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME 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

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Egy kis mechanika F(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] v Középpont helyzete: r+v ·t metszés: t* Ha t* < dt Collision ÜtközésDetektál ÜtközésVálasz dr/dt = v dv/dt = F(r,v,t)/m -n(v·n)

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Folytonos-Diszkrét ütközés detektálás pontra és féltérre r(t i ) r(t i+1 ) n ·(r(t) - r0) = 0 n ·(r(t) - r0) > 0 n ·(r(t) - r0) < 0 v Sugár indul: r+v·t metszés: t* Ha t* < dt Collision

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Ferde hajítás 1 v(0)=v 0 2 F g =mg Mozgás+ gravitáció: v(t+  t)=v(t)+g∙  t r(t+  t)=r(t)+v(t)∙  t  v=g∙  t F0F0 Rugalmas ütközés: lásd előbb 8 F g =mg …

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Vízszintes rugón mozgó labda F(t)=-  l(t)∙D a(t)=F(t)/m v(t+  t)=v(t)+a(t)∙  t r(t+  t)=r(t)+v(t)∙  t  l(t) Rugó center Labda D: rugóállandó  l(t): megnyúlás t-ben

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Golyók ütközése v1v1 v2v2 Lendület megmaradás: m 1 v 1 +m 2 v 2 =m 1 u 1 +m 2 u 2 Mechanikai energia megmaradás 1/2 m 1 v /2 m 2 v 2 2 = 1/2 m 1 u /2 m 2 u 2 2 u1u1 u2u2 (m 1 -m 2 )v 1 +2m 2 v 2 m 1 +m 2 u1=u1= (m 2 -m 1 )v 2 +2m 1 v 1 m 1 +m 2 u2=u2= Megoldás:

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Ferde ütközés v1v1 v2v2 v 1 ┴ = u 1 ┴ v 2 ┴ = u 2 ┴ m 1 v 1 II +m 2 v 2 II =m 1 u 1 II +m 2 u 2 II ½ m 1 v 2 1 II + ½ m 2 v 2 2 II = ½ m 1 u 2 1 II + ½ m 2 u 2 2 II v 2 II v2┴v2┴ v2v2

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Ütközés detektálás háromszög-háromszöggyorsítás: befoglalók O(n 2 )

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Karakter animáció r w = r L · R kéz ·T alkar ·R könyök ·T felkar ·R váll ·T gerinc ·T ember rwrw rLrL homogén koordináta 4-es

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME 2D csont  l px,py l 1 cos  sin  0 -sin  cos  x, y, px py 1

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME Robot példa 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); T0 T1 T2 T3 Robot HeadTorsoLeg1Leg2Arm1Arm2 T0 T1, T2, T3

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME 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 glPushMatrix(); glTranslatef(xv, yv, zv); glRotatef(angle, 1, 0, 0); glScalef(1, 4, 1);// 1x4x1 cube DrawCube( ); glPopMatrix(); … Másik kéz, lábak, fej, törzs glPopMatrix(); } Robot Arm1Arm2HeadTors o

Számítógépes Grafika 2010, PPKE ITK, Benedek Csaba Tanagyag forrás ® Szirmay-Kalos László, BME „Inverz kinematika” T0 = előrehaladás (forward, up) ??? T2 = forgatás (ang) 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)); leg forward up