Za´padoˇceska´ univerzita v Plzni Fakulta aplikovany´ch vˇed Katedra informatiky a vy´poˇcetn´ı techniky
Diplomov´ a pr´ ace Generov´ an´ı kostry objekt˚ u reprezentovan´ ych troj´ uheln´ıkov´ ymi s´ıtˇ emi
Plzeˇ n, 2015
ˇ ak Michal Z´
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem diplomovou pr´aci vypracoval samostatnˇe a v´yhradnˇe s pouˇzit´ım citovan´ ych pramen˚ u. V Plzni dne 21. ˇcervna 2015 ˇ ak Michal Z´
Abstract This diploma thesis deals with automatic generation of animation skeleton for humanoid objects which are represented by triangle meshes. After research focused on existing similar methods, new original method was invented, implemented and afterwards tested on input data set consisted of meshes representing humanoids. Generated animation skeleton keeps desired topological structure and contains movement limits in every joint. In addition to the skeleton generation, we implemented testing application which allows user to animate generated skeleton and original mesh by using inverse kinematics.
Abstrakt Tato diplomov´a pr´ace se zab´ yv´a automatick´ ym generov´an´ım animaˇcn´ı kostry pro humanoidy reprezentovan´e troj´ uheln´ıkov´ ymi s´ıtˇemi. Na z´akladˇe existuj´ıc´ıch pˇr´ıbuzn´ ych metod byl vytvoˇren a naimplementov´an vlastn´ı postup, kter´ y byl pot´e testov´an na mnoˇzinˇe vstupn´ıch dat, model˚ u reprezentuj´ıc´ıch humanoidy. V´ ysledn´a animaˇcn´ı kostra dodrˇzuje pˇredem danou topologickou strukturu a obsahuje definice omezen´ı volnosti pohybu v jednotliv´ ych kloubech. Kromˇe samotn´eho generov´an´ı byla naimplementov´ana tak´e testovac´ı aplikace, ve kter´e uˇzivatel m˚ uˇze interaktivnˇe rozh´ ybat vzniklou kostru a p˚ uvodn´ı model uˇzit´ım inverzn´ı kinematiky.
2
Podˇ ekov´ an´ı Chtˇel bych podˇekovat panu doc. Ing. Josefu Kohoutovi, Ph.D. za cenn´e rady a pˇripom´ınky pˇri veden´ı diplomov´e pr´ace.
3
Obsah ´ 1 Uvod
1
2 Metody extrakce kostry
3
2.1
Medial axis transform . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.2
Metody zaloˇzen´e na geometrii a topologii . . . . . . . . . . . . . . . .
5
2.2.1
Smrˇstˇen´ı modelu s n´aslednou redukc´ı geometrie . . . . . . . .
5
2.2.2
Tvorba kostry spojov´an´ım v´ yznamn´ ych bod˚ u . . . . . . . . . 10
2.3
Volumetrick´e metody . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.3.1
2.4
Generov´an´ı kostry sn´ıman´eho ˇclovˇeka v re´aln´em ˇcase . . . . . 14
Pˇr´ıbuzn´e oblasti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3 Pˇ r´ım´ a a inverzn´ı kinematika
17
3.1
Pˇr´ım´a kinematika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2
Inverzn´ı kinematika . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.2.1
Linearizace pomoc´ı jakobi´anu . . . . . . . . . . . . . . . . . . 19
3.2.2
Cyclic coordinate descent
3.2.3
Obohacen´ı o posuvn´a spojen´ı . . . . . . . . . . . . . . . . . .
4 N´ avrh vlastn´ı metody
. . . . . . . . . . . . . . . . . . . . 20 21 22
4.1
Generov´an´ı kostry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.2
Interaktivn´ı uk´azka . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5 Podrobn´ y rozbor metody
24
5.1
Vstupn´ı data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
5.2
Generov´an´ı prozat´ımn´ı kostry . . . . . . . . . . . . . . . . . . . . . . 25
5.3
Vytvoˇren´ı animaˇcn´ı kostry . . . . . . . . . . . . . . . . . . . . . . . . 26 5.3.1
Pˇr´ıpravn´e kroky a pˇriˇrazen´ı hlavy . . . . . . . . . . . . . . . . 26
5.3.2
Pˇriˇrazen´ı list˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.4
5.3.3
Pˇriˇrazen´ı vnitˇrn´ıch uzl˚ u . . . . . . . . . . . . . . . . . . . . . 28
5.3.4
Zkop´ırov´an´ı lok´aln´ıch souˇradnicov´ ych syst´em˚ u . . . . . . . . . 30
5.3.5
Zkop´ırov´an´ı limitace pohybu v kloubech . . . . . . . . . . . . 30
Interaktivn´ı deformace . . . . . . . . . . . . . . . . . . . . . . . . . .
31
5.4.1
Inverzn´ı kinematika . . . . . . . . . . . . . . . . . . . . . . . .
31
5.4.2
Mesh-skinning . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
6 Implementace demonstraˇ cn´ı aplikace
37
6.1
Pouˇzit´e knihovny a jazyk . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.2
Form´at vstupn´ıch dat . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 6.2.1
Vzorov´a kostra . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.2.2
Troj´ uheln´ıkov´a s´ıt’ . . . . . . . . . . . . . . . . . . . . . . . . 39
6.3
Generov´an´ı kostry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
6.4
Uk´azkov´a aplikace
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.4.1
Inverzn´ı kinematika . . . . . . . . . . . . . . . . . . . . . . . .
41
6.4.2
Mesh-skinning . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
6.4.3
Nastaven´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
7 V´ ysledky
42
7.1
Testovac´ı modely . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
7.2
Nastaven´ı konstant generov´an´ı kostry . . . . . . . . . . . . . . . . . . 44
7.3
V´ ysledn´a podoba kostry . . . . . . . . . . . . . . . . . . . . . . . . . 45
7.4
Doba generov´an´ı kostry . . . . . . . . . . . . . . . . . . . . . . . . . . 47
7.5
Pamˇet’ov´a sloˇzitost generov´an´ı kostry . . . . . . . . . . . . . . . . . . 49
7.6
Doba v´ ypoˇctu inverzn´ı kinematiky
7.7
Srovn´an´ı s existuj´ıc´ımi metodami . . . . . . . . . . . . . . . . . . . . 50
. . . . . . . . . . . . . . . . . . . 49
8 Z´ avˇ er
52
A Pˇ r´ıloha: Obsah CD
55
B Pˇ r´ıloha: Uˇ zivatelsk´ y manu´ al
56
B.1 Pˇreklad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 B.2 Parametry pˇr´ıkazov´e ˇra´dky . . . . . . . . . . . . . . . . . . . . . . . . 56 B.3 Ovl´ad´an´ı aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
´ 1 Uvod V poˇc´ıtaˇcov´e grafice se pˇri ˇreˇsen´ı probl´em˚ u stˇret´avaj´ı lid´e r˚ uzn´ ych zamˇeˇren´ı, ostatnˇe obor s´am se nach´az´ı na pomez´ı informatiky, matematiky a estetiky. V ˇradˇe aplikac´ı zejm´ena konzumn´ıho charakteru nepostaˇcuje pouze jej´ı technick´a funkˇcnost, uˇzivatel´e podvˇedomˇe kladou d˚ uraz na v´ ytvarnou str´anku. Na v´ yvoji pak pracuj´ı vedle program´ator˚ u a analytik˚ u tak´e v´ ytvarn´ıci, kteˇr´ı tvoˇr´ı samotn´ y grafick´ y obsah. K tomu jim pom´ahaj´ı r˚ uzn´e komplexn´ı n´astroje pro modelov´an´ı, kresbu, u ´pravu fotografi´ı atd. Nejvˇetˇs´ı pˇrek´aˇzkou je pak samotn´e pˇrenesen´ı vytvoˇren´eho grafick´eho obsahu do c´ılov´e aplikace. Tyto u ´pravy ˇcasto nepoˇzaduj´ı ˇza´dnou invenci nebo estetick´e c´ıtˇen´ı, nicm´enˇe mohou b´yt ˇcasovˇe n´aroˇcn´e. Takto tr´av´ı v´ytvarn´ık ˇcas ˇremeslnou prac´ı, m´ısto n´ıˇz by mohl produkovat dalˇs´ı origin´aln´ı obsah. Pro program´atory v oboru poˇc´ıtaˇcov´e grafiky se tak naskytuje pomˇernˇe ˇsirok´e pole pro tvorbu n´astroj˚ u, kter´e usnadn´ı produkci grafick´eho obsahu. Jedn´ım z typ˚ u dat, kter´e jsou uˇz´ıv´any pˇri vizualizac´ıch, jsou troj´ uheln´ıkov´e s´ıtˇe. V t´eto podobˇe jsou objekty reprezentov´any pomoc´ı sv´eho povrchu, respektive aproximac´ı povrchu troj´ uheln´ıky, kter´e mohou sd´ılet sv´e hrany a vrcholy. Probl´em nast´av´a u rozpohybov´an´ı (animace) s´ıt´ı. Historicky byl omezuj´ıc´ım faktorem v´ypoˇcetn´ı v´ykon, pouˇz´ıvaly se primitivn´ı metody jako napˇr´ıklad pohybuj´ıc´ı se hierarchie nemˇenn´ ych objekt˚ u ˇci animace per-vertex, tedy definov´an´ı pohybu pro kaˇzd´y vrchol s´ıtˇe zvl´aˇst’. S n´ar˚ ustem v´ykonu se prosadily tzv. kostern´ı animace, kdy pohyb povrchu tˇelesa ˇr´ıd´ı kostra znaˇcnˇe jednoduˇsˇs´ı neˇz p˚ uvodn´ı s´ıt’. Zˇrejmou v´yhodou je u ´spora ukl´adan´ych dat, nebot’ staˇc´ı zachytit stav kostry v ˇcase a pˇriloˇzit statickou podobu troj´ uheln´ıkov´e s´ıtˇe. Anim´ator nav´ıc dost´av´a ˇr´ıdic´ı mechanismus, kter´ ym m˚ uˇze objekt intuitivnˇeji ovl´adat oproti animaci per-vertex. Na naˇseho v´ytvarn´ıka vˇsak spad´a tak´e nevdˇeˇcn´a tvorba t´eto kostry. Uvˇedomme si, ˇze pro ˇradu model˚ u m´a kostra podobn´ y charakter, zejm´ena pak u model˚ u zv´ıˇrat nebo lid´ı, kdy apriornˇe zn´ame napˇr´ıklad poˇcet konˇcetin, jejich pˇribliˇzn´e rozloˇzen´ı a pomˇery d´elek. Pro specifick´a uˇzit´ı nav´ıc mus´ı v´ytvarn´ık do kostry doplnit informaci o omezen´ı volnosti v kloubech a dalˇs´ı pomocn´e u ´daje. Diplomov´a pr´ace porovn´av´a jiˇz vznikl´e metody pro automatickou tvorbu kostry. 1
´ Uvod Na z´akladˇe pr˚ uzkumu pak vytvoˇr´ıme n´astroj, kter´ y pro humanoida ztv´arnˇen´eho troj´ uheln´ıkovou s´ıt´ı, u nˇehoˇz uplatn´ıme apriorn´ı znalosti, vytvoˇr´ı jeho animaˇcn´ı kostru s omezen´ımi volnosti pohybu v kloubech. V´ysledek bude pˇredveden v aplikaci, kter´a umoˇzn´ı iteraktivnˇe deformovat model pomoc´ı inverzn´ı kinematiky uˇzit´e na vygenerovanou kostru.
2
2 Metody extrakce kostry K automatick´e extrakci kostry vznikla ˇrada metod, kter´e jsou zaloˇzeny na r˚ uzn´ych pˇr´ıstupech. Pr´ace se zab´ yv´a kostrami sloˇzen´ ymi ze kˇrivek (curve skeletons), kter´e lze definovat jako jednorozmˇernou strukturu zjednoduˇsuj´ıc´ı p˚ uvodn´ı objekt, pˇriˇcemˇz zachov´avaj´ı topologickou a geometrickou informaci. Kostra se skl´ad´a z d´ılˇc´ıch kˇrivek naz´ yvan´ ych kosti, zpravidla uspoˇra´dan´ ych do hierarchie. Nˇekter´e metody produkuj´ı kostru sloˇzenou pouze z u ´seˇcek. Pˇri c´ılov´em uˇzit´ı vznikl´e kostry ji obvykle rozˇs´ıˇr´ıme do podoby parametrizovan´eho Frenetova trojhranu (kv˚ uli jednoznaˇcn´emu urˇcen´ı lok´aln´ı soustavy souˇradnic). Objekt b´ yv´a obvykle reprezentov´an povrchovˇe pomoc´ı troj´ uheln´ıkov´e s´ıtˇe, kter´e kromˇe pozic vrchol˚ u a jejich spojen´ı v troj´ uheln´ıky obsahuj´ı informaci o sousednostech. V tomto pˇr´ıpadˇe nastupuj´ı geometrick´e a topologick´e metody tvorby kostry, v pˇr´ıpadˇe objemov´e (voxelov´e) reprezentace metody pracuj´ıc´ı v diskr´etn´ım prostoru.
2.1
Medial axis transform
Harry Blum v roce 1967 [6] prvnˇe formalizoval stˇredn´ı osu objektu. Z jeho definice v podstatˇe vˇsechny novˇejˇs´ı postupy vych´azej´ı, nicm´enˇe pˇrid´avaj´ı dalˇs´ı krit´eria a upouˇstˇej´ı od pˇresn´eho vyj´adˇren´ı.
Obr´azek 2.1: Uk´azka stˇredn´ı osy dvourozmˇern´eho objektu (vyznaˇcena pˇreruˇsovanˇe). Stˇredn´ı osa objektu (medial axis) je definov´ana jako mnoˇzina bod˚ u Q maj´ıc´ıch stejnou vzd´alenost k alespoˇ n dvˇema bod˚ um hranice objektu, aniˇz by se jin´ y bod n´aleˇz´ıc´ı hranici nach´azel bl´ıˇze k Q.
3
Metody extrakce kostry
Medial axis transform
Form´alnˇe lze definici zapsat matematickou formulac´ı: ∀X ∈ E 3 : X ∈ MA(O) ⇐⇒ ∃A1 , A2 ∈ surface(O) : kA1 Xk = kA2 Xk ∧ @B ∈ surface(O) : kBXk < kA1 Xk
(2.2) (2.3)
kde O znaˇc´ı vstupn´ı objekt, MA(O) form´alnˇe stˇredn´ı osu objektu O a surface(O) povrch objektu. Pˇr´ıklad stˇredn´ı osy objektu je uk´az´an na obr´azku 2.1. Blum ve sv´em ˇcl´anku pouˇzil definici pomoc´ı propagace ud´alosti v ˇcase: Na poˇc´atku vznikne na hranici objektu ud´alost, kter´a se d´al homogennˇe ˇs´ıˇr´ı prostorem. Pro pˇr´ıklad si m˚ uˇzeme objekt pˇredstavit jako louku a ud´alost jako ˇs´ıˇr´ıc´ı se poˇz´ar zaloˇzen´y na jej´ı hranici. Dan´ ym m´ıstem prostoru m˚ uˇze ud´alost proj´ıt pouze jednou, pˇri pouˇzit´ı naˇs´ı analogie lze ˇr´ıct, ˇze poˇza´r nepokraˇcuje zpˇet na sp´aleniˇstˇe. Bod, ve kter´em se v jednom ˇcase setk´a v´ıce ud´alost´ı poch´azej´ıc´ıch z odliˇsn´ych zdroj˚ u (jin´ych bod˚ u hranice), tvoˇr´ı stˇredn´ı osu objektu. Proces je zn´azornˇen na obr´azku 2.4.
Obr´azek 2.4: Medial axis transform, ilustrace propagace ud´alosti v ˇcase. Vlevo se nach´az´ı p˚ uvodn´ı objekt, vpravo objekt s v´ yslednou stˇredn´ı osou. V m´ıstech nespojitosti vznik´a stˇredn´ı osa objektu. V souvislosti se stˇredn´ı osou objektu se hovoˇr´ı o tzv. medial axis transform. Jedn´a se o transformaci, pˇri kter´e povrchem reprezentovan´y objekt O nahrad´ıme mnoˇzinou maxim´aln´ıch pr´azdn´ ych hyperkoul´ı Si tak, ˇze: [
¯ Si = O
∀i
4
(2.5)
Metody extrakce kostry
Metody zaloˇzen´e na geometrii a topologii
Hyperkoule se mohou vz´ajemnˇe prot´ınat, povrch objektu O vˇsak nesm´ı b´ yt obsaˇzen uvnitˇr objemu libovoln´e hyperkoule, pouze na jej´ım povrchu (pro stˇredy hyperkoul´ı plat´ı formulace 2.2). Tato transformace plnˇe zachov´av´a p˚ uvodn´ı tvar objektu, spolu se stˇredn´ı osou mus´ıme vˇsak uchovat i polomˇer vznikl´ ych hyperkoul´ı. Sluˇs´ı se poznamenat, ˇze aˇckoli disponujeme elegantn´ı definic´ı stˇredn´ı osy, vyuˇzit´ı jej´ı surov´e podoby nen´ı pˇr´ıliˇs ˇza´douc´ı. Zaprv´e, hled´an´ı stˇredn´ı osy je v´ ypoˇcetnˇe n´aroˇcn´y u ´kon, zadruh´e, v´ysledn´a kˇrivka je obt´ıˇznˇe parametrizovateln´a. Jako posledn´ı bod zmiˇ nme, ˇze tvorba stˇredn´ı osy je vysoce citliv´a na ˇsum na povrchu objektu – sebedrobnˇejˇs´ı nuance tvoˇr´ı nov´e vˇetve stˇredn´ı osy. Stˇredn´ı osu lze aproximovat pomoc´ı po ˇca´stech line´arn´ım skeletem tvoˇren´eho vnitˇrn´ımi p´oly Voron´eho diagram˚ u. Techniku detailnˇe rozeb´ır´a Amenta et al. [3] za u ´ˇcelem rekonstrukce povrchu z navzorkovan´ych bod˚ u. Mezi dalˇs´ı aplikace stˇredn´ı osy patˇr´ı napˇr´ıklad strukturn´ı popis objekt˚ u.
2.2
Metody zaloˇ zen´ e na geometrii a topologii
V tomto pˇr´ıpadˇe nijak nemˇen´ıme charakter vstupn´ıch dat, bˇehem v´ypoˇctu vyuˇz´ıv´ame vstupn´ı troj´ uheln´ıkovou s´ıt’. D´ıky tomu m˚ uˇzeme uˇsetˇrit v´ ypoˇcetn´ı ˇcas, kter´ y bychom museli vˇenovat pˇr´ıpadn´e konverzi reprezentace dat.
2.2.1
Smrˇ stˇ en´ı modelu s n´ aslednou redukc´ı geometrie
ˇ sen´ı probl´emu, kter´e navrhuje Au et al. [4], se sest´av´a z nˇekolika f´az´ı. Nejprve Reˇ iterativnˇe smrˇst’ujeme troj´ uheln´ıkovou s´ıt’, po dosaˇzen´ı urˇcen´eho objemu pˇrich´az´ı na ˇradu redukce geometrie, pˇriˇcemˇz vznik´a jednorozmˇern´a kostra objektu. Na z´avˇer provedeme u ´pravu pozic vrchol˚ u kostry.
Smrˇ stˇ en´ı s´ıtˇ e Bˇehem smrˇst’ov´an´ı s´ıtˇe doch´az´ı k vyhlazov´an´ı detail˚ u a posunu vrchol˚ u proti ˇ smˇeru vypoˇcten´e norm´aly. Reˇs´ıme pˇreurˇcenou soustavu rovnic 2.6 pro nezn´am´ y
5
Metody extrakce kostry
Metody zaloˇzen´e na geometrii a topologii
vektor pozic V 0 , po jeho nalezen´ı pˇriˇrad´ıme V ← V 0 a v´ ypoˇcet opakujeme, dokud nen´ı dosaˇzena zastavuj´ıc´ı podm´ınka. " # WL L WH
" V0 =
0
#
WH V
(2.6)
Popiˇsme si v´yznam jednotliv´ych ˇclen˚ u soustavy. Vektor V znaˇc´ı vˇsechny aktu´aln´ı pozice vrchol˚ u s´ıtˇe, V0 pozice nov´e, hledan´e. Diagon´aln´ı matice WL (vynucuj´ıc´ı setrv´an´ı v pozici) a WH (zesiluj´ıc´ı kontrakci) zan´aˇsej´ı do v´ ypoˇctu potˇrebn´e v´ahy. Matice L prov´ad´ı diskr´etn´ı laplaceovsk´e vyhlazov´an´ı“ proti smˇeru norm´aly a je ” definov´ana n´asledovnˇe:
Lij
ωij = cotg αij + cotg βij P = (i,k)∈E −ωik 0
je-li (i, j) hranou mezi vrcholy vi a vj je-li i = j v jin´em pˇr´ıpadˇe (2.7)
pˇriˇcemˇz u ´hly αij a βij jsou protilehl´e u ´hly v˚ uˇci hranˇe (i, j). Jak jiˇz bylo ˇreˇceno, ˇreˇsen´ı soustavy mus´ıme opakovat, jedna iterace k ˇreˇsen´ı nestaˇc´ı. Za zastavovac´ı podm´ınku autoˇri ˇcl´anku vol´ı dosaˇzen´ı -n´asobku p˚ uvodn´ıho objemu, pˇr´ıpadnˇe pˇrekroˇcen´ı maxim´aln´ıho moˇzn´eho poˇctu krok˚ u (ˇreˇsen´ı soustavy rovnic).
Obr´azek 2.8: Smrˇst’ov´an´ı modelu. Konektivita p˚ uvodn´ı geometrie je zachov´ana.
6
Metody extrakce kostry
Metody zaloˇzen´e na geometrii a topologii (0)
(0)
V ˇcl´anku doporuˇcuj´ı v´ahy na poˇca´tku nastavit na hodnoty WH = 0 a WL = √ ´ 10−3 A. Uprava vah prob´ıh´a po kaˇzd´em kroku: (t+1)
WL
(t+1)
WH,i
(t)
← sL WL , pˇriˇcemˇz doporuˇcen´a hodnota sL = 2 s (0) Ai (t) ← WH,i , kde Ai pˇredstavuje plochu one-ring kolem vrcholu i (t) Ai (2.9)
Pr˚ ubˇeh kontrakce s´ıtˇe je zn´azornˇen na obr´azku 2.22, pro n´azornost byly vynech´any d´ılˇc´ı iterace.
Redukce geometrie Smrˇstˇen´a s´ıt’ si zachov´av´a svoji p˚ uvodn´ı konektivitu, k dosaˇzen´ı jednorozmˇern´e kostry pouˇzijeme redukci geometrie pomoc´ı half-edge collapse. Tento postup lze popsat tak, ˇze vybereme nejm´enˇe v´yznamnou hranu (i, j), kterou ze s´ıtˇe odstran´ıme (viz obr´azek 2.10). Vrchol vi je pot´e ztotoˇznˇen s vrcholem vj a dojde k odstranˇen´ı stˇen inciduj´ıc´ıch s hranou (i, j). Hrany odeb´ır´ame opakovanˇe do dosaˇzen´ı zastavovac´ı podm´ınky.
vi 4
1 e
3
2
1+2
vj
3+4
vi + vj
Obr´azek 2.10: Half-edge collapse. Vrchol vi je ztotoˇznˇen s vj , hrana e je odstranˇena spolu s inciduj´ıc´ımi troj´ uheln´ıky. Sluˇcov´an´ı hran je pops´ano v obr´azku pomoc´ı ˇc´ıslov´an´ı v obr´azku. Ohodnocen´ı hrany stanov´ıme jako v´aˇzen´ y souˇcet d´ılˇc´ıch funkc´ı: F (i, j) = wa Fa (i, j) + wb Fb (i, j)
doporuˇceno: wa = 1, wb = 0.1
7
(2.11)
Metody extrakce kostry
Metody zaloˇzen´e na geometrii a topologii
Funkce Fa (i, j) vyjadˇruje m´ıru chyby vznikl´e odstranˇen´ım hrany (i, j):
Fa (i, j) = F (vj , i) + F (vj , j)
(2.12)
X
(2.13)
pˇriˇcemˇz: F (vj , i) = vjT
(KTij Kij )vj
(i,j)∈E
−az
0
Kij = az −ay
0
−bx
ay
−ax −by
ax
(2.14)
−bz
0
kde a je normalizovan´ ym vektorem hrany (i, j) a b = a × vi a E pˇredstavuje mnoˇzinu hran s´ıtˇe (viz obr´azek 2.15). Pˇredpokl´ad´ame, ˇze vi neleˇz´ı v poˇc´atku soustavy souˇradnic, jinak vyjde vektor b nulov´ y.
vi
b a
O
vj
Obr´azek 2.15: Zn´azornˇen´ı vektorov´eho souˇcinu b = a×vi , bod O pˇredstavuje poˇc´atek soustavy souˇradnic. Vektor b je kolm´ y k a i vi . Funkce Fb (i, j) pokutuje d´elku hrany (i, j):
Fb (i, j) = kvi − vj k
X
kvi − vk k
(2.16)
(i,k)∈E
Bˇehem redukce udrˇzujeme vazbu redukovan´e geometrie na p˚ uvodn´ı objekt. Pro poˇca´teˇcn´ı stav je trivi´aln´ı jej nastavit, v kaˇzd´em vrcholu vi vytvoˇr´ıme seznam obsahuj´ıc´ı pr´avˇe tent´yˇz vrchol (vi ). Pˇri redukci hrany vi vj seznamy vrchol˚ u slouˇc´ıme a uloˇz´ıme do vj . Takto postupnˇe tvoˇr´ıme mapov´an´ı, kter´e pˇriˇrazuje vrcholu kostry mnoˇzinu pˇr´ısluˇsn´ ych vrchol˚ u p˚ uvodn´ı geometrie.
8
Metody extrakce kostry
Metody zaloˇzen´e na geometrii a topologii
Z´ avˇ ereˇ cn´ au ´ prava pozic Z pˇredchoz´ıho kroku jsme z´ıskali podmnoˇzinu vrchol˚ u reprezentuj´ıc´ı kostru objektu, jej´ıˇz pozice vˇsak mus´ıme dodateˇcnˇe upravit. Vrcholy kostry se totiˇz nemusej´ı nutnˇe nach´azet uvnitˇr modelu. Proto doch´az´ı k z´avereˇcn´e u ´pravˇe, jeˇz pˇresune vrcholy kostry smˇerem doprostˇred objemu tvoˇren´eho s´ıt´ı. Vyuˇzijeme mapov´an´ı kostry na s´ıt’, kter´e vzniklo v pˇredchoz´ım kroku. K vrcholu kostry u s pomoc´ı mapov´an´ı z´ısk´ame mnoˇzinu pˇr´ısluˇsn´ ych vrchol˚ u vi , kter´a je ohraniˇcena N hranicemi ξk . Korekce pozice vrcholu kostry u je d´ana jako: u =u−
N X dk k
0 i∈ξk lk,i (vi
P dk =
P
(2.17)
N − vi )
i∈ξk lk,i
(2.18)
kde dk pˇredstavuje d´ılˇc´ı pˇr´ıspˇevek dan´ y vrcholy hranice ξk , vi0 pozici vrcholu po smrˇstˇen´ı s´ıtˇe a lk,i souˇcet d´elek hran inciduj´ıc´ıch s vrcholem vi , kter´e mus´ı z´aroveˇ n patˇrit do hranice ξk . Autoˇri pˇrizn´avaj´ı, ˇze ne pro kaˇzdou s´ıt’ z´avˇereˇcn´a u ´prava pozic skuteˇcnˇe pˇrem´ıst´ı vrcholy kostry dovnitˇr modelu. V ˇcl´anku nezmiˇ nuj´ı, o kolik je zvolen´ y postup lepˇs´ı neˇz pouˇzit´ı obyˇcejn´eho centroidu.
Klady a z´ apory metody Na metodˇe ocen´ıme zejm´ena robustnost v˚ uˇci ˇsumu, nebot’ bˇehem kontrakce s´ıtˇe pomoc´ı diskr´etn´ıho laplaci´anu doch´az´ı k jej´ımu vyhlazov´an´ı. Tvorba kostry je neteˇcn´a v˚ uˇci rotaci objektu (jako jeden z d˚ uvod˚ u uved’me, ˇze pracujeme s p˚ uvodn´ı s´ıt´ı, ne s diskretizovanou reprezentac´ı v podobˇe voxelov´e mˇr´ıˇzky). Citelnou nev´yhodou je v´ypoˇcetn´ı n´aroˇcnost, ostatnˇe pˇri v´ypoˇctu opakovanˇe ˇreˇs´ıme rozs´ahlou pˇreurˇcenou soustavu rovnic. Pr´avˇe tento krok zp˚ usobuje, ˇze v´ ysledn´a v´ ypoˇcetn´ı algoritmick´a sloˇzitost je O(IC N 3 ), kde N znaˇc´ı poˇcet vrchol˚ u a IC poˇcet iterac´ı. Nastaviteln´e parametry se mus´ı volit ruˇcnˇe dle s´ıtˇe, kter´a se nach´az´ı na vstupu – ˇcl´anek nepopisuje vhodnou automatickou volbu, doporuˇcuje osvˇedˇcen´e“ ” hodnoty. 9
Metody extrakce kostry
2.2.2
Metody zaloˇzen´e na geometrii a topologii
Tvorba kostry spojov´ an´ım v´ yznamn´ ych bod˚ u
ˇ anek od Jaehwan Ma a Sunghee Choi [11] se zaob´ır´a tvorbou kostry pˇr´ımo pro Cl´ animaˇcn´ı u ´ˇcely, pˇri generov´an´ı vznikaj´ı z´amˇernˇe dlouh´e kosti, nikoliv sada drobn´ych (na rozd´ıl od metody od Au et al. popsan´e v kapitole ), kter´e bychom museli dodateˇcnˇe na z´avˇer spojovat. Shrˇ nme si nejdˇr´ıve princip v nˇekolika vˇet´ach. Nejprve jsou nalezeny v´ yznaˇcn´e vrcholy s´ıtˇe, ˇr´ıkejme jim kandid´ati na listy kostry. Mezi nimi se vyskytuj´ı i takov´e body, kter´e vznikly kv˚ uli ˇsumu na povrchu s´ıtˇe, proto doch´az´ı k filtrov´an´ı kandid´at˚ u. Pot´e zapoˇcne generov´an´ı kost´ı smˇerem od list˚ u k prozat´ım nezn´amemu koˇrenu a jejich spojov´an´ı v kostru. N´asleduj´ı z´avˇereˇcn´e u ´pravy: pˇrid´an´ı dodateˇcn´ych vnitˇrn´ıch bod˚ u kostry a um´ıstˇen´ı koˇrene kostry.
Pˇ redzpracov´ an´ı dat Autoˇri pouˇzili svoji vlastn´ı metodu hled´an´ı aproximace stˇredn´ı osy objektu (Ma et. al, 2012 [10]) k nalezen´ı maxim´aln´ı teˇcn´ ych koul´ı (tangent balls) v˚ uˇci troj´ uheln´ıkov´e s´ıti ve vˇsech jeho vrcholech (viz obr´azek 2.19). Velikost teˇcn´e koule pˇr´ısluˇs´ıc´ı vybran´emu vrcholu je pouˇzita ve v´ ypoˇctu pozdˇeji. v1 v2
v3
m
B1 B2
B3
Obr´azek 2.19: Uk´azka teˇcn´ ych koul´ı Bi na ˇca´sti s´ıtˇe (vrcholech vi ), m znaˇc´ı odhad stˇredn´ı osy. Stˇred koule leˇz´ı na v pˇr´ısluˇsn´em vrcholu stˇredn´ı osy (kter´ y odpov´ıd´a p´olu Voronoi diagramu), polomˇer je volen tak, aby vrchol vi leˇzel na jej´ım povrchu. Pro n´azornost zn´azornˇeno ve dvourozmˇern´e analogii.
10
Metody extrakce kostry
Metody zaloˇzen´e na geometrii a topologii
Hled´ an´ı v´ yznaˇ cn´ ych vrchol˚ u V´ yznaˇcn´e vrcholy jsou ch´ap´any jako lok´alnˇe nejvzd´alenˇejˇs´ı vrcholy vzhledem k ostatn´ım v s´ıti. Intiutivnˇe bychom je mohli popsat jako zakonˇcen´ı modelu“. ” Pohybovat se m˚ uˇzeme pouze po hran´ach s´ıtˇe, t´ım p´adem se jedn´a o grafovou u ´lohu. Nejprve zvol´ıme libovoln´ y vrchol s´ıtˇe vr , ze kter´eho provedeme ˇca´st zn´am´eho Dijkstrova algoritmu pro hled´an´ı cesty (algoritmick´a sloˇzitost pˇri pouˇzit´ı bin´arn´ı haldy a pˇredpokladu rovinn´eho grafu, ve kter´em poˇcet hran line´arnˇe z´avis´ı na poˇctu vrchol˚ u, je O(N log(N )), kde N znaˇc´ı poˇcet vrchol˚ u), tj. vzd´alenostn´ı ohodnocen´ı vrchol˚ u. Nejv´ yˇse ohodnocen´ y v0 se st´av´a prvn´ım kandid´atem na v´ yznaˇcn´ y vrchol. Jako dalˇs´ı krok opˇet spust´ıme Dijsktr˚ uv algoritmus, ale tentokr´at zaˇcneme ve vrcholu v0 . Kandid´aty se st´avaj´ı vˇsechny vrcholy, pro kter´e plat´ı, ˇze jejich vzd´alenostn´ı ohodnocen´ı je vyˇsˇs´ı neˇz ohodnocen´ı jejich libovoln´eho souseda. Z´ıskan´e body se mohou nach´azet mezi kandid´aty napˇr´ıklad kv˚ uli ˇsumu na povrchu s´ıtˇe. Vrchol odstran´ıme ze seznamu kandid´at˚ u v pˇr´ıpadˇe, ˇze ˇsumem zp˚ usoben´ y v´ yˇcnˇelek s´ıtˇe, kter´emu vrchol n´aleˇz´ı, je mˇelˇc´ı neˇz zvolen´ y pr´ah. Pokud se v jednom v´ yˇcnˇelku nach´az´ı v´ıce kandid´at˚ u, akceptujeme z nich jen takov´ y vrchol, kter´emu pˇr´ısluˇs´ı nejmenˇs´ı teˇcn´a koule.
Tvorba kostry Kostru tvoˇr´ıme opakov´an´ım dvou krok˚ u: odˇrez´av´an´ım a sluˇcov´an´ım vˇetv´ı vznikaj´ıc´ı kostry (viz n´ıˇze). D´ılˇc´ı kroky si ve struˇcnosti pˇredstav´ıme. Od vˇsech v´ yznaˇcn´ ych vrchol˚ u vi zaˇcneme pseudoparalelnˇe tvoˇrit vˇetve grafu kostry. To provedeme tak, ˇze z kaˇzd´eho vrcholu vj spust´ıme Dijkstr˚ uv algoritmus, ˇc´ımˇz vypoˇcteme ostatn´ım vrchol˚ um s´ıtˇe vzd´alenost od vj . Pot´e uniformnˇe navzorkujeme izoˇc´ary, kter´e pˇredstavuj´ı mnoˇzinu bod˚ u stejnˇe vzd´alen´ych od vi . V metodˇe byl pouˇzit odhad, kdy m´ısto pˇresn´ych izoˇcar byly pouˇzity jejich odhady (vzorkov´an´ı bylo provedeno na hran´ach s´ıtˇe a body stejn´e vzd´alenosti byly propojeny do po ˇc´astech line´arn´ı uzavˇren´e kˇrivky). Izoˇca´ry c oindexujeme podle vzd´alenosti od v´ yznaˇcn´eho vrcholu a oznaˇc´ıme je cj . Pokud plat´ı, ˇze |cj+1 | > |cj |, kde |cj | znaˇc´ı poˇcet samostatn´ych izoˇcar stejn´e u ´rovnˇe, pak doˇslo k topologick´emu rozdˇelen´ı. V tˇechto m´ıstech se nav´ıc velmi rychle mˇen´ı charakteristika izoˇc´ary (stˇredn´ı pr˚ umˇer a rozptyl). 11
Metody extrakce kostry
Metody zaloˇzen´e na geometrii a topologii
Pr´avˇe zde vytvoˇr´ıme nov´y vrchol, kter´y propoj´ıme s v´yznaˇcn´ym. Pˇr´ısluˇsnou vˇetev kostry t´ımto povaˇzujeme za dokonˇcenou. M˚ uˇze doj´ıt ke slouˇcen´ı s jinou vˇetv´ı, je-li nalezena izoˇc´ara s podobnou charakteristikou (pro tento u ´ˇcel je vytvoˇren nov´y vrchol). V opaˇcn´em pˇr´ıpadˇe v´ ypoˇcet pokraˇcuje v generov´an´ı izoˇca´r jin´e vˇetve modelu. Za zm´ınku stoj´ı, ˇze se v pr˚ ubˇehu algoritmu upˇrednostˇ nuj´ı tenk´e“ vˇetve modelu (maj´ıc´ı ” nejmenˇs´ı stˇredn´ı pr˚ umˇer izoˇcar) a ˇze velmi d˚ uleˇzitou roli v algoritmu hraje hustota vzorkov´an´ı izoˇcar (pˇr´ıliˇs velk´a klade vyˇsˇs´ı v´ypoˇcetn´ı n´aroky, pˇr´ıliˇs n´ızk´a znemoˇzn ˇuje spr´avn´ y chod algoritmu).
Z´ avˇ ereˇ cn´ eu ´ pravy Kaˇzd´a vˇetev s´ıtˇe obsahuje nyn´ı pouze jednu kost, kter´a se pne od v´ yznaˇcn´eho vrcholu ke spoji s jin´ymi kostmi (sourozenci a nadˇrazen´y pˇredek). Do kostry vkl´ad´ame vrcholy stˇredn´ı osy objektu maj´ıc´ı od n´ı nejvˇetˇs´ı odchylku. Tento proces opakujeme, dokud vkl´ad´an´ı zp˚ usobuje zmˇeny vyˇsˇs´ı, neˇz byl stanoven pr´ah. Posledn´ım krokem je urˇcen´ı pozice koˇrene kostry. Veˇsker´e d´ılˇc´ı vˇetve jsou v tento moment odˇrez´any, zbyla n´am mnoˇzina vrchol˚ u (v ˇcl´anku oznaˇcen´e jako root region), z jejichˇz pozic vypoˇcteme v´aˇzen´ y centroid, pˇriˇcemˇz jako v´ahy pouˇzijeme polomˇery pˇr´ısluˇsn´ ych teˇcn´ ych koul´ı.
Klady a z´ apory metody Algoritmus produkuje kostru, kter´a je dostateˇcnˇe jednoduch´a, abychom ji mohli pouˇz´ıt k animaci objektu. Stejnˇe jako u v´ yˇse popsan´e metody od Au et al. (viz sekce 2.2.1) je tvorba neteˇcn´a v˚ uˇci rotaci objektu ˇci jeho p´oze. Vzhledem k tomu, jak je tvoˇrena hierarchie kost´ı (od list˚ u smˇerem ke koˇreni), m´a v´ ysledn´a kostra hvˇezdicovitou“ podobu, kosti se sb´ıhaj´ı do koˇrene. Sami autoˇri ˇcl´anku pˇrizn´avaj´ı, ˇze ” to m˚ uˇze br´anit praktick´emu vyuˇzit´ı algoritmu pro generov´an´ı koster humanoid˚ u. Podle autor˚ u nejvˇetˇs´ı v´ ypoˇcetn´ı z´atˇeˇz tvoˇr´ı pr´avˇe stavba kostry (nikoliv prvotn´ı hled´an´ı v´ yznaˇcn´ ych bod˚ u). V´ ypoˇcetn´ı sloˇzitost algoritmu z´avis´ı nejen na poˇctu vrchol˚ u, ale i na pouˇzit´e hustotˇe vzorkov´an´ı a topologick´e sloˇzitosti modelu (kde doch´az´ı k v´ıce sluˇcov´an´ı d´ılˇc´ıch vˇetv´ı). Vyˇc´ıslen´a sloˇzitost O(q c(i) N logE) odpov´ıd´a proch´azen´ı rovinn´eho grafu, kdy v kaˇzd´em kroku i srovn´av´ame mˇen´ıc´ı se poˇcet izoˇcar c, N znaˇc´ı poˇcet vrchol˚ u, E poˇcet hran, q hustotu vzorkov´an´ı. 12
Metody extrakce kostry
Volumetrick´e metody
Za pˇredpokladu, ˇze d´elky hran jsou srovnateln´e, m˚ uˇzeme zvolit parametr q tak, abychom navzorkovali izoˇca´rou kaˇzdou hranu pˇribliˇznˇe jednou. Potom m˚ uˇzeme v´ypoˇcetn´ı sloˇzitost vyj´adˇrit jako O(E N logE). Hrany povrchu s´ıtˇe vˇsak tvoˇr´ı rovinn´y graf, jejich poˇcet je tedy line´arnˇe z´avisl´ y na poˇctu vrchol˚ u N , coˇz n´am umoˇzn´ı z´avˇereˇcn´e zjednoduˇsen´ı sloˇzitosti: O(N 2 logN ). Nezapomeˇ nme vˇsak, ˇze k tomuto pˇredpisu jsme dospˇeli po zm´ınˇen´em zjednoduˇsuj´ıc´ım pˇredpokladu.
2.3
Volumetrick´ e metody
Pˇred pouˇzit´ım volumetrick´ ych metod doch´az´ı k diskretizaci objektu: nahrad´ıme p˚ uvodn´ı objem voxely (obecn´ ym rozˇs´ıˇren´ım pixelu pro prostor), kter´e pˇredstavuj´ı pln´y prostor. Vznikl´y diskretizovan´y objekt ztenˇcujeme odeb´ır´an´ım hraniˇcn´ıch voxel˚ u. Poˇrad´ı jejich odeb´ır´an´ı urˇcuje prioritn´ı funkce, kter´a se v r˚ uzn´ ych metod´ach liˇs´ı. Stejnˇe tak se rozch´az´ı definice hraniˇcn´ıch voxel˚ u ku pˇr´ıkladu z d˚ uvodu pouˇzit´ı rozd´ıln´e sousednosti (6-okol´ı apod.). Jako pˇr´ıklad ztenˇcov´an´ı uved’me metodu od Ma et al. [9]. Nev´ yhodou metod zaloˇzen´ ych na ztenˇcov´an´ı je nemoˇznost pr´ace se surov´ ymi vstupn´ımi daty, nutnost volby hustoty mˇr´ıˇzky a vysok´a citlivost na ˇsum, z vytvoˇren´e kostry mus´ıme odstraˇ novat bezv´ yznamn´e vˇetve.
Obr´azek 2.20: Uk´azka iterac´ı ztenˇcov´an´ı modelu reprezentovan´eho voxely. Zdroj: http://csvision.swan.ac.uk/index.php?n=Site.BloodFlowModelling, cit. 6. 2015. Obdobnˇe nerobustn´ı chov´an´ı (podle Au et al. [4]) maj´ı i metody zaloˇzen´e na distanˇcn´ım poli (distance field methods), u kter´ych kaˇzd´emu voxelu pˇriˇrad´ıme hodnotu 13
Metody extrakce kostry
Volumetrick´e metody
odpov´ıdaj´ıc´ı vzd´alenosti od hranice objektu. Lok´aln´ı maxima reprezentuj´ı kandid´aty, jejichˇz spojen´ım z´ısk´ame aproximaci stˇredn´ı osy objektu. Pˇri porovn´an´ı s geometrick´ ymi metodami, kter´e byly rozebr´any v´ yˇse, trp´ı volumetrick´e metody nˇekolika nepˇrehl´ednuteln´ ymi probl´emy: 1. Geometrick´a data vyˇzaduj´ı pˇrevod do voxelov´e reprezentace, nejsou-li jiˇz na vstupu v t´eto podobˇe. 2. Pˇri konverzi mus´ıme vhodnˇe zvolit hustotu voxelov´e mˇr´ıˇzky. 3. Voxelov´a reprezentace je zpravidla pamˇet’ovˇe n´aroˇcnˇejˇs´ı oproti geometrick´e.
2.3.1
Generov´ an´ı kostry sn´ıman´ eho ˇ clovˇ eka v re´ aln´ em ˇ case
Straka et. al [14] sn´ımali ˇclovˇeka nˇekolika kamerami a v re´aln´em ˇcase byli schopni vypoˇc´ıtat jeho kostru. Sn´ım´an´ım z´ıskali pˇribliˇznou volumetrickou reprezentaci osoby, ze kter´e metodou volume scooping [13] vypoˇc´ıtali pˇribliˇznou podobu stˇredn´ı osy objektu. Na prvn´ı pohled se m˚ uˇze zd´at, ˇze jsme se ocitli v oblasti strojov´eho vidˇen´ı, principy extrakce kostry vˇsak z˚ ust´av´aj´ı stejn´e a m˚ uˇzeme je vyuˇz´ıt pro data libovoln´eho p˚ uvodu. Stˇredn´ı osu nen´ı moˇzn´e pouˇz´ıt pˇr´ımo jako kostru objektu, nebot’ je zat´ıˇzena nepˇresnostmi – oproti poˇzadovan´emu stavu obsahuje nadbyteˇcn´e kosti. Algoritmu proto dod´ame tzv. vzorovou kostru S, podle n´ıˇz se doˇcasnˇe vypoˇcten´a kostra uprav´ı. Vzor velmi zjednoduˇsenˇe reprezentuje ˇclovˇeka, napˇr´ıklad cel´a paˇze vˇcetnˇe pˇredlokt´ı je reprezentov´ana pouh´ ymi dvˇema kostmi se spoleˇcn´ ym kloubem v lokti. Vzorov´a kostra S i doˇcasnˇe vypoˇc´ıtan´a kostra X jsou obˇe vlastnˇe grafem, pro kter´y urˇc´ıme distanˇcn´ı matici, kter´a poslouˇz´ı v n´asleduj´ıc´ıch v´ypoˇctech jako metrika pro v´ypoˇcet chyby pˇriˇrazen´ı dvojic vrchol˚ u z X a S. N´aslednˇe se zamˇeˇr´ıme na koncov´e vrcholy E(X) a E(S) (listy grafu), pˇriˇcemˇz chceme nal´ezt pˇriˇrazen´ı:
f (E(S)) → f (E(X))
(2.21)
takov´e, ˇze v´ ysledn´a chyba je minim´aln´ı. Autoˇri jej hledaj´ı kombinac´ı dynamic time 14
Metody extrakce kostry
Pˇr´ıbuzn´e oblasti
warping (DTW, pouˇzita kv˚ uli moˇznosti rozd´ıln´eho poˇctu koncov´ ych vrchol˚ u) a mad’arsk´e metody (pˇriˇrazen´ı dvojic s nejmenˇs´ı glob´aln´ı chybou). Obdobn´ym zp˚ usobem jsou sp´arov´any vnitˇrn´ı klouby. D´ıky tomu m˚ uˇzeme vzorovou kostru vloˇzit do skenovan´eho modelu a prov´est uˇz jen z´avˇereˇcn´e u ´pravy pozic (viz p˚ uvodn´ı ˇcl´anek). Nesporn´a v´ yhoda, kter´a se v metodˇe ukr´ yv´a, je znemoˇznˇen´ı tvorby nesmysln´e topologie kostry (pˇr´ıdavn´e konˇcetiny apod.). Algoritmus m˚ uˇze selhat a pˇriˇradit k sobˇe ˇspatn´e dvojice kloub˚ u z koster S a X, poˇzadovan´a topologie je vˇsak vˇzdy zachov´ana. Aˇckoliv autoˇri svoji metodu pouˇzili pro volumetrick´a vstupn´ı data, nic nebr´an´ı nasazen´ı vstupu v podobˇe troj´ uheln´ıkov´e s´ıtˇe, tj. nahradit krok tvorby doˇcasn´e kostry (odhadu stˇredn´ı osy).
2.4
Pˇ r´ıbuzn´ e oblasti
Metoda od Yoshizawa et al. [16] se zab´ yv´a generov´an´ım kostry v ponˇekud jin´e podobˇe neˇz doposud zm´ınˇen´e pˇr´ıstupy. Kostru pˇredstavuje odhad stˇredn´ı osy s´ıtˇe vypoˇc´ıtan´ y pomoc´ı p´ol˚ u Voron´eho diagramu, kter´e jsou spojeny topologicky stejnˇe jako p˚ uvodn´ı troj´ uheln´ıkov´a s´ıt’ [3]. P˚ uvodn´ı s´ıt’ byla v podstatˇe zdeformov´ana do podoby stˇredn´ı osy, k ˇz´adn´e redukci na jednorozmˇern´ y graf zde nedoch´az´ı. Pro potlaˇcen´ı ˇsumu doporuˇcuj´ı autoˇri vstupn´ı model nejprve zjednoduˇsit.
Obr´azek 2.22: Uk´azka v´ ysledk˚ u metody Yoshizawa et al. Uvnitˇr modelu se nach´az´ı vygenerovan´ y skelet, kter´ y pˇren´aˇs´ı deformaci ruˇcnˇe vytvoˇren´e jednorozmˇern´e kostry na povrch tˇelesa. 15
Metody extrakce kostry
Pˇr´ıbuzn´e oblasti
Po aplikaci libovoln´ ych free-form deformac´ı na vzniklou s´ıt’ stˇredn´ı osy m˚ uˇzeme zrekonstruovat p˚ uvodn´ı objekt se zachov´an´ım lok´aln´ı tlouˇst’ky, coˇz vypl´ yv´a z vlastnost´ı medial axis transform. Byla-li p˚ uvodn´ı s´ıt’ pˇred transformac´ı zjednoduˇsena, doch´az´ı k opˇetovn´emu zesloˇzitˇen´ı s uˇzit´ım disk´etn´ıch diferenci´aln´ıch souˇradnic. Skelet, kter´ ym se ˇr´ıd´ı tvarov´an´ı objektu, nevyuˇzijeme pˇr´ımo, nebot’ je sloˇzen ze stejn´eho poˇctu vrchol˚ u, kter´ y mˇela p˚ uvodn´ı s´ıt’, jen se nach´azej´ıc´ı bl´ızko stˇredn´ı osy. Nedos´ahli bychom tak ˇza´dn´eho zjednoduˇsen´ı. Autoˇri proto pouˇz´ıvaj´ı ruˇcnˇe vytvoˇrenou (jednorozmˇernou) kostru, kterou ˇr´ıd´ı deformaci generovan´eho skeletu.
16
3 Pˇr´ım´a a inverzn´ı kinematika V pˇredchoz´ı kapitole jsme popsali metody, kter´e slouˇz´ı ke generov´an´ı kostry. Obohat´ıme-li vzniklou kostru o vhodn´a omezen´ı pohybu v kloubech (viz n´ıˇze), m˚ uˇzeme ji rozh´ybat a animovat p˚ uvodn´ı model. Jeden ze zp˚ usob˚ u animace je vyuˇzit´ı tzv. inverzn´ı kinematiky. Kostra objekt˚ u pˇredstavuje otevˇrenou hierarchickou segmentovou strukturu, ve kter´e bod poloˇzen´y nejv´yˇse v hierarchii b´yv´a pevnˇe ukotven. Voln´e listy v hierarchii nazveme koncov´e efektory. Polohu voln´eho tˇelesa v prostoru lze urˇcit pomoc´ı zvolen´eho souˇradnicov´eho syst´emu a ˇsesti ˇc´ısel, takzvan´ ymi stupni volnosti. Uvaˇzujeme-li syst´em tˇeles, poˇcet stupˇ n˚ u volnosti roste s jejich pˇridan´ym poˇctem. Takov´y syst´em m˚ uˇze ovˇsem obsahovat r˚ uzn´a omezen´ı pohybu (vazby mezi objekty, klouby), kter´a naopak sn´ıˇz´ı v´ ysledn´ y poˇcet stupˇ n˚ u volnosti. Na obr´azku 3.1 je zn´azornˇen pˇr´ıklad syst´emu se dvˇema stupni volnosti, jehoˇz celkov´y stav lze popsat vektorem (α, β). D´elka vektoru odpov´ıd´a poˇctu stupˇ n˚ u volnosti soustavy, pˇriˇcemˇz poloha koncov´eho efektoru je urˇcena stavov´ ym vektorem jednoznaˇcnˇe. Inverzn´ı kinematika se zab´ yv´a urˇcen´ım stavov´eho vektoru na z´akladˇe zadan´e pozice koncov´eho efektoru a sady omezen´ı pohybu. O z´akladech t´eto problematiky ˇ ara et al. [5], podrobnˇeji Goli´aˇs ve sv´e diplomov´e pr´aci [8]. pojedn´av´a napˇr. Z´
β
X
α
Obr´azek 3.1: Pˇr´ıklad segmentov´e struktury se dvˇema stupni volnosti. Koncov´y efektor je oznaˇcen p´ısmenem X.
17
Pˇr´ım´a a inverzn´ı kinematika
3.1
Pˇr´ım´a kinematika
Pˇ r´ım´ a kinematika
Pˇr´ım´a kinematika slouˇz´ı k v´ypoˇctu pozice koncov´eho efektoru na z´akladˇe zadan´eho vstupn´ıho stavov´eho vektoru θ. Vztah lze vyj´adˇrit rovnost´ı:
X = f (θ)
(3.2)
kde X znaˇc´ı pozici koncov´eho efektoru a f pouˇzit´e zobrazen´ı. Pˇr´ım´a kinematika se nehod´ı k interaktivn´ım animac´ım, nasazuje se v pˇr´ıpadech, kdy zn´ame ˇcasov´ y pr˚ ubˇeh stavov´eho vektoru θ. Jako pˇr´ıklady vyuˇzit´ı pˇr´ım´e kinematiky, kter´e souvisej´ı s animaˇcn´ı kostrou, uved’me:
• Motion capture, tj. zaznamen´an´ı pohybu re´aln´eho tˇelesa v m´ıstech bl´ızk´ ych jednotliv´ ym kostem a n´asledn´e pˇrepoˇc´ıt´an´ı stavov´eho vektoru θ. • Mesh-skinning, tj. potaˇzen´ı kostry troj´ uheln´ıkovou s´ıt´ı, kdy na z´akladˇe stavov´eho vektoru θ urˇcujeme v´ ysledn´e pozice povrchu.
3.2
Inverzn´ı kinematika
S pomoc´ı inverzn´ı kinematiky, jak jiˇz bylo v´ yˇse ˇreˇceno, se snaˇz´ıme o urˇcen´ı stavov´eho vektoru θ na z´akladˇe zadan´e pozice X koncov´eho efektoru. Form´alnˇe bychom tuto pˇredstavu mohli zapsat vztahem:
θ = f −1 (X)
(3.3)
Na rozd´ıl od pˇr´ım´e kinematiky vˇsak nemus´ı existovat jednoznaˇcn´e ˇreˇsen´ı, v nˇekter´ych pˇr´ıpadech dokonce ˇz´adn´e ˇreˇsen´ı neexistuje (viz obr´azek 3.5). Pr´avˇe z tohoto d˚ uvodu se zav´ad´ı omezen´ı volnosti pohybu v kloubech, abychom n´aleˇzitˇe zjednoduˇsili podobu stavov´eho prostoru. I tak se nevyhneme singularit´am, nav´ıc zobrazen´ı f nen´ı line´arn´ı a analytick´e ˇreˇsen´ı rovnosti prakticky nelze realizovat.
18
Pˇr´ım´a a inverzn´ı kinematika
3.2.1
Inverzn´ı kinematika
Linearizace pomoc´ı jakobi´ anu
Probl´em tedy ˇreˇs´ıme v linearizovan´e podobˇe za pomoci jakobi´anu. V takov´em pˇr´ıpadˇe m˚ uˇzeme pˇredpokl´adat, ˇze v dostateˇcnˇe mal´em okol´ı bodu X plat´ı:
∂f1 ∂θ1
∂f2 ∂θ 1 ∆X = Jf (θ)∆θ = .. . ∂fm ∂θ1
∂f1 ∂θ2 ∂f2 ∂θ2
.. . ∂fm ∂θ2
···
∂f1 ∂θn
··· .. .. . . ∂fm · · · ∂θn ∂f2 ∂θn
∆θ1
∆θ2 . . . ∆θn
(3.4)
X
X
Obr´azek 3.5: Singul´arn´ı pˇr´ıpady. Vlevo dvˇe ˇreˇsen´ı, vpravo u ´loha neˇreˇsiteln´a. Vektor ∆X je n´am zn´am´ y – jedn´a se o rozd´ıl poˇzadovan´e a aktu´aln´ı pozice. V´ ypoˇcet zmˇeny ∆θ lze form´alnˇe zapsat:
∆θ = Jf (θ)−1 ∆X
(3.6)
Matice Jf zpravidla nebude ˇctvercov´a, klasick´a inverze tud´ıˇz ani nem˚ uˇze b´ yt pouˇzita – pˇrikroˇc´ıme k tzv. pseudoinverzi obd´eln´ıkov´e matice, kterou m˚ uˇzeme realizovat napˇr´ıklad pomoc´ı metody SVD (singular value decomposition) nebo vyj´adˇren´ım (podle Mereditha a Maddocka [12])
Jf (θ)−1 = Jf (θ)T (Jf (θ)Jf (θ)T )−1 .
(3.7)
M´ısto pseudoinverze lze uˇz´ıt tak´e transpozici jakobi´anu, v takov´em pˇr´ıpadˇe 19
Pˇr´ım´a a inverzn´ı kinematika
Inverzn´ı kinematika
realizujeme vlastnˇe numerick´e ˇreˇsen´ı vztahu metodou nejvˇetˇs´ıho sp´adu. Transpozice klade niˇzˇs´ı n´aroky na v´ ykon v kroc´ıch iterace, na druhou stranu v´ ypoˇcet ztr´ac´ı na numerick´e stabilitˇe. V´ysledn´y algoritmus tak ˇci onak pracuje iterativnˇe, dokud nen´ı dosaˇzeno k´yˇzen´e pozice koncov´eho efektoru: 1. Vypoˇcti jakobi´an Jf (θ). 2. Vypoˇcti pseudoinverzi jakobi´anu Jf (θ)−1 . 3. Vypoˇcti nov´e ∆X jako rozd´ıl c´ılov´e a aktu´aln´ı pozice koncov´eho efektoru. 4. Vypoˇcti zmˇenu vnitˇrn´ıho stavu ∆θ = Jf (θ)−1 ∆X. 5. Pˇriˇrad’ pro novou iteraci vnitˇrn´ı stav θ+1 = θ + α ∆θ, kde α pˇredstavuje ˇr´ıdic´ı konstantu rychlosti konvergence.
3.2.2
Cyclic coordinate descent
Minimalizaci chyby, tj. vzd´alenosti koncov´eho efektoru od jeho poˇzadovan´e pozice, lze realizovat tak´e metodou cyclic coordinate descent (CCD). Tento zp˚ usob ˇreˇsen´ı u ´lohy inverzn´ı kinematiky navrhli Wang a Chen [15]. Algoritmus stejnˇe jako pˇredchoz´ı metoda pracuje iterativnˇe, v kaˇzd´e iteraci proch´az´ı hierarchii segment˚ u od koncov´eho efektoru smˇerem ke koˇrenu. Kaˇzd´emu segmentu pˇr´ısluˇs´ı kloub, kter´ y ji propojuje s nadˇrazen´ ym segmentem. U kloubu provedeme zmˇenu hodnot popisuj´ıc´ı jeho konfiguraci, kter´a minimalizuje vzd´alenost koncov´eho efektoru od zadan´e pozice (viz obr´azek 3.8). Lok´aln´ı u ´prava pot´e konˇc´ı a pˇresuneme se k nadˇrazen´emu segmentu. V aplikac´ıch doch´az´ı k ukonˇcen´ı v´ ypoˇctu po dosaˇzen´ı prahov´e hodnoty chyby nebo po stanoven´em poˇctu iterac´ı, ˇreˇsen´ı totiˇz nemus´ı existovat a uˇzivatel by marnˇe ˇcekal na odezvu. Metoda se vyznaˇcuje pomˇernˇe rychlou konvergenc´ı v ˇra´du stovek iterac´ı, avˇsak hroz´ı uv´aznut´ı v lok´aln´ım optimu. I pˇres zaveden´ı omezen´ı pohybu v kloubech m˚ uˇze metoda vygenerovat na rozd´ıl od v´ypoˇctu pomoc´ı jakobi´anu velmi nepˇrirozen´y pohyb. Toto chov´an´ı je moˇzn´e redukovat, pokud nedovol´ıme zmˇenu hodnot pˇredstavuj´ıc´ı konfiguraci kloubu vˇetˇs´ı neˇz stanoven´y pr´ah (v takov´em pˇr´ıpadˇe upravujeme konfiguraci 20
Pˇr´ım´a a inverzn´ı kinematika
Inverzn´ı kinematika
o prahovou hodnotu), coˇz na druhou stranu m˚ uˇze zpomalit konvergenci algoritmu. Oproti v´ ypoˇctu pomoc´ı jakobi´anu se CCD vyznaˇcuje jednoduˇsˇs´ı implementac´ı.
X
X
X
Obr´azek 3.8: Uk´azka jedn´e iterace metody cyclic coordinate descent.
3.2.3
Obohacen´ı o posuvn´ a spojen´ı
Posuvn´a spojen´ı (tak´e posuvn´e klouby, anglicky naz´yvan´e prismatic joints) mimo jin´e umoˇzn´ı realizovat pruˇzn´e segmenty kost´ı. T´ımto obohat´ıme segmentovou strukturu o dalˇs´ı stupeˇ n volnosti. Uvaˇzme vˇsak, ˇze po form´aln´ı str´ance z˚ ust´av´a cel´y v´ypoˇcet stejn´ y, m˚ uˇzeme pouˇz´ıt v´ ypoˇcty popsan´e v´ yˇse, pokud zaneseme posuvn´a spojen´ı do stavov´eho vektoru θ n´aleˇz´ıc´ıho segmentov´e struktuˇre. To je moˇzn´e napˇr´ıklad pouˇzit´ım DH-notace (Denavit–Hartenbergovy parametry [7], pops´ano napˇr. v [5], podkapitola 18.2.2).
21
4 N´avrh vlastn´ı metody Jak jiˇz bylo ˇreˇceno v u ´vodu pr´ace, zamˇeˇrili jsme se na generov´an´ı koster humanoid˚ u pro u ´ˇcely animace. D´ıky tomu lze vydedukovat nˇekter´e poˇzadavky na vlastnosti kostry. • Kostra topologicky odpov´ıd´a stavbˇe humanoida, vstupuje do konˇcetin a hlavy. Pˇredpokl´ad´ame humanoida se dvˇema nohama i paˇzemi, v m´ıstˇe hrudn´ıho koˇse je zachycena pouze p´ateˇr. • Poˇcet kost´ı nen´ı zbyteˇcnˇe vysok´y. To by v´ytvarn´ıkovi znesnadˇ novalo rozanimov´an´ı modelu, vyˇzadovalo ukl´ad´an´ı vˇetˇs´ıho mnoˇzstv´ı dat a kladlo vyˇsˇs´ı n´aroky na v´ ykon pˇri pˇrehr´av´an´ı animace. • Kostra leˇz´ı alespoˇ n pˇribliˇznˇe uvnitˇr vstupn´ı s´ıtˇe. • Kostra obsahuje omezen´ı na volnost pohybu v kloubech.
4.1
Generov´ an´ı kostry
ˇ adn´a z metod prozkouman´ Z´ ych v kapitole 2 pˇr´ımo neodpov´ıd´a naˇs´ı situaci. Vygenerovat rozumn´a omezen´ı na volnost pohybu v kloubech ˇcistˇe geometrickou interpretac´ı kostry a s´ıtˇe je velmi obt´ıˇzn´y, ne-li nemoˇzn´y u ´kol. Jako vhodnˇejˇs´ı se jev´ı vyuˇz´ıt znalosti, ˇze vstupn´ı s´ıt’ reprezentuje humanoida, a pˇripravit vzor obsahuj´ıc´ı pˇribliˇznou podobu kostry vˇcetnˇe omezen´ı v kloubech. S pˇrihl´ednut´ım k seznamu poˇzadavk˚ u a postˇreh˚ u navrhnˇeme koncept ˇreˇsen´ı, kter´ y kombinuje vybran´e metody z kapitoly 2: 1. Pˇriprav´ıme si referenˇcn´ı kostru humanoida, kter´a bude obsahovat i omezen´ı na volnost v kloubech. 2. Vygenerujeme kostru smrˇstˇen´ım troj´ uheln´ıkov´e s´ıtˇe s n´aslednou redukc´ı na 1D graf (Au et al., viz podkapitola 2.2.1). Vznikl´a prozat´ımn´ı kostra je vˇsak pˇr´ıliˇs detailn´ı.
22
N´avrh vlastn´ı metody
Interaktivn´ı uk´azka
3. Uˇzit´ım dynamic time warping a mad’arsk´e metody sp´arujeme vrcholy (klouby) referenˇcn´ı a prozat´ımn´ı kostry. Jedn´a se o ˇc´ast metody od autor˚ u Straky et al. popsan´e v podkapitole 2.3.1. u kostry je ovlivnˇena 4. Referenˇcn´ı kostru vloˇz´ıme dovnitˇr s´ıtˇe. Pozice kloub˚ partnersk´ymi“ klouby prozat´ımn´ı kostry a napˇr´ıklad pomˇery d´elek inciduj´ıc´ıch ” kost´ı. 5. Do vznikl´e kostry zkop´ırujeme omezen´ı volnosti pohybu v kloubech obsaˇzen´e v referenˇcn´ı kostˇre. Pˇredpokl´ad´ame, ˇze vstupn´ı troj´ uheln´ıkov´a s´ıt’ pˇredstavuje humanoida v klidov´e p´oze (rozpaˇzen´e ruce, plochy dlan´ı smˇeˇruj´ıc´ı vpˇred, spatn´y stoj).
4.2
Interaktivn´ı uk´ azka
Vlastnosti vznikl´e kostry se projev´ı aˇz pˇri jej´ım vlastn´ım uˇzit´ı, tedy pˇri uveden´ı do pohybu. Z tohoto d˚ uvodu na v´ yˇse zm´ınˇen´e generov´an´ı, kter´e bychom mohli oznaˇcit jako pˇredzpracov´an´ı (preprocessing), nav´aˇze interaktivn´ı vizualizace kostry. V pozic´ıch koncov´ych efektor˚ u budou um´ıstˇeny kontroln´ı body, kter´e uˇzivatel bude moci pˇret´ahnout na jin´e m´ısto. V tu chv´ıli dojde k aplikaci inverzn´ı kinematiky, kter´a se vynasnaˇz´ı pˇribl´ıˇzit odpov´ıdaj´ıc´ı koncov´y efektor k´yˇzen´e pozici. Z experiment´aln´ıch d˚ uvod˚ u budou naimplementov´any dvˇe verze algoritmu: 1. Inverzn´ı kinematika s pevn´ ymi kostmi nemˇenn´e d´elky. 2. Inverzn´ı kinematika s pruˇzn´ ymi kostmi, kter´e se mohou libovolnˇe natahovat. Obˇe varianty budou respektovat omezen´ı volnosti pohybu v kloubech, kter´a byla zkop´ırov´ana z referenˇcn´ı kostry. Pˇri zmˇenˇe konfigurace kostry dojde k odpov´ıdaj´ıc´ı deformaci modelu humanoida.
23
5 Podrobn´y rozbor metody V kapitole 4 byl navrˇzen postup generov´an´ı kostry a n´asledn´a demonstrace v´ysledku pomoc´ı interaktivn´ı vizualizace. Nyn´ı si rozebereme d´ılˇc´ı kroky podrobnˇeji. Pop´ıˇseme si algoritmy, jejich parametry a charakter dat, se kter´ymi se na dan´e u ´rovni pracuje.
5.1
Vstupn´ı data
Model humanoida, kter´ y naˇcteme na poˇca´tku cel´eho procesu, je reprezentov´an povrchovˇe pomoc´ı troj´ uheln´ıkov´e s´ıtˇe. Navrˇzen´a metoda tvorby kostry poˇzaduje, aby s´ıt’ byla manifoldn´ı (bl´ızk´e okol´ı libovoln´eho bodu n´aleˇz´ıc´ıho s´ıti je homeomorfn´ı v˚ uˇci euklidovsk´emu prostoru E 2 ). D´ıky tomu napˇr´ıklad m˚ uˇzeme uˇz´ıt jednoduˇsˇs´ı datov´e struktury ˇci korektnˇe spoˇc´ıtat objem uzav´ıran´y s´ıt´ı. Pˇredpokl´ad´ame, ˇze humanoid ve sc´enˇe stoj´ı, je rozpaˇzen´ y a d´ıv´a se ve smˇeru osy z.
y x z
Obr´azek 5.1: Zn´azornˇen´ı rotac´ı kosti podle os x, y, z. Pouˇzit´ y lok´aln´ı syst´em je pravotoˇciv´ y, smˇer osy y je ztotoˇznˇen se smˇerem kosti. Referenˇcn´ı kostra (oznaˇcme si ji SR ) popisuje pozice jednotliv´ych kloub˚ u a jejich spojen´ı kostmi. D´a se na ni pohl´ıˇzet jako na graf um´ıstˇen´ y v prostoru, ve kter´em klouby pˇredstavuj´ı uzly a kosti hrany. Tohoto pozorov´an´ı vyuˇzijeme bˇehem generov´an´ı animaˇcn´ı kostry – je moˇzn´e pouˇz´ıt grafov´e algoritmy. Podle v´yˇse uveden´ych parametr˚ u jsme schopni kosti ch´apat tak´e jako u ´seˇcky v prostoru. T´ım je d´ana orientace kosti pouze v jednom smˇeru, proto ke kaˇzd´e kosti pˇripoj´ıme lok´aln´ı souˇradnicov´ y syst´em, smˇer osy y ztotoˇzn´ıme se smˇerem kosti. Mimo to zn´ame omezen´ı jej´ı rotace v˚ uˇci 24
Podrobn´y rozbor metody
Generov´an´ı prozat´ımn´ı kostry
klidov´e p´oze kolem os lok´aln´ıho souˇradnihov´eho syst´emu (viz obr´azek 5.1), coˇz je ekvivalentn´ı s limitac´ı pohybu v nadˇrazen´em kloubu. Podoba referenˇcn´ı kostry je velmi zjednoduˇsenou podobou kostry ˇclovˇeka (viz obr´azek 5.2. V prvn´ı ˇradˇe se oproˇst’uje od anatomie, neobsahuje napˇr. hrudn´ı koˇs nebo zdvojen´e kosti v konˇcetin´ach – u doln´ıch konˇcetin jsou kost l´ ytkov´a a holenn´ı slouˇceny do jedn´e, podobnˇe u horn´ıch slouˇc´ıme kost loketn´ı a vˇretenn´ı. Tato podoba kostry pokaz´ı vzhled modelu pouze pˇri extr´emn´ıch zkrutech ˇci ohybech. V druh´e ˇradˇe nepostihujeme drobn´e detaily, jimiˇz jsou jednotliv´e prsty konˇcetin a ˇcelisti, ˇc´ımˇz odpad´a moˇznost otev´ırat u ´sta.
Obr´azek 5.2: Referenˇcn´ı kostra, pro ilustraci zn´azornˇen i obrys ˇclovˇeka.
5.2
Generov´ an´ı prozat´ımn´ı kostry
Z troj´ uheln´ıkov´e s´ıtˇe vygenerujeme prozat´ımn´ı kostru SG s vyuˇzit´ım metody autor˚ u Au et al. podrobnˇe popsan´e v kapitole 2.2.2, tj. nejprve smrˇst’ujeme troju ´heln´ıkovou s´ıt’ laplaceovsk´ ym vyhlazov´an´ım a n´aslednˇe opakovanˇe odstraˇ nujeme technikou edge-collapse nadbyteˇcn´e hrany, neˇz se zbav´ıme vˇsech troj´ uheln´ık˚ u s´ıtˇe. Vznikl´e jednorozmˇern´e struktuˇre uprav´ıme pozicov´an´ı v prostoru.
25
Podrobn´y rozbor metody
5.3
Vytvoˇren´ı animaˇcn´ı kostry
Vytvoˇ ren´ı animaˇ cn´ı kostry
Pˇripravenou referenˇcn´ı kostru SR humanoida budeme nyn´ı vkl´adat dovnitˇr modelu. Tato ˇc´ast metody vych´az´ı z metody popsan´e v kapitole 2.3.1. Hled´ame prost´e zobrazen´ı M : U (SR ) → U (SG ), kter´e jednoznaˇcnˇe pˇriˇrad´ı uzl˚ um kostry SR uzly z prozat´ımn´ı kostry SG . Pro existenci takov´eho zobrazen´ı mus´ı platit nerovnost: |U (SR )| ≤ |U (SG )|.
(5.3)
V´ ysledn´a animaˇcn´ı kostra je grafov´ ym isomorfismem referenˇcn´ı kostry SR , jej´ıˇz uzly U jsou um´ıstˇeny na pozice M (U ).
5.3.1
Pˇ r´ıpravn´ e kroky a pˇ riˇ razen´ı hlavy
Pˇredpokl´ad´ame, ˇze koncov´y efektor pˇredstavuj´ıc´ı hlavu se nach´az´ı nejv´yˇse, tj. jeho souˇradnice y je maxim´aln´ı (osa y m´ıˇr´ı vzh˚ uru). T´ım urˇc´ıme pozici hlavy v prozat´ımn´ı kostˇre. V obou grafech (referenˇcn´ı i prozat´ımn´ı kostˇre) spoˇcteme vzd´alenost mezi vˇsemi dvojicemi vrchol˚ u, coˇz lze prov´est napˇr´ıklad obl´ıben´ ym Floyd-Warshallov´ ym algoritmem, a n´aslednˇe seˇrad´ıme vrcholy podle geodetick´e vzd´alenosti od uzlu pˇredstaˇ vuj´ıc´ıho hlavu (napˇr. pomoc´ı quick sort nebo merge sort). Razen´ ı je nezbytn´e pro spr´avnou funkci dalˇs´ıch krok˚ u. Urˇc´ıme nejdelˇs´ı cestu v obou grafech, jej´ı d´elka bude slouˇzit jako mˇeˇr´ıtko velikosti kostry. Pot´e provedeme pˇreˇsk´alov´an´ı referenˇcn´ı kostry tak, aby velikostnˇe odpov´ıdala prozat´ımn´ı. Zvˇetˇsen´ı s odpov´ıd´a vztahu s =
Ltemp , Lref
(5.4)
kde Ltemp pˇredstavuje d´elku nejdelˇs´ı cesty v grafu prozat´ımn´ı kostry a Lref d´elku nejdelˇs´ı cesty v grafu kostry referenˇcn´ı. Vypoˇcten´e d´elky cest mezi dvojicemi vrchol˚ u pˇren´asob´ıme stejn´ ym faktorem.
26
Podrobn´y rozbor metody
Vytvoˇren´ı animaˇcn´ı kostry
Jako posledn´ı krok je nutn´e vyrovnat odliˇsn´e um´ıstˇen´ı koster – referenˇcn´ı kostra se m˚ uˇze v souˇradnicov´em prostoru nach´azet na odliˇsn´e pozici neˇz kostra prozat´ımn´ı. U obou koster zjist´ıme rozmˇery axis-aligned bounding boxu Btemp a Bref (obalov´e tˇeleso o podobˇe kv´adru orientovan´e souhlasnˇe s osami). Posun referenˇcn´ı kostry T(x, y, z) je pak urˇcen jako: maxx minx maxx minx Btemp − Btemp − Bref + Bref maxy miny maxy miny T(x, y, z) = Btemp − Btemp − Bref + Bref . maxz minz maxz minz Btemp − Btemp − Bref + Bref
(5.5)
Proces zarovn´an´ı koster je zn´azornˇen na obr´azku 5.6. V´ ypoˇcetn´ı sloˇzitost pˇredzpracov´an´ı kostry je d´ana jej´ım nejn´aroˇcnˇejˇs´ım krokem, kter´ym je v´ypoˇcet vzd´alenosti mezi vˇsemi dvojicemi uzl˚ u. Floyd-Warshall˚ uv algoritmus, kter´ y dok´aˇze probl´em efektivnˇe ˇreˇsit, nab´ yv´a sloˇzitosti O(N 3 + M 3 ), kde N pˇredstavuje poˇcet vrchol˚ u referenˇcn´ı kostry a M poˇcet vrchol˚ u kostry prozat´ımn´ı.
Obr´azek 5.6: Zn´azornˇen´ı sjednocen´ı velikosti a pozice referenˇcn´ı a prozat´ımn´ı kostry. Referenˇcn´ı kostra m´a vyznaˇcenou hlavu ˇcernˇe, prozat´ımn´ı b´ıle. Teˇckovanˇe jsou vyznaˇceny obaluj´ıc´ı boxy.
5.3.2
Pˇ riˇ razen´ı list˚ u
V t´eto ˇca´sti se zab´ yv´ame pˇriˇrazen´ım listov´ ych uzl˚ u. Hlava je v tuto chv´ıli uˇz pˇriˇrazena, a proto ji z tohoto procesu vyjmeme. Z listov´ych vrchol˚ u utvoˇr´ıme seznamy, form´alnˇe si je oznaˇc´ıme: pro referenˇcn´ı kostru Lref = (r1 , r2 , . . . , rn ), pro prozat´ımn´ı 27
Podrobn´y rozbor metody
Vytvoˇren´ı animaˇcn´ı kostry
kostru pak Ltemp = (t1 , t2 , . . . , tm ). Obecnˇe nelze ˇr´ıci, ˇze by byl poˇcet list˚ u stejn´ y, naopak pˇredpokl´ad´ame, ˇze m ≥ n. Je nutn´e poznamenat, ˇze respektujeme poˇrad´ı vrchol˚ u vznikl´e ˇrazen´ım podle vzd´alenosti od hlavy. Listy obou graf˚ u k sobˇe pˇriˇrad´ıme uˇzit´ım mad’arsk´e metody [2], kter´a minimalizuje glob´aln´ı cenu (penalizaci) pˇriˇrazen´ı. Pro vyˇc´ıslen´ı ceny Ei,j pˇriˇrazen´ı dvojice (ti , rj ) pouˇzijeme vztah: Ei,j = cDW T · DW T (dti , drj )2 + cdist · dist(ti , rj )2 ,
(5.7)
Pˇredpis ceny je v´aˇzen´ym souˇctem dvou ˇclen˚ u, neprve si objasn´ıme v´yraz funkce dist. Ta vrac´ı euklidovskou vzd´alenost mezi pˇredan´ymi vrcholy, cdist pˇredstavuje n´asobic´ı konstantu (v´ahu). Funkce DW T pak spoˇc´ıt´a hodnotu dynamic time warping dvou sekvenc´ı dti a drj . V nich jsou obsaˇzeny geodetick´e vzd´alenosti list˚ u (t1 , t2 , . . . , tm ) a (r1 , r2 , . . . , rn ) od vrcholu ti , respektive rj (vzd´alenosti uˇz byly vypoˇcteny bˇehem pˇr´ıpravn´eho kroku Floyd-Warshallov´ ym algoritmem). Konstanta cDW T je v´ahou funkce DW T . V´ ypoˇcetn´ı sloˇzitost pˇriˇrazen´ı list˚ u se skl´ad´a z nˇekolika ˇca´st´ı. V´ ypoˇcet hodnoty DWT pro dvˇe sekvence, z nichˇz m´a prvn´ı d´elku N a druh´a M , je obecnˇe sloˇzitosti O(M N ). Tento v´ypoˇcet vˇsak prov´ad´ıme pro vˇsechny prvky matice velikosti M × N , tud´ıˇz sloˇzitost samotn´e pˇr´ıpravy matice pro mad’arskou metodu bude O(M 2 N 2 ). N´asleduje v´ypoˇcet optim´aln´ıho pˇriˇrazen´ı (mad’arskou metodou) o sloˇzitosti O(M N 2 ). Jak jiˇz bylo ˇreˇceno v´yˇse, pˇredpokl´ad´ame, ˇze poˇcet list˚ u prozat´ımn´ı kostry je vˇetˇs´ı nebo roven poˇctu list˚ u referenˇcn´ı kostry, tj. M ≥ N . Nˇekter´e listy prozat´ımn´ı kostry tak z˚ ustanou nepˇriˇrazeny (viz d´ale). Nen´ı-li dodrˇzena podm´ınka M ≥ N , algoritmus pˇriˇrazen´ı list˚ u selˇze, nebot’ nen´ı moˇzn´e nechat jedin´ y list referenˇcn´ı kostry, kterou hodl´ame ovl´adat model, nepˇriˇrazen´ y. Po dokonˇcen´ı t´eto f´aze se zamˇeˇr´ıme na vnitˇrn´ı uzly.
5.3.3
Pˇ riˇ razen´ı vnitˇ rn´ıch uzl˚ u
Pˇred samotn´ym pˇriˇrazov´an´ım vnitˇrn´ıch uzl˚ u projdeme graf prozat´ımn´ı kostry od kaˇzd´eho pˇriˇrazen´eho listu smˇerem ke koˇreni. Po pr˚ uchodu mohou zb´yt nˇekter´e vrcholy 28
Podrobn´y rozbor metody
Vytvoˇren´ı animaˇcn´ı kostry
nenavˇst´ıven´e, jedn´a se o vrcholy spadaj´ıc´ı do vˇetv´ı nepˇriˇrazen´ ych list˚ u. Ch´apeme je jako neˇza´douc´ı a z grafu je odstran´ıme (viz obr´azek 5.8). L2 L3
L1
L4
Obr´azek 5.8: Proˇrez´av´an´ı vˇetv´ı doˇcasn´e kostry. Nepˇriˇrazen´e listy L2 , L3 , L4 budou vˇcetnˇe cel´e vˇetve z doˇcasn´e kostry odstranˇeny. Vnitˇrn´ı uzly pˇriˇrazujeme pouze na z´akladˇe optimalizace lok´aln´ı chyby, tedy bez ohledu na penalizaci ostatn´ıch vrchol˚ u – pro definici chyby vyuˇzijeme hodnoty, kter´e jsou na pˇriˇrazen´ı nez´avisl´e (viz n´ıˇze). Drobnou v´ yjimkou je, ˇze jiˇz pˇriˇrazen´ y vrchol nesm´ı b´ yt pouˇzit opˇetovnˇe (to lze prov´est napˇr´ıklad oznaˇcen´ım vrcholu). Vnitˇrn´ı vrcholy n´aleˇz´ıc´ı doˇcasn´e kostˇre oznaˇc´ıme ui , vnitˇrn´ı vrcholy n´aleˇz´ıc´ı referenˇcn´ı kostˇre pak vj . Pro kaˇzd´ y ui tedy proch´az´ıme vˇsechny nepouˇzit´e uzly vj , pˇriˇcemˇz hled´ame takov´e pˇriˇrazen´ı, kter´e je nejm´enˇe penalizov´ano. Pro kaˇzd´ y vrchol lze vyj´adˇrit tyto d´ılˇc´ı penalizace: 1. Rozd´ıl vzd´ alenost´ı k list˚ um. Zn´ame pˇriˇrazen´ı list˚ u, v kaˇzd´em grafu takt´eˇz geodetickou vzd´alenost k pˇr´ısluˇsn´emu listu. Tato vzd´alenost se v obou grafech bude nejsp´ıˇse liˇsit. Seˇcten´ım kvadr´at˚ u vˇsech rozd´ıl˚ u dost´av´ame chybu, kterou oznaˇc´ıme EL . 2. Rozd´ıl stupnˇ e vrchol˚ u. Kvadr´at rozd´ılu stupnˇe vrchol˚ u ui a vj , oznaˇc´ıme jej ED . 3. Vzd´ alenost vrchol˚ u. Kvadr´at euklidovsk´e vzd´alenosti vrchol˚ u ui a vj , oznaˇc´ıme jej EP . V´ ysledn´a chyba odpov´ıd´a jejich v´aˇzen´emu souˇctu: E = cEL · EL + cED · ED + cEP · EP .
(5.9)
Tato hodnota nen´ı z´avisl´a na pˇriˇrazen´ı jin´ ych vnitˇrn´ıch vrchol˚ u, proto m˚ uˇzeme v´ yslednou konfiguraci hledat s pomoc´ı optimalizace lok´aln´ı chyby. Sloˇzitost pomoc´ı 29
Podrobn´y rozbor metody
Vytvoˇren´ı animaˇcn´ı kostry
naivn´ı implementace je pak rovna O(M N ), N znamen´a poˇcet vnitˇrn´ıch vrchol˚ u vzorov´e kostry, M poˇcet vrchol˚ u prozat´ımn´ı. Moment´alnˇe jsme referenˇcn´ı kostru um´ıstili do vstupn´ı troj´ uheln´ıkov´e s´ıtˇe, ˇc´ımˇz jsme vytvoˇrili animaˇcn´ı kostru. Kosti jsou v tuto chv´ıli reprezentov´any pouze pomoc´ı u ´seˇcek (hrany grafu), pro interaktivn´ı demo deformuj´ıc´ı s´ıt’ mus´ıme urˇcit orientaci lok´aln´ıch souˇradnicov´ ych syst´em˚ u.
5.3.4
Zkop´ırov´ an´ı lok´ aln´ıch souˇ radnicov´ ych syst´ em˚ u
→ − Pro lok´aln´ı souˇradnicov´y syst´em plat´ı, ˇze osa y je ztotoˇznˇen´a s orientac´ı kosti B . D´ale v´ıme, ˇze animaˇcn´ı kostra si je s referenˇcn´ı velmi podobn´a (vzhledem k charakteru vstupn´ıch dat). Oznaˇcme si orientaci os lok´aln´ıho syst´emu animaˇcn´ı kostry Ax , Ay , Az a u referenˇcn´ı kostry Rx , Ry , Rz . Pak plat´ı: → − B Ay = → − kBk
(5.10)
Az = R x × Ay
(5.11)
Ax = A y × A z
(5.12)
Tento krok m´a viditelnˇe line´arn´ı sloˇzitost O(N ). Pˇr´ıklad moˇzn´eho v´ ysledku se nach´az´ı na obr´azku 5.13.
5.3.5
Zkop´ırov´ an´ı limitace pohybu v kloubech
Hodnoty omezen´ı v kloubech jsou do v´ ysledn´eho modelu jednoduˇse zkop´ırov´any. Pˇredpokl´ad´ame, ˇze jsou oba modely v klidov´e p´oze a je d´ıky tomu moˇzn´e pouˇz´ıt stejn´e hodnoty.
30
Podrobn´y rozbor metody
Interaktivn´ı deformace
Obr´azek 5.13: Zn´azornˇen´ı lok´aln´ıch souˇradnicov´ ych syst´em˚ u kost´ı.
5.4
Interaktivn´ı deformace
Animaˇcn´ı kostra nyn´ı obsahuje veˇsker´e informace nutn´e pro interaktivn´ı manipulaci. V m´ıstech koncov´ ych efektor˚ u se objev´ı prvky, kter´e uˇzivatel m˚ uˇze pˇresouvat v prostoru a zad´a tak novou pozici pˇr´ısluˇsn´eho koncov´eho efektoru, kter´ y se k n´ı pˇribl´ıˇz´ı s vyuˇzit´ım inverzn´ı kinematiky.
5.4.1
Inverzn´ı kinematika
Metody ˇreˇs´ıc´ı u ´lohu inverzn´ı kinematiky byly pops´any v kapitole 3. Pro v´ ypoˇcet v interaktivn´ı uk´azce byl zvolen pˇr´ıstup cyclic coordinate descent (CCD), kter´a konverguje zpravidla bˇehem nˇekolika set iterac´ı a umoˇzn ˇuje ˇreˇsit u ´lohu pˇr´ımo v glob´aln´ım souˇradnicov´em syst´emu. Limity rotac´ı v kloubech jsou zad´any jako maxim´aln´ı hodnoty rotac´ı kolem lok´aln´ı osy x, y a z. Krok algoritmu, kdy optim´alnˇe nat´aˇc´ıme pr´avˇe vybranou kost, aby vzd´alenost koncov´eho efektoru X od zadan´e pozice Y byla minim´aln´ı, rozloˇz´ıme na 31
Podrobn´y rozbor metody
Interaktivn´ı deformace
tˇri individu´aln´ı rotace podle lok´aln´ıch os. Pˇrekroˇc´ı-li rotace zadan´e omezen´ı, je jej´ı hodnota upravena oˇr´ıznut´ım na povolen´ y interval.
A
X
y X'
x
O
α
z
A'
Y'
σ
Obr´azek 5.14: Zn´azornˇen´ı rotace kolem lok´aln´ı osy y. Bod X pˇredstavuje pozici koncov´eho efektoru, A novˇe zadanou pozici, O poˇc´atek lok´aln´ı soustavy souˇradnic. Rovina σ zn´azorˇ nuje rotaˇcn´ı rovinu, α hledan´y u ´hel rotace. X 0 je pr˚ umˇetem koncov´eho 0 efektoru X do roviny rotace, Y pr˚ umˇetem koncov´eho efektoru po proveden´ı rotace. Rotace kolem jedn´e z os je zn´azornˇena na obr´azku 5.14. Provedeme ortogon´aln´ı projekci koncov´eho efektoru X do roviny rotace σ, kterou vyj´adˇr´ıme pomoc´ı bodu O a norm´alov´eho normalizovan´eho vektoru n (souhlasnˇe orientovan´ ym se zvolenou osou rotace): −−→ X 0 = X − (OX · n) n.
(5.15)
−−→ Obdobnˇe prom´ıtneme do roviny σ i c´ılov´y bod Y . Takto jsme z´ıskali vektory OX 0 −−→ a OY 0 , kter´e sv´ıraj´ı hledan´ yu ´hel ide´aln´ı rotace α, jehoˇz velikost vypoˇcteme podle pˇredpisu: α = arccos
−−→0 −−→0 ! OX OY . −−→0 · −−→0 kOX k kOY k
(5.16)
V´ysledn´a hodnota se nach´az´ı v intervalu h0, πi, nebot’ se jedn´a pouze o absolutn´ı velikost. Naˇstˇest´ı znam´enko m˚ uˇzeme snadno urˇcit uˇzit´ım vektorov´eho souˇcinu, v´ysledn´y vztah potom nabyde tvaru:
32
Podrobn´y rozbor metody
α = arccos
Interaktivn´ı deformace
−−→0 ! −−→0 −−→ −−→ OY OX 0 0 · sgn (OX × OY ) · n , −−→ · −−→ kOX 0 k kOY 0 k
(5.17)
kde sgn pˇredstavuje matematickou funkci signum, kter´a pro z´aporn´e ˇc´ıslo vrac´ı hodnotu −1, pro kladn´e +1 a pro nulu 0.
A A' X X' y O
x
z Obr´azek 5.18: Zn´azornˇen´ı prodlouˇzen´ı kosti pod´el lok´aln´ı osy y. Bod X pˇredstavuje pozici koncov´eho efektoru, A novˇe zadanou pozici, O poˇca´tek lok´aln´ı soustavy souˇradnic. X 0 je pr˚ umˇetem koncov´eho efektoru X na lok´aln´ı osu y, A0 pr˚ umˇetem zadan´e pozice.
Inverzn´ı kinematika s pruˇ zn´ ymi kostmi V pˇr´ıpadˇe, ˇze kosti lze natahovat, pˇrid´ame kromˇe tˇr´ı rotaˇcn´ıch krok˚ u jeˇstˇe zmˇenu d´elky kosti. Tento krok bude proveden pouze pod´el osy y, s n´ıˇz je kost souhlasnˇe orientovan´a. Situace je zachycena na obr´azku 5.18, na nˇemˇz se pouˇz´ıv´a stejn´e znaˇcen´ı −−→ jako u rotace. Hledan´a zmˇena d´elky kosti odpov´ıd´a orientovan´e u ´seˇcce X 0 A0 , body
33
Podrobn´y rozbor metody
Interaktivn´ı deformace
X 0 a A0 urˇc´ıme pomoc´ı pr˚ umˇetu na lok´aln´ı osu y: −−→ X 0 = O + (OX · b) b, −→ A0 = O + (OA · b) b.
(5.19) (5.20)
kde b je normalizovan´y vektor souhlasnˇe orientovan´y s lok´aln´ı osou y. Abychom zabr´anili singularit´am, nedovol´ıme zkr´acen´ı kosti pod urˇcit´ y pr´ah (napˇr´ıklad nedovol´ıme, aby kost byla kratˇs´ı neˇz v klidov´em stavu).
V´ ypoˇ cetn´ı sloˇ zitost Sloˇzitost v´ypoˇctu u ´lohy inverzn´ı kinematiky metodou CCD z´aleˇz´ı na poˇctu kost´ı P , ze kter´ ych se skl´ad´a segmentov´a struktura. D´ale se mˇen´ı poˇcet nutn´ ych iterac´ı ICCD v z´avislosti na poˇc´ateˇcn´ı a c´ılov´e konfiguraci struktury. V´ yslednou v´ ypoˇcetn´ı sloˇzitost lze form´alnˇe vyj´adˇrit pˇredpisem O(ICCD P ).
5.4.2
Mesh-skinning
Zmˇena animaˇcn´ı kostry vyˇzaduje patˇriˇcnou u ´pravu troj´ uheln´ıkov´e s´ıtˇe. Proto pouˇzijeme tzv. mesh-skinning, techniku deformace s´ıtˇe, kdy se troj´ uheln´ıkov´a s´ıt’ pˇrizp˚ usobuje kostˇre, kter´a je j´ı pˇriˇrazena. Pro demonstraˇcn´ı aplikaci byla naimplementov´ana varianta naz´ yvan´a linear blend skinning (LBS). Linear blend skinning (LBS) deformuje s´ıt’ pomoc´ı line´arn´ı kombinace transformaˇcn´ıch matic definovan´ych v kostech. Jedn´a se o nejz´akladnˇejˇs´ı pˇr´ıstup k problematice, a pˇresto ˇcasto pouˇz´ıvan´ y napˇr´ıklad v poˇc´ıtaˇcov´ ych hr´ach zejm´ena kv˚ uli jednoduch´e implementaci a n´ızk´ ym n´arok˚ um na c´ılov´ y hardware. Na vstupu m´ame troj´ uheln´ıkovou s´ıt’ s m vrcholy vi a kostru tvoˇrenou uspoˇra´danou mnoˇzinou n kost´ı bj . Pro kaˇzdou kost bj je definov´ana matice afinn´ı transformace Mj . Kaˇzd´ y vrchol vi obsahuje n definovan´ ych vah pˇr´ıspˇevku kosti wij (viz obr´azek 5.21). V´ ystupem je deformovan´a mnoˇzina vrchol˚ u, pˇriˇcemˇz p˚ uvodn´ı topologie s´ıtˇe z˚ ust´av´a zachov´ana. Deformace jednoho vrcholu se prov´ad´ı podle vztahu 5.22.
34
Podrobn´y rozbor metody
Interaktivn´ı deformace
Obr´azek 5.21: Vizualizace vah kost´ı (ovlivnˇen´ı vrcholu danou kost´ı). Svˇetl´a barva znamen´a velk´e ovlivnˇen´ı, ˇcern´a ˇza´dn´e. V m´ıstˇe kloubu maj´ı vliv obˇe kosti. Algoritmus je vysoce paralelizovateln´ y, vrcholy lze zpracovat naprosto nez´avisle. v0i =
n X
wij (Mj vi ) =
j=0
n X
! wij Mj
vi
(5.22)
j=0
Jednoduchost LBS se podepisuje na viditeln´ ych artefaktech, mezi nˇeˇz patˇr´ı: • ztr´ata objemu (zborcen´ı s´ıtˇe) zejm´ena v m´ıstˇe velk´eho ohybu ˇci zkrutu, • sebeprot´ın´an´ı s´ıtˇe v m´ıstech velk´eho ohybu ˇci zkrutu.
V´ ypoˇ cet vah mesh-skinningu Spolu s automaticky vygenerovanou kostrou bohuˇzel nedost´av´ame rovnou v´ahy urˇcen´e pro mesh-skinning. Tyto hodnoty zpravidla tvoˇr´ı v´ ytvarn´ık (anim´ator) ve vhodn´em n´astroji, lze je vˇsak pro naˇse u ´ˇcely pomˇernˇe dobˇre odhadnout. K v´ypoˇctu pouˇzijeme s´ıt’ ve stavu, v jak´em se nach´azela pˇri generov´an´ı kostry po posledn´ı iteraci laplaceovsk´eho smrˇst’ov´an´ı (tj. pˇred zah´ajen´ım decimace s´ıtˇe). Od vstupn´ı s´ıtˇe pˇredan´e aplikaci ke zpracov´an´ı se liˇs´ı pouze pozicemi vrchol˚ u, kter´e se ale vyskytuj´ı vhodnˇe bl´ızko vygenerovan´e kostry.
35
Podrobn´y rozbor metody
Interaktivn´ı deformace
Na z´akladˇe tohoto pozorov´an´ı urˇc´ıme v´ahu kosti bi pro vrchol vj podle vztahu: wij =
1 ε + dist(bi , vj )2
(5.23)
kde ε znaˇc´ı vhodn´e mal´e ˇc´ıslo (v aplikaci zvoleno ε = 10−5 , ˇc´ım vyˇsˇs´ı, t´ım plynulejˇs´ı bude zmˇena vlivu kost´ı v okol´ı kloub˚ u), funkce dist vzd´alenost vrcholu vj od kosti bi , kterou pˇri v´ ypoˇctu vah ch´apeme jako u ´seˇcku. Z´ıskan´e v´ahy posl´eze mus´ıme normalizovat:
wij wˆij = P i wij
(5.24)
Z v´ ykonnostn´ıch d˚ uvod˚ u se obvykle pouˇz´ıv´a stanoven´ y poˇcet vah, nebot’ valn´a vˇetˇsina je t´emˇeˇr rovna nule a kost m´a tak na deformovan´y vrchol sotva zanedbateln´y vliv. Demonstraˇcn´ı aplikace prov´ad´ı mesh-skinning s uˇzit´ım ˇctyˇr nejv´ yznamˇejˇs´ıch vah na jeden vrchol.
36
6 Implementace demonstraˇcn´ı aplikace Kapitola se zab´yv´a implementac´ı metody generov´an´ı kostry a n´asledn´e interaktivn´ı deformace modelu. Popisuje rozhodnut´ı, k nimˇz doˇslo bˇehem v´yvoje, specifikuje pˇresn´y form´at vstupn´ıch dat a zab´ yv´a se architekturou vznikl´e aplikace. Demonstraˇcn´ı aplikace je spouˇstˇena jako konzolov´a aplikace, kter´a posl´eze vytvoˇr´ı okno pro vykreslov´an´ı sc´eny. Uˇzivatel tak zad´av´a vstup skrze parametry programu a n´aslednˇe (po dokonˇcen´ı preprocessingu) ovl´ad´a sc´enu interaktivnˇe myˇs´ı a kl´avesnic´ı skrze vykreslovac´ı okno.
6.1
Pouˇ zit´ e knihovny a jazyk
Demonstraˇcn´ı aplikace byla naprogramov´ana v jazyce C++ verze 2011 (C++11) a z´avis´ı na frameworku VTK (Visualization Toolkit) a knihovn´ach libhungarian a Eigen. Mimo tyto knihovny tˇret´ıch stran je pro pˇreklad vyˇzadov´ana standardn´ı knihovna C++ opˇet verze 2011. VTK je open source projektem spoleˇcnosti Kitware, kter´a jej aktivnˇe vyv´ıj´ı a poskytuje k nˇemu podporu. Tento rozs´ahl´ y framework mimo jin´e nab´ız´ı tˇr´ıdy umoˇzn ˇuj´ıc´ı vizualizace, zpracov´an´ı obrazu, ale i abstrakci c´ılov´e platformy. V demonstraˇcn´ı aplikaci m´a na starosti veˇsker´e vykreslov´an´ı obsahu, zpracov´an´ı vstup˚ u od uˇzivatele a pohyb ve sc´enˇe. Kitware poskytuje VTK v dobˇe psan´ı pr´ace (2015) pod benevolentn´ı BSD licenc´ı.1 Knihovna libhungarian poskytuje implementaci mad’arsk´e metody v jazyce C, ˇreˇs´ı tedy jiˇz zmiˇ novan´e optim´aln´ı p´arov´an´ı s nejmenˇs´ı ztr´atou. Jej´ım autorem je Cyrill Stachniss. Eigen je knihovna pro v´ypoˇcty z oblasti line´arn´ı algebry. Kromˇe operac´ı s maticemi a vektory disponuje napˇr´ıklad ˇreˇsen´ım soustav line´arn´ıch rovnic. Knihovna je zaˇst´ıtˇena licenc´ı MPL2 2 . 1 2
Ofici´ aln´ı licenˇcn´ı informace lze nal´ezt na adrese http://www.vtk.org/licensing/. Lze nal´ezt na adrese http://eigen.tuxfamily.org/index.php?title=Main_Page#License.
37
Implementace demonstraˇcn´ı aplikace
6.2
Form´at vstupn´ıch dat
Form´ at vstupn´ıch dat
Abychom uk´azkovou aplikaci nezatˇeˇzovali dalˇs´ımi pomocn´ ymi knihovnami, bylo nutn´e zvolit takov´ y vstupn´ı form´at dat, jehoˇz naˇc´ıt´an´ı je podporov´ano jiˇz v r´amci frameworku VTK nebo jeho vlastn´ı implementace nen´ı obt´ıˇzn´a. Druh´ym poˇzadavkem je, abychom do pouˇzit´eho form´atu snadlo exportovali existuj´ıc´ı data, a to opˇet existuj´ıc´ım ˇreˇsen´ım nebo vlastn´ı implementac´ı.
6.2.1
Vzorov´ a kostra
Pro uchov´an´ı vzorov´e kostry, kter´a mus´ı nav´ıc uchovat omezen´ı pohybu kloubech a lok´aln´ı trojhrany, bohuˇzel nebyl nalezen vhodn´ y a z´aroveˇ n jednoduch´ y form´at. Kostra byla pˇripravena v modelovac´ım a animaˇcn´ım programu Blender, kter´ y je naˇstˇest´ı rozˇsiˇriteln´ y uˇzivatelsk´ ymi skripty v jazyce Python, pro nˇeˇz poskytuje API v podstatˇe k veˇsker´e sv´e funkcionalitˇe 3 . D´ıky tomu mohl vzniknout exportovac´ı skript do vlastn´ıho textov´eho form´atu, kter´ y obsahuje pouze n´ami vyˇzadovan´e informace. Soubor je uvozen nejprve ˇc´ıslem urˇcuj´ıc´ım uloˇzen´ y poˇcet kost´ı, kter´e po nˇem n´asleduj´ı. Kaˇzd´e kosti je dle poˇrad´ı pˇriˇrazen index, pˇriˇcemˇz zaˇc´ın´ame ˇc´ıslem nula. Zapsan´e souˇradnice a matice jsou spadaj´ı do svˇetov´ ych souˇradnic, nejsou podˇr´ızeny jin´e transformaci. Hodnoty v souboru jsou oddˇeleny libovoln´ ym mnoˇzstv´ım mezer, tabul´ator˚ u nebo odˇra´dkov´an´ı. N´asleduje strukturovan´y popis form´atu s vysvˇetlivkami.
Hlaviˇ cka [poˇ cet kost´ ı]
Soubor je uvozen nejprve ˇc´ıslem urˇcuj´ıc´ım uloˇzen´ y poˇcet kost´ı, kter´e po nˇem n´asleduj´ı.
Pro kaˇ zdou kost [index nadˇ razen´ e kosti] Index kosti nadˇrazen´e v hierarchii, −1 znaˇc´ı, ˇze nadˇrazen´a v˚ uˇci aktu´aln´ı neexistuje. 3
Viz Blender/Python Documentation: http://www.blender.org/api/blender_python_api_2_74_release/
38
Implementace demonstraˇcn´ı aplikace
Generov´an´ı kostry
[headx] [heady] [headz] Souˇradnice poˇca´tku kosti zapsan´e v desetinn´ych ˇc´ıslech. [tailx] [taily] [tailz] Souˇradnice konce kosti zapsan´e v desetinn´ ych ˇc´ıslech. [rotx-min] [rotx-max]
Limity rotace kosti kolem osy x v radi´anech.
[roty-min] [roty-max]
Limity rotace kosti kolem osy y v radi´anech.
[rotz-min] [rotz-max]
Limity rotace kosti kolem osy z v radi´anech.
[m11] [m12] [m13] [m14] Matice definuj´ıc´ı lok´aln´ı prostor kosti. [m21] [m22] [m23] [m24] [m31] [m32] [m33] [m34] [m41] [m42] [m43] [m44] Limitace rotace kosti, kter´a vlastnˇe pˇredstavuje omezen´ı pohybu v nadˇrazen´em kloubu, urˇcuje maxim´aln´ı rotaci kolem dan´e osy (proch´azej´ıc´ı nadˇrazen´ym kloubem) z klidov´e p´ozy.
6.2.2
Troj´ uheln´ıkov´ a s´ıt’
Pro vstupn´ı troj´ uheln´ıhovou s´ıt’ reprezentuj´ıc´ı humanoida jsem zvolil form´at Wavefront OBJ. Mimo troj´ uheln´ıkov´e s´ıtˇe poskytuje uchov´av´an´ı B´ezierov´ ych pl´at˚ u, pˇriˇrazen´ı materi´al˚ u ploch´am atd. Aplikace nicm´enˇe pˇredpokl´ad´a, ˇze vstupn´ı soubor obsahuje pouze troj´ uheln´ıky. Shrnuj´ıc´ı informace o form´atu lze nal´ezt napˇr´ıklad v [1]. Form´at Wavefront OBJ je podporov´an drtivou vˇetˇsinou program˚ u pracuj´ıc´ıch s trojrozmˇern´ ymi modely, kter´e jej dok´aˇz´ı importovat i exportovat. V naˇs´ı aplikaci jej snadno naˇcteme uˇzit´ım tˇr´ıdy vtkOBJReader, kterou poskytuje VTK.
6.3
Generov´ an´ı kostry
Kostra je v programu reprezentov´ana tˇr´ıdou CSkeleton, kter´a dok´aˇze vykonat nad kostrou potˇrebn´e u ´kony, mimo jin´e naˇc´ıst ji ze souboru (vyuˇzito u referenˇcn´ı kostry) nebo pˇriˇradit odpov´ıdaj´ıc´ı vrcholy prozat´ımn´ı a referenˇcn´ı kostry a tak vytvoˇrit v´ yslednou animaˇcn´ı kostru. 39
Implementace demonstraˇcn´ı aplikace
Uk´azkov´a aplikace
Tvorba prozat´ımn´ı kostry (viz sekce 5.2) byla naprogramov´ana dˇedˇen´ım abstraktn´ı tˇr´ıdy vtkPolyDataAlgorithm, kter´a poskytuje moˇznost zpracov´an´ı libovoln´ ych primitiv (pˇresnˇeji vrchol˚ u a jejich spojen´ı v grafick´a primitiva). D´ılˇc´ı ˇca´sti procesu byly rozdˇeleny do dvou tˇr´ıd: MeshLaplaceFilter zajiˇst’uje smrˇst’ov´an´ı modelu uˇzit´ım laplaceovsk´eho vyhlazov´an´ı, EdgeCollapseFilter prov´ad´ı redukci geometrie a z´avˇereˇcnou u ´pravu pozic. V´ysledn´a animaˇcn´ı kostra, jak jiˇz bylo zm´ınˇeno, je vytvoˇrena jednou z metod tˇr´ıdy CSkeleton – statickou metodou CSkeleton::Match, kter´a pˇreb´ır´a pˇres argumenty referenˇcn´ı a prozat´ımn´ı kostru. Mechanismus tvorby byl pops´an v sekci 5.3.
6.4
Uk´ azkov´ a aplikace
V r´amci diplomov´e pr´ace byla kromˇe generov´an´ı animaˇcn´ı kostry naimplementov´ana tak´e demostraˇcn´ı aplikace, kter´a dovoluje vzniklou kostru rozh´ybat uˇzivatelem, deformovat tak vstupn´ı s´ıt’ s pouˇzit´ım mesh-skinningu a v´ysledek zobrazovat. Naˇcten´ı s´ıtˇe ve form´atu OBJ, rendering a zpracov´an´ı vstupu byly realizov´any pomoc´ı tˇr´ıd nab´ızen´ ych frameworkem VTK (vtkPolyData, vtkPolyDataMapper, vtkActor aj.). Zn´azornˇen´ı pipeline se nach´az´ı na obr´azku 6.1.
ˇ e jsou vyznaˇceny ˇc´asti Obr´azek 6.1: Zn´azornˇen´ı pipeline demonstraˇcn´ı aplikace. Sedˇ implementovan´e VTK, b´ıle vlastn´ı implementace.
40
Implementace demonstraˇcn´ı aplikace
6.4.1
Uk´azkov´a aplikace
Inverzn´ı kinematika
Pˇrikroˇc´ıme k interaktivn´ımu ovlivˇ nov´an´ı sc´eny. Na pozice koncov´ ych efektor˚ u um´ıst´ıme pomocn´e prvky, jejichˇz pˇretaˇzen´ım dojde pˇrepoˇc´ıt´an´ı konfigurace kostry – ˇreˇsen´ı u ´lohy inverzn´ı kinematiky. Pomocn´e prvky jsou vyb´ır´any myˇs´ı, pro v´ ybˇer objektu ve sc´enˇe byla vyuˇzita jiˇz naimplementovan´a tˇr´ıda vtkCellPicker z frameworku VTK. Inverzn´ı kinematika realizovan´a pomoc´ı CCD byla naimplementov´ana v pouh´ych nˇekolika funkc´ıch, nebot’ se jedn´a o demonstraˇcn´ı ovlivnˇen´ı sc´eny nevelk´eho rozsahu. Funkce ProcessIK, po jej´ımˇz zavol´an´ı dojde k v´ ypoˇctu, m´a dva parametry: prvn´ı urˇcuje, kter´y koncov´y efektor byl pˇretaˇzen na jin´e m´ısto, druh´y je pˇr´ıznak, jestli jsou kosti pevn´e ˇci pruˇzn´e.
6.4.2
Mesh-skinning
V demonstraˇcn´ı aplikaci je skinning realizov´an jako tˇr´ıda CSkinnedMesh, kter´a si udrˇzuje stav kostry v klidov´e a souˇcasn´e p´oze a troj´ uheln´ıkovou s´ıt’ v klidov´e p´oze. Tato data jsou uchov´ana v podobˇe hlubok´e kopie, coˇz umoˇzn ˇuje pˇripravovat dalˇs´ı sn´ımek paralelnˇe. Tˇr´ıda dˇed´ı od vtkPolyDataAlgorithm, jedn´a se o modul poskytovan´y frameworkem VTK, kter´y disponuje vstupn´ımi a v´ystupn´ımi datov´ymi porty. D´ıky tomu dok´aˇze pˇredat v´yslednou s´ıt’ standardn´ı cestou k dalˇs´ımu zpracov´an´ı nebo vizualizaci. Pˇri zmˇenˇe konfigurace kostry doch´az´ı pouze ke zmˇenˇe pozic vrchol˚ u, indexace s´ıtˇe z˚ ust´av´a zachov´ana.
6.4.3
Nastaven´ı
Nastaven´ı kostant a n´azv˚ u soubor˚ u pouˇz´ıvan´ych aplikac´ı je shom´aˇzdˇeno centr´alnˇe ve tˇr´ıdˇe TAppSettings vˇcetnˇe pˇrednastaven´ych hodnot, kter´e byly urˇceny empiricky na z´akladˇe v´ ysledk˚ u testov´an´ı. TAppSettings je naimplementov´ana jako struktura, coˇz zp˚ usobuje, ˇze vˇsechny jej´ı atributy jsou defaultnˇe veˇrejn´e. Po spuˇstˇen´ı aplikace nic nebr´an´ı dodateˇcn´e u ´pravˇe hodnot napˇr´ıklad parametry pˇredan´ ymi skrze pˇr´ıkazovou ˇr´adku. Pˇresnˇe tak lze mˇenit vybran´e konstanty v demonstraˇcn´ı aplikaci. 41
7 V´ysledky Metoda byla po implementaci otestov´ana na nˇekolika zkuˇsebn´ıch modelech. Jedn´a se o manifoldn´ı troj´ uheln´ıkov´e s´ıtˇe pˇredstavuj´ıc´ı v´ıce ˇci m´enˇe humanoidn´ı charaktery. Mezi modely byly z´amˇernˇe zaˇrazeny modely, kter´e by mohly ˇcinit pot´ıˇze, napˇr´ıklad se nenach´azej´ı pˇresnˇe v klidov´e p´oze (coˇz m˚ uˇze ovlivnit generov´an´ı kostry, ale i fungov´an´ı inverzn´ı kinematiky, kter´a pro omezen´ı v kloubech pˇredpokl´ad´a st´ale stejn´e nastaven´ı klidov´e p´ozy modelu).
7.1
Testovac´ı modely
N´asleduje pˇredstaven´ı pouˇzit´ ych model˚ u a jejich charakteristick´ ych vlastnost´ı. Jedn´a se o modely poskytnut´e zdarma v r˚ uzn´ ych databank´ach, kter´e musely b´ yt m´ırnˇe upraveny, aby byly manifoldn´ı.
Obr´azek 7.1: Uk´azka vstupn´ıch model˚ u, zleva human, human-low, human-high. • human – Troj´ uheln´ıkov´a s´ıt’ pˇredstavuj´ıc´ı ˇclovˇeka pˇripraven´a v r˚ uzn´ ych rozliˇsen´ıch (pro testov´an´ı vlivu na v´ ykon). Hraniˇcn´ı verze human-high obsahuje ˇctyˇrikr´at v´ıce troj´ uheln´ık˚ u, verze human-low naopak ˇctyˇrikr´at m´enˇe neˇz human. Na z´akladˇe tohoto modelu byla vytvoˇrena referenˇcn´ı kostra. Model se nach´az´ı vlevo na obr´azku 7.1.
42
V´ysledky
Testovac´ı modely
• human2 – Troj´ uheln´ıkov´a s´ıt’ pˇredstavuj´ıc´ı ˇclovˇeka. Model nestoj´ı pˇresnˇe v klidov´e p´oze, coˇz m˚ uˇze znesnadnit generov´an´ı kostry (viz uprostˇred na obr´azku 7.1).
• human-noise – Jedn´a se o zaˇsumˇenou podobu modelu human (viz vpravo na obr´azku 7.1), tj. pozice vrchol˚ u modelu jsou m´ırnˇe n´ahodnˇe odch´ yleny.
• armadillo – S´ıt’ pˇredstavuj´ıc´ı stylizovan´eho humanoidn´ıho p´asovce. Model nestoj´ı pˇresnˇe v klidov´e p´oze, m´a ocas a dlouh´e uˇsi na hlavˇe (viz vlevo na obr´azku 7.2).
• minotauro – Minotaur bez roh˚ u, model m´a vyˇsˇs´ı poˇcet troj´ uheln´ık˚ u ve srovn´an´ı s ostatn´ımi (viz uprostˇred na obr´azku 7.2).
1
• stickman – Velmi zjednoduˇsen´a podoba humanoida, tˇelo je velmi tenk´e (viz vpravo na obr´azku 7.2).
Obr´azek 7.2: Uk´azka vstupn´ıch model˚ u, zleva armadillo, minotauro, stickman. 1
Autor: https://www.youtube.com/user/blendermodels4free/about.
43
V´ysledky
7.2
Nastaven´ı konstant generov´an´ı kostry
Nastaven´ı konstant generov´ an´ı kostry
Pro v´yˇse pˇredstaven´e modely byla vygenerov´ana animaˇcn´ı kostra. Empiricky byly urˇceny optim´aln´ı hodnoty konstant, kter´e byly pops´any v kapitole 5.2 a 5.3. Pro f´azi smrˇst’ov´an´ı: • maxim´aln´ı poˇcet iterac´ı IC = 6 • poˇca´teˇcn´ı hodnota WH = 0.5 • zesilovac´ı koeficient sL = 2.5 • pr´ah Vmin = 10−5 Pro f´azi redukce geometrie: • penalizace kˇrivosti Cshape = 0.1 • penalizace d´elky kost´ı Csampling = 1 Pro f´azi pˇriˇrazov´an´ı list˚ u kostry: • v´aha v´ ysledku DWT cDW T = 1 • v´aha vzd´alenosti od pozice vrcholu cdist = 0.01 Pro f´azi pˇriˇrazov´an´ı vnitˇrn´ıch uzl˚ u kostry: • v´aha rozd´ılu vzd´alenost´ı k list˚ um cEL = 1 • v´aha rozd´ılu stupnˇe vrcholu cED = 0.1 • v´aha vzd´alenosti k vrcholu cEP = 0 Pˇresto se uk´azalo, ˇze u nˇekter´ych model˚ u je nutn´e nˇekter´e parametry pˇrenastavit na jin´e hodnoty.
44
V´ysledky
V´ysledn´a podoba kostry
U modelu armadillo doch´azelo k nedostateˇcn´emu smrˇst’ov´an´ı s´ıtˇe, proto byl poˇcet iterac´ı laplaceovsk´eho vyhlazov´an´ı IC zv´yˇsen na hodnotu 9 a zesilovac´ı koeficient sL na 3. Model human2 poskytoval nejlepˇs´ı v´ ysledky po pouh´ ych tˇrech iterac´ıch, vyˇsˇs´ı poˇcty zhorˇsovaly podobu kostry v oblasti ramen. Model stickman poskytoval nejlepˇs´ı v´ysledky po pouh´ych tˇrech iterac´ıch a nastaven´ı zesilovac´ıho koeficientu sL na hodnotu 1.5.
7.3
V´ ysledn´ a podoba kostry
Ukaˇzme si v´ ysledn´e animaˇcn´ı kostry vygenerovan´e naˇs´ı metodou. N´asleduj´ıc´ı seznam popisuje vznikl´e vady, v´ysledky jsou mimo to zachyceny na obr´azku 7.4 a 7.5.
Obr´azek 7.3: Model human ve dvou r˚ uzn´ ych rozliˇsen´ıch v dr´atˇen´e podobˇe vˇcetnˇe vygenerovan´e kostry. • human, human-noise – Kvalitativnˇe v´yborn´y v´ysledek nez´avisle na hustotˇe s´ıtˇe ˇci jej´ım zaˇsumˇen´ı (viz obr´azek 7.3), kostra m´ısty nepatrnˇe vych´az´ı z vnitˇrku s´ıtˇe.
• minotauro – Dobr´y v´ysledek s m´ırn´ ym odch´ ylen´ım pozic vrchol˚ u (ruka z naˇseho pohledu vpravo, noha vlevo). Kostra vych´az´ı z vnitˇrku s´ıtˇe.
45
V´ysledky
V´ysledn´a podoba kostry
• stickman – Dobr´ y v´ ysledek, nesymetrick´e um´ıstˇen´ı loketn´ıch, kyˇceln´ıch a ramenn´ıch kloub˚ u, coˇz lze tolerovat vzhledem k jin´ym proporc´ım oproti vzorov´e kostˇre. Kostra m´ısty vych´az´ı z vnitˇrku s´ıtˇe. Vstupn´ı s´ıt’ nerespektuje pˇresnˇe klidovou p´ozu (dlanˇe smˇeˇruj´ı dol˚ u), omezen´ı volnosti pohybu v kloubech tak postr´ad´a na spr´avn´em u ´ˇcinku.
• human2 – Vstupn´ı model nerespektuje klidovou p´ozu. V´ ysledn´a kostra je pˇresto vygenerov´ana spr´avnˇe (aˇz na omezen´ı volnosti pohybu v kloubech), m´ırnˇe vyˇcn´ıv´a z vnitˇrku s´ıtˇe.
ˇ y v´ ysledek, zmiˇ nme zejm´ena ramenn´ı klouby, kter´e jsou • armadillo – Spatn´ chybnˇe um´ıstˇeny do vnitˇrku hlavy. Probl´em bude patrnˇe v dlouh´ ych uˇs´ıch, z nichˇz je jedno metodou vybr´ano jako cel´a hlava. Navzdory ˇspatn´emu v´ysledku v horn´ı ˇc´asti tˇela lze dobˇre interagovat s doln´ımi.
Obr´azek 7.4: V´ ysledn´e animaˇcn´ı kostry model˚ u human, human-noise, minotauro (zleva). Z v´ ysledk˚ u plyne n´asleduj´ıc´ı pozorov´an´ı. Aby byla animaˇcn´ı kostra vygenerov´ana spr´avnˇe, mus´ı vstupn´ı model st´at pˇresnˇe v klidov´e p´oze a jeho proporce mus´ı co nejv´ıce souhlasit s proporcemi referenˇcn´ı kostry. Patrnˇe by bylo vhodn´e vytvoˇrit v´ıce referenˇcn´ıch koster s r˚ uzn´ ymi proporcemi, pˇriˇcemˇz by se v´ ypoˇcet provedl s uˇzit´ım kaˇzd´e z nich a jako v´ysledek by byl vybr´an ten, kter´y je zat´ıˇzen nejmenˇs´ı chybou. Ta je ostatnˇe vyˇc´ıslov´ana jiˇz nyn´ı v r´amci d´ılˇc´ıch krok˚ u pˇriˇrazov´an´ı vrchol˚ u kostry.
46
V´ysledky
Doba generov´an´ı kostry
Obr´azek 7.5: V´ysledn´e animaˇcn´ı kostry model˚ u stickman, human2 a armadillo (zleva).
7.4
Doba generov´ an´ı kostry
Doba generov´an´ı animaˇcn´ı kostry pro vybran´e modely byla zmˇeˇrena na referenˇcTM R n´ım stroji s procesorem Intel Core i5-3350P o frekvenci 3.10 GHz a 8 GB RAM.
Mˇeˇren´ı bylo provedeno opakovanˇe, v potaz byla br´ana nejlepˇs´ı namˇeˇren´a hodnota (pˇredpokl´ad´ame, ˇze horˇs´ı v´ ysledek je zp˚ usoben´ y napˇr´ıklad preemptivn´ım chov´an´ım pl´anovaˇce operaˇcn´ıho syst´emu, kter´ y rozhodl v neprospˇech naˇseho programu). Nejprve ukaˇzme vliv poˇctu troj´ uheln´ık˚ u modelu na dobu generov´an´ı kostry, pouˇzijeme s´ıtˇe r˚ uzn´ ych rozliˇsen´ı reprezentuj´ıc´ı tent´ yˇz model human. Vrcholy V
Troj´ uheln´ıky F
ˇ T Cas
human-low
2336
4668
656 ms
human
9338
18672
9110 ms
human-mid-high
18674
37344
67727 ms
human-high
37346
74688
120388 ms
human-high2
55160
110316
680934 ms
human-high3
74690
149376
1163010 ms
Model
V n´asleduj´ıc´ı tabulce prozkoum´ame pomˇer T /p(F ), kde p znaˇc´ı polynomi´aln´ı funkci, kterou se snaˇz´ıme popsat v´ypoˇcetn´ı sloˇzitost. Pomˇery jsou normalizov´any do srovnateln´eho ˇr´adu. Pokud namˇeˇren´a data odpov´ıdaj´ı svou z´avislost´ı zvolen´e funkci p, pak budou hodnoty ve sloupci oscilovat kolem konstanty.
47
V´ysledky
Doba generov´an´ı kostry T /F
T /F 2
T /F 3
human-low
1.4053
3.0105
6.4493
human
4.8789
2.6130
1.3994
human-mid-high
18.1360
4.8565
1.3005
human-high
16.1188
2.1581
0.2890
human-high2
61.7258
5.5953
0.5072
human-high3
77.8579
5.2122
0.3489
Model
Strmˇe rostouc´ı hodnoty sloupce T /F nenasvˇedˇcuj´ı line´arn´ı z´avislosti T na F , naopak pro kvadratickou z´avislost se mˇen´ı pomˇer nejm´enˇe. Pˇredpokl´adan´a kubick´a sloˇzitost algoritmu pˇr´ıliˇs neodpov´ıd´a v´ ysledk˚ um – nejsp´ıˇse kv˚ uli tomu, ˇze ˇreˇsen´e soustavy line´arn´ıch rovnic, kter´e mˇely kubickou v´ypoˇcetn´ı sloˇzitost zp˚ usobit, jsou ve skuteˇcnosti velmi ˇr´ıdk´e. V´yslednou z´avislost doby v´ypoˇctu T na poˇctu troj´ uheln´ık˚ uF zaneseme do grafu (viz obr´azek 7.6).
Obr´azek 7.6: Namˇeˇren´e doby v´ypoˇctu T v z´avislosti na poˇctu troj´ uheln´ık˚ u F vˇcetnˇe 0 −6 2 kvadratick´e regresn´ı funkce T = 0.0515435 · 10 F . V dalˇs´ı tabulce porovn´av´ame ˇcasy vˇsech vstupn´ıch s´ıt´ı pˇredstaven´ ych v kapitole 7.1:
48
V´ysledky
Pamˇet’ov´a sloˇzitost generov´an´ı kostry Vrcholy
Troj´ uheln´ıky
Iterace smrˇ st’ov´ an´ı
ˇ Cas
armadillo
34594
69184
9
325405 ms
human
9338
18672
6
9110 ms
human2
14812
29620
3
11601 ms
human-noise
9338
18672
6
9147 ms
minotauro
11832
23660
6
15978 ms
stickman
3798
7592
3
1056 ms
Model
Nesm´ıme zapomenout, ˇze celkov´a doba generov´an´ı je d´ana kromˇe poˇctu vrchol˚ u a troj´ uheln´ık˚ u vstupn´ı s´ıtˇe tak´e jej´ım tvarem. Sloˇzit´y tvar s´ıtˇe vyˇzaduje v´ıce iterac´ı pro smrˇst’ov´an´ı laplaceovsk´ym vyhlazov´an´ım, coˇz se projevilo na vysok´em ˇcase u modelu armadillo. Zvyˇsov´an´ı poˇctu iterac´ı m´a nicm´enˇe pouze line´arn´ı vliv na v´yslednou dobu v´ ypoˇctu kostry (jedn´a se v podstatˇe o opakov´an´ı jedn´e ˇc´asti algoritmu).
7.5
Pamˇ et’ov´ a sloˇ zitost generov´ an´ı kostry
Z hlediska pamˇet’ov´e sloˇzitosti se nejedn´a o zaj´ımavou u ´lohu, pˇri pouˇzit´ı ˇr´ıdk´ych matic je velikost alokovan´e pamˇeti pro v´ypoˇcet line´arnˇe u ´mˇern´a velikosti vstupn´ıch dat (tj. poˇctu troj´ uheln´ık˚ u). Pouze pˇri tvorbˇe matice pro mad’arskou metodu alokujeme pamˇet’ o velikosti M × N , kde M a N vˇsak odpov´ıd´a pouze poˇctu list˚ u prozat´ımn´ı, respektive referenˇcn´ı kostry. Poˇcet list˚ u referenˇcn´ı kostry je vˇsak zn´am´ y (M = 5), jedn´a se v podstatˇe o konstantu, a tak se opˇet dost´av´ame na line´arn´ı sloˇzitost. U nejkomplexnˇejˇs´ıho modelu armadillo nepˇrekroˇcila veˇsker´a pamˇet’ alokovan´a programem hranici 50 MB bˇehem generov´an´ı kostry, 150 MB bˇehem vykreslov´an´ı.
7.6
Doba v´ ypoˇ ctu inverzn´ı kinematiky
V´ypoˇcet u ´lohy inverzn´ı kinematiky prob´ıhal v re´aln´em ˇcase. Pro vˇsechny vstupn´ı modely byla doba v´ ypoˇctu shodn´a, nebot’ pouˇz´ıv´ame shodnou kostru. N´astroje pro pˇresn´e mˇeˇren´ı ˇcasu ze standardn´ı knihovny jazyka C++ jsou bohuˇzel st´ale naimplementov´any pro platformu Windows s nedostateˇcn´ ym rozliˇsen´ım, proto musely b´yt pro meˇren´ı uˇzity funkce z´avisl´e na platformˇe: QueryPerformaceCounter a QueryPerformaceFrequency. 49
V´ysledky
Srovn´an´ı s existuj´ıc´ımi metodami
Obr´azek 7.7: Inverzn´ı kinematika aplikovan´a na model human. V pˇr´ıpadˇe, ˇze byly zak´az´any pruˇzn´e segmenty, trval v´ ypoˇcet m´enˇe neˇz 10 ms, s pruˇzn´ ymi kostmi pak 15 ms. Uk´azky deformovan´ ych model˚ u nalezne ˇcten´aˇr na obr´azc´ıch 7.7 a 7.8.
Obr´azek 7.8: Inverzn´ı kinematika aplikovan´a na model stickman.
7.7
Srovn´ an´ı s existuj´ıc´ımi metodami
S ohledem na metody prozkouman´e v kapitole 2 m˚ uˇzeme prohl´asit, ˇze vznikla unik´atn´ı, dosud neexistuj´ıc´ı metoda, kter´a pro vstupn´ı troj´ uheln´ıkovou s´ıt’ humanoida generuje kostru urˇcenou pro animaci, a to vˇcetnˇe definic omezen´ı pohybu
50
V´ysledky
Srovn´an´ı s existuj´ıc´ımi metodami
v kloubech. V n´asleduj´ıc´ıch nˇekolika odstavc´ıch srovn´ame vzniklou metodu a jej´ı v´ ysledky s ostatn´ımi metodami popsan´ ymi v kapitole 2. Metoda od Straka et al. (kapitola 2.3.1), podle kter´e bylo vytvoˇreno pˇriˇrazov´an´ı vrchol˚ u referenˇcn´ı a prozat´ımn´ı kostry, mˇela vytvoˇrenou poˇca´teˇcn´ı kostru na z´akladˇe sn´ıman´ych volumetrick´ych dat a zpracov´an´ı muselo prob´ıhat v re´aln´em ˇcase. Na rozd´ıl od p˚ uvodn´ı podoby byla naˇse ˇc´ast metody rozˇs´ıˇrena o v´ ypoˇcet orientace lok´aln´ıho souˇradnicov´eho syst´emu a zkop´ırov´an´ı definic omezen´ı pohybu v kloubech. Z oblasti geometrick´ ych metod jsme prozkoumali metodu medial axis transform a jej´ı odhad pomoc´ı spojen´ı p´ol˚ u Voronn´eho diagramu. Tento pˇr´ıstup je na rozd´ıl od naˇs´ı metody citliv´y na zaˇsumˇen´ı povrchov´ych dat a produkuje velk´e mnoˇzstv´ı prvk˚ u skeletu. Metoda od Au et al., pˇredstaven´a v kapitole 2.2.2, se stala souˇca´st´ı naˇs´ı metody, slouˇz´ı ke generov´an´ı prozat´ımn´ı kostry. Tvorba kostry spojov´an´ım v´yznaˇcn´ych bod˚ u (metoda od Ma et al.), kterou jsme se zab´ yvali v kapitole 2.2.2, na rozd´ıl od naˇs´ı metody nemus´ı nikterak vstupn´ı data iterativnˇe smrˇst’ovat. Jej´ı sloˇzitost, nebereme-li v u ´vahu preprocessing v podobˇe generov´an´ı teˇcn´ ych koul´ı, je beztak tˇeˇzko vyj´adˇriteln´a a pro komplexn´ı modely bude pravdˇepodobnˇe ˇcasovˇe srovnateln´a s metodou Au et al. Pˇr´ıstup spojov´an´ım v´ yznaˇcn´ ych bod˚ u m´a tu v´ yhodu, ˇze produkuje pomˇernˇe mal´ y poˇcet kost´ı. Z˚ ust´av´a vˇsak ot´azkou, maj´ı-li vznikl´e kosti alespoˇ n pˇribliˇznˇe anatomick´e um´ıstˇen´ı pro animaci. Naˇse metoda (podobnˇe jako metoda od Straka et al.) se specializuje na tvorbu kostry humanoida, omezen´ı volnosti pohybu v kloubech proto byla definov´ana napevno u referenˇcn´ı kostry. Bez znalosti referenˇcn´ı kostry bychom omezen´ı mohli aplikovat napˇr´ıklad poloautomatizovanˇe, kdy by uˇzivatel zvolil u vznikl´ ych kloub˚ u jejich typ (kulov´ y, v´alcov´ y atd.) a limity by byly dopoˇc´ıt´any testov´an´ım koliz´ı. Klouby by se zkr´atka zkusmo ohnuly do sv´ ych nejzazˇs´ıch mez´ı, kde jeˇstˇe nedoch´az´ı ke kolizi obalov´ ych tˇeles sousedn´ıch kost´ı. Nab´ız´ı se ale ot´azka, zda takto vznikl´a kostra skuteˇcnˇe usnadn´ı tvorbu animace, nebot’ se d´a pˇredpokl´adat, ˇze bude vyˇzadovat dodateˇcn´e u ´pravy, kter´e nakonec budou moˇzn´a srovnatelnˇe obt´ıˇzn´e s manu´aln´ı tvorbou cel´e animaˇcn´ı kostry.
51
8 Z´avˇer C´ılem pr´ace bylo vytvoˇrit metodu, kter´a vygeneruje vhodnou animaˇcn´ı kostru pro model pˇredstavuj´ıc´ı humanoida. Na z´akladˇe pr˚ uzkumu a rozboru nˇekolika metod byl navrˇzen vlastn´ı postup pro automatick´e generov´an´ı kostry humanoida z troj´ uheln´ıkov´e s´ıtˇe. Vznikl´a metoda vyuˇz´ıv´a referenˇcn´ı kostru, ze kter´e jsou pˇreneseny charakteristick´e vlastnosti do v´ ysledn´e kostry: pˇredevˇs´ım poˇcet kost´ı a jejich hierarchick´e uspoˇr´ad´an´ı, orientace lok´aln´ıch souˇradnicov´ ych syst´em˚ u a omezen´ı volnosti pohybu v kloubech. Metoda byla otestov´ana na troj´ uheln´ıkov´ ych s´ıt´ıch r˚ uzn´ ych hustot a podobnost´ı v˚ uˇci ˇclovˇeku. Uk´azalo se, ˇze u model˚ u, kter´e jsou bl´ızk´e referenˇcn´ı kostˇre (tj. dodrˇzuj´ı klidovou p´ozu a maj´ı proporce ˇclovˇeka, coˇz je ostatnˇe souˇcasnou nejvˇetˇs´ı limitac´ı naˇseho postupu), dos´ahneme kvalitnˇejˇs´ıch v´ ysledk˚ u. Vznikl´a animaˇcn´ı kostra tak potˇrebuje jen drobn´e ruˇcn´ı z´avˇereˇcn´e u ´pravy. Kromˇe samotn´eho generov´an´ı doˇslo na implementaci interaktivn´ı deformace humanoida skrze inverzn´ı kinematiku, coˇz umoˇzn ˇuje snadno zjistit, zda kostra byla vygenerov´ana spr´avnˇe. K ˇreˇsen´ı inverzn´ı kinematiky byla uˇzita vlastn´ı implementace pˇr´ıstupu cyclic coordinate descent. V´ ykonnostnˇe poznamen´av´a generov´an´ı kostry fakt, ˇze je bˇehem nˇeho opakovanˇe ˇreˇsena soustava line´arn´ıch rovnic. Na druhou stranu, jak jiˇz bylo naznaˇceno v u ´vodu, c´ılem pr´ace bylo automatizovat ˇca´st anim´atorsk´eho procesu – bˇehem v´ypoˇctu kostry se tak v´ ytvarn´ık m˚ uˇze vˇenovat jin´e ˇcinnosti. Demonstraˇcn´ı interakce s modelem oproti tomu prob´ıh´a v re´aln´em ˇcase. Navrˇzen´a metoda by mohla b´yt rozˇs´ıˇrena tak, aby vhodnˇe volila z v´ıce referenˇcn´ıch koster, coˇz by bylo moˇzn´e realizovat hled´an´ım pˇr´ıpadu, kdy se nejm´enˇe liˇs´ı referenˇcn´ı a vygenerovan´a kostra. Dalˇs´ı moˇznost´ı vylepˇsen´ı by byla u ´prava omezen´ı v kloubech podle vlastnost´ı vstupn´ı s´ıtˇe, nebot’ souˇcasn´a metoda pˇredpokl´ad´a nemˇenn´e hodnoty, pˇr´ıpadnˇe korekce klidov´e p´ozy modelu pro spr´avn´e pˇriˇrazen´ı omezen´ı kloub˚ u.
52
Literatura [1] Wavefront OBJ File Format Summary [online]. cit. 8.4.2015. Dostupn´e z: http://www.fileformat.info/format/wavefrontobj/egff.htm [2] Hungarian algorithm. Wikipedia: the free encyclopedia [online]. Wikimedia Foundation. 2001-. San Francisco (CA). Dostupn´e z: http://en.wikipedia.org/wiki/Hungarian_algorithm [3] Amenta, N.; Choi, S.; Kolluri, R. K.: The Power Crust, Unions of Balls, and the Medial Axis Transform. Computational Geometry: Theory and Applications, roˇcn´ık 19, 2000: s. 127–153. [4] Au, O. K.-C.; Tai, C.-L.; Chu, H.-K.; aj.: Skeleton extraction by mesh contraction. ACM Transactions on Graphics, roˇcn´ık 27, ˇc. 3, 2008: s. 1–1722. ˇ ara, J.; Sochor, J.; aj.: Modern´ı poˇc´ıtaˇcov´a grafika. Brno: Computer [5] Beneˇs, B.; Z´ Press, prvn´ı vyd´an´ı, 2004. [6] Blum, H.: A Transformation for Extracting New Descriptors of Shape. In Models for the Perception of Speech and Visual Form, editace W. Wathen-Dunn, Cambridge: MIT Press, 1967, s. 362–380. [7] Denavit, J.; Hartenberg, R. S.: A kinematic notation for lower-pair mechanisms based on matrices. Journal of Applied Mechanics, 1955. [8] Goli´aˇs, R.: Inverzn´ı kinematika. Diplomov´a pr´ace. Brno: Masarykova univerzita, 1999. [9] Ma, C.-M.; Wan, S.-Y.; Lee, J.-D.: Three-dimensional topology preserving reduction on the 4-subfields. Pattern Analysis and Machine Intelligence, IEEE Transactions on, roˇcn´ık 24, ˇc. 12, 2002: s. 1594–1605, ISSN 0162-8828, doi:10.1109/TPAMI.2002.1114851. 53
LITERATURA
LITERATURA
[10] Ma, J.; Bae, S.; Choi, S.: 3D medial axis point approximation using nearest neighbors and the normal field. The Visual Computer, roˇcn´ık 28, ˇc. 1, 2012: s. 7–19, ISSN 0178-2789, doi:10.1007/s00371-011-0594-7. [11] Ma, J.; Choi, S.: Kinematic skeleton extraction from 3D articulated models. Computer-Aided Design, roˇcn´ık 46, 2014: s. 221–226. [12] Meredith, M.; Maddock, S.: Real-Time Inverse Kinematics: The Return of the Jacobian. 2004. [13] Rodriguez, A.; Ehlenberger, D. B.; Hof, P. R.; aj.: Three-dimensional neuron tracing by voxel scooping. Journal of Neuroscience Methods, roˇcn´ık 184, ˇc. 1, 2009: s. 169–175, ISSN 0165-0270. [14] Straka, M.; Hauswiesner, S.; R¨ uther, M.; aj.: Skeletal Graph Based Human Pose Estimation in Real-Time. In Proceedings of the British Machine Vision Conference, BMVA Press, 2011, ISBN 1-901725-43-X. [15] Wang, L.-C.; Chen, C.: A combined optimization method for solving the inverse kinematics problems of mechanical manipulators. Robotics and Automation, IEEE Transactions on, roˇcn´ık 7, ˇc. 4, Aug 1991: s. 489–499, ISSN 1042-296X. [16] Yoshizawa, S.; Belyaev, A. G.; Seidel, H.-P.: Skeleton-based Variational Mesh Deformations. Computer Graphics Forum, roˇcn´ık 26, ˇc. 3, 2007: s. 255–264, doi:10.1111/j.1467-8659.2007.01047.x.
54
A Pˇr´ıloha: Obsah CD Tato pˇr´ıloha popisuje adres´aˇrovou strukturu pˇriloˇzen´eho CD.
binary
spustiteln´e soubory pr´ace a potˇrebn´a data
build
EXE a DLL soubory
data
modely ve form´atu Wavefront OBJ
run
pˇripraven´e spouˇstˇec´ı skripty
doc tex source
diplomov´a pr´ace ve form´atu PDF zdrojov´e soubory bakal´aˇrsk´e pr´ace (LaTeX) veˇsker´e zdrojov´e soubory aplikace
blender-bones-script
exportovac´ı skript kostry pro program Blender
program
zdrojov´e soubory samotn´e aplikace
55
B Pˇr´ıloha: Uˇzivatelsk´y manu´al Popiˇsme si nyn´ı ve struˇcnosti pˇreklad zdrojov´ ych k´od˚ u aplikace a jej´ı ovl´ad´an´ı.
B.1
Pˇ reklad
Aplikace byla naprogramov´ana v jazyce C++ a sestavov´ana pomoc´ı programu CMake a Microsoft Visual Studio. Pro pˇreklad je nutn´e dodrˇzet n´asleduj´ıc´ı kroky:
1. St´ahneme a nainstalujeme program CMake (http://www.cmake.org/). 2. St´ahneme framework VTK verze 6.0.0 (http://www.vtk.org/). 3. Za pomoci programu CMake vygenerujeme projektov´y soubor VTK pro Visual Studio, kter´ y umoˇzn´ı pˇreklad a instalaci frameworku. Generov´an´ı se prov´ad´ı klasickou cestou – zvol´ı se koˇrenov´y adres´aˇr VTK, ve kter´em se nach´az´ı soubor CMakeLists.txt. 4. Vznikl´ y projekt pˇreloˇz´ıme ve Visual Studiu. y soubor diplomov´e 5. Za pomoci programu CMake vygenerujeme projektov´ pr´ace pro Visual Studio. Zdrojov´e soubory se nach´azej´ı na CD v adres´aˇri source\program. 6. Vznikl´ y projekt diplomov´e pr´ace pˇreloˇz´ıme ve Visual Studiu.
B.2
Parametry pˇ r´ıkazov´ eˇ r´ adky
Po pˇreloˇzen´ı m˚ uˇzeme spustit aplikaci v pˇr´ıkazov´e ˇra´dce parametry. Form´at je ve tvaru: skeletonGenerator.exe "model.obj"[dalˇ sı ´ moˇ znosti]
56
Pˇr´ıloha: Uˇzivatelsk´y manu´al
Ovl´ad´an´ı aplikace
Jako prvn´ı parametr pˇred´av´ame n´azev souboru obsahuj´ıc´ı model ve form´atu Wavefront OBJ. Dalˇs´ı dobrovoln´e moˇznosti jsou pˇred´av´any vˇzdy po dvojic´ıch; prvn´ı je n´azev, druh´a hodnota parametru.
• itercount N – Smrˇst’ov´an´ı s´ıtˇe bude provedeno maxim´alnˇe N -kr´at. Z´akladn´ı hodnota N = 6. • poscoeff p – V´aˇzen´ı vlivu pozic pˇri smrˇst’ov´an´ı s´ıtˇe. Z´akladn´ı hodnota p = 0.5. • areacoeff a – V´aˇzen´ı vlivu obsahu troj´ uheln´ık˚ u pˇri smrˇst’ov´an´ı s´ıtˇe. Z´akladn´ı hodnota a = 1.0. • sl s – Zesilov´an´ı smrˇst’ov´an´ı s kaˇzdou iterac´ı, kaˇzdou iteraci zes´ıleno s-kr´at. Z´akladn´ı hodnota s = 2.5. • volumecoeff V – Prahov´y objem V , po jeho dosaˇzen´ı jsou iterace smrˇst’ov´an´ı ukonˇceny. Z´akladn´ı hodnota V = 10−5 .
B.3
Ovl´ ad´ an´ı aplikace
Po dokonˇcen´ı generov´an´ı kostry je uˇzivateli dovolena interakce s modelem skrze vizualizaˇcn´ı okno. Popiˇsme si moˇznosti ovl´ad´an´ı tlaˇc´ıtky kl´avesnice: Tlaˇc´ıtko
Funkce
1
Skryt´ı/odkryt´ı vygenerovan´e kostry.
2
Skryt´ı/odkryt´ı lok´aln´ıch trojhran˚ u.
4
Skryt´ı/odkryt´ı s´ıtˇe.
5
Vizualizace kosti s nejvˇetˇs´ım vlivem (segmentace).
6
Skryt´ı/odkryt´ı smrˇstˇen´e s´ıtˇe.
7
Povolen´ı pruˇzn´ ych kost´ı inverzn´ı kinematiky.
mezern´ık
Reset p´ozy modelu.
W
Zobrazit jako dr´atˇen´ y model.
S
Zruˇsit zobrazen´ı dr´atˇen´eho modelu.
Taˇzen´ım myˇsi za stisku lev´eho tlaˇc´ıtka lze rotovat s kamerou, prav´e tlaˇc´ıtko ovl´ad´a pˇribl´ıˇzen´ı a prostˇredn´ı pozici kamery. Myˇs´ı lze rovnˇeˇz pˇresouvat modr´e ovladaˇce
57
Pˇr´ıloha: Uˇzivatelsk´y manu´al
Ovl´ad´an´ı aplikace
(nach´azej´ı se v listech kostry), coˇz zp˚ usob´ı deformaci modelu s uˇzit´ım inverzn´ı kinematiky. Do konzole jsou po celou dobu bˇehu programu vypisov´ana informaˇcn´ı hl´aˇsen´ı.
58