tartalom szam´ ´ıt og´ epes...
TRANSCRIPT
Szamıtogepes Grafika
Valasek [email protected]
Eotvos Lorand TudomanyegyetemInformatikai Kar
2011/2012. oszi felev
Tartalom
AnimacioAttekintesAnimacio szintezisKamera animacioPozıcio es orientacioKeplet animacioKulcskocka animacioPalya animacioHierachikus rendszerekElorehalado kinematikaInverz kinematika
Animacio
I Szıntereink ritkan statikusak, kulonosen interaktıvalkalmazasok eseten
I Animacio: kepek egymas utani sorozataI Ha eleg gyorsan kovetik egymast, akkor folytonos mozgas
erzete alakul ki (ld. CFF korabban)
Hagyomanyos animacios modszerek
I Minden egyes kepkockat kulon megrajzolniI Mindent tudunk pontosan iranyıtaniI Rendkıvul munkaigenyes (es draga)
I Cel animationI Retegek (layerek) hasznalata, ujrahasznalhato foliakon a
szınter egyes reszeiI Kulcskereteket (keyframe-eket) rajzoljak a fo rajzolok, az
atmenetekert (inbetween) a ”fiatalabbak” felelosek (amegadott utasıtasoknak megfeleloen)
I De: ha minden mozog a hatterben ez is elkepesztoenmunkaigenyes (es draga: pl. The Wings of Honneamise)...
Hagyomanyos animacios modszerek
I Tovabbi erdekessegek: ”Principles of Traditional AnimationApplied to 3D Computer”, SIGGRAPH’87, pp. 35-44.
Szamıtogeppel segıtett animacio
I Kulcskeret (keyframe) alapu animacioI A koztes animacios fazisok elkeszıtesenek automatizalasa:
”csak” a kulcskeret kepkockakat kell elkepszıteni esmegadni a kıvant atmenetek parametereit
I Rugalmas, kevesbe munkaigenyes de meg mindig komolykepzettseget igenyel (ujakat is)
I Proceduralis animacioI A mozgas algoritmikus leırasaI Peldaul pattogo labda magassaga az ido (t) fuggvenyeben:
m(t) = |sin(ωt + θ0)|e−kt
Szamıtogeppel segıtett animacio
I Fizikai alapu animacioI A szınterunk elemeit fizikai jellemzokkel latjuk el (tomeg,
erok, rugalmassag stb.)I A fizikai torvenyei alapjan felırt egyenletek megoldasakent
eloall az animacioI Realisztikus (ha jol csinaljuk), de nehez iranyıtani
I Motion captureI Muszerekkel rogzıteni amint valaki/valami elvegzi a kıvant
mozgasokat majd ezt egy digitalis modellre atultetni
Mit animalhatunk?
I Lenyegeben barmit, ami befolyasolja a megjeleno kepet aszınterrol (modellek pozıcoja, orientacioja, szıne,reprezentaciohoz kotodo tulajdonsagai, BRDF stb.)
I Elsosorban a modell es kamera transzformaciokkalfoglalkozunk most csak
I A feladatunk ezeknek a parametereknek idotol fuggovetetele
Animacio szintezis
I Legyen minden o objetumra a modellezesi (vilag)transzformacio Mo ∈ R4×4
I Legyen a nezeti (kamera) transzformacio: V ∈ R4×4
I Megjegyzes: ha V a View matrix, akkor csak a kamerapoziciojat, orientaciojat tartalmazza; ha V a View es aProjection egyutt, akkor tudjuk vele a latoszoget is allıtani
I Legyen mindketto az ido fuggvenye!I Mo ∈ R→ R4×4
I V ∈ R→ R4×4
Altalanos animacios program vaza
whi le keep running :t = ge t t ime ( )f o r o i n ob jec ts :
Mo = Mo(t)V = V (t)render scene ( )
Animacio szintezis
I Valosideju/interaktıv:I rogton meg is jelenıtjuk a kepkockakatI a szamıtasnak eleg gyorsnak kell lennie a folytonossag
latszatahozI a felhasznaloi esemenyekre reagalni kellI ⇒ olyan reszletgazdag lehet a szınter, amit meg ıgy meg
lehet jelenıteniI ⇒ inkrementalis kepszintezist hasznalunk
Valosideju animacios program vaza
def update ( ) :# FrameUpdate ( ) / UpdateScene ( )t = ge t t ime ( )f o r o i n ob jec ts :
Mo = Mo(t)V = V (t)
def render ( ) :# Render ( ) / DrawScene ( )f o r o i n ob jec ts :
rende r ob jec t ( o )
Animacio szintezis
I Nem valos ideju/offline:I ”Nem szamıt”, hogy mennyi ideig tart kiszamıtani egy
kepkockatI Elkulonol a szintezis es a visszajatszas
I Eloszor elmentjuk a kepkockakatI Aztan majd videokent lehet visszanezni
I ⇒ a felhasznalo nem tud belenyulni az animaciobaI ⇒ olyan reszletes szınteret, es olyan bonyolult algoritmust
hasznalunk, amit ki tudunk varniI Azert a koltsegvetes keretet szab: Final Fantasy: Spirits
Within (2001), egy 200 fos csapat 4 eves munkaja volt (kb.120 emberev osszesıtve), aminek elkeszıtesere 960munkaallomast hasznaltak. A film 141964 frame-bol alltvegul (15TB), egy frame atlagosan 90 percig renderelotott!
Offline rendering
∆ t = 1 /FPSf o r ( t = t s t a r t ; t<t end ; t +=∆ t ) :
f o r o i n ob jec ts :Mo = Mo(t)
V = V (t)render scene to d i sk ( )
s t a r t t i m e = ge t t ime ( )f o r ( t = t s t a r t ; t<t end ; t +=∆ t ) :
draw frame ( t )wh i le ( t− t s t a r t +∆ t > ge t t ime ()− s t a r t t i m e ) :
wa i t ( )
Valosideju animacio – rosszul
I Hogyan lehet a legkonnyebben elrontani az animacioszamıtast?
I Azzal, ha nem vesszuk figyelembe, hogy mennyi ido telt elket kepkocka kozott.
I Pl.: A kozeppontja korul akarjuk forgatni az objektumotallando szogsebesseggel.model = rotation(phi, 0,1,0); phi +=phi step;
I Az objektum olyan gyorsan fog forogni, amilyengyakorisaggal ez a kod reszlet meghıvodik.
I Gyorsabb gepen tobbszor, lassabb gepen kevesebbszer -es semmi sem garantalja, hogy ugyanazon a gepen kethıvas kozott egyaltalan ugyanannyi ido telne el!
Valosideju animacio – jol
I Hogyal lehet a legkonnyebben ezt megelozni?I Sose azt taroljuk, hogy mennyivel kell valtoztatni, hanem,
hogy mi a valtozas sebessege.I Minden szamıtas elott kerjuk le, hogy mennyi ido telt el az
elozo kepkocka ota, es ezzel szorozzuk a sebesseget.I Pl.: phi += phi step; helyett phi +=get time since last frame() * phi speed;
I Gyorsabb gepen kevesebb, lassabb gepen tobb ido telik elket kepkocka kozott⇒ gyors gepen kisebbeket lepunk,lassabban nagyobbakat - es a ”lotyoges” sem szamıt(hıvasok kozott eltelt ido valtozasa)
Kamera animacio
I A kamera tulajdonsagai:I szempozicio (eye),I egy pont amire nez (center),I felfele iranyt megado vektor (up),I a kepernyo/ablak oldal aranya (aspect),I nyılasszog (fovy).
I Ezek mind kulon-kulon valtoztathatok az animacioletrehozasahoz.
I Peldaul a szempozıciot a mult oran latott parametrikusgorbekkel is megadhatjuk, ahol a parameter az ido lesz!Pl. a-bol b-be 5 masodperc alatt a p(t) = (1− t
5)a + t5b,
ha t masodpercekben adott es t = 0-ban indulunk a-bol
Pozıcio es orientacio
I Pozıco: ”Hol van az objektum?”I Orientacio: ”Hogy all, merrefele nez az objektum?”I Elsosorban ezt a kettot szeretnenk valtoztatni.I Mo(t) megadja mindkettot.I Normalis esetben
Mo(t) =
A11 A12 A13 pxA21 A22 A23 pyA31 A32 A33 pz0 0 0 1
,I p = (px ,py ,pz) a pozıcio.I Az A matrix tartalmazza az orientaciot.
Orientacios parameterek
I Tegyuk p-t es A-t is idofuggove!I p tagjait leırhatjuk kulun-kulon fuggvennyel.I Pl.: Valami esik, eleg py -t valtoztatni.I A tagjai osszefuggenek, es csak az orentacio erdekel
belole minket (nem erdekel: meretezes, nyıras).I Az orientacio megadhato harom tengely menti forgatassal→ harom fuggetlen fuggvennyel.
Yaw, pitch, roll
I Egy objektum fuggoleges- (yaw), kereszt- (pitch) eshossztengelye (roll) menti elfordulasait egyszerre adjukmeg.
I Mar talalkoztunk vele, 3× 3-as matrixszal megadhato,harom forgatas szorzata.
I Harom tengely menti elfordulas szogevel megadhato⇒megadja az orientaciot is.
I Tetszoleges orientacio megadhato vele, de animacionalvigyazzunk, mert...
”How about sending me a fourth gimbal forChristmas?” - Mike Collins, az Apollo 11 pilotaja
Gimbal lock
Keplet animacio
I Egy adott tulajdonsag valtozasat egy megfelelofuggvennyel ırjuk le.
I Pl: Ora mutatoiI Nagymutato: yaw(t) = t/10I Kismutato: yaw(t) = t/120I Ha t-t mp-ben adjuk meg, a forgatasokat pedig fokban.
I Pl: Pattogo labdaI py (t) = |sin(ωt + θ0)| · e−kt
Kulcskocka (key frame) animacio
I Egy bonyolult mozgast nehezkes lenne keplettel megadni.I Inkabb adjuk csak bizonyos idokozonkent, hogy akkor mit
szeretnenk latni.I Ezek a kulcskockak.I Egy tulajdonsagot ket kulcskocka kozott interpolacioval
szamolunk ki.
Kulcskocka (key frame) animacio
I Az interpolacioval az objektum egyes parametereirefolytonos gorbet illesztunk.
I Az animacio lejatszasa/elmentese soran a programminden kepkockaban a hozza tartozo t ertekkel kiertekeliaz objektum parameter-fuggvenyeit.
I Ezekbol szamıtja a transzformacios matrixokat.I A matrixok felhasznalasval eloallıtja a kepet.
Linearis interpolacio (emlekezteto)
I Legyen a ket kulcskockank idopontja t0 es t1.I Legyen az interpolalando tulajdonsag g.I Linearis interpolacioval ∀t ∈ [t0, t1]-re kapjuk
g(t) =
(1− t − t0
t1 − t0
)g(t0) +
t − t0t1 − t0
g(t1)
Linearis es gombi linearis interpolacio Interpolacio ket kulcskocka kozott
K: Mi meg a baj a linearis interpolacioval?V: Ritkan nez ki termeszetesen. Animacio soran a sebesseg
konstans, elotte, utana nulla.I Elgurıtott labda: folyamatosan lassul.I Zuhano zongora: folyamatosan gyorsul.I Raketa a Foldrol a Marsra: gyorul, halad, lassıt.
I Ilyen interpolaciora hasznalhatunk:I Gyok fuggvenyt.I Masodfoku fuggvenyt.I ...
I Gyakorlatban: Bezier gorbe
Polinom interpolacio
I n kulcspontra fel tudunk ırni n − 1-ed foku polinomot.I Interpolacios polinom: minden kulcskockaban az eloırt
erteket veszi fel.I Egyutthatok szamıthatok Lagrange interpolacioval is akar
(de: nagy fokszam - nagy ”kilengesek” adatpontok kozottitt is!).
I A linearis interpolacio a Lagrange intelpolacio specialisesete n = 2-re.
Spline interpolacio
I A polinom interpolacioval kapott fv. magas fokszam esetena szomszedos pontok kozott ”hullamzik”, ıgy elrontja azanimaciot.
I Spline interpolacio: hasznaljunk tobb, egymashozkapcsolodo, alacsony fokszamu polinomot azinterpolaciohoz!
Palya animacio
I Egy objektum mozgasat megadhatjuk a bejarando palyamegadasaval is.
I A palyat egy 3D gorbevel adjuk meg.I A model ezen a gorben halad vegig.
Orientacio megadasa
I Hogyan adjuk meg az objetumunk orentaciojat?I Egy elore, es egy felfele irany egyertelmuen meghatarozza
ezt.I Megjegyzes: v.o. kamera eseten center-eye ill. up vektorokI Ha a palyagorbe differencialhato, akkor az megadja a
sebessegvektort minden idopillanatban.I A sebessegvektor mindig elore fele mutat.
Orientacio megadasa
I A felfele irany megadasara ket lehetosegunk is van.I Ha van egy termeszetes felfele, akkor hasznaljuk azt.
(Mindennel, ami nem dol be a kanyarban.)I Ha ez az irany is valtozik, akkor ez megegyezik a
gyorsulas iranyaval, azaz a palyagorbe masodikderivaltjanak iranyaval.
Hierachikus rendszerek
I Szınter grafoknal mar talalkoztunk ilyenekkel.I Egy gyerek objektum mozgasat a szulohoz viszonyıtva
adjuk meg.I Gyerekeknek lehetnek ujabb gyerekei stb.I Hierachikus rendszert – fat – kapunk.
Pelda: Emberi test Kenyszerek (constraints)
I Nem minden mozgast szeretnenk megengedni a szulohozkepest.
I Ezeket a megszorıtasokat ırhatjuk le kenyszerekkel.I Korlatozhatjuk a szabadsagfokokat: pl. konyok csak egy
tengely menten tud forogni, de a csuklo kettoI Vagy a tartomanyokat: kevesen bırjak, ha a fejuk 90◦-nel
tobbet fordul.
Elorehalado kinematika
I Vegallapotot hatarozunk meg az allapotvaltozokfuggvenyeben.
I Szimulaciokhoz jol hasznalhato.I Minden elemre megadjuk, a hozza tartozo transzformaciot.I Ezeket a hierarchiaban felulrol lefele haladva ertekeljuk ki.I Az adott elemhez tartozo transzformacio az osszes os es a
sajat transzformacio szorzata.
Pelda
I Ketszabadsagfoku, rotacios csuklokat tartalmazo rendszer.I A csuklok csak a Z tengely korul fordulnak.
Pelda – folyt.
I Allapotvaltozok: Θ1,Θ2
I A vegberendezes (X ) pozıciojat a gep szamolja.I X = (l1 cos Θ1 + l2 cos(Θ1 + Θ2), l1 sin Θ1 + l2 sin(Θ1 + Θ2))
Pelda – folyt.
I Az allapotvaltozokat megadhatjuk (pl. spline) fuggvennyel.
Pelda – folyt.
I Az allapotvaltozokat megadhatjuk kezdeti ertekkel essebesseggel.
Mit nem tud az elorehalado kinematika?
I Az elorehalado kinematika nem hasznalhato, ha astrukturalis osszefugges erosen nem linearis
I Hiaba interpolalunk egyenletesen az allapotterben, avegberendezes vadul kalimpalhat a kulcspontok kozott
I Probelmas esetek:I Lab mozgasa a talajonI Vegallapot jo, de menet kozben a berendezes reszei
atmehetnek egymason.
Inverz kinematika
I Az inverz kinematika a kritikus vegberendezes helyzetetinterpolalja, majd az allapotvaltozok erteketvegberendezes interpolalt helyzetebol szamıtja vissza.
I Az inverz kinematika masik neve a cel-orientalt animacio.I ”Ezt szeretnem megfogni, hogyan forgassam az
izuleteimet?”
Pelda
I A vegberendezes helyzetebol visszaszamoljuk azallapotvaltozok erteket.
Problemak
I Nehez ”termeszetesnek latszo” mozgast leırni vele.I Az inverz fuggveny kiszamıtasa nem trivialis,I es nem is egyertelmu (redundancia).
Pelda
I Egyenletek szama: 2, ismeretlen valtozok szama: 3⇒Vegtelen sok megoldas!
I Rendszer DOF > vegberendezes DOFI Az emberi csontvaz kb 70 DOF!
Pelda
Nem egyertelmu, ill. nem letezo megoldas