Tartalom. Mi az, amit változtatunk? Hajder Levente 2018/2019. I. félév

Hasonló dokumentumok
Hajder Levente 2017/2018. II. félév

Klár Gergely

Mi az, amit változtatunk?

Tartalom. Kamera animáció. Valasek Gábor Kulcskocka animáció. Hierachikus rendszerek Előrehaladó kinematika Inverz kinematika

x = cos αx sin αy y = sin αx + cos αy 2. Mi a X/Y/Z tengely körüli forgatás transzformációs mátrixa 3D-ben?

Hajder Levente 2018/2019. II. félév

Robotika. Kinematika. Magyar Attila

Infobionika ROBOTIKA. X. Előadás. Robot manipulátorok II. Direkt és inverz kinematika. Készült a HEFOP P /1.0 projekt keretében

2014/2015. tavaszi félév

Számítógépes geometria (mester kurzus)

Merev testek mechanikája. Szécsi László

Denavit-Hartenberg konvenció alkalmazása térbeli 3DoF nyílt kinematikai láncú hengerkoordinátás és gömbi koordinátás robotra

Tömegpontok mozgása egyenes mentén, hajítások

MODELLEZÉS - SZIMULÁCIÓ

Robotok inverz geometriája

Diszkréten mintavételezett függvények

Valasek Gábor Informatikai Kar. 2016/2017. tavaszi félév

Eddig csak a polinom x-ben felvett értékét kerestük

Kinematika szeptember Vonatkoztatási rendszerek, koordinátarendszerek

MÉSZÁROS JÓZSEFNÉ, NUMERIKUS MÓDSZEREK

Tartalom. Nevezetes affin transzformációk. Valasek Gábor 2016/2017. tavaszi félév

Mechanika. Kinematika

Transzformációk. Grafikus játékok fejlesztése Szécsi László t05-transform

Transzformációk. Szécsi László

VIK A1 Matematika BOSCH, Hatvan, 5. Gyakorlati anyag

Számítógépes Grafika mintafeladatok

Numerikus módszerek II. zárthelyi dolgozat, megoldások, 2014/15. I. félév, A. csoport. x 2. c = 3 5, s = 4

1. ábra. 24B-19 feladat

Egyenletek, egyenlőtlenségek VII.

A +Q töltés egy L hosszúságú egyenes szakasz mentén oszlik el egyenletesen (ld ábra ábra

Mozgásmodellezés. Lukovszki Csaba. Navigációs és helyalapú szolgáltatások és alkalmazások (VITMMA07)

3D koordináta-rendszerek

A bifiláris felfüggesztésű rúd mozgásáról

1. Feladatok a dinamika tárgyköréből

Hajder Levente 2018/2019. II. félév

Hajder Levente 2014/2015. tavaszi félév

Matematika III előadás

Számítógépes Grafika mintafeladatok

Legkisebb négyzetek módszere, Spline interpoláció

Görbe- és felületmodellezés. Szplájnok Felületmodellezés

A Hamilton-Jacobi-egyenlet

rnök k informatikusoknak 1. FBNxE-1 Klasszikus mechanika

Egyenletek, egyenlőtlenségek V.

Keresztmetszet másodrendű nyomatékainak meghatározása

GPK M1 (BME) Interpoláció / 16

Geometriai modellezés. Szécsi László

Megoldott feladatok november 30. n+3 szigorúan monoton csökken, 5. n+3. lim a n = lim. n+3 = 2n+3 n+4 2n+1

BUDAPESTI MŐSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM

1 Lebegőpontos számábrázolás

Valasek Gábor

Taylor-polinomok. 1. Alapfeladatok április Feladat: Írjuk fel az f(x) = e 2x függvény másodfokú Maclaurinpolinomját!

Numerikus integrálás

Lineáris algebra 2. Filip Ferdinánd december 7. siva.banki.hu/jegyzetek

Infobionika ROBOTIKA. XI. Előadás. Robot manipulátorok III. Differenciális kinematika. Készült a HEFOP P /1.0 projekt keretében

Hajder Levente 2017/2018. II. félév

A KLT (Kanade Lucas Tomasi) Feature Tracker Működése (jellegzetes pontok választása és követése)

Lineáris algebra numerikus módszerei

MATLAB. 6. gyakorlat. Integrálás folytatás, gyakorlás

1. feladatsor: Vektorterek, lineáris kombináció, mátrixok, determináns (megoldás)

A brachistochron probléma megoldása

Q 1 D Q 2 (D x) 2 (1.1)

Mechanika Kinematika. - Kinematikára: a testek mozgását tanulmányozza anélkül, hogy figyelembe venné a kiváltó

LNM folytonos Az interpoláció Lagrange interpoláció. Lineáris algebra numerikus módszerei

1. Generátorrendszer. Házi feladat (fizikából tudjuk) Ha v és w nem párhuzamos síkvektorok, akkor generátorrendszert alkotnak a sík vektorainak

Matematika A2 vizsga mgeoldása június 4.

Felügyelt önálló tanulás - Analízis III.

Differenciaegyenletek

ALGEBRAI KIFEJEZÉSEK, EGYENLETEK

Lineáris leképezések. 2. Lineáris-e az f : R 2 R 2 f(x, y) = (x + y, x 2 )

Bevezetés az állapottér-elméletbe Dinamikus rendszerek állapottér reprezentációi

3. Előadás. Megyesi László: Lineáris algebra, oldal. 3. előadás Lineáris egyenletrendszerek

Hajder Levente 2017/2018. II. félév

Tartalom. Tartalom. Anyagok Fényforrás modellek. Hajder Levente Fényvisszaverési modellek. Színmodellek. 2017/2018. II.

Infobionika ROBOTIKA. IX. Előadás. Robot manipulátorok I. Alapfogalmak. Készült a HEFOP P /1.0 projekt keretében

A számítógépes grafika alapjai kurzus, vizsgatételek és tankönyvi referenciák 2014

Fizika. Fizika. Nyitray Gergely (PhD) PTE PMMIK február 13.

Alap-ötlet: Karl Friedrich Gauss ( ) valószínűségszámítási háttér: Andrej Markov ( )

Differenciálegyenletek megoldása próbafüggvény-módszerrel

4. gyakorlat: interpolációs és approximációs görbék implementációja

Az ipari robotok definíciója

Tartalom. Tartalom. Hajder Levente 2018/2019. I. félév

6. gyakorlat. Gelle Kitti. Csendes Tibor Somogyi Viktor. London András. jegyzetei alapján

Vektorok, mátrixok, lineáris egyenletrendszerek

Plakátok, részecskerendszerek. Szécsi László

Mechatronika segédlet 10. gyakorlat

Algoritmusok raszteres grafikához

Hajder Levente 2016/2017.

Tartalom. Hajder Levente 2016/2017. I. félév

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

DIFFERENCIÁLEGYENLETEK. BSc. Matematika II. BGRMA2HNND, BGRMA2HNNC

VIK A2 Matematika - BOSCH, Hatvan, 3. Gyakorlati anyag. Mátrix rangja

Függvények július 13. f(x) = 1 x+x 2 f() = 1 ()+() 2 f(f(x)) = 1 (1 x+x 2 )+(1 x+x 2 ) 2 Rendezés után kapjuk, hogy:

Az animáció elve. Animáció. Képkockára ugrás. Képkockák és kockaszám. Megtekintés. Id szalag

Lineáris algebra zárthelyi dolgozat javítókulcs, Informatika I márc.11. A csoport

Sajátértékek és sajátvektorok. mf1n1a06- mf1n2a06 Csabai István

Mátrixok 2017 Mátrixok

Hajder Levente 2017/2018. II. félév

Quadkopter szimulációja LabVIEW környezetben Simulation of a Quadcopter with LabVIEW

PTE PMMFK Levelező-távoktatás, villamosmérnök szak

Polinomok, Lagrange interpoláció

Átírás:

Tartalom Számítógépes Grafika 1 Hajder Levente hajder@inf.elte.hu Eötvös Loránd Tudományegyetem Informatikai Kar 2 3 4 2018/2019. I. félév Mi az, amit változtatunk? Állókép helyett képsorozat Objektumok/kamera/világ tulajdonságait változatjuk Egy kép egy idő pillanat Képsorozat elég gyors folyamatos mozgást érzékel az emberi szem Lehet: pozícó, orientáció, szín, normál, BRDF, stb. Értelme van: pozíció, orientáció, kamera t alkalmazunk: a modellezési transzformációra a kamera transzformációra

szintézis Általános animációs program váza Legyen minden o objetumra, a modellezési trafó: M o R 4 4 Legyen a kamera trafó: V R 4 4 Megjegyzés: ha V a View mátrix, akkor csak a kamera pozicióját, orientációját tartalmazza; ha V a View és a Projection együtt, akkor tudjuk vele a látószöget is állítani Legyen mindkettő idő függő! M o R R 4 4 V R R 4 4 while keep running : t = g e t t i m e ( ) f o r o i n o b j e c t s : M o = M o (t) V = V (t) render scene ( ) szintézis Valósidejű animációs program váza Valósidejű/interaktív: rögtön meg is jelenítjük a képkockákat a számításnak elég gyorsnak kell lennie a folytonosság látszatához a felhasználói eseményekre ragálni kell olyan részletgazdag lehet a színtér, amit még így meg lehet jeleníteni inkrementális képszintézist használunk def update ( ) : # vagy i d l e, vagy onframemove t = g e t t i m e ( ) f o r o i n o b j e c t s : M o = M o (t) V = V (t) def render ( ) : # vagy display, vagy onframerender f o r o i n o b j e c t s : r e n d e r o b j e c t ( o )

szintézis Offline rendering Nem valós idejű/offline: Nem számít, hogy mennyi ideig tart kiszámítani egy képkockát Elkülönöl a szintézis és a visszajátszás Először elmentjük a képkockákat Aztán majd videóként lehet visszanézni a felhasználó nem tud belenyúlni az animációba olyan részletes színteret, és olyan bonyolult algoritmust használunk, amit ki tudunk várni t = 1/FPS f o r ( t = t s t a r t ; t <t end ; t += t ) : f o r o i n o b j e c t s : M o = M o (t) V = V (t) r e n d e r s c e n e t o d i s k ( ) Valósidejű animáció rosszul Valósidejű animáció jól Hogyal lehet a legkönnyebben elrontani az animáció számítást? Azzal, ha nem vesszük figyelembe, hogy mennyi idő telt el két képkocka között. Pl.: A középpontja körül akarjuk forgatni az objektumot állandó szögsebességgel. model = rotation(phi, 0,1,0); phi += phi step; Az objektum olyan gyorsan fog forogni, amilyen gyakorisággal ez a kód részlet meghívódik. Gyorsabb gépen többször, lassabb gépen kevesebbszer. Hogyal lehet a legkönnyebben ezt megelőzni? Sose azt tároljuk, hogy mennyivel kell változtatni, hanem, hogy mi a változás sebessége. Minden számítás előtt kérjük le, hogy mennyi idő telt el az előző képkocka óta, és ezel szorozzuk a sebességet. Pl.: phi += phi step; helyett phi += get time since last frame() * phi speed; Gyorsabb gépen kevesebb, lassabb gépen több idő telik el két képkocka között gyors gépen kissebbeket lépünk, lassabban nagyobbakat.

Tartalom 1 2 3 A kamera tulajdonásgai: szempozició (eye), egy pont amire néz (center), felfele irányt megadó vektor (up), a képernyő/ablak oldal aránya (aspect), nyílásszög (fovy). Ezek mind külön-külön változtathatók az animáció létrehozásához. 4 Orientációs paraméterek Pozícó: Hol van az objektum? Orientáció: Hogy áll, merrefele néz az objektum? Elsősorban ezt a kettőt szerenénk változtatni. M o (t) megadja mindkettőt. Normális esetben A 11 A 12 A 13 0 M o (t) = A 21 A 22 A 23 0 A 31 A 32 A 33 0, p x p y p z 1 Tegyük p-t és A-t is időfüggővé! p tagjait leírhatjuk külün-külön függvénnyel. Pl.: Valami esik, elég p y -t változtatni. A-t tagjai összefüggenek, és csak az orentáció érdekel belőle minket (nem érdekel: méretezés, nyírás). Az orientáció megadható három tengely menti forgatással három független függvénnyel. p = (p x, p y, p z ) a pozíció. Az A mátrix tartalmazza az orientációt.

Yaw, pitch, roll Tartalom Egy objektum függőleges- (yaw), kereszt- (pitch) és hossztengelye (roll) menti elfordulásait egyszerre adjuk meg. Már találkoztunk vele, 3 3-as mátrixszal megadható, három forgatás szorzata. Három tengely menti elfordulás szögével megadható megadja az orientációt is. 1 2 3 4 Kulcskocka (key frame) animáció Egy adott tulajdonság változását egy megfelelő függvénnyel írjuk le. Pl: Óra mutatói Nagymutató: yaw(t) = t/10 Kismutató: yaw(t) = t/120 Ha t-t mp-ben adjum meg, a forgatásokat pedig fokban. Pl: Pattogó labda p y (t) = sin(ωt + θ 0 ) e kt Egy bonyolult mozgást nehézkes lenne képlettel megadni. Inkább adjuk csak bizonyos időközönként, hogy akkor mit szeretnénk látni. Ezek a kulcskockák. Egy tulajdonságot két kulcskocka között interpolációval számolunk ki.

Kulcskocka (key frame) animáció Lineáris interpoláció Az interpolációval az objektum egyes paramétereire folytonos görbét illesztünk. Az animáció lejátszása/elmentése során a program minden képkockában a hozzá tartozó t értékkel kiértékeli az objektum paraméter-függvényeit. Ezekből számítja a transzformációs mátrixokat. A mátrixok felhasználásval előállíja a képet. Legyen a két kulcskockánk időpontja t 0 és t 1. Legyen az interpolálandó tulajdonság g. Lineráis interpolációval t [t 0, t 1 ]-re kapjuk ( g(t) = 1 t t ) 0 g(t 0 ) + t t 0 g(t 1 ) t 1 t 0 t 1 t 0 Interpoláció két kulcskocka között Polinom interpoláció K: Mi a baj a lineáris interpolációval? V: Ritkán néz ki természetesen. során a sebesség konstans, előtte, utána nulla. Elgurított labda: folyamatosan lassul. Zuhanó zongora: folyamatosan gyorsul. Rakéta a Földről a Marsra: gyorul, halad, lassít. Ilyen interpolációra használhatunk: Gyök függvényt. Másodfokú függvényt. Logisztikus függvényt/görbét. Gyakorlatban: Bézier görbe n kulcspontra fel tudunk írni n 1-ed fokú polinomot. Interpolációs polinom: minden kulcskockában az előírt értéket veszi fel. Együtthatók számíthatók Lagrange interpolációval. A lineáris interpoláció a Lagrange interpoláció speciális esete n = 2-re.

Spline interpoláció A polinom interpolációval kapott fv. magas fokszám esetén a szomszédos pontok között hullámzik, így elrontja az animációt. Spline interpoláció: használjunk több, egymáshoz kapcsolódó, alacsony fokszámú polinomot az interpolációhoz! Egy objektum mozgását megadhatjuk a bejárandó pálya megadásával is. A pályát egy 3D görbével adjuk meg. A model ezen a görbén halad végig. Orientáció megadása Orientáció megadása Hogyan adjuk meg az objetumunk orentációját? Egy előre, és egy felfele irány egyértelműen meghatározza ezt. Megjegyzés: v.ö. kamera esetén center-eye ill. up vektorok Ha a pályagörbe differenciálható, akkor az megadja a sebességvektort minden időpillanatban. A sebességvektor mindig előre fele mutat. A felfele irány megadására két lehetőségünk is van. Ha van egy természetes felfele, akkor használjuk azt. (Mindennél, ami nem ből be a kanyarban.) Ha ez az irány is változik, akkor ez megegyezik a gyorsulás irányával, azaz a pályagörbe második deriváltjának irányával.

Tartalom 1 2 3 4 Színtér gráfoknál már találkoztunk ilyenekkel. Egy gyerek objektum mozgását a szülőhöz viszonyítva adjuk meg. Gyerekeknek lehetnek újabb gyerekei, s.i.t. Hierachikus rendszert fát kapunk. Példa: Emberi test Kényszerek (constraints) Nem minden mozgást szeretnénk megengedni a szülőhöz képest. Ezeket a megszorításokat írhatjuk le kényszerekkel. Korlátozhatjuk a szabadságfokokat: pl. könyök csak egy tengely mentén tud forogni, de a csukló kettő Vagy a tartományokat: kevesen bírják, ha a fejük 90 -nél többet fordul.

Példa Végállapotot határozunk meg az állapotváltozók függvényében. Szimulációkhoz jól használható. Minden elemre megadjuk, a hozzá tartozó transzformációt. Ezeket a hierarchiában felülről lefele haladva értékeljük ki. Az adott elemhez tartozó transzformáció az összes ős és a saját transzformáció szorzata. Kétszabadságfokú, rotációs csuklókat tartalmazó rendszer. A csuklók csak a Z tengely körül fordulnak. Példa folyt. Példa folyt. Állapotváltozók: Θ 1, Θ 2 A végberendezés (X) pozícióját a gép számolja. X = (l 1 cos Θ 1 + l 2 cos(θ 1 + Θ 2 ), l 1 sin Θ 1 + l 2 sin(θ 1 + Θ 2 )) Az állapotváltozókat megadhatjuk (pl. spline) függvénnyel.

Példa folyt. Mit nem tud az előrehaladó kinematika? Az állapotváltozókat megadhatjuk kezdeti értékkel és sebességgel. Az előrehaladó kinematika nem használható, ha a strukturális összefüggés erősen nem lineáris Hiába interpolálunk egyenletesen az állapottérben, a végberendezés vadul kalimpálhat a kulcspontok között Problémás esetek: Láb mozgása a talajon Végállapot jó, de menet közben a berendezés részei átmehetnek egymáson. Példa A végberendezés helyzetéből visszaszámoljuk az állapotváltozók értékét. Az inverz kinematika a kritikus végberendezés helyzetét interpolálja, majd az állapotváltozók értékét végberendezés interpolált helyzetéből számítja vissza. Az inverz kinematika másik neve a cél-orientált animáció. Ezt szeretném megfogni, hogyan forgassam az izületeimet?

Problémák Példa Nehéz természetesnek látszó mozgást leírni vele. Az inverz függvény kiszámítása nem triviális, és nem is egyértelmű (redundancia). Egyenletek száma: 2, ismeretlen változók száma: 3 Végtelen sok megoldás! Rendszer DOF > végberendezés DOF Az emberi csontváz kb 70 DOF! Példa Nem egyértelmű, ill. nem létező megoldás