ZADÁNÍ BAKALÁŘSKÉ PRÁCE

Název: Animace humanoidního 3D modelu Student: Oldřich Linhart Vedoucí: Ing. Jiří Kubišta Studijní program: Informatika Studijní obor: Webové a softwarové inženýrství Katedra: Katedra softwarového inženýrství Platnost zadání: Do konce letního semestru 2020/21

Pokyny pro vypracování

1. Vypracujte přehled současných řešení animací humanoidních 3D modelů. 2. Navrhněte postup přípravy 3D modelu pro následnou animaci, včetně vytvoření kostry. 3. S využitím Vámi zvoleného řešení implementujte sadu alespoň pěti základních animací končetin a hlavy humanoidního 3D modelu sbírkového předmětu, vybraného po dohodě s vedoucím práce. 4. Vámi vytvořené animace demonstrujte v jednoduché aplikaci vytvořené ve Vámi zvoleném herním enginu. Seznam odborné literatury

Dodá vedoucí práce.

Ing. Michal Valenta, Ph.D. doc. RNDr. Ing. Marcel Jiřina, Ph.D. vedoucí katedry děkan

V Praze dne 29. ledna 2020

Bakal´aˇrsk´apr´ace

Animace humanoidn´ıho3D modelu

OldˇrichLinhart

Katedra softwarov´ehoinˇzen´yrstv´ı Vedouc´ıpr´ace:Ing. Jiˇr´ıKubiˇsta

4. ˇcervna2020

Podˇekov´an´ı

R´adbych podˇekoval m´emu vedouc´ımu pr´aceIng. Jiˇr´ımu Kubiˇstovi za cenn´e rady a pˇripom´ınky. Takt´eˇzbych r´adpodˇekoval sv´erodinˇeza podporu pˇri studiu.

Prohl´aˇsen´ı

Prohlaˇsuji,ˇzejsem pˇredloˇzenou pr´acivypracoval samostatnˇea ˇzejsem uvedl veˇsker´epouˇzit´einformaˇcn´ızdroje v souladu s Metodick´ympokynem o dodr- ˇzov´an´ıetick´ych princip˚upˇripˇr´ıpravˇevysokoˇskolsk´ych z´avˇereˇcn´ych prac´ı. Beru na vˇedom´ı,ˇzese na moji pr´acivztahuj´ıpr´ava a povinnosti vypl´yvaj´ıc´ı ze z´akona ˇc.121/2000 Sb., autorsk´ehoz´akona, ve znˇen´ıpozdˇejˇs´ıch pˇredpis˚u, zejm´enaskuteˇcnost, ˇze Cesk´evysok´euˇcen´ıtechnick´evˇ Praze m´apr´avo na uzavˇren´ılicenˇcn´ısmlouvy o uˇzit´ıt´etopr´acejako ˇskoln´ıhod´ılapodle § 60 odst. 1 citovan´ehoz´akona.

V Praze dne 4. ˇcervna2020 ...... Cesk´evysok´euˇcen´ıtechnick´evˇ Praze Fakulta informaˇcn´ıch technologi´ı © 2020 Oldˇrich Linhart. Vˇsechna pr´ava vyhrazena. Tato pr´ace vznikla jako ˇskoln´ı d´ılo na Cesk´emvysok´emuˇcen´ıˇ technick´em v Praze, Fakultˇeinformaˇcn´ıchtechnologi´ı.Pr´ace je chr´anˇenapr´avn´ımipˇredpisy a mezin´arodn´ımi´umluvamio pr´avuautorsk´ema pr´avech souvisej´ıc´ıchs pr´avem autorsk´ym.K jej´ımuuˇzit´ı,s v´yjimkoubez´uplatn´ychz´akonn´ychlicenc´ıa nad r´amec opr´avnˇen´ıuveden´ychv Prohl´aˇsen´ına pˇredchoz´ıstranˇe,je nezbytn´ysou- hlas autora.

Odkaz na tuto pr´aci Linhart, Oldˇrich. Animace humanoidn´ıho3D modelu. Bakal´aˇrsk´apr´ace.Praha: Cesk´evysok´euˇcen´ıtechnick´evˇ Praze, Fakulta informaˇcn´ıch technologi´ı,2020. Abstrakt

Tato pr´acese zab´yv´aproblematikou animace humanoidn´ıch postav. C´ılem pr´aceje sezn´amitˇcten´aˇrese z´akladn´ımi pojmy a principy, kter´ejsou spo- jen´es vytv´aˇren´ımhumanoidn´ıch 3D postav a jejich animac´ı.Je pops´anpro- ces pˇr´ıpravy model˚uk animaci, kter´yje prakticky pˇredveden na modelu, pˇridˇelen´ehood vedouc´ıhopr´ace.Pro model je vytvoˇren´aovl´adac´ıkostra a po- moc´ımetod dopˇredn´ea inverzn´ıkinematiky je demonstrov´anpostup vytv´aˇren´ı kostern´ıch animac´ı.V´ysledkem pr´aceje upraven´ypˇridˇelen´ymodel, pˇripraven´y k vytv´aˇren´ıanimac´ı,sada z´akladn´ıch animac´ıa jednoduch´aaplikace v hern´ım engine Unity, kde lze animace demonstrovat.

Kl´ıˇcov´a slova humanoidn´ı animace, rigging, kloubov´asoustava, kostern´ı animace, procedur´aln´ıanimace, pˇr´ım´akinematika, inverzn´ıkinematika, de- monstraˇcn´ıaplikace, , Unity

vii Abstract

This thesis is focused on humanoid character . The goal is to in- troduce the basic terminology and principles associated with creating and animating 3D characters to the reader. The whole process of preparing a character for animation is explained and demonstrated on model assigned by thesis supervisor. Skeleton of the model is created with rigging and skin- ning techniques. Creation of using forward and inverse kinematics is demonstrated. The result of this project is a model with an advanced rig, appropriate for animation. A set of basic is created and demonstrated in simple Unity application.

Keywords humanoid animation, rigging, articulated structure, skeletal ani- mation, , forward kinematics, inverse kinematics, demon- strational application, Blender, Unity

viii Obsah

Uvod´ 1

1 C´ıl pr´ace 3

2 Teoretick´a ˇc´ast 5 2.1 Reprezentace model˚uve 3D ...... 5 2.1.1 Polygonov´as´ıt’ ...... 5 2.1.2 Topologie ...... 7 2.1.3 Level of Detail ...... 8 2.1.4 Sculpting ...... 10 2.1.5 Fotogrammetrie ...... 11 2.1.6 Zap´ek´an´ıtextur ...... 12 2.2 Poˇc´ıtaˇcov´aanimace ...... 12 2.2.1 Keyframing ...... 13 2.2.1.1 Vertex animation ...... 14 2.2.1.2 Morph target animation ...... 14 2.2.2 Procedur´aln´ıanimace ...... 15 2.3 Kostern´ıanimace ...... 16 2.3.1 Kostra ...... 16 2.3.2 Rigging ...... 17 2.3.3 Degree of Freedom ...... 18 2.3.4 Skinning ...... 19 2.3.5 Kinematika ...... 20 2.3.5.1 Dopˇredn´akinematika ...... 21 2.3.5.2 Inverzn´ıkinematika ...... 22 2.3.6 ...... 24 2.3.7 M´ıch´an´ıanimac´ı ...... 25 2.4 Hern´ıengine ...... 26

3 Analyza´ a n´avrh 27

ix 3.1 Struktura projektu ...... 27 3.2 Volba softwaru ...... 27 3.2.1 V´ybˇermodelovac´ıhosoftwaru ...... 27 3.2.2 V´ybˇerhern´ıhoengine ...... 28 3.3 Uprava´ modelu ...... 30 3.3.1 Anal´yzamodelu ...... 30 3.3.2 Oddˇelen´ıˇc´ast´ımodelu ...... 30 3.3.3 Domodelov´an´ıchybˇej´ıc´ıch ˇc´ast´ı ...... 31 3.3.4 Uprava´ textur ...... 33 3.3.5 Level of Detail ...... 34 3.3.6 Kostra ...... 34 3.4 Animace a v´yvoj aplikace ...... 35 3.4.1 Import modelu ...... 35 3.4.2 Animace ...... 37 3.4.2.1 T-pose ...... 37 3.4.2.2 Neˇcinnost...... 38 3.4.2.3 Ch˚uzea bˇeh ...... 38 3.4.2.4 Zam´av´an´ı...... 38 3.4.2.5 Skok ...... 39 3.4.3 Design prostˇred´ı ...... 40 3.4.4 Pohyb a ovl´ad´an´ı...... 40 3.4.5 Inverzn´ıkinematika ...... 41 3.4.6 Kamerov´ysyst´em ...... 42

4 Implementace 43 4.1 Model a textury ...... 43 4.2 Level of Detail ...... 45 4.3 Kostra ...... 45 4.4 Animace ...... 47 4.5 Aplikace ...... 47

Z´avˇer 53

Literatura 55

A Seznam pouˇzitych´ zkratek 61

B Obsah pˇriloˇzen´eho CD 63

x Seznam obr´azk˚u

2.1 Struktura polygonu, norm´alaurˇcujeorientaci plochy [3] ...... 6 2.2 Dvˇemoˇznosti triangulace nerovinn´ehoˇctyˇr´uheln´ıku[7] ...... 7 2.3 Deformace modelu v z´avislostina topologii [11] ...... 8 2.4 Smyˇckyhran a smyˇckyploch [3] ...... 9 2.5 Decimace a retopologizace modelu [16] ...... 11 2.6 a) krokov´a;b) line´arn´ı;c) kˇrivkov´ainterpolace kl´ıˇcov´ych sn´ımk˚u[30] 14 2.7 Morph targets [4] ...... 15 2.8 Typick´avizualizace kost´ıa kloub˚u[1] ...... 17 2.9 Pˇr´ıkladkostry pro humanoidn´ıpostavu [6] ...... 18 2.10 a) Collapsing elbow efekt, b) Candy-wrapper efekt [30] ...... 20 2.11 Retˇezeckloub˚ureprezentuj´ıc´ırukuˇ humanoida [23] ...... 22 2.12 V´ıceˇreˇsen´ıpˇriv´ypoˇctuinverzn´ıkinematiky [30] ...... 23 2.13 Iteraˇcn´ıpˇribliˇzov´an´ıkoncov´ehoefektoru ke sv´emu c´ıli[6] ...... 24

3.1 Porovn´an´ınˇekolika softwar˚upro 3D grafiku [36] ...... 28 3.2 Pˇridˇelen´ymodel robota ...... 30 3.3 Proporcion´aln´ıeditov´an´ıv programu Blender ...... 33 3.4 Zjednoduˇsen´evytv´aˇren´ımasky pro humanoidn´ıpostavy v Unity [38] 39

4.1 Robot s oddˇelen´ymiˇc´astmi ...... 44 4.2 Model s domodelovan´ymiklouby ...... 44 4.3 Zapeˇcen´atextura robota ...... 45 4.4 Origin´aln´ı model (vlevo) a model se sn´ıˇzen´ymstupnˇemdetailu (vpravo) ...... 46 4.5 Kostra robota ...... 47 4.6 Sc´enaaplikace ...... 48 4.7 M´ıch´an´ıanimac´ınohou s animacemi rukou ...... 49 4.8 Aplikace inverzn´ıkinematiky (pˇr´ıklad1) ...... 50 4.9 Aplikace inverzn´ıkinematiky (pˇr´ıklad2) ...... 51 4.10 Aplikace inverzn´ıkinematiky (pˇr´ıklad3) ...... 51

xi

Seznam tabulek

4.1 Detaily vytvoˇren´ych animac´ı ...... 48 4.2 Ovl´ad´an´ıaplikace ...... 49

xiii

Uvod´

Humanoid je bytost, kter´am´avzhled pˇripom´ınaj´ıc´ıˇclovˇeka.Chod´ıpo dvou noh´ach, m´advˇeruce, trup a hlavu. Bˇeˇznˇese s nimi lze setkat v seri´alech, filmech i poˇc´ıtaˇcov´ych hr´ach, at’ uˇzve formˇerobota, elfa, trola, zlobra, nebo jin´efiktivn´ıbytosti. Animace postav kombinuje umˇeleckou tvorbu s precizn´ımstudiem pohybu ˇzivoˇcich˚ua jejich anatomie. Vyˇzadujei znalost fyziky, zejm´enamechaniky. Vy- tvoˇren´ıpˇresvˇedˇciv´eanimace nen´ıjednoduch´e. Kaˇzd´asc´enamus´ıvypr´avˇetsv˚uj vlastn´ıpˇr´ıbˇeh,kaˇzd´apostava mus´ım´ıt vlastn´ıcharakter. Jedno zdviˇzen´eoboˇc´ı m˚uˇzekompletnˇezmˇenitdojem, kter´ym´apostava vyjadˇrovat. Div´acianimo- van´ych film˚uocen´ıplynul´edetailn´ıanimace u kter´ych lze odhadnout osobnost postavy ˇcistˇez toho, jak se pohybuje. Hr´aˇcizase chtˇej´ı,aby se postavy po- hybovaly responzivnˇe.Chtˇej´ım´ıtkontrolu nad t´ım,co a kdy jejich postava dˇel´a.Pokud bojuj´ıs pˇr´ıˇserou, chtˇej´ız pohybu poznat, kdy bude ´utoˇcit.Chtˇej´ı, aby jejich postava interaktivnˇemanipulovala s hern´ımsvˇetem.Anim´atoˇrimus´ı spolupracovat s program´atory, aby naˇslimezi ovl´ad´an´ıma animac´ıkompromis. Z d˚uvodu st´alevˇetˇs´ıhorozvoje hardwarov´etechnologie maj´ıanim´atoˇrist´ale vˇetˇs´ıvolnost ve vytv´aˇren´ıtechnologi´ı a algoritm˚u,kter´epom´ahaj´ıpostavy oˇzivitve virtu´aln´ımsvˇetˇe. Tato pr´acese zamˇeˇrujena ´yproces, od pˇr´ıpravy postavy, k metod´am samotn´eanimace a vyuˇzit´ıtˇechto animac´ıv poˇc´ıtaˇcov´ych hr´ach. Pr´aceobsa- huje kapitolu o reprezentaci postav v poˇc´ıtaˇcov´egrafice, zp˚usoby jejich tvorby, ´upravy, manipulace a z´asadynutn´epro budouc´ıanimaci. V dalˇs´ıˇc´astijsou pops´any obecn´eprincipy poˇc´ıtaˇcov´eanimace. Co to je vlastnˇeanimace, jak´ymi zp˚usoby se vytv´aˇr´ı,jak se ovl´ad´a,jak se ukl´ad´a,atd. Dalˇs´ıˇc´astse jiˇzzamˇeˇruje na animaci humanoidn´ıch postav pomoc´ıkostern´ıanimace. Co je to kostra, jak se vytv´aˇr´ıa k ˇcemu slouˇz´ı.Jak se pomoc´ıkostry d´apohybovat s virtu´aln´ı postavou, jak´ejsou jej´ımoˇznostia omezen´ı.D˚urazje kladen i na principy a algoritmy pro vytv´aˇren´ıanimac´ı.Jak anim´atorovi ulehˇcitpr´acia z´aroveˇn mu nechat volnost pro kreativitu. V ˇcemanim´atorovi m˚uˇzeusnadnit pr´aci

1 Uvod´ poˇc´ıtaˇc.V posledn´ıkapitole jsou zm´ınˇena hern´ıj´adraa k ˇcemu slouˇz´ı. Vyuˇzit´ı nˇekter´ych tˇechto princip˚ubude n´aslednˇedemonstrov´anov praktick´eˇc´asti. Pr´acem˚uˇzeposlouˇzitstudent˚umi nadˇsenc˚umdo poˇc´ıtaˇcov´egrafiky jako ´uvod do problematiky humanoidn´ıch animac´ıa sezn´amitje se z´akladn´ımipo- jmy a principy, kter´ese v tomto oboru bˇeˇznˇevyuˇz´ıvaj´ı.

2 Kapitola 1

C´ılpr´ace

C´ılpr´aceje sezn´amitˇcten´aˇrese z´akladn´ımiteoretick´ymipojmy pouˇz´ıvan´ymi v poˇc´ıtaˇcov´egrafice a animaci. Prozkoumat a vysvˇetlitz´akladn´ı z´asadya techniky, kter´ese vyuˇz´ıvaj´ıpˇrivytv´aˇren´ıanimace a vz´ajemnˇeje porovnat. V praktick´eˇc´astibudou nˇekter´etyto techniky pouˇzity a demonstrov´any na modelu pˇridˇelen´emod vedouc´ıho pr´ace.V´ysledkem bude model se sa- dou vytvoˇren´ych animac´ıa jednoduch´aaplikace vytvoˇren´av hern´ımengine, kter´aumoˇzn´ıtyto animace demonstrovat. Proces zaˇcneod samotn´e´upravy pˇridˇelen´ehomodelu, kter´yje v´ysledkem fotogrammetrie. Oddˇelov´an´ıd´ılˇc´ıch ˇc´ast´ımodelu, vytv´aˇren´ıchybˇej´ıc´ıch ˇc´ast´ımodelu a n´asledn´a´uprava textur mo- delu. N´asledovat bude anal´yzatvorby kostry pro humanoidn´ımodely a n´avrh kostry pro pˇridˇelen´ymodel. Bude proveden skinning modelu ke kostˇre.D´ale bude vytvoˇreno rozhran´ıpro dopˇrednoua inverzn´ıkinematiku pro manipulaci s modelem. Pomoc´ıt´etokostry bude vytvoˇrenasada z´akladn´ıch animac´ıpo- moc´ıkl´ıˇcov´an´ı,napˇr´ıkladch˚uzea bˇeh.Model s animacemi budou exportov´any do hern´ıhoengine, kde bude vytvoˇrenajednoduch´aaplikace. V aplikaci bude moˇzn´es modelem pohybovat a na z´akladˇeuˇzivatelsk´eho vstupu animace pˇrehr´avat. D´alebude procedur´alnˇepouˇzit´ainverzn´ıkinema- tika pro interaktivn´ı´upravu animac´ı,aby postava v re´aln´emˇcasereagovala na sv´emˇen´ıc´ıse prostˇred´ı.Aplikace bude obsahovat jednoduch´emenu a prostˇred´ı vhodn´epro demonstraci jednotliv´ych animac´ı.

3

Kapitola 2

Teoretick´aˇc´ast

V prvn´ısekci t´etokapitoly jsou uvedeny zp˚usoby reprezentace a vytv´aˇren´ı 3D model˚u.Druh´asekce se zab´yv´apoˇc´ıtaˇcovou animac´ıa popisuje, jak´eexis- tuj´ıtypy animace, jak se vytv´aˇr´ıa jak se ukl´adaj´ı.Tˇret´ısekce se zamˇeˇruje na konkr´etn´ıtyp animace – kostern´ıanimace. V posledn´ısekci jsou struˇcnˇe pops´anahern´ıj´adra,jejich v´yznama vyuˇzit´ıpˇrivytv´aˇren´ıaplikac´ı.

2.1 Reprezentace model˚uve 3D

Ve 3D grafice se daj´ıobjekty reprezentovat nˇekolika zp˚usoby. Tˇrinejˇcastˇejˇs´ı reprezentace jsou dle [1] polygonov´as´ıt’, ve kter´ejsou objekty reprezentov´any jako mnoˇzinabod˚uv trojrozmˇern´emprostoru s urˇcit´ymivlastnostmi. Dalˇs´ıre- prezentac´ıjsou plochy tvoˇren´emnoˇzinoukˇrivek, coˇzm˚uˇzeb´ytvhodn´ezejm´ena pro modelov´an´ı hladk´ych povrch˚u.Tˇret´ım zp˚usobem jsou dˇelen´epovrchy (subdivision surfaces), kter´ejsou kombinac´ıpolygonov´es´ıtˇea kˇrivek. Kaˇzd´y zp˚usobm´asv´ev´yhody i nev´yhody a vol´ıse na z´akladˇepoˇzadovan´ehovyuˇzit´ı objektu. Tato pr´acese zamˇeˇrujena modely tvoˇren´emnoˇzinou bod˚u,kter´e tvoˇr´ıpolygonovou s´ıt.

2.1.1 Polygonov´as´ıt’

V t´etoreprezentaci jsou modely tvoˇreny polygonovou s´ıt´ı,kter´areprezentuje povrch modelu. Polygon (mnoho´uheln´ık)je dle [2] tvoˇrenze ˇctyˇrz´akladn´ıch komponent:

Vrchol (bod, vertex), kter´yje nejelement´arnˇejˇs´ıprvek polygonu. Je to bod v prostoru, jehoˇzpoloha je urˇcena souˇradnicemi.Vrcholy lze spojovat a t´ımvytv´aˇretsloˇzitˇejˇs´ıstruktury.

Hrana (edge) je ´useˇcka,kter´aspojuje dva vrcholy.

5 2. Teoreticka´ cˇast´

Vertex

Edge

Face

Obr´azek2.1: Struktura polygonu, norm´alaurˇcujeorientaci plochy [3]

Plocha (face) vyplˇnujeprostor mezi mnoˇzinouvrchol˚u,kter´ejsou spojeny hranou. Nejjednoduˇsˇs´ıplocha je tedy tvoˇrenamnoˇzinoutˇr´ıvrchol˚u,kter´e dohromady tvoˇr´ıv prostoru troj´uheln´ık.

Norm´ala (normal) je pˇr´ımka,kter´aje kolm´ana plochu (nebo v rovinˇena hranu). Smˇernorm´alyse naz´yv´anorm´alov´yvektor a v grafice se pouˇz´ıv´a napˇr´ıkladpro urˇcen´ıorientace plochy (to je d˚uleˇzit´enapˇr´ıkladproto, ˇze nˇekter´esoftwary zadn´ıstranu ploch v˚ubec nevykresluj´ı).

Polygon obecnˇem˚uˇzem´ıtlibovoln´ypoˇcethran. Mnoˇziny polygon˚u,kter´e sd´ılej´ıvrcholy a hrany tvoˇr´ıpolygonovou s´ıt’. Polygonu se ˇctyˇrmihranami se ˇr´ık´a quad (quadrilaterals). Polygonu, kter´ym´av´ıceneˇz4 hrany se ˇr´ık´a n-gon. Polygon se ˇctyˇrmia v´ıcehranami nemus´ıb´ytnutnˇerovinn´y,ˇcilivˇsechny jeho vrcholy nemus´ıleˇzetv jedn´erovinˇe.Z´aroveˇnm˚uˇzeb´ytkonvexn´ı,ale i konk´avn´ı (jeho vnitˇrn´ı´uhlymohou b´ytvˇetˇs´ıneˇz180 stupˇn˚u).[4] Dle [6] je kv˚ulisv´ymvlastnostem jako z´akladn´ıstavebn´ıprvek vˇetˇsinou vyuˇz´ıv´antroj´uheln´ık.Pro jak´ykoliv troj´uheln´ıktotiˇzplat´ı,ˇzeje konvexn´ıa z´aroveˇnrovinn´y.To vede k tomu, ˇzelze nad troj´uheln´ıkyprov´adˇetmnoho opti- malizovan´ych v´ypoˇct˚u,napˇr´ıkladv´ypoˇcetpr˚useˇc´ıkupaprsku s troj´uheln´ıkem. D´aleje jejich vykreslov´an´ıpodporov´anografick´ymiprocesory (GPU), kter´e jsou specializovan´ena paraleln´ıv´ypoˇcty. GPU efektivnˇezvl´ad´amnoho operac´ı pˇrivykreslov´an´ı,jako poˇc´ıt´an´ıs ˇc´ıslys pohyblivou ˇradovou ˇc´arkou, interpo- lace, maticov´eoperace, sledov´an´ıpaprsku (ray tracing), atd. Proto se dle [5] bˇeˇznˇev grafick´emhardwaru vˇsechny komplexnˇejˇs´ıtvary nejdˇr´ıve pˇrevedou na troj´uheln´ıky, neˇzjsou posl´any na rasterizaci. Jak´ykoliv polygon se d´adekomponovat na mnoˇzinu troj´uheln´ık˚u,napˇr´ıkladpˇrid´an´ım ´uhlopˇr´ıˇcek.Tomuto procesu se ˇr´ık´atriangulace. Zp˚usob˚uproveden´ıtriangu- lace je v´ıce,s rozd´ıln´ymiv´ysledky, viz obr´azek2.2. T´ımp´ademnˇekdym˚uˇze b´ytvhodn´eprov´esttriangulaci manu´alnˇe.[2]

6 2.1. Reprezentace model˚uve 3D

Obr´azek2.2: Dvˇemoˇznostitriangulace nerovinn´ehoˇctyˇr´uheln´ıku[7]

Datovou strukturu, kter´apopisuje 3D model, lze dle [6] rozdˇelitna ge- ometrickou a topologickou ˇc´ast.Geometrick´aˇc´astobsahuje souˇradnicejed- notliv´ych vrchol˚u.Topologick´aˇc´asturˇcujejejich vztah, napˇr´ıkladkter´evr- choly tvoˇr´ıtroj´uheln´ık,pˇr´ıpadnˇehrany, nebo kter´evrcholy jsou samostatn´e body. V ide´aln´ımpˇr´ıpadˇeje vhodn´edata uspoˇr´adattak, aby kaˇzd´yvrchol byl zpracov´anpr´avˇejednou, napˇr´ıkladt´ım,ˇze se troj´uheln´ıkyuspoˇr´adaj´ıdo tak- zvan´ehopruhu troj´uheln´ık˚u(triangle strip) nebo vˇej´ıˇretroj´uheln´ık˚u(triangle fan).

2.1.2 Topologie

Dalˇs´ımd˚uleˇzit´ympojmem je topologie. Obecnˇem´atento pojem v´ıcev´yznam˚u, avˇsakve 3D poˇc´ıtaˇcov´egrafice popisuje rozloˇzen´ıpolygon˚u,tedy jejich struk- turu a distribuci na 3D modelu. Topologie ovlivˇnujezejm´enato, jak snadno lze model upravovat a pˇrid´avat dalˇs´ıgeometrii, jak snadno se daj´ınamapovat textury a jak se model deformuje pˇrianimaci. [8] C´ılemspr´avn´etopologie je, aby mˇelmodel dostateˇcn´edetaily a pˇritomna dosaˇzen´ıtˇechto detail˚ubylo pouˇzitoco nejm´enˇepolygon˚u. Z´aroveˇnv m´ıstech, kde se bude ˇc´astmodelu pohybovat a oh´ybat,je vhodn´em´ıtv´ıcepolygon˚u, aby se neprojevovaly deformace. Takov´am´ıstajsou typicky v kloubech a na obliˇcejimodelu. [9] Obecnˇeje dle [2] a [10] v modelovac´ıf´azivhodn´e,aby se model skl´adal ze ˇctyˇr´uheln´ık˚u(quadrilaterals/quads), uspoˇr´adan´ych do podobnˇevelk´ych a co nejv´ıce ˇctvercov´ych ploch. Troj´uheln´ıky lze vyuˇz´ıvat pro spojen´ı tvar˚u v m´ıstech, kter´ejsou skryt´enebo kde se model pˇri animaci pˇr´ıliˇsnedeformuje. D˚uvodem tohoto omezen´ıje fakt, ˇzetroj´uheln´ıky(a n-gony) se pˇrianimaci de- formuj´ınepˇredv´ıdatelnˇea mohou vytv´aˇret ostr´ehrany, boule a jin´eartefakty. Na deformaci je tˇrebasi d´avat pozor i kv˚ulitextur´am,kter´ese pˇrideformaci mohou natahovat ˇci smrˇst’ovat. Dalˇs´ımd˚uvodem je, ˇzevˇetˇsinamodelovac´ıch program˚um´an´astroje, kter´e podporuj´ıpr´acipˇredevˇs´ımse ˇctyˇr´uheln´ıky, a proto je snazˇs´ıa rychlejˇs´ıupravo-

7 2. Teoreticka´ cˇast´

Obr´azek2.3: Deformace modelu v z´avislostina topologii [11] vat model se spr´avnoutopologi´ı.D˚uleˇzit´yje zejm´enaspr´avn´ytok hranov´ych smyˇcek(edge loop flow). Hranov´asmyˇcka(edge loop) je souvisl´alinie hran, kter´ana modelu tvoˇr´ısmyˇckua napojuje se zpˇetna sebe. Um´ıstˇen´ıtˇechto smyˇcek je d˚uleˇzit´e, protoˇzeˇc´ım l´epe jsou um´ıstˇeny, t´ım m´enˇe vrchol˚uje potˇrebapro vyj´adˇren´ıpoˇzadovan´ehotvaru. Z´aroveˇnurˇcuj´ı,jak se model bude pˇrianimaci deformovat, viz obr´azek2.3. Z toho d˚uvodu je u organick´ych mo- del˚ud˚uleˇzit´ajejich anatomie. Tok smyˇcekby mˇelrespektovat um´ıstˇen´ıa smˇer jednotliv´ych sval˚u.To zajist´ı,ˇzepˇri animaci se model deformuje pˇrirozenˇe. Dobr´ypˇr´ıkladje lidsk´y´usmˇev.Pˇri´usmˇevuse rohy ´ustvyt´ahnou,tv´aˇrevyboul´ı a oˇcizvr´asn´ı[1]. Na obr´azku2.4 lze vidˇet,ˇzedruh´ya ˇctvrt´ymodel neobsahuj´ı uzavˇren´esmyˇcky, jelikoˇznejde implicitnˇeurˇcit,jak´ymsmˇeremm´asmyˇcka pokraˇcovat. Pˇrevod existuj´ıc´ıhomodelu do spr´avn´etopologie se naz´yv´areto- pologizace.

2.1.3 Level of Detail Pˇri modelov´an´ı je velice d˚uleˇzit´ycelkov´ypoˇcet polygon˚u. C´ımˇ v´ıce poly- gon˚u,t´ımmohou b´ytna modelu zaznamen´any jemnˇejˇs´ıdetaily, ale z´aroveˇn pro vykreslov´an´ıa souvisej´ıc´ıv´ypoˇcty takov´ehomodelu bude zapotˇreb´ıvyˇsˇs´ı v´ypoˇcetn´ıs´ılya model bude zab´ıratv´ıcepamˇeti.Pokud jsou modely urˇceny

8 2.1. Reprezentace model˚uve 3D

Obr´azek2.4: Smyˇckyhran a smyˇckyploch [3] pro vyuˇzit´ınapˇr´ıkladv poˇc´ıtaˇcov´ych hr´ach, bude existovat horn´ıhranice cel- kov´ehopoˇctupolygon˚uvykreslovan´ych objekt˚uve sc´enˇe,aby bylo moˇzn´emo- dely v re´aln´emˇcasevykreslovat. [1] Pro zjednoduˇsov´an´ısc´eny se pouˇz´ıv´apojem Level of Detail (LoD), coˇzlze pˇreloˇzitjako ´uroveˇnˇcistupeˇndetailu. S nejvyˇsˇs´ım LoD m´amodel nejjemnˇejˇs´ı detaily. S niˇzˇs´ım LoD se postupnˇedetaily ztr´acej´ıa s nejniˇzˇs´ım LoD m´amodel co nejjednoduˇsˇs´ıreprezentaci, kter´aje pˇrijateln´av kontextu vyuˇzit´ımodelu. [6] Detailn´ımodely s hustou polygonovou s´ıt´ıse naz´yvaj´ı high poly (high polygon), naopak modely s ˇr´ıdkou polygonovou s´ıt´ıse naz´yvaj´ı low poly. Jako pˇr´ıkladuveden´yv [12] je model kancel´aˇrsk´ebudovy s miliony po- lygon˚u,kter´am´avymodelovan´yinteri´eri exteri´er.Interaktivn´ıvykreslov´an´ı ulice pln´etakov´ych budov by pˇrisouˇcasn´ev´ykonnosti procesor˚unebylo moˇzn´e. Proto je pˇrimˇen´ıc´ıch se podm´ınk´ach vykreslovan´esc´eny vhodn´emˇeniti LoD model˚uve sc´enˇe.Tyto podm´ınkymohou b´ytdle [6] napˇr´ıkladvzd´alenostvy- kreslovan´ehomodelu od kamery, poˇcetpixel˚u,kter´evykreslen´ymodel na obra- zovce zab´ır´a,celkov´ypoˇcetpolygon˚uvykreslen´ych na obrazovce, nebo rychlost pohybu modelu. Pˇr´ıstupimplementace LoD se dle [6] rozdˇeluje na spojit´y LoD (CLoD – Continuous LoD) a diskr´etn´ı LoD (DLoD – Discrete LoD). U CLoD doch´az´ıke zmˇenˇemodelu v mal´ych kroc´ıch, napˇr´ıkladpˇrid´av´an´ım a odeb´ır´an´ımjednotliv´ych vrchol˚unebo troj´uheln´ık˚u.Proces zjednoduˇsov´an´ı model˚use naz´yv´adecimace. Tento pˇr´ıstupje vhodn´eprov´estv pˇredzpracov´an´ı, aby se n´aroˇcn´ev´ypoˇcty nemusely prov´adˇetaˇzpˇrivykreslov´an´ı.Pro uloˇzen´ı modelu se vyuˇz´ıvaj´ısloˇzitˇejˇs´ıa objemnˇejˇs´ıdatov´estruktury, napˇr´ıkladstro- mov´estruktury troj´uheln´ık˚u,aby bylo moˇzn´eefektivnˇevyhled´avat troj´uheln´ıky potˇrebn´epro zadan´y LoD. Jednoduˇsˇs´ı pˇr´ıstup je DLoD, pˇrikter´emse vytv´aˇr´ı nˇekolik separ´atn´ıch model˚ustejn´ehoobjektu s r˚uzn´ymmnoˇzstv´ımdetail˚u.Vytvoˇrittyto modely lze opˇetpomoc´ıdecimaˇcn´ıch algoritm˚umodelu se vˇsemidetaily, avˇsaknˇekdy je lepˇs´ıvytvoˇritjednotliv´emodely ruˇcnˇe,ˇc´ımˇzsi s´ammodel´aˇrm˚uˇzeurˇcit, jak´edetaily jsou v´ıceˇcim´enˇed˚uleˇzit´e.Z´aroveˇnm´akontrolu nad v´yslednou

9 2. Teoreticka´ cˇast´ topologi´ızjednoduˇsen´ehomodelu. Zejm´enau DLoD se m˚uˇzeprojevit efekt zvan´y popping, kter´yje zp˚usoben´y skokovou zmˇenougeometrie modelu ve chv´ıli, kdy se objektu zmˇen´ı LoD. Tento efekt lze zm´ırnit vykreslen´ım objektu dvakr´at,jednou se souˇcasn´ym LoD a jednou s nov´ym LoD a mezi tˇemitosn´ımkypˇreskr´atkou pˇrechodnou dobu interpolovat pˇresalfa kan´al.Druhou moˇznost´ıje takzvan´ygeomorfing (geomorphing), kter´yprov´ad´ıinterpolaci mezi modely na ´urovni jednotliv´ych vrchol˚u.[13] Vzd´alen´eobjekty mohou b´yttak´eaproximov´any texturou, namapovanou na jednoduch´y,ploch´ypolygon. Tˇemto objekt˚umse ˇr´ık´a billboard a mo- hou b´ytpouˇzity jako nejniˇzˇs´ı LoD objektu. Jsou zejm´enavhodn´ena vyuˇzit´ı u rotaˇcnˇesymetrick´ych objekt˚u,jako napˇr´ıklad st´eblatr´avynebo skupiny list˚una stromˇe.Obvykle se tyto polygony nat´aˇc´ıtak, aby vˇzdybyly plochou kolmo ke kameˇre[12]. Dalˇs´ıvariantou je takzvan´y sprite. Rozd´ılje v tom, ˇze sprite je tvoˇrenz nˇekolika navz´ajemprot´ınaj´ıc´ıch, r˚uznˇeotoˇcen´ych polygon˚u. Na kaˇzd´empolygonu je textura objektu z odpov´ıdaj´ıc´ıhopohledu. Z´aroveˇnse tyto objekty neot´aˇcej´ısmˇeremke kameˇre.[6]

2.1.4 Sculpting

Polygonov´emodelov´an´ıd´av´aabsolutn´ıkontrolu nad vytv´aˇren´ymmodelem, protoˇzeumoˇzˇnujemanipulaci s kaˇzd´ymsamostatn´ymvrcholem. Nev´yhodou je, ˇzetakov´emodelov´an´ım˚uˇzeb´ytzdlouhav´ea pracn´e, zvl´aˇst’, pokud je model velik´ya sloˇzit´y. Sculpting umoˇzˇnujedle [14] simulovat sochaˇrstv´ız hl´ıny. M´ıstopln´ekon- troly nad jednotliv´ymivrcholy nab´ız´ırychl´ya intuitivn´ızp˚usobmodelov´an´ı. Umoˇzˇnujeupravovat, pˇrid´avat a odeb´ıratvrcholy, jako kdyby to byla kera- mick´ahl´ına.Model´aˇrm˚uˇzevyuˇz´ıvat operace jako tah´an´ı,tlaˇcen´ı,vyhlazov´an´ı hmoty, apod. Tyto operace se aplikuj´ına skupiny vrchol˚uv oblasti z´ajmu (area of in- terest). Ta m´avˇetˇsinousf´erick´ytvar a model´aˇrsi m˚uˇzenastavovat pr˚umˇer. D˚uleˇzit´avlastnost je tvrdost/s´ılan´astroje, pomoc´ıkter´ese urˇcuje,jak moc jsou vrcholy v oblasti z´ajmu ovlivnˇeny. C´ımˇ niˇzˇs´ı tvrdost, t´ım m´enˇejsou ovlivnˇeny vrcholy se zvˇetˇsuj´ıc´ıse vzd´alenost´ıod stˇreduoblasti z´ajmu. Sculpting se nejv´ıcevyuˇz´ıv´ana modelov´an´ıorganick´ych povrch˚ujako jsou postavy nebo obleˇcen´ı. Nev´yhodou je dle [15] to, ˇzemodely vytvoˇren´et´ımto zp˚usobem nejsou vhodn´epro animaci, kv˚ulivysok´emu poˇctupolygon˚u.Z toho d˚uvodu se prov´ad´ı takzvan´adecimace, kterou se pˇrev´ad´ıkomplexn´ımodel na jednoduˇsˇs´ıa sniˇzuje poˇcetpolygon˚u.Pˇr´ıkladdecimace modelu, spojenou s retopologizac´ılze vidˇet na obr´azku2.5.

10 2.1. Reprezentace model˚uve 3D

2.1.5 Fotogrammetrie

Fotogrammetrie je vˇeda,kter´ase zab´yv´aextrakc´ımˇeˇren´ız dvojrozmˇern´ych obr´azk˚u,typicky fotografi´ı.V´ystupfotogrammetrie je typicky mapa, n´akres, v´ysledekmˇeˇren´ınebo 3D model nˇejak´ehore´aln´ehoobjektu ˇcisc´eny. [17] Pomoc´ıfotogrammetrick´ych metod lze z fotografi´ıbudovy napˇr´ıkladzmˇeˇrit jej´ıv´yˇsku, d´elkunebo jin´epˇresn´erozmˇery. Na to se vyuˇz´ıv´aspeci´aln´ıfoto- grammetrick´ametoda, stereofotogrammetrie. Ta je zaloˇzen´ana principu ste- reoskopick´ehovidˇen´ı.Spoˇc´ıv´av odhadu 3D souˇradnicbod˚uobjektu pomoc´ı mˇeˇren´ıproveden´ych na dvou a v´ıcefotografi´ıch objektu z r˚uzn´ych pozic. Na stejn´emprincipu funguje i lidsk´yzrak. Z lev´ehoa prav´ehooka z´ısk´amozek dva m´ırnˇeodliˇsn´eobrazy ze dvou r˚uzn´ych pozic a z tˇechto informac´ıje schopen odhadnout vzd´alenostmezi n´amia ostatn´ımiobjekty. [18] V praxi se dle [19] fotogrammetrie ˇcastoporovn´av´as metodou laserov´eho skenov´an´ı. Jedno skenov´an´ıdok´aˇzebˇehemkr´atk´ehoˇcasu vyprodukovat velk´e mnoˇzstv´ı dat, kter´emu se ˇr´ık´amraˇcnobod˚u(point clouds), ze kter´ych lze vytv´aˇretvelmi pˇresn´ea detailn´ı3D modely. Na druhou stranu kvalitn´ıske- nery jsou obvykle velmi drah´ea vyˇzaduj´ı speci´aln´ı software na zpracov´an´ı v´ysledn´ych dat. Fotogrammetrie je typicky levnˇejˇs´ıa flexibilnˇejˇs´ımetodou, vzhledem k tomu, ˇzek n´ılze vyuˇz´ıti ˇradov´e,levnˇejˇs´ıfotoapar´aty. Kromˇegeo- metrick´ych dat se d´az´aroveˇnz´ıskati textury. Na vytvoˇren´ımodelu je moˇzn´e vyuˇz´ıtsatelitn´ıfotografie, fotografie poˇr´ızen´edrony nebo tˇrebapodvodn´ıfo- tografie. Nav´ıc lze dle [18] fotogrammetrii pouˇz´ıt i na rychle pohybuj´ıc´ı se objekty, coˇzu laserov´ehoskenov´an´ınelze. Na druhou stranu popisuje [20] i ˇraduomezen´ıa probl´em˚u,kv˚ulikter´ym m˚uˇzeb´ytv´ysledn´ymodel necel´ynebo zcela nepouˇziteln´y.Jedn´ımz probl´em˚u je okluze, kde jin´yobjekt zakr´yv´asn´ıman´yobjekt. Komplexnˇejˇs´ıobjekty mo- hou z´aroveˇnzakr´yvat samy sebe. To se d´aˇreˇsit poˇr´ızen´ım v´ıce fotografi´ı s vˇetˇs´ım vz´ajemn´ympˇrekryvem v tˇechto m´ıstech. Dalˇs´ı probl´em zp˚usobuj´ı objekty s nev´yraznoutexturou, napˇr´ıkladpr´azdn´arovn´astˇena,jelikoˇzalgo- ritmy pracuj´ız´akladˇeextrakce pˇr´ıznak˚u.D´alejsou problematick´epr˚uhledn´e,

Obr´azek2.5: Decimace a retopologizace modelu [16]

11 2. Teoreticka´ cˇast´ leskl´ea odraziv´eobjekty. Pro dobr´ev´ysledkyje d˚uleˇzit´ei osvˇetlen´ı.Blesk a siln´asmˇerov´asvˇetlavytv´aˇr´ıpro kaˇzdoufotografii neˇz´adouc´ıunik´atn´ıodrazy. Nejvhodnˇejˇs´ısvˇeteln´epodm´ınkytvoˇr´ısvˇetloambientn´ı,tedy vˇsudypˇr´ıtomn´e a vˇsesmˇerov´e. V z´avislostina kvalitˇea poˇctufotografi´ıje typicky v´ysledkem model s vy- sok´ympoˇctempolygon˚u.Proto stejnˇejako u sculptingu m˚uˇzeb´ytvhodn´epˇred dalˇs´ımvyuˇzit´ımmodelu prov´estdecimaci.

2.1.6 Zap´ek´an´ıtextur

Dle [21] je zap´ek´an´ıtextur (texture baking) proces ukl´ad´an´ıspecifick´ych in- formac´ıdo textury. Ukl´adan´adata mohou b´ytnapˇr´ıkladinformace o barvˇe, osvˇetlen´ı,odrazech, norm´al´ach, st´ınech, apod. To je v´yznamn´e,protoˇzepˇri vykreslov´an´ısc´eny se zapeˇcen´ymitexturami nemus´ıtato data b´ytpoˇc´ıt´any opakovanˇena kaˇzd´emsn´ımku. Nev´yhodou je, ˇzezapeˇcen´atextura je statick´a.Napˇr´ıkladzapeˇcen´ıst´ınu objektu vede k tomu, ˇzese s t´ımto objektem nesm´ıve sc´enˇeh´ybat,jelikoˇz pohyb objektu by nezp˚usobilpohyb jeho st´ınu. Zap´ek´an´ı nach´az´ı vyuˇzit´ı ve vytv´aˇren´ı model˚us niˇzˇs´ımi stupni detail˚u, viz sekce 2.1.3. Detailn´ıinformace lze na zjednoduˇsen´ymodel pˇren´estpomoc´ı difuzn´ıch, norm´alov´ych a dalˇs´ıch textur. Pomoc´ıtˇechto metod lze m´ıtve sc´enˇe velmi detailnˇep˚usob´ıc´ımodely, pˇrestoˇzejsou sloˇzeny z relativnˇemal´ehopoˇctu polygon˚u.

2.2 Poˇc´ıtaˇcov´aanimace

Slovo animace se d´apˇreloˇzitjako oˇzivov´an´ı/oˇziven´ı.Prakticky se jedn´ao spe- cifikaci (pˇr´ımouˇcinepˇr´ımou),jak se objekty pohybuj´ıv ˇcasea prostoru. Stejn´y v´yznamm´ai v poˇc´ıtaˇcov´egrafice. Z´akladn´ımyˇslenkalp´ıv sekvenˇcn´ımzob- razov´an´ıpo sobˇejdouc´ıch obr´azk˚u(frame) tak rychle, ˇzeje lidsk´eoko vn´ım´a jako plynul´ypohyb. Plynulost animace z´aleˇz´ıˇc´asteˇcnˇena tom, kolik sn´ımk˚uzaˇr´ızen´ızobrazuje za jednotku ˇcasu.To urˇcujetakzvan´asn´ımkov´afrekvence (frame rate), kter´a je obvykle ud´avan´av jednotk´ach sn´ımk˚uza vteˇrinu (frames per second – fps). Toto ˇc´ıslose liˇs´ıv z´avislostina oblasti vyuˇzit´ıanimac´ı.Televizn´ıform´aty PAL napˇr´ıkladpouˇz´ıvaj´ıstandardnˇe25 fps, NTCS form´aty 29,97 fps. Filmy maj´ı skoro v´yhradnˇe24 fps a poˇc´ıtaˇcov´ehry mohou m´ıti stovky fps. [22] Svˇetpoˇc´ıtaˇcov´eanimace se d´arozdˇelit do dvou hlavn´ıch kategori´ı,a to do 2D animace (dvourozmˇern´a)a 3D animace (trojrozmˇern´a).Tato pr´aceje zamˇeˇrenapouze na techniky 3D animace. Vytv´aˇretanimace lze napˇr´ıkladpomoc´ıkl´ıˇcov´ych sn´ımk˚u(keyframe), kter´e vytv´aˇr´ıanim´atora software mezi nimi prov´ad´ıinterpolaci. Dalˇs´ızp˚usobje sn´ım´an´ıpohybu (motion capture), pˇrikter´emse nahr´av´apohyb skuteˇcn´eho

12 2.2. Poˇc´ıtaˇcov´aanimace objektu a pˇrev´ad´ı na pohyb virtu´aln´ıch 3D objekt˚u.Animovat se d´ai po- moc´ıprocedur´aln´ıch metod, pˇrikter´ych program´atorstanov´ıˇradupodm´ınek a parametr˚u,na z´akladˇekter´ych se objekt pohybuje a mˇen´ı.[22] 3D poˇc´ıtaˇcovou animaci [23] rozdˇelujena n´ızko´urovˇnovou (low level) a vysoko´urovˇnovou (high level). Toto rozdˇelen´ıpoukazuje na v´ypoˇcetn´ırozd´ıly mezi zp˚usoby vytv´aˇren´ıanimace. V n´ızko´urovˇnov´eanimaci m´aanim´atorvelmi precizn´ıkontrolu nad vytv´aˇren´ympohybem. Do t´etokategorie spad´azejm´ena pohyb objekt˚upo urˇcit´edr´aze,jeho rychlost, smˇer,apod. D´aledo n´ıpatˇr´ı jiˇzzm´ınˇen´ypohyb na z´akladˇekl´ıˇcov´ych sn´ımk˚u.Vysoko´urovˇnov´aanimace si- muluje pohyb na z´akladˇemnoˇziny pravidel, omezen´ıa poˇc´ateˇcn´ıch podm´ınek, kter´eurˇcuj´ıco se m´ast´at,nam´ıstotoho, jak se to m´ast´at.Pomoc´ıtˇechto metod se d´anapˇr´ıklad nastavit, aby postava sledovala pohybuj´ıc´ıse c´ıl.Tyto operace lze dekomponovat na kolekce n´ızko´urovˇnov´ych operac´ı.

2.2.1 Keyframing Jedn´ımz nejvyuˇz´ıvanˇejˇs´ıch zp˚usob˚utvorby animac´ıje kl´ıˇcov´an´ı(keyframing). Z´akladn´ımprvkem tohoto druhu animac´ıje kl´ıˇcov´ysn´ımek(keyframe). Ten vyjadˇrujekonkr´etn´ıinformace o objektu v konkr´etn´ımsn´ımku.Do toho m˚uˇze spadat jak poloha a p´ozaobjektu, tak napˇr´ıklad jeho barva, pr˚uhlednost, textura, atd. Jak napov´ıd´an´azev,tyto sn´ımky by mˇelyobsahovat kl´ıˇcov´e polohy v animaci, napˇr´ıkladpoˇc´ateˇcn´ıa koncov´epozice pohybu. Pˇrianimaci p´alkaˇreodpaluj´ıc´ıhom´ıˇcekby kl´ıˇcov´esn´ımkybyly napˇr´ıkladv n´apˇrahu, pˇri stˇretnut´ıp´alkys m´ıˇckem a v koncov´epozici po odpalu. Mezisn´ımkyvytvoˇr´ı software automaticky procesem zvan´ym tweening nebo in-betweening, kter´y ve 3D grafice sn´ımkydopoˇc´ıt´apomoc´ıinterpolace. [24] V animaci nen´ıvhodn´evˇzdyvyuˇz´ıvat line´arn´ıinterpolaci (obr. 2.6b), je- likoˇzje nespojit´av prvn´ıderivaci. To znamen´a,ˇzev bodech napojen´ıdvou seg- ment˚usi jejich teˇcn´evektory nejsou rovny, coˇzp˚usob´ıskokov´ezmˇeny v rych- losti. Vizu´alnˇeto vede k tomu, ˇze se pohyb zd´atrhan´ynebo nerealistick´y, protoˇzeobjekty v re´aln´emsvˇetˇese typicky nepohybuj´ıline´arnˇe.Napˇr´ıkladpa- daj´ıc´ıobjekt z v´yˇskypostupnˇezrychluje. Nˇekdym˚uˇzeb´ytˇz´adouc´ıi skokov´a zmˇena(obr. 2.6a), napˇr´ıkladpro probliknut´ıˇz´arovky. Nejˇcastˇejise vyuˇz´ıvaj´ı interpolaˇcn´ıkˇrivky(obr. 2.6c), kter´em˚uˇzeanim´atorovl´adata mˇenitpomoc´ı ˇr´ıd´ıc´ıch bod˚u.Animaˇcn´ıprogramy typicky maj´ıpro tyto ´uˇcelygrafov´eedi- tory. [23] Moˇznostpˇrid´avat a volnˇeupravovat kl´ıˇcov´esn´ımkyd´av´aanim´atorovi vel- kou volnost k vyj´adˇren´ıc´ılov´ehopohybu. Z´aroveˇnse t´ımzvyˇsuj´ın´arokyna dovednosti anim´atora,aby tyto pohyby vyj´adˇrilpˇrirozenˇe.[24] Nejv´ıcepˇr´ımoˇcar´yzp˚usobjak reprezentovat animaci objekt˚uje specifikovat separ´atn´ımodel na kaˇzd´emkl´ıˇcov´emsn´ımkua animovat na b´azisamostatn´ych vrchol˚u.Tomu se ˇr´ık´aanimace vrchol˚u(vertex animation). Pro reprezentaci objekt˚use sloˇzitˇejˇs´ı,pohyblivou strukturou a jejich animaci se ˇcastˇejivyuˇz´ıv´a kloubov´asoustava (articulated structure), popsan´av sekci 2.3.1.

13 2. Teoreticka´ cˇast´

Obr´azek2.6: a) krokov´a;b) line´arn´ı;c) kˇrivkov´ainterpolace kl´ıˇcov´ych sn´ımk˚u [30]

2.2.1.1 Vertex animation

Tento zp˚usobanimace pˇrin´aˇs´ınejvyˇsˇs´ıstupeˇnvolnosti pro anim´atora.Topo- logie model˚use typicky pˇribˇehu animace nemˇen´ı,tedy se nemˇen´ıpoˇcetvr- chol˚uani jejich vz´ajemn´eseskupen´ıdo hran a ploch. Animace spoˇc´ıv´av tom, ˇzese ukl´ad´ainformace o zmˇenˇepozice kaˇzd´ehojednotliv´ehovrcholu modelu v kaˇzd´emkl´ıˇcov´emsn´ımku.To vede k tomu, ˇzelze vytvoˇritjak´akoli deformace modelu. [25] Nev´yhodou je dle [12] to, ˇzetakov´emodely jsou velmi sloˇzitˇekontrolo- vateln´ea vytv´aˇren´ı kl´ıˇcov´ych sn´ımk˚uje pracn´ea ˇcasovˇen´aroˇcn´e.Druhou nev´yhodou je datov´aa v´ypoˇcetn´ın´aroˇcnost.Animaˇcn´ıdata mus´ıobsahovat informace o poloze kaˇzd´ehovrcholu v kaˇzd´emkl´ıˇcov´emsn´ımku a mus´ı se prov´adˇetline´arn´ıpoˇcetinterpolaˇcn´ıch operac´ıv z´avislostina poˇctuvrchol˚u modelu. Jako dalˇs´ıprobl´em[12] uv´ad´ı,ˇzeneexistuj´ıomezen´ıpro uchov´an´ıobjemu nebo povrchu ˇc´astimodelu, coˇzm˚uˇzev´estk oˇskliv´ymdeformac´ımmodelu, napˇr´ıkladpˇriotoˇcen´ıobjektu o 180° dojde v polovinˇeinterpolace ke zplacatˇen´ı (vˇsechny vrcholy jsou na p˚ulcesty“). ”

2.2.1.2 Morph target animation

Dalˇs´ımdruhem animac´ıje tzv. morph target animation (nˇekdytak´enaz´yvan´a morph targets). Jedn´ase o variaci techniky animace vrchol˚u.Anim´atorvytvoˇr´ı kolekci poloh a animace je tvoˇrenam´ıch´an´ımdvou a v´ıcetˇechto poloh za bˇehu,

14 2.2. Poˇc´ıtaˇcov´aanimace

Obr´azek2.7: Morph targets [4] viz obr´azek2.7. Pro v´ypoˇcetpoloh jednotliv´ych vrchol˚una dan´emsn´ımkuse vyuˇz´ıv´aline´arn´ıinterpolace. [26] Tato metoda nach´az´ıvyuˇzit´ıu mˇekk´ych ˇciohebn´ych objekt˚u,napˇr´ıklad k˚uˇzenebo tkanina. Typick´ymvyuˇzit´ımje animace obliˇceje,protoˇzeumoˇzˇnuje vytv´aˇretdetailn´ıv´yrazypro vyj´adˇren´ıemoc´ıpostavy. Polohy mohou repre- zentovat napˇr´ıklad´usmˇev,zavˇren´eoko, zdviˇzen´eoboˇc´ı,apod.

2.2.2 Procedur´aln´ıanimace

Tradiˇcn´ıanimace ˇr´ızen´akl´ıˇcov´ymisn´ımkyumoˇzˇnujeanim´atorovi vyj´adˇritli- bovoln´epohyby. Avˇsaknˇekter´eanimace jsou pˇr´ıliˇssloˇzit´ena ruˇcn´ıanimov´an´ı. Do toho spadaj´ıˇc´asticov´esyst´emy napˇr´ıkladna animaci mrak˚u,vody, ohnˇe, kouˇrenebo tˇrebavlas˚uˇcisrsti. Tak´etam patˇr´ıanimace flexibiln´ıch objekt˚u, jako je obleˇcen´ı,nebo dynamiky tuh´ych tˇeles,kter´eberou v potaz parame- try jako hmotnost, orientace, toˇciv´emomenty, line´arn´ı a ´uhlov´erychlosti, apod. [27] Takov´eanimace m˚uˇzeb´ytvelice obt´ıˇzn´evyj´adˇritpomoc´ıkl´ıˇcov´ych sn´ımk˚u. Daleko l´epe se daj´ı sestavit algoritmy, kter´e pohyb ˇr´ıd´ı pomoc´ı matema- tick´ych model˚u.To umoˇzˇnujevytv´aˇretnapˇr´ıkladfyzik´alnˇezaloˇzen´esimulace, kter´evyuˇz´ıvaj´ıfyzik´aln´ız´akony pro simulaci pohybu. Takov´aanimace p˚usob´ı pˇrirozenˇe,protoˇzevelmi dobˇrenapodobuje chov´an´ıobjekt˚uv re´aln´emsvˇetˇe. Nav´ıcsi anim´atorm˚uˇzetyto z´akony libovolnˇeupravovat pro dosaˇzen´ıspeci- fick´ych v´ysledk˚u.Nev´yhodou je, ˇzepro vytvoˇren´ıtakov´ych algoritm˚uje za- potˇreb´ıhlubok´ehopochopen´ıvyuˇzit´ych model˚u,typicky matematiky, fyziky, stroj´ırenstv´ı,atd. [24] Velice ˇsirok´evyuˇzit´ım´aprocedur´aln´ıanimace i pˇrianimaci postav ve vi- deohr´ach. Postava m˚uˇzereagovat na svoje okol´ıa akce v jej´ımokol´ı.Napˇr´ıklad m˚uˇzedynamicky balancovat na ´uzk´eploˇsinˇenebo l´ezt po stˇenˇe.Zmˇenou vstupn´ıch parametr˚use daj´ıanimace snadno modifikovat. Je nesmysln´e,aby postava mˇelades´ıtky animac´ı ch˚uzev z´avislostina ´uhlunahnut´ı podlahy.

15 2. Teoreticka´ cˇast´

Pˇrich˚uzise m˚uˇzepostava procedur´alnˇepˇrizp˚usobitnerovn´emu povrchu, pˇri ˇsvihnut´ımeˇcem lze zamˇeˇritc´ılve variabiln´ıv´yˇsce.Listy na stromˇese mohou tˇr´astv z´avislostina nastaviteln´erychlosti a smˇeruvˇetru. Aˇckoliv lze pomoc´ı procedur´aln´ıch metod vyvinout pohyb bez pouˇzit´ı kl´ıˇcov´ych sn´ımk˚u,takto vyvinut´eanimace postr´adaj´ı ´uˇcinnoukontrolu nad stylem a osobnost´ı dan´epostavy. Proto se dle [28] ˇcastou hern´ıch postav vyuˇz´ıvaj´ıpolo procedur´aln´ımetody (semi-procedural), kter´evyuˇz´ıvaj´ıstan- dardn´ıanimace s kl´ıˇcov´ymisn´ımky, rozˇs´ıˇren´eo procedur´aln´ımetody. Napˇr´ıklad ch˚uzem˚uˇzeb´ytˇr´ızenakl´ıˇcov´ymisn´ımky, ale v moment, kdy noha dopad´ana podlahu, se jej´ıkoneˇcn´apoloha a rotace procedur´alnˇeuprav´ıtak, aby sedˇela k nerovnosti povrchu.

2.3 Kostern´ıanimace

Velk´aˇc´astpoˇc´ıtaˇcov´eanimace se zaob´ır´aanimac´ıpostav. Tyto postavy mohou b´ythumanoidn´ıhotypu, zv´ıˇre,robot nebo jin´avirtu´aln´ıstvoˇren´ı.Takov´epo- stavy by bylo sloˇzit´eanimovat pohybov´an´ımindividu´aln´ıch vrchol˚u.Z´aroveˇn ukl´ad´an´ıanimac´ıpro takov´emodely je nepraktick´e,jak bylo uvedeno v sekci 2.2.1.1. Proto se ˇc´astimodel˚ukup´ı do skupin, kter´ese pohybuj´ı jednotnˇe, napˇr´ıkladlidsk´aruka m˚uˇzeb´ytsloˇzenaz pˇredlokt´ıa nadlokt´ı.Pro tyto mo- dely se definuje takzvan´akostra.

2.3.1 Kostra Kostra (nˇekdytak´enaz´yvan´akloubov´asoustava) se v poˇc´ıtaˇcov´egrafice skl´ad´a z jednotliv´ych kloub˚u/uzl˚u.Kloub˚umse nˇekdytak´eˇr´ık´akosti, ale z tech- nick´ehopohledu anim´atoˇripracuj´ıs klouby a kosti reprezentuj´ıpouze pr´azdn´e m´ısto mezi klouby. Obecnˇejsou dle [26] tyto term´ıny v poˇc´ıtaˇcov´egrafice zamˇeniteln´e.Bˇeˇznouvizualizaci lze vidˇetna obr´azku2.8. Anim´atorobecnˇe nemus´ıb´ytstejn´yˇclovˇek,jako ten, kdo vytv´aˇr´ıkostru, v textu pro jednodu- chost budou tyto role sjednoceny pod n´azvem anim´ator. Tyto klouby jsou na sebe v´azan´ea tvoˇr´ıhierarchickou stromovou struk- turu. To znamen´a,ˇzepokud se pohne paˇze,s n´ıse z´aroveˇnpohne i pˇredlokt´ıa ruka, vˇcetnˇeprst˚u.Obecnˇezmˇenatransformace kloubu ovlivn´ıvˇsechny jeho podˇrazen´eklouby. Tato vlastnost se tak´ed´anazvat vztahem rodiˇca potomek, napˇr´ıkladkloub v lokti je potomek kloubu v rameni a z´aroveˇnrodiˇckloubu v pˇredlokt´ı. Pokud maj´ıjednotliv´eklouby konstantn´ıvzd´alenosta mˇen´ıse pouze jejich rotace, naz´yv´ase tato kloubov´asoustava rigidn´ı(tuh´a,nepruˇzn´a).Pro huma- noidn´ımodely se dle [29] vyuˇz´ıv´arigidn´ıkloubov´asoustava skoro v´yluˇcnˇe. Jeden zvolen´ykloub se naz´yv´akoˇrenov´y(root) a vˇsechny ostatn´ıklouby jsou jeho pˇr´ım´ıˇcinepˇr´ım´ıpotomci. Koˇrenov´ykloub nem´aˇz´adn´ehorodiˇce.Pro hu- manoidn´ımodely je typicky koˇrenov´ykloub v oblasti p´anve a pomoc´ınˇej lze prov´adˇettransformace s cel´ymmodelem.

16 2.3. Kostern´ıanimace

Obr´azek2.8: Typick´avizualizace kost´ıa kloub˚u[1]

Samotn´akostra nem´aˇz´adnouvlastn´ıgeometrii a nevykresluje se. Slouˇz´ı pro usnadnˇen´ıanim´atorovi s p´ozov´an´ımmodelu, kter´ehoje souˇc´ast´ı.V´ysledn´a p´ozaje urˇcenaz ´uhl˚umezi jednotliv´ymiklouby. [26] Polygonov´es´ıti,kter´atvoˇr´ıpovrch modelu, se ˇr´ık´ak˚uˇze. Na klouby jsou napojen´ejednotliv´eˇc´astik˚uˇzemodelu, kter´ase pohybuje relativnˇek pohybu kloub˚u.M´ıstotoho, aby anim´atorpro vytv´aˇren´ıanimac´ıovl´adaljednotliv´e vrcholy, pohybuje s kostrou modelu. V kl´ıˇcov´ych sn´ımc´ıch staˇc´ıukl´adatpozice jednotliv´ych kloub˚u,ˇc´ımˇzse efektivnˇesniˇzuje pamˇet’ov´ai v´ypoˇcetn´ın´aroˇcnost. Anim´atorkostru p´ozujet´ım,ˇzejednotliv´eklouby posouv´a,rotuje, pˇr´ıpadnˇe ˇsk´aluje.V [26] je uvedeno, ˇzekaˇzd´ykloub si ukl´ad´ainformace o sv´epoloze, rotaci, pˇr´ıpadnˇemˇeˇr´ıtkurelativnˇek nˇejak´ereferenˇcn´ıp´oze(nejˇcastˇejip´oze sv´ehorodiˇcovsk´ehokloubu). Tyto informace jsou typicky uloˇzeny v matici afinn´ıtransformace o rozmˇeru4 × 4 nebo v SRT struktuˇre.SRT (Scale, Ro- tation, Translation) je datov´astruktura obsahuj´ıc´ı skal´arnebo vektor pro ˇsk´alu,kvaternion pro rotaci a vektor pro posunut´ı. Nˇekdyse tak´enaz´yv´a SQT struktura (Scale, Quaternion, Translation). V´ysledn´ap´ozacel´ekostry je urˇcenapolem tˇechto dat pro vˇsechny klouby. Z´akladn´ıp´ozakostry se naz´yv´a bind pose. U humanoidn´ıch postav tato p´ozatypicky pˇripom´ın´ap´ısmenoT. Postava stoj´ıvzpˇr´ımen´as nohama u sebe a s rukama kolmo od sebe. Proto se nˇekdy tak´enaz´yv´a T-pose. [26] Dalˇs´ıv´yhodou kostern´ıanimace je, ˇzepokud se anim´atordrˇz´ıpˇritvorbˇe kostry urˇcit´ych konvenc´ı,lze animace z jedn´ekostry duplikovat do jin´ekostry. Tato kostra m˚uˇzem´ıtˇc´asteˇcnˇejin´eproporce, hierarchickou strukturu i poˇcet kloub˚u.Tomuto procesu se ˇr´ık´a animation retargeting.

2.3.2 Rigging

Vytv´aˇren´ıhierarchick´estruktury kost´ıpro model se naz´yv´a rigging. Pˇrit´eto f´azise anim´atormus´ı rozhodnout, jak´eˇc´asti modelu budou tvoˇritsv´ein- dividu´aln´ı celky. Napˇr´ıklad lidsk´etˇelom´av dospˇelostipˇribliˇznˇe206 kost´ı. Takov´ypoˇcetje pro animaci typicky pˇr´ıliˇsvysok´ya tvoˇr´ıpˇr´ıliˇssloˇzitoustruk- turu. Anim´atormus´ızn´atanatomii modelu a rozhodnout se, z kolika kloub˚u se bude v´ysledn´akostra skl´adatv z´avislosti na tom, jak se bude postava pohy- bovat. D˚uleˇzit´eot´azkyu humanoidn´ıch postav jsou napˇr´ıklad,z kolika kloub˚u

17 2. Teoreticka´ cˇast´

Obr´azek2.9: Pˇr´ıklad kostry pro humanoidn´ıpostavu [6] bude tvoˇrenap´ateˇrpostavy nebo jestli postava bude moci h´ybats jednot- liv´ymiprsty u rukou a nohou. Pˇr´ıkladkostry ˇclovˇekaje uveden na obr´azku 2.9. Kostry se nevytv´aˇr´ıjen v situac´ıch, kde se vyskytuj´ıklouby v re´aln´em svˇetˇe.Kostru mohou m´ıti stromy a rostliny, napˇr´ıkladpro snazˇs´ıanimace p˚usoben´ıvˇetru. D´alese nˇekdyvyuˇz´ıvaj´ıpro animaci obliˇcejenebo pro jin´e sekund´arn´ıanimace, napˇr´ıkladzv´ıˇrec´ıuˇsia ocas nebo ˇc´astiodˇevupostav.

2.3.3 Degree of Freedom

Dle [6] lze pro kaˇzd´yobjekt, ˇcilii kostru nebo jednotliv´eklouby, jednoznaˇcnˇe urˇcitjejich polohu pomoc´ı veliˇcinzvan´ych stupnˇevolnosti (DOF – Degree of Freedom). V trojrozmˇern´emprostoru m´akaˇzd´ynez´avisl´yrigidn´ı objekt 6 stupˇn˚uvolnosti, tˇripro pozici a tˇripro rotaci v jednotliv´ych os´ach. Po- kud jsou objekty seskupeny do segmentov´ych struktur, jako je kostra, bude se jejich celkov´ypoˇcetstupˇn˚uvolnosti sniˇzovat. Napˇr´ıkladv rigidn´ıkloubov´e soustavˇeje transformace kloubu urˇcenajeho relativn´ıtransformac´ık rodiˇcia glob´aln´ıtransformac´ırodiˇce.Zjednoduˇsenˇe,pro jednoznaˇcn´eurˇcen´ıpolohy to- hoto kloubu staˇc´ıtˇristupnˇevolnosti, kter´ereprezentuj´ırelativn´ırotaci vzhle- dem k rodiˇcovsk´emu kloubu. Nˇekdym˚uˇzeb´ytˇz´adouc´ı stupnˇevolnosti sn´ıˇzitmanu´alnˇea t´ım omezit pohyb kloubu. Lidsk´eklouby maj´ıpˇrirozenˇeomezen´ypohyb. Napˇr´ıkladloketn´ı

18 2.3. Kostern´ıanimace a kolenn´ıklouby se mohou ot´aˇcetpouze ve smˇerujedn´eosy. Z´aroveˇnm˚uˇze b´ytuˇziteˇcn´eomezit v jednotliv´ych os´ach i rozsah hodnot, kter´ych m˚uˇzekloub nab´yvat. Takov´aomezen´ıse naz´yvaj´ı constraints. Napˇr´ıkladloketn´ıani kolenn´ı kloub nelze otoˇcito cel´ych 360°. Nastaven´ımtˇechto omezen´ılze anim´atorovi usnadnit pr´acia zamezit tomu, aby se modely dostaly do nepˇrirozen´ep´ozy. [29]

2.3.4 Skinning

V t´etokapitole bude pro snazˇs´ıvizu´aln´ıpˇredstavu pouˇz´ıv´anterm´ın kost“ ” m´ısto kloub“. Procesu pˇriˇrazen´ı jednotliv´ych vrchol˚uk˚uˇzek jednotliv´ym ” kostem je proces zvan´y skinning (nˇekdytak´enaz´yvan´y binding). Existuje ˇradazp˚usob˚ujak toho doc´ılit.Nejjednoduˇsˇs´ıpˇr´ıpadje, kdyˇzkaˇzd´yvrchol je ovlivnˇenpohybem pouze jedn´ekosti. To je pˇrijateln´eu rigidn´ıch model˚u,kter´e jsou tvoˇreny pevn´ymisegmenty, jako jsou napˇr´ıkladroboti a stroje. Tomu se ˇr´ık´ajednoduch´yskinning. Kaˇzd´yvrchol se transformuje tak, jako kdyby byl pevnˇenapojen na jednu kost. [6] U organick´ych model˚uje toto ˇreˇsen´ınedostaˇcuj´ıc´ı.V m´ıstˇe,kde se dvˇe kosti setk´avaj´ıse v takov´empˇr´ıpadˇeprojev´ınehezk´adeformace. Nˇekter´evr- choly jsou skˇr´ıpnut´ea k˚uˇzev oblasti ohybu nen´ıhladk´a.Lepˇs´ıch v´ysledk˚ulze dos´ahnouttechnikou m´ıch´an´ıvrchol˚u(vertex blending / smooth binding / li- near blend skinning). Z´akladn´ımyˇslenkou t´etotechniky je, ˇzepoloha jednoho vrcholu je ovlivnˇenav´ıcerokostmi. Napˇr´ıkladohnut´ılidsk´eruky v lokti ovlivn´ı nejen pˇredlokt´ı,ale i paˇzi.[6] Dle [22] m´akaˇzd´akost pˇridˇelenouhodnotu vlivu, jak moc dan´yvrchol ovlivˇnuje,takzvanou v´ahu. V´ahu lze urˇcitnapˇr´ıkladv z´avislostina vzd´alenosti vrcholu od konkr´etn´ıkosti, nebo ji anim´atorm˚uˇzepˇriˇraditruˇcnˇe.Souˇcetvah pro kaˇzd´yvrchol je typicky 1, neboli 100 % (aˇckoliv to nen´ınutn´apodm´ınka) a v´ahanikdy nen´ız´aporn´a. Pomoc´ıt´etometody m˚uˇzeb´ytjeden vrchol ovlivnˇenlibovoln´ympoˇctem kost´ı.Avˇsakje nutn´ezm´ınit,ˇzese zvyˇsuj´ıc´ımpoˇctemovlivˇnuj´ıc´ıch kost´ıse z´aroveˇnzvyˇsujev´ypoˇcetn´ın´aroˇcnosta v praxi se bˇeˇznˇenedoporuˇcuje,aby jeden vrchol ovlivˇnovaly v´ıceneˇz4 kosti. Tato metoda m´ave vˇetˇsinˇepˇr´ıpad˚u dobr´ev´ysledky, ale pokud jsou rotaˇcn´ı´uhlyoproti rodiˇcovsk´ekosti pˇr´ıliˇsvelk´e, [30] popisuje dva typy neˇz´adouc´ıch deformac´ı:

Collapsing elbow effect, kter´yse objev´ı,kdyˇzmezi sebou dvˇekosti sv´ıraj´ı mal´y´uhel. Projevuje se t´ım, ˇze vrcholy bl´ızko vnitˇrn´ı strany m´ısta ohybu se propadnou ke stˇredu kloubu a model t´ımvizu´alnˇeztrat´ıobjem (obr. 2.10a).

Candy-wrapper effect, neboli efekt obalu od bonb´onu je druh´ymtypem. Tento efekt nast´av´a,kdyˇzse kost pˇretoˇc´ıo 180°, napˇr´ıklad jako z´apˇest´ı pˇriodemyk´an´ıdveˇr´ı.Projevuje se t´ım,ˇzevrcholy na kter´eoboje kosti p˚usob´ıpodobnou v´ahouse pˇresunoubl´ızko ke stˇredukloubu (obr. 2.10b).

19 2. Teoreticka´ cˇast´

Obr´azek2.10: a) Collapsing elbow efekt, b) Candy-wrapper efekt [30]

Jeden zp˚usobzm´ırnˇen´ıtˇechto efekt˚uje rozdˇelitjednotliv´ekost´ına v´ıce ˇc´ast´ı.Napˇr´ıkladpˇredlokt´ım˚uˇzeb´ytsloˇzenoze tˇr´ıkost´ıv jedn´epˇr´ımce.To umoˇzn´ırozdˇelithodnotu vlivu vrchol˚umezi v´ıcekost´ı a zm´ırnitdeformaci v extr´emn´ıch rotac´ıch jako na obr´azku2.10b. Existuj´ıdalˇs´ıa sofistikovanˇejˇs´ıtˇr´ıdymetod, kter´eprodukuj´ılepˇs´ıv´ysledky. Jedna z tˇechto tˇr´ıd je st´aleline´arn´ı, ale lepˇs´ıch v´ysledk˚udosahuje t´ım,ˇze zav´ad´ıvˇetˇs´ıpoˇcetvah pro kaˇzd´yp´arvrcholu a kosti. Tyto metody se naz´yvaj´ı multi-line´arn´ıa mohou vyuˇz´ıvat i 12 vah pro kaˇzd´yp´arvrcholu a kosti. Druhou tˇr´ıdutvoˇr´ıneline´arn´ımetody, jako je dual quaternion skinning. Tato metoda produkuje lepˇs´ıv´ysledkyneˇzmetoda m´ıch´an´ıvrchol˚u,aˇckoliv je jejich v´ypoˇcetn´ısloˇzitostporovnateln´a.Pamˇet’ov´an´aroˇcnostje sn´ıˇzenaze dvan´acti float reprezentuj´ıc´ımatici rigidn´ıtransformace, na osm float re- prezentuj´ıc´ıdva kvaterniony. Tato metoda zabr´an´ıvzniku artefakt˚u,jako na obr´azku2.10. [31] Pokud je vyˇzadovan´yvysok´yrealismus, pouˇz´ıv´ase i simulace sval˚u.Svaly jsou reprezentov´any napˇr´ıklad pˇres NURBS (Non-Uniform Rational Basis Splines) kˇrivkynebo povrchy, kter´ejsou napojen´ena spr´avn´ych m´ıstech mezi klouby. Pˇripohybu kloub˚umˇen´ısv˚ujtvar a t´ımmˇen´ıpovrch k˚uˇze.T´ımto zp˚usobem lze vytvoˇritvelice realistick´ymuskuloskelet´aln´ısyst´em.[1]

2.3.5 Kinematika Studiu pohybu tˇelesv prostoru a ˇcasese zab´yv´aobor fyziky zvan´ymechanika. Podle vztahu k pˇr´ıˇcin´ampohybu se mechanika dˇel´ına kinematiku a dynamiku. Dynamika studuje vz´ajemn´ep˚usoben´ısil a objekt˚u.Kinematika studuje pouze pohyb objekt˚u,nez´avislena pˇr´ıˇcinˇepohybu, ˇcilise zab´yv´apouze polohou, rychlost´ıa zrychlen´ımv ˇcase. A pr´avˇekinematikou se zab´yv´aˇc´ast poˇc´ıtaˇcov´eanimace, ve kter´eslouˇz´ı k manipulaci s kloubovou soustavou. V souvislosti s kinematikou se dle [32] pouˇz´ıv´anˇekolik d˚uleˇzit´ych pojm˚u:

Spojen´ı (link) je rigidn´ıspojen´ımezi dvˇemaklouby. Retˇezcespoj˚uoddˇelen´eˇ klouby tvoˇr´ıkloubov´esoustavy. Tyto ˇretˇezcejsou zpravidla na jednom

20 2.3. Kostern´ıanimace

konci pevnˇepˇripevnˇeny, napˇr´ıkladruka je v rameni pevnˇepˇripevnˇena k trupu.

Koncovy´ efektor (end effector) je voln´ykonec ˇretˇezce,v pˇr´ıpadˇeruky se jedn´ao z´apˇest´ınebo prsty.

Stavovy´ vektor (state vector) je mnoˇzinanez´avisl´ych parametr˚u, kter´a definuje vˇsechny moˇzn´estavy, do kter´ych se kloubov´asoustava m˚uˇze dostat. Jeho d´elka(dimenze) je stejn´a,jako poˇcetstupˇn˚uvolnosti cel´e kloubov´esoustavy (viz sekce 2.3.3). Stavov´yvektor se oznaˇcuje

Θ = (θ0, θ1, . . . , θn) (2.1)

kde n je poˇcetstupˇn˚uvolnosti. Napˇr´ıkladnez´avisl´yrigidn´ıobjekt v pro- storu m´a6 stupˇn˚uvolnosti, tedy jeho stavov´yvektor je urˇcen

Θ = (x, y, z, α, β, γ),

kde x, y, z jsou posuvy a α, β, γ rotace v jednotliv´ych os´ach.

V robotice existuje velk´ypoˇcetr˚uzn´ych druh˚ukloub˚u,u kter´ych se dva linky pohybuj´ırelativnˇek sobˇe.V poˇc´ıtaˇcov´egrafice se lze pˇrev´aˇznˇesetkat jen s nˇekolika druhy kloub˚u.Prvn´ıje posuvn´ykloub (prismatic joint), u kter´eho link mˇen´ı svoji polohu relativnˇek druh´emu linku. Nejˇcastˇejipouˇz´ıvan´yje otoˇcn´ykloub (revolute joint), u kter´ehojeden link rotuje po jedn´eurˇcen´eose. Tyto klouby maj´ıjeden DOF. Existuj´ıi klouby s vˇetˇs´ım DOF, jako je kulov´y kloub nebo Kardan˚uvkloub. Takov´eklouby lze vymodelovat tak, ˇzese na stejn´e pozici uvaˇzuje n kloub˚us jedn´ım DOF, kter´ejsou spojeny n−1 linkami nulov´e d´elky. [23] Stavov´yvektor jednoznaˇcnˇeurˇcujepolohu koncov´ehoefektoru X. Existuj´ı dvˇemetody kinematiky, jak urˇcitpolohu koncov´ehoefektoru a jednotliv´ehod- noty stavov´ehovektoru. Dopˇredn´akinematika (forward kinematics) a v dneˇsn´ı dobˇehojnˇejipouˇz´ıvan´ainverzn´ıkinematika (inverse kinematics). [6] U dopˇredn´ei inverzn´ıkinematiky se sloˇzitostv´ypoˇctuzvyˇsujes poˇctem kloub˚u,jelikoˇzkaˇzd´ykloub pˇrid´ado struktury minim´alnˇejeden stupeˇnvol- nosti a t´ım p´ademi minim´alnˇejednu dalˇs´ıdimenzi do stavov´ehovektoru Θ. [32] Na obr´azku2.11 lze vidˇetpˇr´ıkladkloubov´ehoˇretˇezce reprezentuj´ıc´ıhuma- noidn´ıruku se sn´ıˇzen´ympoˇctemstupˇn˚uvolnosti v lokti.

2.3.5.1 Dopˇredn´a kinematika Dopˇredn´akinematika (Forward Kinematics – FK) spoˇc´ıv´ave v´ypoˇctupo- lohy koncov´ehoefektoru postupn´ymproch´azen´ımˇretˇezceod koˇreneaˇzke kon- cov´emu efektoru. V pˇr´ıpadˇe,ˇzeby anim´atorchtˇel,aby postava uchopila objekt na stole, musel by nejdˇr´ıvprov´estrotaci v rameni, pak v lokti, v pˇredlokt´ıa nakonec natoˇciljednotliv´eprsty, aby drˇzelyobjekt. V t´etometodˇeanim´ator

21 2. Teoreticka´ cˇast´

Obr´azek2.11: Retˇezeckloub˚ureprezentuj´ıc´ırukuˇ humanoida [23] pohybuje s v´ıceklouby a m´avˇetˇs´ıvolnost pro tvorbu expresivn´ıch animac´ı. Z´aroveˇnje dopˇredn´akinematika snazˇs´ına implementaci. Na druhou stranu tento postup m˚uˇzeb´ytzdlouhav´ya v nˇekter´ych pˇr´ıpadech velmi obt´ıˇzn´y. Pokud by postava mˇela v animaci udˇelatkrok, na kaˇzd´emkl´ıˇcov´emsn´ımku by anim´atormusel zkouˇseta upravovat jednotliv´e´uhlyv noze, aby ve vˇsech sn´ımc´ıch chodidlo z˚ustalona podlaze na stejn´emm´ıstˇe.Pokud bude koncov´a pozice na sn´ımc´ıch i trochu rozd´ıln´a,bude se chodidlo posouvat po podlaze, vzn´aˇsetnebo propadat skrz podlahu. [1] V´ypoˇcetpolohy koncov´ehoefektoru X pomoc´ıdopˇredn´ekinematiky lze napsat jako X = f(Θ). (2.2) Anim´atorpostupnˇeod koˇrenep´ozujevˇsechny klouby a poloha koncov´ehoefek- toru je urˇcenaakumulac´ıtransformac´ıjednotliv´ych kloub˚u.[32]

2.3.5.2 Inverzn´ı kinematika Inverzn´ıkinematika (Inverse kinematics – IK) tento proces v´ypoˇctu ot´aˇc´ı. Jej´ım´ukolem je se zadanou polohou koncov´ehoefektoru X nal´eztjednotliv´e hodnoty stavov´ehovektoru Θ. Tento proces se d´apopsat ot´azkou Pokud ” postava bude m´ıtruku na tomto m´ıstˇe,jak´e´uhlybudou sv´ıratklouby v rameni a pˇredlokt´ı?“. Z tohoto d˚uvodu se tato metoda naz´yv´atak´e c´ılemˇr´ızen´ypohyb (goal directed motion) [32]. Form´alnˇese tento vztah d´azapsat jako

Θ = f −1(X). (2.3)

Nev´yhodou IK je, ˇzepro zadanou pozici koncov´ehoefektoru neexistuje vˇzdy pr´avˇejedno ˇreˇsen´ı konfigurace stavov´ehovektoru Θ. Reˇsen´ıˇ nˇekdynemus´ı existovat, nebo jich m˚uˇzeb´yti dvˇea v´ıce, jak lze vidˇetna obr´azku2.12. Omezit podprostor moˇzn´ych ˇreˇsen´ılze ˇc´asteˇcnˇepomoc´ıomezen´ı(constraints), zm´ınˇeny v sekci 2.3.3. To napˇr´ıkladzajist´ı,ˇzese klouby nemohou ot´aˇcetza urˇcitoumez. T´ımto se vˇsakpodprostor ˇreˇsen´ınezmenˇs´ıvˇzdydostateˇcnˇe. Pokud je ˇretˇezdostateˇcnˇekr´atk´ya jednoduch´y,pak v´ypoˇcetkonfigurace stavov´ehovektoru m˚uˇzeb´ytproveden analyticky. Avˇsak pokud je ˇretˇez pˇr´ıliˇs

22 2.3. Kostern´ıanimace

Obr´azek2.12: V´ıceˇreˇsen´ıpˇriv´ypoˇctuinverzn´ıkinematiky [30] komplikovan´ypro analytick´ev´ypoˇcty, pouˇz´ıvaj´ıse iterativn´ımetody. Itera- tivn´ımetody vyuˇz´ıvaj´ızjednoduˇsen´everze rovnic, kter´ese opakovanˇepoˇc´ıtaj´ı a v´ysledkyzpˇetdosazuj´ı,dokud se koncov´yefektor nedostane do c´ılov´epo- zice. Na to se bˇeˇznˇepouˇz´ıv´atakzvan´a inverze jacobi´anu, nebo jin´emetody, podrobnˇepopsan´ev [33]. Jacobiho matice, naz´yvan´atak´e jacobi´an, je matice parci´aln´ıch derivac´ı, kter´avztahuje diferenci´aln´ızmˇeny vektoru Θ, zapsan´e jako ∆Θ, na diferenci´aln´ızmˇeny X, zapsan´ejako ∆X. Tento vztah lze dle [32] zapsat jako ∆X = J(Θ)∆Θ, (2.4) kde J je Jacobiho matice o rozmˇeru n×m, kde n je dimenze koncov´ehoefektoru X a m je dimenze stavov´ehovektoru Θ. Tuto matici lze zapsat ve tvaru

 ∂f1 ··· ∂f1  ∂θ1 ∂θn  . . .  Jm×n =  . . .  . (2.5)  . . .  ∂fm ··· ∂fm ∂θ1 ∂θn

Pokud existuje inverze jacobi´anu, vzorec 2.4 lze upravit do tvaru

∆Θ = J−1(Θ)∆X, (2.6) ze kter´ehopo dosazen´ızmˇeny souˇradnickoncov´ehoefektoru ∆X lze vypoˇc´ıtat zmˇenu stavov´ehovektoru ∆Θ. Jelikoˇzje jacobi´anz´avisl´yna aktu´aln´ıkonfi- guraci stavov´ehovektoru, jakmile se tato konfigurace zmˇen´ı,pˇrestanevztah diferenci´aln´ıch zmˇenplatit. To m˚uˇzev´estk tomu, ˇzepokud se zvol´ıpˇr´ıliˇsvelk´y krok zmˇeny ∆X, koncov´yefektor se nemus´ıpˇribliˇzovat ke sv´emu c´ılia je tˇreba volit menˇs´ızmˇeny. T´ımp´ademje potˇrebav´ıceiterac´ı,neˇzse koncov´yefektor dostane do c´ıle,jak je zn´azornˇenona obr´azku2.13. [23]

23 2. Teoreticka´ cˇast´

Obr´azek2.13: Iteraˇcn´ıpˇribliˇzov´an´ıkoncov´ehoefektoru ke sv´emu c´ıli[6]

Z´aroveˇntypicky Jacobiho matice nemus´ı b´ytˇctvercov´a,ˇcili neexistuje jej´ıinverze. V takov´ych pˇr´ıpadech se d´avypoˇc´ıtattakzvan´a pseudo inverze (pseudo inverse) J+. Form´alnˇelze tento v´ypoˇcetzapsat jako

J+ = (JT J)−1 = JT (JJT )−1. (2.7)

2.3.6 Motion capture Dalˇs´ıtechnikou vytv´aˇren´ıanimac´ıje sn´ım´an´ıpohybu (motion capture – mo- cap). Jak jiˇzn´azev vypov´ıd´a,spoˇc´ıv´ave sn´ım´an´ıa digitalizaci pohybu re´aln´ych objekt˚ua n´asledn´epˇreveden´ı zaznamenan´ehopohybu na virtu´aln´ı 3D mo- del. Nejˇcastˇejise pouˇz´ıv´ana sn´ım´an´ıpohybu lidsk´ych postav nebo zv´ıˇrat,ale obecnˇelze sn´ımati jak´ekoliv jin´eobjekty. Vyuˇz´ıv´ase jak v hern´ıma filmov´em pr˚umyslu, tak i v medic´ınˇe,biomechanice, atd. Tato pr´acese zamˇeˇrujepouze na sn´ım´an´ıpohybu lidsk´ych herc˚u. Dle [23] a [22] je zaznamen´av´an´ınejˇcastˇejizaloˇzenona dvou prim´arn´ıch metod´ach. Prvn´ı jsou elektromagnetick´esenzory, kter´ejsou pˇripevnˇeny na kl´ıˇcov´ych m´ıstech, typicky kloubech. Senzory bezdr´atovˇezas´ılaj´ı informace o sv´epoloze a natoˇcen´ıcentr´aln´ımu procesoru, kter´yinformace zpracov´av´aa ukl´ad´a.V´yhodou je moˇznostsn´ımatvelikou plochu a jednoduchost pˇr´ıpravy. Nev´yhodou je vysok´acitlivost na zkreslen´ımagnetick´ehopole a ˇsumv na- hran´ych datech. Nahran´adata nejsou tak pˇresn´a,coˇzje zejm´enav medic´ınˇe a biomechanice d˚uleˇzit´yfaktor. Z´aroveˇnje sloˇzit´enahr´avat v´ıceneˇzjednoho herce ve stejn´yˇcas. Druhou metodou je syst´emznaˇcek,kter´em´aherec pˇripevnˇen´ena obleˇcen´ı. Tyto znaˇckymohou b´ytbud’to pasivn´ı– z reflexn´ıhomateri´alu,nebo aktivn´ı – napˇr´ıklad sv´ıt´ıc´ı LED. Pohyb je zaznamen´anpevnˇepˇripevnˇen´ymikame- rami z r˚uzn´ych m´ıst. V [22] je uvedeno, ˇzepokud znaˇckuv dan´ymoment

24 2.3. Kostern´ıanimace vid´ıalespoˇntˇrikamery, pomoc´ıtriangulace lze vypoˇc´ıtatjej´ıpolohu v pro- storu. V´yhodou t´etometody je, ˇzelze nahr´avat s vysokou sn´ımkovou frek- venc´ıi s levnˇejˇs´ımi,ˇradov´ymikamerami. Vypoˇc´ıtan´epozice znaˇcekjsou velmi pˇresn´ea nahr´avat lze i v´ıceosob souˇcasnˇe.Nev´yhodou je dle [23] a [22], ˇzeje typicky potˇrebavyuˇz´ıtv´ıce znaˇcek,neˇzu elektromagnetick´ych senzor˚u.Po- kud kamery ztrat´ıpohled na znaˇcky, nahran´adata mohou obsahovat chyby a anim´atormus´ıpozdˇejianimace manu´alnˇeupravit. Z´aroveˇnje nahr´avac´ıplo- cha limitovan´asvou velikost´ı,protoˇzes vˇetˇs´ıvzd´alenost´ıse kamer´amsniˇzuje viditelnost znaˇcek. Nahran´adata jsou velice objemn´a.Typicky je vytvoˇrenkl´ıˇcov´ysn´ımekpro kaˇzd´ynahran´ysn´ımek,z´avisl´yna framerate. Je vhodn´e,aby anim´atoˇridata vyˇcistilia zbavili se zbyteˇcn´ych kl´ıˇcov´ych sn´ımk˚u.Z´aroveˇnse sice postavy ani- movan´epomoc´ı motion capture pohybuj´ıpˇresnˇea plynule, ale mohou p˚usobit mechanicky a ztuhle a anim´atortypicky mus´ınˇejak´epohyby manu´alnˇezveliˇcit a dodat jim hloubku. [2]

2.3.7 M´ıch´an´ıanimac´ı

M´ıch´an´ıanimac´ı (animation blending) spoˇc´ıv´av kombinov´an´ıv´ıceanimac´ı souˇcasnˇe,pro vyprodukov´an´ı nov´eanimace nebo pro vytvoˇren´ı plynul´eho pˇrechodu mezi jednotliv´ymianimacemi. V prvn´ımpˇr´ıpadˇeto m˚uˇzeb´ytkom- binace animace ch˚uzea animace bˇehu, pro vytvoˇren´ıanimace poklusu. Nebo m´ıch´an´ımdvou animac´ıkopu v r˚uzn´ych pomˇerech vytvoˇritdes´ıtkypodobn´ych, ale unik´atn´ıch animac´ıkopu. V druh´empˇr´ıpadˇeto m˚uˇzeb´ytrozebˇehnut´ıpo- stavy, tedy pˇrechod z animace ch˚uzedo animace bˇehu. Animace, mezi kter´ymi se vytv´aˇr´ıpˇrechod, je tˇrebadopˇredupl´anovat uˇzpˇrivytv´aˇren´ıanimac´ı,jinak m˚uˇzev´ysledn´ypˇrechod vypadat nepˇrirozenˇe.[34] Hojnˇevyuˇz´ıvan´aje tˇr´ıdametod vyuˇz´ıvaj´ıc´ıline´arn´ıinterpolaci (LERP – linear interpolation). V´ysledn´apozice jednotliv´ych kost´ıje vypoˇc´ıtan´ajako v´aˇzen´ypr˚umˇer,kde v´ahaurˇcuje,jak moc maj´ıjednotliv´eanimace pˇrisp´ıvat do v´ysledku.Souˇcetvah vˇsech pˇrisp´ıvaj´ıc´ıch animac´ıby mˇelb´ytjedna. In- terpolace transformaˇcn´ıch matic nen´ı praktick´eˇreˇsen´ı, proto se interpolace prov´ad´ıbˇeˇznˇezvl´aˇst’ na kaˇzdoukomponentu SRT struktury, popsan´ev sekci 2.3.1. Vzhledem k tomu, ˇzese interpolace prov´ad´ına jednotliv´ych kloubech, nez´avislena zbytku kostry, lze v´ypoˇcetefektivnˇeprov´adˇetparalelnˇepomoc´ı GPU. Pˇrechod mezi dvˇemaanimacemi se m˚uˇzeprov´adˇetpˇrekryt´ımdvou ani- mac´ı na ˇcasov´eose a v m´ıstˇepˇrekryt´ı prov´adˇetinterpolaci. Tento zp˚usob vyˇzaduje,aby m´ıchan´eanimace byly synchronizovan´e,napˇr´ıkladaby pozice nohou v animaci bˇehu a v animaci ch˚uzebyly ve stejn´ef´azi.Pro m´ıch´an´ıani- mac´ı,kter´enejsou synchronizovan´e,m´alepˇs´ıv´ysledkymetoda zmraˇzen´ı,pˇri kter´ese aktu´aln´ıanimace zmraz´ıa v ten moment se zaˇcnepˇrehr´avat c´ılov´a animace, do kter´ese pˇreskr´atk´yˇcasov´y´usekinterpoluje ze zmraˇzen´ep´ozy poˇc´ateˇcn´ıanimace. [26]

25 2. Teoreticka´ cˇast´

Ve hr´ach se ˇcastovyuˇz´ıv´ai m´ıch´an´ıˇc´astikostry (partial-skeleton blending). Spoˇc´ıv´av tom, ˇzepro kaˇzd´ykloub lze urˇcitjeho vlastn´ıv´ahu m´ıch´an´ımezi animacemi. Tyto v´ahy lze uloˇzitdo takzvan´em´ıchac´ımasky (blend mask). Napˇr´ıkladpro animaci zam´av´an´ılze vytvoˇritmasku, kter´apˇridˇelujev´ahu 1 vˇsemkloub˚umna ruce, kterou postava m´av´a,a 0 na vˇsech ostatn´ıch klou- bech. PˇriLERP m´ıch´an´ıanimace ch˚uzes touto animac´ıvznik´aanimace, pˇri kter´epostava chod´ıa z´aroveˇnm´av´a.Toto m´ıch´an´ım˚uˇzep˚usobit nepˇrirozenˇe, protoˇzev re´aln´emsvˇetˇejsou tyto pohyby na sobˇez´avisl´e.Dalˇs´ızp˚usobje tak- zvan´eaditivn´ım´ıch´an´ı (additive blending), ve kter´emse mezi dvˇemaanima- cemi vypoˇc´ıt´ajejich rozd´ıl(tedy rozd´ılp´ozyv jedn´eanimaci od p´ozyv druh´e animaci). Tento rozd´ılse d´aparametrizovat a procentu´alnˇepˇrid´avat k exis- tuj´ıc´ımanimac´ım.[26]

2.4 Hern´ıengine

Hern´ıj´adra(engine) usnadˇnuj´ıv´yvoj aplikac´ıt´ım,ˇzeimplementuj´ız´akladn´ı softwarov´yframework, kter´yobsahuje integrovan´en´astroje pro vytv´aˇren´ıapli- kac´ıa her. Hern´ıj´adraoddˇeluj´ıˇc´astimplementace, specifickou pro konkr´etn´ı aplikaci, od ˇc´astiimplementace obecn´ych funkcionalit vyuˇz´ıvan´ych ve mnoho aplikac´ıch. Kaˇzd´ehern´ı j´adrose liˇs´ı t´ım, jak´efunkcionality poskytuje, ale vˇetˇsinazn´amˇejˇs´ıch obsahuje napˇr´ıkladj´adropro vykreslov´an´ıgrafiky (at’ uˇz 2D nebo 3D), j´adropro pr´acise zvukem, j´adroimplementuj´ıc´ıfyziku, j´adro pro umˇelouinteligenci, apod. D´alem˚uˇzeobsahovat funkcionality zaˇrizuj´ıc´ı s´ıt’ovou komunikaci, n´astroje pro pr´acis animacemi, star´ase o spr´avupamˇeti, detekci koliz´ıa mnoho dalˇs´ıch funkcionalit. [35] Dobr´ympˇr´ıklademje hern´ıengine Source, pomoc´ıkter´ehobyly vyvinuty napˇr´ıkladhry jako Team Fortress 2, Counter-Strike Global Offensive, Half-Life 2, Portal 2, atd. Aˇckoliv se jedn´ao naprosto odliˇsn´ehry, vˇsechny vyuˇz´ıvaj´ıstejn´ez´akladn´ıfunkcionality. Na jednu stranu hern´ıengine usnadˇnuj´ıv´yvoj´aˇr˚umpr´acis t´ım,aby v kaˇzd´e hˇre nemuseli znovu implementovat stejn´efunkcionality, na druhou stranu odeb´ır´aflexibilitu v upravov´an´ı tˇechto funkcionalit pro specifick´epotˇreby v konkr´etn´ı aplikaci. Pokud uˇzivatel v tˇechto funkcionalit´ach objev´ı chybu nebo nedostatek a engine nen´ıopen source, nem˚uˇzechybu vlastnoruˇcnˇeopra- vit. Na trhu je dostupn´evelk´emnoˇzstv´ı hern´ıch engin˚u.Nˇekter´ejsou open source, jin´emaj´ıplacen´elicence. Napˇr´ıklad Unity umoˇzˇnujezdarma vyuˇz´ıvat edici Personal“, pokud pˇr´ıjemz prodej˚unepˇres´ahneroˇcnˇe100 000 $. Nˇekter´e ” spoleˇcnostivyuˇz´ıvaj´ısv´evlastn´ıhern´ıengine, kter´enejsou veˇrejnˇedostupn´e.

26 Kapitola 3

Anal´yzaa n´avrh

V t´etokapitole jsou c´ılepr´acerozdˇeleny do d´ılˇc´ıch ˇc´ast´ı.Pro kaˇzdouˇc´astje provedena anal´yzamoˇzn´ych ˇreˇsen´ıa n´avrhpostupu pr´ace, vˇcetnˇevyuˇzit´ych technologi´ı,n´astroj˚ua metod.

3.1 Struktura projektu

Projekt lze rozdˇelitna tˇrihlavn´ıˇc´asti,na kter´ych lze pracovat z ˇc´asti nez´avisle na ostatn´ıch. Tyto ˇc´asti vych´az´ıze zad´an´ıpr´ace:

Pˇr´ıprava modelu nezbytn´apro animaci. Model bude nejdˇr´ıvtˇrebaanaly- zovat a urˇcit,jak ho bude nutn´eupravit. Nˇekter´eˇc´astimodelu bude potˇrebadomodelovat, zmˇenitbude tˇrebai jeho textury. N´aslednˇebude pro model vytvoˇren´akostra a ovl´adac´ırig, pomoc´ıkter´ehobude moˇzn´e model animovat.

Vytvoˇren´ı animac´ı, kter´ebudou demonstrov´any ve v´ysledn´eaplikaci. Tato ˇc´astje z´avisl´ana vytvoˇren´ıkostry a ovl´adac´ıhorigu pro model. N´aslednˇe bude tˇrebanavrhnout, jak´eanimace budou vytvoˇreny a pomoc´ıjak´ych metod budou vytv´aˇreny.

Vyvoj´ aplikace, ve kter´ebudou v´ysledkydemonstrov´any. Bude nutn´eurˇcit, v ˇcembude v´ysledn´aaplikace vyv´ıjena.D´alejakou bude m´ıt aplikace strukturu a uˇzivatelsk´erozhran´ı,jak se bude ovl´adata jak´ymzp˚usobem budou animace demonstrov´any.

3.2 Volba softwaru

3.2.1 V´ybˇermodelovac´ıhosoftwaru Pro pr´acise 3D modely existuje ˇradasoftwar˚u.Mezi nejpopul´arnˇejˇs´ı patˇr´ı Blender, ZBrush, Cinema 4D, Maya, 3ds Max, Mudbox, aj.

27 3. Analyza´ a navrh´

Obr´azek3.1: Porovn´an´ınˇekolika softwar˚upro 3D grafiku [36]

Obecnˇevˇsechny tyto programy obsahuj´ıvelmi podobn´efunkcionality. Liˇs´ı se ve kvalitˇejednotliv´ych n´astroj˚ua jak snadno, rychle a flexibilnˇelze tyto n´astroje pouˇz´ıvat a volba tedy z´avis´ızejm´enana typu projektu a osobn´ıprefe- renci. Napˇr´ıklad Mudbox a ZBrush maj´ıvelice kvalitn´ın´astroje pro sculpting, Maya exceluje ve vytv´aˇren´ıanimac´ı, 3ds Max ve 3D modelov´an´ı,atd. D´alese liˇs´ısamozˇrejmˇev cenˇe.Porovn´an´ıdle [36] lze vidˇetv tabulce na obr´azku3.1. Z finanˇcn´ıch d˚uvodu, osobn´ıch zkuˇsenost´ıa preferenc´ıv t´etopr´acibude vyuˇz´ıv´an Blender. Obsahuje vˇsechny d˚uleˇzit´efunkcionality pro tuto pr´aci. N´astroje k modelov´an´ı,sculptingu, texture painting, rigging, constraints, IK, keyframe animaci a export ve form´atuFBX. K v´yvoji bude pouˇzit´y Blender verze 2.81a. [37]

3.2.2 V´ybˇerhern´ıhoengine

Mezi aktu´alnˇenejzn´amˇejˇs´ıveˇrejnˇedostupn´ehern´ıengine patˇr´ınapˇr´ıklad Unity, Unreal Engine 4, Godot, CryEngine, aj. Unity umoˇzˇnujev´yvoj aplikac´ına mnoho platform, vˇcetnˇemobil˚ui hern´ıch konzol´ı.V Unity byly vytvoˇreny zn´am´ehry, jako Hearthstone, Cuphead, Deus Ex: The Fall, Rust, atd. Umoˇzˇnujeskriptov´an´ıprim´arnˇev jazyku C# a obsahuje animaˇcn´ısyst´empodporuj´ıc´ı animation retargeting. Unity obsahuje nˇekolik ´urovn´ılicenc´ı,kter´ese liˇs´ına z´akladˇepˇr´ıjmu z prodej˚u.Pokud roˇcn´ı pˇr´ıjmy pˇres´ahnouˇc´astku100 000 $, je uˇzivatel povinen pˇrej´ıtz Personal verze na verzi Plus, kter´astoj´ı40 $ mˇes´ıˇcnˇe.Pokud pˇr´ıjmy pˇres´ahnou200 000 $, je uˇzivatel povinen pˇrej´ıtna verzi Pro za cenu 150 $ mˇes´ıˇcnˇe.Draˇzˇs´ıverze obsahuj´ıv´ıcefunkcionalit. Unity je zejm´enazn´am´ysvoj´ıaktivn´ıkomunitou, kter´avytv´aˇr´ıvelik´emnoˇzstv´ın´avod˚ua dostupn´ych zdroj˚u,jako jsou modely,

28 3.2. Volba softwaru skripty a jin´efunkcionality. [38] Unreal Engine od firmy Epic Games je zn´am´yzejm´enapro fotorealis- tick´evykreslov´an´ısloˇzit´ych a detailn´ıch sc´en.Umoˇzˇnujeskriptov´an´ıv jazyku C++ Blueprints“ , nebo vyuˇz´ıvat zjednoduˇsen´yvizu´aln´ı skriptovac´ı syst´em ” . V Unreal Engine byly vytvoˇren´ehry jako s´erie Mass Effect, Bioshock nebo jedna z nejhranˇejˇs´ıch her roku 2019, Fortnite. License funguje na z´akladˇe syst´emu honor´aˇr˚u.V moment kdy v´ydˇelek z aplikace pˇres´ahne 3 000 $ za ˇctvrtlet´ı,je z t´etoˇc´astkynutn´ezaplatit 5 %. V porovn´an´ıs Unity, C++ je niˇzˇs´ıprogramovac´ıjazyk neˇz C# a k´odlze l´epe optimalizovat. Z´aroveˇnje ale snazˇs´ıv nˇemdˇelatchyby. Zdrojov´yk´od UE je veˇrejnˇedostupn´y,coˇzm˚uˇzepˇri tvorbˇeaplikac´ıb´ytuˇziteˇcn´e.Dostupn´ych zdroj˚u,n´avod˚u,model˚ua dalˇs´ıch funkcionalit je v porovn´an´ıs Unity m´enˇe. Godot je zdarma, open-source hern´ıengine s MIT licenc´ı,coˇzznamen´a,ˇze ho lze volnˇevyuˇz´ıvat, ˇs´ıˇrita modifikovat, pokud se z nˇejneodstran´ıkopie li- cence. Godot je pˇrijatelnouvolbou pro menˇs´ıprojekty, specificky 2-D aplikace (aˇckoliv umoˇzˇnujevyv´ıjeti 3-D aplikace). Nev´yhodou je menˇs´ıuˇzivatelsk´a komunita, stejnˇetak jako menˇs´ıv´yvoj´aˇrsk´yt´ym,coˇzzdrˇzujeopravy chyb a v´yvoj nov´ych funkcionalit. Z´aroveˇnobsahuje nepˇr´ıliˇskvalitn´ı dokumentaci. Vyv´ıjetaplikace lze v nˇekolika jazyc´ıch, vˇcetnˇe C#, C++ nebo vlastn´ımskrip- tovac´ımjazykem GDScript, coˇzje dynamicky typovan´yjazyk podobn´yjazyku Python. [39] CryEngine od spoleˇcnosti CryTek je hern´ıengine kter´yslouˇziljako z´aklad pro vytvoˇren´ıher jako Far Cry, Kingdom Come: Deliverance nebo Crysis. Vyuˇz´ıv´apodobn´ysyst´emhonor´aˇr˚u,jako Unreal Engine. Pokud pˇr´ıjmy z pro- jektu pˇres´ahnouˇc´astku5 000 $ roˇcnˇe,je z t´etoˇc´astitˇreba zaplatit 5 %. CryEngine umoˇzˇnujetvorbu aplikac´ı na ˇsirok´emspektru platform, vˇcetnˇe virtu´aln´ı reality. Je vhodn´ypro kvalitn´ı v´yvoj takzvan´ych FPS her (first- person shooter) a umoˇzˇnujevytv´aˇretvelmi detailn´ı a realistick´eprostˇred´ı. Veˇsker´e zdrojov´e k´odyjsou volnˇe dostupn´e. Skriptovat lze v jazyku Lua. Nev´yhody m´apodobn´e,jako Godot. Menˇs´ıkomunita a v´yvoj´aˇrsk´yt´ymvedou k menˇs´ıuˇzivatelsk´epodpoˇre,pomalejˇs´ıopravˇechyb a niˇzˇs´ıkvalitˇedokumen- tace. [40] Opˇetz d˚uvod˚uosobn´ıch zkuˇsenost´ıa preference bude v t´etopr´acipouˇzit hern´ıengine Unity.

29 3. Analyza´ a navrh´

Obr´azek3.2: Pˇridˇelen´ymodel robota

3.3 Uprava´ modelu

3.3.1 Anal´yza modelu Pˇridˇelen´ymodel je sb´ırkov´ypˇredmˇethumanoidn´ıhorobota, viz obr´azek 3.2. Model je v jednom celistv´emkusu a ve v´ychoz´ıpoloze zauj´ım´aT-pose. Byl vytvoˇren´ypomoc´ıfotogrammetrie, coˇzznamen´a,ˇzem´avysok´ypoˇcetpolygon˚u a sloˇzitoutopologii. Model m´an´asleduj´ıc´ıparametry:

• 502 579 vrchol˚u, • 1 005 142 troj´uheln´ık˚u, • texturu s 8K rozliˇsen´ıma vygenerovanou UV mapu, kter´atuto texturu mapuje na robota.

3.3.2 Oddˇelen´ıˇc´ast´ımodelu Jelikoˇzse jedn´ao robota s mechanick´ymiklouby, kter´yje sloˇzen´yz rigidn´ıch ˇc´ast´ı,je neˇz´adouc´ı,aby pˇri animaci doch´azelok deformaci polygonov´es´ıtˇe.Je zˇrejm´e,ˇzebude ide´aln´ıpouˇz´ıtjednoduch´yskinning, popsan´yv sekci 2.3.4.

30 3.3. Uprava´ modelu

To znamen´a,ˇzebude tˇrebajednotliv´erigidn´ıˇc´astiod sebe oddˇelit do se- par´atn´ıch model˚u.Ze struktury robota lze urˇcit,ˇzeobjekt bude tˇrebarozdˇelit na 14 ˇc´ast´ı(kaˇzd´akonˇcetinaje sloˇzenaze tˇr´ıˇc´ast´ı,tˇelo je jeden velik´ykus a posledn´ıˇc´astje hlava). Oddˇelen´ı v programu Blender lze doc´ılit nˇekolika metodami. Model se d´aupravovat na ´urovni jednotliv´ych vrchol˚ua hran, ale to nen´ıvzhledem ke sloˇzitostimodelu pˇrijateln´eˇreˇsen´ı.Druhou moˇznost´ıje pouˇzit´ı boolean mo- difik´atoru,pomoc´ı kter´eholze napˇr´ıklad izolovat doplnˇekjednoho modelu v pr˚unikus jin´ymmodelem. Pomoc´ıprimitivn´ıch tvar˚u(jako krychle a koule) lze tedy vytvoˇrithrubou reprezentaci ˇc´astikloubu, kter´apatˇr´ık jin´erigidn´ı ˇc´astimodelu a tuto ˇc´astpˇresmodifik´atorodˇr´ıznout. Takov´eˇreˇsen´ıje zdlouhav´ea primitivn´ıtvary nejsou kv˚ulispecifick´emu tvaru kloub˚uvhodn´e.Lepˇs´ıvolbou je n´astroj n˚uˇz(knife tool). Ten umoˇzˇnuje objekt rozˇr´ıznoutpod´eluˇzivatelem urˇcen´ych hran (at’ uˇzexistuj´ıc´ıch v topolo- gii modelu nebo novˇevytvoˇren´ych t´ımto n´astrojem). Pokud se t´ımto n´astrojem vytvoˇr´ısmyˇckahran, lze pod´elt´eto smyˇckyobjekt rozdˇelitna dva d´ıly.

3.3.3 Domodelov´an´ıchybˇej´ıc´ıch ˇc´ast´ı V m´ıstech kde bude model rozdˇelen na jednotliv´eˇc´astit´ımto procesem vznik- nou d´ıry, kter´ymibude vidˇetdovnitˇrrobota. To bude viditeln´ev moment, kdy se nˇejak´ajeho ˇc´astpohne z v´ychoz´ıpolohy v T-pose. Proto bude tyto ˇc´asti nutn´eruˇcnˇedomodelovat. Na tento ´ukol bude nejdˇr´ıve vyuˇzitprogram Meshmixer od spoleˇcnosti Autodesk [41]. D˚uvodem je, ˇzetento program m´apro tuto pr´aciuˇziteˇcn´e n´astroje. Prvn´ımd˚uleˇzit´ymn´astrojem je pˇremostˇen´ı(bridge), kter´eumoˇzˇnuje mezi dvˇemavybran´ymiskupinami hran vytvoˇrit most“, kter´yje sloˇzen´yz pri- ” mitivn´ıch polygon˚u.Druh´yd˚uleˇzit´yn´astroj je zaplnˇen´ı(fill), kter´ydok´aˇze zaplnit d´ıryv objektu polygonovou s´ıt´ı.Tato s´ıt’ z´aroveˇnrespektuje tvar ob- jektu, ve kter´emje d´ıra. Ciliˇ pokud je d´ırav modelu koule, vytvoˇren´az´aplata je zaoblen´a,aby zachovala tvar koule. Tvar se d´ainteraktivnˇemˇenitpomoc´ı parametr˚u. Vedlejˇs´ıv´yhodou je, ˇze Meshmixer je schopen odhalit chyby v topologii. Dok´aˇzenal´eztd´ıryv modelu, izolovan´evrcholy a jin´enemanifoldn´ıobjekty (objekty, kter´eby nemohly existovat v re´aln´emsvˇetˇe)a automaticky je opra- vit. Meshmixer umoˇzˇnujedomodelovat pˇribliˇznˇekulat´ytvar kloub˚u.Staˇc´ıvy- brat smyˇckuhran tvoˇr´ıc´ıd´ıruv objektu, pouˇz´ıtn´astroj fill a mˇenitparametry, dokud v´ysledeknevypad´apˇrijatelnˇe.Z osobn´ıch zkuˇsenost´ıvypl´yv´a,ˇzeˇc´ım m´ad´ırav modelu pravidelnˇejˇs´ıtvar, t´ımlepˇs´ıv´ysledkyn´astroj fill produkuje. Proto je lepˇs´ıd´ırurozdˇelitna v´ıcepravideln´ych dˇerpomoc´ın´astroje bridge. Na detailn´ızakulacen´ıbude ide´aln´ıpouˇz´ıtsculpting n´astroje, jelikoˇzs nimi lze nafukovat ˇc´astimodelu, zahlazovat boule, apod. Pˇrestoˇze Meshmixer obsahuje i n´astroje pro sculpting, tˇechto n´astroj˚uje m´aloa obsahuj´ımenˇs´ımnoˇzstv´ı

31 3. Analyza´ a navrh´ voliteln´ych parametr˚u.Z´aroveˇnje v´ypoˇcetzmˇen znaˇcnˇepomalejˇs´ıneˇzv pro- gramu Blender. Proto pro sculpting ´upravy bude lepˇs´ıpouˇz´ıt Blender.

Pro vytvoˇren´ıco nejkulatˇejˇs´ıch kloub˚ulze ve stˇredukloubu vytvoˇritse- par´atn´ıprimitivn´ıobjekt koule, kter´ase zvˇetˇs´ına poˇzadovanou velikost kloubu. Tomuto pomocn´emu objektu se nastav´ıdr´atˇen´yzobrazovac´ım´od (wire), coˇz zp˚usob´ı,ˇzese budou vykreslovat jen jeho hrany. Pot´eje moˇzn´epomoc´ısculp- ting n´astroj˚ukloub upravovat tak, aby byly jen sotva viditeln´ehrany to- hoto pomocn´ehoobjektu. To zaruˇc´ı,ˇzev´ysledn´ykloub bude m´ıtskoro per- fektn´ısf´erick´ytvar. Toho lze doc´ılitpomoc´ın´astroj˚u inflate/deflate, kter´evy- znaˇcenouoblast z´ajmu nafukuj´ı“, nebo vyfukuj´ı“. Pro odeb´ır´an´ıpˇrebyteˇcn´eho ” ” materi´aluje moˇzn´evyuˇz´ıtz´aporn´ym´odn´astroje blob. Pro vyhlazen´ıpovrchu lze pouˇz´ıtn´astroj smooth.

Upravit bude tˇrebai druhou ˇc´ast,tedy otvor, ve kter´emse kulat´ykloub ot´aˇc´ı.I po domodelov´an´ıkloub˚ubude st´alevidˇetdovnitˇrmodelu v m´ıstech, kde se kloub na origin´aln´ımmodelu napojuje na tyto ˇc´astia poruˇsuje t´ımsv˚uj sf´erick´ytvar. Jeden zp˚usobˇreˇsen´ı,je vytvoˇritjednoduchou polygonovou s´ıt’, kter´abude tento otvor vyplˇnovat. Na tuto novˇevytvoˇrenou s´ıt’ lze aplikovat tmav´ymateri´al,kter´ypohlcuje svˇetlo.V m´ıstech kde by bylo moˇzn´evidˇet dovnitˇrrobota tedy bude tma. Tento pˇr´ıstup by znamenal, ˇzeby se musela tato nov´apolygonov´as´ıt’ v´azatna existuj´ıc´ıokraje. Okraj m´anepravideln´y tvar a kv˚ulitopologii robota nebude moˇzn´epro vytvoˇren´ıt´etos´ıtˇepouˇz´ıvat vˇetˇsinu ulehˇcuj´ıc´ıch n´astroj˚ua funkc´ı v programu Blender. Z´aroveˇnby se t´ımto zp˚usobem pˇridalado modelu dalˇs´ıgeometrie. Druh´yzp˚usobje existuj´ıc´ı ˇc´astiposunout a ohnout tak, aby nebylo moˇzn´edo robota vidˇet.Prakticky to znamen´aohnout a zap´ıchnout“ okraje do kulat´ehokloubu. Takto posouvat ” jednotliv´evrcholy by pˇrihustotˇepolygonov´es´ıtˇerobota nebylo pˇrijateln´e.

Blender umoˇzˇnujeaktivovat takzvan´eproporcion´aln´ıeditov´an´ı (propor- tional editing). To znamen´a,ˇzetransformace vybran´eˇc´astipolygonov´es´ıtˇe z´aroveˇntransformuje oblast v okol´ıt´etoˇc´asti.Uˇzivatel m˚uˇze napˇr´ıkladvybrat jeden vrchol a s n´ımpohybovat. Vˇsechny okoln´ıvrcholy ve zvolen´emrozsahu se budou pohybovat relativnˇek vybran´emu vrcholu. V z´akladn´ımnastaven´ı plat´ı,ˇzeˇc´ımbl´ıˇzejsou tyto vrcholy ke zvolen´emu vrcholu, t´ımv´ıce jsou jeho pohybem ovlivˇnov´any, viz obr´azek3.3. Dalˇs´ı moˇznostijsou napˇr´ıklad kon- stantn´ıovlivnˇen´ı,line´arn´ıovlivnˇen´ınebo n´ahodn´eovlivnˇen´ı.Nev´yhodou t´eto metody je, ˇzeje snazˇs´ı dopustit se chyby a vynechat m´ısto, ze kter´ehoje v extr´emn´ım´uhlust´alevidˇetdovnitˇrrobota. Druhou nev´yhodou je, ˇzet´ımto doch´az´ık natahov´an´ıtextur. Pouˇzit´ımproporcion´aln´ıhoeditov´an´ıse textura natahuje na v´ıcepolygonech v menˇs´ımmˇeˇr´ıtku,ˇc´ımˇzje deformace m´enˇevidi- teln´a.Z´aroveˇnz anal´yzy modelu vypl´yv´a,ˇzev m´ıstech kloub˚unem´atextura pˇr´ıliˇsspecifick´edetaily. V´yhodou je, ˇzese t´ımto zp˚usobem nepˇrid´av´ado mo- delu ˇz´adn´adalˇs´ıgeometrie. Pokud bude deformace textury pˇr´ıliˇsviditeln´a,d´a se zamaskovat ´upravou samotn´etextury.

32 3.3. Uprava´ modelu

Obr´azek3.3: Proporcion´aln´ıeditov´an´ıv programu Blender

3.3.4 Uprava´ textur

Pro novˇevytvoˇren´eˇc´astibude tˇreba vytvoˇritnovou texturu. Z´aroveˇnaby pˇrechod vypadal pˇresvˇedˇcivˇe,bude tˇrebaupravit i origin´aln´ıtexturu robota v m´ıstech, kde se napojuje na novˇevytvoˇren´eˇc´asti.Nov´atextura bude m´ıt svoji vlastn´ıUV mapu, na kterou se rozbal´ınovˇevytvoˇren´eˇc´asti.Textura mus´ım´ıtdostateˇcn´erozliˇsen´ı,aby na n´ıbylo moˇzn´ezaznamenat dostateˇcnˇe drobn´edetaily.

Texturu lze upravovat nez´avislev programech pro ´upravu rastrov´egrafiky, nebo pomoc´ı n´astroj˚upˇr´ımo v programu Blender. Aˇckoliv programy jako Photoshop nebo Gimp obsahuj´ı v´ıce a lepˇs´ıch n´astroj˚upro takov´e´upravy, probl´emje v tom, ˇzenelze interaktivnˇepozorovat zmˇeny na modelu. Textury se mus´ıukl´adata n´aslednˇev programu Blender obnovovat.

Pokud se ´upravy prov´ad´ıpˇr´ımov programu Blender, lze vidˇetv re´aln´em ˇcase,jak se zmˇeny projevuj´ına modelu. Blender obsahuje prostˇred´ıpro ´upravu textur zvan´e Texture Paint. Nejuˇziteˇcnˇejˇs´ın´astroj pro tento ´ukol bude klono- vac´ıraz´ıtko Clone. T´ımto n´astrojem lze klonovat existuj´ıc´ıˇc´asttextury z jedn´e ˇc´astimodelu na jinou ˇc´ast modelu. V pˇr´ıpadˇemodelu robota lze klonovat z origin´aln´ıch ˇc´ast´ıkloubu na dotvoˇren´eˇc´asti.Bˇehemtohoto procesu dojde z´aroveˇnk ´upravˇeorigin´aln´ıtextury robota v m´ıstech pˇrechodu na dotvoˇren´e ˇc´astikloubu.

V [42] je uvedeno, ˇzegrafick´eprocesory rozdˇeluj´ı objekty pˇredvykres- lov´an´ım na z´akladˇe materi´al˚una separ´atn´ı ˇc´asti,kter´e jsou vykreslov´any zvl´aˇst’, coˇzvede k tomu, ˇzeje potˇrebav´ıcevykreslovac´ıch vol´an´ı (tzv. draw calls), coˇztypicky zhorˇsuje v´ykon. V Unity je doporuˇcenodle [43] pro zlepˇsen´ı v´ykonu kombinovat v´ıcetextur do jedn´es vˇetˇs´ımrozliˇsen´ım.V pˇr´ıpadˇemo- delu robota to znamen´azkombinovat origin´aln´ıtexturu a dotvoˇrenoutexturu kloub˚u. Blender obsahuje pro tyto ´uˇcelyfunkci pro zap´ek´an´ıtextur (texture baking), zm´ınˇenouv sekci 2.1.6.

33 3. Analyza´ a navrh´

3.3.5 Level of Detail

Jelikoˇzje model sloˇzenz vysok´ehopoˇctupolygon˚u,mohl by zp˚usobovat v apli- kaci spuˇstˇen´ena m´enˇev´ykonn´emhardwaru pokles v´ykonu, coˇzm˚uˇzem´ıtza n´asledeknapˇr´ıkladsn´ıˇzenousn´ımkovou frekvenci. Z toho d˚uvodu se pro mo- dely vytv´aˇr´ıv´ıcestupˇn˚udetailu, viz sekce 2.1.3 Proto bude pro model vytvoˇren´adruh´averze, sloˇzen´az menˇs´ıhopoˇctu polygon˚u,kter´abude v aplikaci vyuˇzit´am´ıstoorigin´aln´ıhomodelu s hustou polygonovou s´ıt´ı.Z´aroveˇnby se na nov´emmodelu mˇelozachovat co nejv´ıcede- tail˚u.V ide´aln´ımpˇr´ıpadˇeby tato nov´averze nemˇelab´ytvizu´alnˇerozeznateln´a od origin´alu. Blender umoˇzˇnujevytvoˇritniˇzˇs´ıstupeˇndetailu bud’ manu´alnˇepomoc´ımo- delovac´ıch technik nebo pouˇzit´ımdecimaˇcn´ıch algoritm˚u. Vzhledem k tomu, ˇzepˇridˇelen´ymodel se skl´ad´az rigidn´ıch ˇc´ast´ıa nedoch´az´ıu nˇejk deformaci k˚uˇze,je decimace dostaˇcuj´ıc´ıˇreˇsen´ı. Decimace modelu zp˚usob´ıdeformaci textury, takˇzebude tˇrebaj´ıopravit. Toho bude moˇzn´edoc´ılitzapeˇcen´ımnedeformovan´ych textur z origin´aln´ıverze modelu s hustou polygonovou s´ıt´ı.

3.3.6 Kostra

C´ılemt´etoˇc´astije vytvoˇritkostru a ovladac´ıprvky pro robota, kter´edovol´ı jednoduch´ea z´aroveˇnflexibiln´ıovl´ad´an´ı.Dobr´akostra by mˇelab´ytpˇrehledn´a a ulehˇcitvytv´aˇren´ıanimac´ıpomoc´ıdalˇs´ıch ovl´adac´ıch prvk˚u.Pro pˇrehlednost lze mˇeniti vzhled a barvy tˇechto ovladac´ıch prvk˚u. V programu Blender, jsou ovl´adac´ıprvky postavy prim´arnˇekosti. To zna- men´a,ˇzekosti nejsou jen uvnitˇrtˇelaa neurˇcuj´ıpouze anatomickou strukturu postavy. Jako pˇr´ıklad m˚uˇzeb´ytkoˇrenov´akost (root bone), kter´ase nˇekdy umist’uje na zem mezi nohy postavy a pomoc´ıt´etokosti se h´ybe s celou posta- vou. Dalˇs´ıpˇr´ıkladje ovl´adac´ıprvek, kter´yurˇcujec´ıl,kter´ypostava pozoruje. To by mohlo b´ytˇreˇsenokost´ıum´ıstˇenoupˇredpostavou. Oˇciby n´aslednˇemˇely nastaven´eomezen´ı,kter´eby jejich rotaci mˇenilotak, aby se d´ıvaly na tuto kost. Aplikace tˇechto omezen´ılze v programu Blender tak´eanimovat, takˇze by bylo moˇzn´epˇrep´ınatmezi manu´aln´ımanipulac´ıoˇc´ıa pozorov´an´ımjin´ych objekt˚u. Na ovl´ad´an´ıveˇsker´ych jednotliv´ych ˇc´ast´ıkostry by staˇcilo14 kost´ı,jelikoˇz z tolika rigidn´ıch ˇc´ast´ıse skl´ad´a.Avˇsakkv˚ulinastaven´ıv Unity, kter´ebude zm´ınˇenov kapitole 3.4 o v´yvoji aplikace, bude nutn´evytvoˇritv torsu jednu kost nav´ıc,dˇel´ıc´ıtorso na p´aneva p´ateˇr,kter´anebude ovl´adatˇz´adnouˇc´astro- bota (nebude m´ıtve skinningu pˇriˇrazen´eˇz´adn´evrcholy). Tyto kosti se oznaˇcuj´ı jako deformaˇcn´ıkosti, protoˇzeu model˚u,u kter´ych je potˇrebazajiˇst’ovat ohyb k˚uˇzepˇr´ımozp˚usobuj´ıdeformaci polygonov´es´ıtˇe. Kv˚ulipˇrehlednostia dˇelen´ı funkcionality se nedoporuˇcujeanimovat po- moc´ı deformaˇcn´ıch kost´ı, takˇzebude vhodn´evytvoˇritdalˇs´ı dvˇesady kost´ı

34 3.4. Animace a v´yvoj aplikace konˇcetin,pro dopˇrednou a inverzn´ı kinematiku, tedy dalˇs´ıch 24 kost´ı. De- formaˇcn´ıkosti konˇcetin mohou n´aslednˇekop´ırovat polohu kost´ıvybran´eki- nematiky, coˇzumoˇzn´ıpˇrep´ınatmezi ovl´ad´an´ımpomoc´ıdopˇredn´ea inverzn´ı kinematiky. Inverzn´ıkinematika z´aroveˇnpro kaˇzdoukonˇcetinu vyˇzadujedalˇs´ıdvˇekosti jako ovladac´ıprvky. Jedna slouˇz´ıjako koncov´yefektor a typicky je tedy na konci konˇcetiny. Druh´aslouˇz´ıpro specifikaci orientace, kudy se ˇretˇezeckost´ı oh´yb´apo cestˇek c´ıli.V programu Blender se t´etokosti ˇr´ık´a pole target bone a u humanoidn´ıch postav urˇcujesmˇerzlomu v oblasti lokt˚ua kolen. Pro pˇrep´ın´an´ımezi kinematikami lze vyuˇz´ıtdrivery na kostn´ıch omezen´ıch (bone constraints). U omezen´ılze definovat hodnotu vlivu tˇechto omezen´ına danou kost. Tato hodnota je v intervalu nula aˇzjedna, kde nula znamen´a,ˇze omezen´ıkost neovlivˇnujev˚ubec. Jedniˇckanaopak znamen´a,ˇzekost dodrˇzuje omezen´ı na sto procent. Tuto hodnotu vlivu lze mˇenitpomoc´ı zm´ınˇen´ych driver˚upomoc´ıdefinovan´ych vzorc˚u.V tomto pˇr´ıpadˇebude staˇcit,aby byly definovan´evlastn´ıvlastnosti (v programu Blender takzvan´e Custom Proper- ties) ve formˇejednoduch´ych parametr˚us hodnotou nula aˇzjedna, kter´epˇr´ımo ovl´adaj´ıhodnotu vlivu omezen´ı. V posledn´ıˇradˇebude vhodn´ekosti od sebe barevnˇeoddˇelit podle funkcio- nality. Pro pˇrehlednostm˚uˇze b´ytuˇziteˇcn´ei vytvoˇritvlastn´ımodely pro vizua- lizaci kost´ı.Volitelnˇelze i barevnˇeoddˇelitkosti lev´ych a prav´ych konˇcetin,aby bylo na prvn´ıpohled zˇrejm´e, jakou konˇcetinouanim´atorpohybuje i z boˇcn´ıho pohledu.

3.4 Animace a v´yvoj aplikace

V´yvoj aplikace bude prov´adˇenv Unity verze 2019.3.4f1.

3.4.1 Import modelu Aˇckoliv lze do Unity importovat cel´ysoubor s pˇr´ıponou blend (nebo napˇr´ıklad pˇr´ıpony max z programu 3ds Max, atd.), tento postup nen´ı doporuˇcov´an. Unity tento typ souboru pˇrev´ad´ıdo form´atufbx jako souˇc´astimportovac´ıho procesu. Pro tento proces je zapotˇreb´ım´ıtna dan´empoˇc´ıtaˇcinainstalovan´y koresponduj´ıc´ı3D modelovac´ısoftware, nebo projekt nebude moˇzn´eotevˇr´ıt. Z´aroveˇnt´ımto zp˚usobem nelze ovl´adat,jak´eˇc´astibudou importov´any a soubor m˚uˇzeobsahovat zbyteˇcn´adata. Animovan´epostavy se nejˇcastˇejido Unity importuj´ıv souborech form´atu fbx. Blender umoˇzˇnujeexportovat postavy i jejich animace v tomto form´atu. Z´aroveˇnlze exportovat model a jednotliv´eanimace v oddˇelen´ych souborech. Animovan´epostavy mohou v Unity vyuˇz´ıvat tˇrianimaˇcn´ısyst´emy. Syst´em Legacy“, kter´ybyl vyvinut´yv dˇr´ıvˇejˇs´ıch verz´ıch Unity a nedoporuˇcujese ” pouˇz´ıvat. V´yjimkou je vyuˇzit´ı kv˚ulizpˇetn´e kompatibilitˇe ve starˇs´ıch pro- jektech. Druh´ysyst´emje Generic“, kter´yslouˇz´ıpro animaci vˇsech postav, ” 35 3. Analyza´ a navrh´ kter´enemaj´ıhumanoidn´ıstrukturu. Pro tyto modely je tˇrebaurˇcitkoˇrenov´y kloub (root bone). Pro humanoidn´ıtypy existuje syst´em Humanoid“. Unity ” pro reprezentaci humanoidn´ıch postav vyuˇz´ıv´agenerickou humanoidn´ıkostru. Importovan´epostavy je tˇrebanamapovat na tuto generickou kostru. Toto umoˇzˇnujepomoc´ıautomatick´eho animation retargeting pouˇz´ıvat jednu sadu animac´ıpro jakoukoliv humanoidn´ıpostavu. Toto mapovac´ırozhran´ıse v Unity naz´yv´a Avatar. Aby bylo moˇzn´evyuˇz´ıvat humanoidn´ısyst´em,mus´ıkloubov´a soustava splˇnovat n´asleduj´ıc´ıstrukturu:

• kyˇcel → p´ateˇr → hrud’ → horn´ıhrud’ → krk → hlava

• hlava → oko

• hlava → ˇcelist

• kyˇcel → horn´ınoha → spodn´ınoha → chodidlo → prsty

• hrud’ → ramena → paˇze → pˇredlokt´ı → ruka

• ruka → proxim´aln´ı → stˇredn´ı → dist´aln´ı

Hrud’, horn´ıhrud’, ramena, prsty, krk, oˇci a ˇcelistjsou nepovinn´e.Z´aroveˇn lze m´ıtv´ıcekost´ıneˇzjsou zde definovan´e,napˇr´ıkladpokud by p´ateˇrmˇelab´yt sloˇzenaz v´ıcekost´ı.Tyto kosti ale nebudou animov´any, budou drˇzetpozici relativn´ıke sv´erodiˇcovsk´ekosti. Z´aroveˇnlze vyuˇz´ıti dalˇs´ıkosti, napˇr´ıklad pro animaci doplˇnk˚unebo ˇc´ast´ı odˇevu.Na to je potˇrebavyuˇz´ıt animaˇcn´ı masky, ve kter´ych je tˇrebatyto kosti u jednotliv´ych animac´ıaktivovat. V´yhody humanoidn´ıhosyst´emu jsou n´asleduj´ıc´ı:

• Pomoc´ı animation retargeting lze vyuˇz´ıthumanoidn´ıanimace na libo- volnou humanoidn´ıpostavu. Z toho plyne, ˇzesi v´yvoj´aˇrm˚uˇzezakoupit nebo st´ahnoutsady animac´ıa aplikovat je na svoji vlastn´ıhern´ıpostavu nebo naopak aplikovat sv´evlastn´ıanimace na staˇzenoupostavu.

• Implementovan´ainverzn´ıkinematika pro ruce a nohy. Pomoc´ıskript˚u staˇc´ızapnout v´ypoˇcetinverzn´ıkinematiky na konˇcetinˇea nastavit c´ılovou polohu a rotaci.

• Moˇznostzrcadlen´ıanimac´ı(napˇr´ıkladch˚uzidoprava zrcadlit a t´ımvy- tvoˇritch˚uzidoleva).

• Moˇznostpozorov´an´ım´ıstaˇciobjektu. Pˇresskriptov´an´ılze nastavit, jak moc se pˇripozorov´an´ı zapojuje tˇelo,hlava a oˇci.Z´aroveˇnlze omezit pozorovac´ırozsah.

36 3.4. Animace a v´yvoj aplikace

3.4.2 Animace

Animace, kter´ebudou vyuˇz´ıv´any v aplikaci, se daj´ıvytv´aˇretdvˇemazp˚usoby. V prvn´ımse postava pohybuje pomoc´ıskript˚uv ovladaˇc´ıch a jej´ıstav urˇcuje, jak´aanimace se pˇrehr´av´a.Stav m˚uˇze b´ytnapˇr´ıklad poloha nebo rychlost. Takov´aanimace se vytv´aˇr´ına m´ıstˇea koˇrenov´akost se nepohybuje, z ˇcehoˇz plyne jej´ın´azev in-place. Napˇr´ıkladpˇrianimaci ch˚uzenohy klouˇzoupo podlaze a postava se nepohybuje dopˇredu– pohyb bude urˇcenaˇzpomoc´ık´odu. Druh´yzp˚usob je takzvan´ykoˇrenov´ypohyb (root motion). V t´etoanimaci je proces opaˇcn´y.Animace se vytv´aˇr´ıs pohybem koˇrenov´ekosti a h´ybe se s celou postavou. V aplikaci je n´aslednˇepohyb postavy urˇcenpohybem koˇrenov´ekosti v animaci. Oba pˇr´ıstupy maj´ı sv´apozitiva i negativa. Root motion obecnˇep˚usob´ı vizu´alnˇel´epe, protoˇzenedoch´az´ınapˇr´ıkladk takzvan´emu klouz´an´ıchodidel (foot sliding), kdy nastaven´arychlost postavy nen´ısynchronizovan´as rychlost´ı animace a lze vidˇet,jak nohy klouˇzoupˇri animaci po podlaze. Na druhou stranu je sloˇzitˇejˇs´ıa m´enˇeintuitivn´ıpohyb upravovat, protoˇze nen´ıˇr´ızenˇcistˇepˇresk´od. Postavy mohou p˚usobitm´enˇeresponzivnˇea hr´aˇc˚um m˚uˇzepˇripadat,ˇzena ovl´adan´ıreaguj´ıh˚uˇrnebo opoˇzdˇenˇe.Tyto dva pˇr´ıstupy lze i vz´ajemnˇekombinovat tak, ˇzenˇekter´eanimace vyuˇz´ıvaj´ıprvn´ızp˚usoba nˇekter´edruh´yzp˚usob. Z osobn´ıpreference a moˇznostil´epe pohyb ovl´adatpomoc´ık´oduv t´eto pr´acibude vyuˇz´ıv´anzp˚usob in-place. Tyto dva pˇr´ıstupy jsou na sebe z´aroveˇn pˇrevoditeln´e,aˇckoliv pˇrevod z in-place animac´ı na root motion je o nˇeco sloˇzitˇejˇs´ı,jelikoˇzanim´atormus´ıpˇridatinformaci o poloze koˇrenov´ekosti, na rozd´ılod opaˇcn´ehopˇrevodu, kde tuto informaci staˇc´ıvymazat. Blender obsahuje prostˇred´ıpro vytv´aˇren´ıanimac´ı Animation. Jednotliv´e animace jsou zaznamen´av´any jako takzvan´eakce (Action). Kl´ıˇcovat se daj´ı transformace kost´ıa jejich podˇc´asti.Jelikoˇzse typicky nemˇen´ımˇeˇr´ıtko kost´ı, do kl´ıˇcov´ych sn´ımk˚use ukl´ad´apozice a rotace, vyj´adˇrenajako 6 ˇc´ısel.Tˇripro pozici a tˇripro rotaci v Eulerov´ych ´uhlech. Kromˇep´ozov´an´ıa ukl´ad´an´ısn´ımk˚ulze jednotliv´ehodnoty i mazat ˇciupra- vovat (napˇr´ıkladodstranit posunut´ıv ose x na tˇret´ımkl´ıˇcov´emsn´ımku).Jed- notliv´ehodnoty i cel´ekl´ıˇcov´esn´ımkylze i posouvat po ˇcasov´eose, kop´ırovat a pro osovˇesoumˇern´emodely zrcadlit. V n´asleduj´ıc´ıˇc´astije uveden popis jednotliv´ych animac´ı,vybran´ych pro implementaci a vyuˇzit´ıve v´ysledn´eaplikaci. Z´aroveˇnje pops´anstruˇcn´yn´avrh jejich tvorby.

3.4.2.1 T-pose

Aˇckoliv se nejedn´apˇr´ımoo pohyb, bude vhodn´evytvoˇritanimaci s jedn´ım kl´ıˇcov´ymsn´ımkem s robotem ve sv´ez´akladn´ıT-pose. V t´etop´ozebude mo- del importov´ana znaˇc´ı, ˇzepostava neprov´ad´ı ˇz´adnouanimaci. Do Unity

37 3. Analyza´ a navrh´ je doporuˇcov´anohumanoidn´ıpostavy importovat v T-pose kv˚uliintern´ımu animation retargeting procesu. Unity umoˇzˇnujepˇrevod importovan´ep´ozydo T-pose automaticky, ale kv˚ulichyb´am,kter´emohou vzniknout pˇrivytv´aˇren´ı kostry se m˚uˇzest´at,ˇzese t´ımto procesem ˇc´asttˇelapˇretoˇc´ıve ˇspatn´eose.

3.4.2.2 Neˇcinnost

Takzvan´a idle animace, pˇri kter´ebude robot st´atv neˇcinnostina m´ıstˇe.Tuto animaci lze obohatit jemn´ymkol´ıs´an´ımp´anve, aby model nebyl kompletnˇesta- cion´arn´ı.Ve hr´ach maj´ıˇcastopostavy v´ıceneˇcinn´ych animac´ı,kter´eobsahuj´ı sekund´arn´ıanimace. Postava se pak m˚uˇzepo chv´ılineˇcinnostirozhl´ednout, podrbat, apod.

3.4.2.3 Ch˚uze a bˇeh

Obˇetyto animace budou cyklick´e,ˇciliposledn´ı kl´ıˇcov´ysn´ımek mus´ı nava- zovat na prvn´ı.Postava v t´etoanimaci tedy udˇel´adva kroky. Na to se per- fektnˇehod´ımoˇznostkop´ırovat kl´ıˇcov´esn´ımky. Pro vytvoˇren´ıjednoho kroku lze poˇc´ateˇcn´ısn´ımekzkop´ırovat a zrcadlit do posledn´ıhosn´ımku,pot´elze upravit pˇrechod postupn´ympˇrid´av´an´ımsn´ımk˚umezi poˇc´ateˇcn´ıma koncov´ym.Jeden vytvoˇren´ykrok se d´apot´eopˇetcel´yzrcadlit a posledn´ıkl´ıˇcov´ysn´ımek,kter´y je stejn´yjako ´uplnˇepoˇc´ateˇcn´ı,se odˇr´ızne.T´ımse zaruˇc´ıplynul´eopakov´an´ı animace.

3.4.2.4 Zam´av´an´ı

V t´etoanimaci robot jednou rukou zam´av´a.Z´aroveˇntuto animaci bude moˇzn´e kombinovat s ostatn´ımi animacemi pro pohyb. Tento proces je vysvˇetlen´y v sekci 2.3.7. Unity nab´ız´ıprim´arnˇedva pˇr´ıstupy, kter´efunguj´ına principu vytvoˇren´ı masky vybran´ych kost´ı, viz obr´azek3.4. Pomoc´ı t´etomasky lze pˇrehr´avat na ˇc´astitˇela,kterou maska pokr´yv´a,jinou animaci neˇzna zbytku postavy. Touto animac´ılze bud’ pˇrepsataktu´aln´ıanimaci na zbytku tˇela,nebo j´ı aplikovat aditivnˇek aktu´aln´ı animaci. Toho se hojnˇevyuˇz´ıv´anapˇr´ıklad v takzvan´ych stˇr´ıleˇck´ach, kde jsou k animac´ımch˚uzea bˇehu pˇrid´any animace drˇzen´ıjednotliv´ych zbran´ı,animace stˇrelby, nabit´ı,apod. Masek lze vyuˇz´ıtsouˇcasnˇev´ıce.Kaˇzd´amaska m´az´aroveˇnsvoji v´ahu v roz- mez´ı0 aˇz1, kter´aurˇcuje,jak moc ovlivˇnuje celkovou animaci. Plynul´ypˇrechod t´etov´ahy zaruˇc´ıplynul´ypˇrechod mezi hlavn´ıanimac´ıa animac´ıaplikovanou na masku. T´ımto zp˚usobem bude moˇzn´espouˇstˇetanimaci zam´av´an´ıjak v neˇcinnosti, tak za ch˚uzeˇci bˇehu. Z´aroveˇnse pˇrivytv´aˇren´ıt´etoanimace staˇc´ısoustˇredit pouze na ˇc´astitˇelarobota, kter´ebudou pokryty maskou, tedy jedna ruka, pˇr´ıpadnˇehlava a trup.

38 3.4. Animace a v´yvoj aplikace

Obr´azek 3.4: Zjednoduˇsen´e vytv´aˇren´ı masky pro humanoidn´ı postavy v Unity [38]

3.4.2.5 Skok

Pokud je skok vyuˇz´ıv´anve hˇre,kde postava mus´ıinteraktivnˇereagovat na sv´e prostˇred´ıa na uˇzivatelsk´yvstup, je animace skoku postavy z´avisl´ana nˇekolika faktorech. Napˇr´ıkladrychlost postavy pˇrizah´ajen´ıskoku, tedy z´avislostna tom, jestli postava pˇriskoku stoj´ı,chod´ıˇcibˇeˇz´ı.D´alejak se m´apostava ze skoku zotavit, coˇzz´aleˇz´ınapˇr´ıklad na tom, z jak´ev´yˇskypostava skoˇcila. Cel´yskok lze obecnˇerozdˇelitna tˇristavy:

• pˇr´ıprava na skok a odraz ze zemˇe,

• let a voln´yp´ad,

• dopad na zem a zotaven´ı.

Pro tyto stavy je vhodn´evytvoˇritoddˇelen´eanimace kter´ese v pr˚ubˇehu skoku mezi sebou m´ıchaj´ı. T´ımzp˚usobem lze interaktivnˇereagovat na stav postavy. Napˇr´ıkladpokud postava z objektu spadne, pˇreskoˇc´ıse stav pˇr´ıpravy na skok. Pokud postava pad´az velik´yv´yˇsky, animace voln´ehop´aduse m˚uˇze pˇrehr´ati nˇekolikr´at,dokud postava nedopadne na zem. Pro tyto stavy lze vytvoˇriti v´ıceanimac´ı,napˇr´ıkladpˇr´ıprava na skok ve stoje a pˇr´ıprava na skok v bˇehu. Animace v letu lze dˇelitna z´akladˇetoho, jestli postava skoˇcilanebo spadla, nebo na z´akladˇev´yˇsky, ze kter´epostava pad´a,apod. Moment dopadu lze napˇr´ıkladdetekovat pomoc´ıkoliz´ıpostavy s podlahou nebo pomoc´ıvys´ıl´an´ıpaprsk˚usmˇeremk zemi a dopoˇc´ıt´av´an´ım´ısta a ˇcasudopadu na z´akladˇevzd´alenosti,rychlosti a smˇeru.

39 3. Analyza´ a navrh´

3.4.3 Design prostˇred´ı Prostˇred´ıbude obsahovat objekty, pomoc´ıkter´ych bude moˇzn´edemonstrovat implementovan´eprocedury. Pro demonstraci adaptace pohybu na nerovnost povrchu lze vytvoˇritnahnut´eploˇsiny, schody, boule, apod. Z objekt˚u,na kter´e schody a ploˇsiny vedou lze demonstrovat skok a voln´yp´ad. Tyto objekty lze bud’ vytvoˇritvlastnoruˇcnˇenebo zadarmo st´ahnoutjednu z mnoha vytvoˇren´ych sad objekt˚uz Asset store. Aplikace z´aroveˇnbude obsahovat menu, pomoc´ıkter´ehobude moˇzn´ehru pozastavit a zobrazit ovl´ad´an´ı.

3.4.4 Pohyb a ovl´ad´an´ı Vzhledem k vytvoˇren´ymanimac´ım bude vytvoˇrenoovl´ad´an´ı, kter´eumoˇzn´ı jednotliv´eanimace demonstrovat. Proto bude vytvoˇren´akomponenta ve formˇe skriptu, kter´abude pˇripojena k postavˇe. Tato komponenta bude spolupracovat s animaˇcn´ıkomponentou ” component“, kter´aslouˇz´ıpro spr´avua pˇrehr´av´an´ıanimac´ıpostavy. Animaˇcn´ı komponenta funguje na z´akladˇestavov´ehostroje, kde stavy tvoˇr´ıjednotliv´e animace. Pˇrechody mezi stavy mohou b´ytz´avisl´ena hodnot´ach promˇenn´ych, kter´elze mˇenitnapˇr´ıkladze skript˚u.Z´aroveˇnanimaˇcn´ıkomponenta zaruˇcuje m´ıch´an´ıa pˇrechod animac´ı.V pˇrechodech mezi stavy lze animace pˇrekr´yvat, coˇzzp˚usob´ıplynul´ypˇrechod animac´ı.Dalˇs´ımuˇziteˇcn´ymn´astrojem jsou m´ıchac´ı stromy (blend trees), kter´ena z´akladˇejednoho ˇciv´ıceparametr˚um´ıchaj´ıani- mace dohromady. M´ıchac´ıstrom m˚uˇzenapˇr´ıkladpˇrehr´avat animaci neˇcinnosti pˇrihodnotˇeparametru 0, ch˚uzis hodnotou 1 a bˇehs hodnotou 2. Tento pa- rametr lze ze skript˚uplynule mˇenit,coˇzzp˚usob´ıplynul´ypˇrechod mezi tˇemito stavy. Nastaven´ımtohoto parametru napˇr´ıkladna hodnotu 1,5 vznikne ani- mace poklusu. Aˇckoliv animace vytvoˇren´et´ımto procesem nemus´ı vypadat dostateˇcnˇerealisticky. Komponenta ovl´adac´ıhoskriptu bude m´ıtn´asleduj´ıc´ıfunkce:

• Reagovat na uˇzivatelsk´yvstup a na z´akladˇetoho pohybovat s postavou.

• Zajiˇst’ovat gravitaci a kontrolovat, zda je postava na zemi ˇcive vzduchu.

• Mˇenitpromˇenn´e,na kter´ych jsou z´avisl´estavy animaˇcn´ıkomponenty. Toto zaruˇc´ızmˇenu animac´ıpostavy.

• Aplikovat inverzn´ıkinematiku pro rovn´an´ınohou na nerovn´empovrchu.

• Poskytovat v´yvoj´aˇrsk´erozhran´ıpro interaktivn´ızmˇenu nastaven´ıv´yˇse zm´ınˇen´ych funkcionalit.

Standardnˇeve hr´ach s postavami lze pohybovat pomoc´ıˇsipek a kl´aves WASD“. Smˇerlze urˇcit z kombinace tˇechto kl´aves. Pokud lze z´aroveˇnpohy- ” bovat s kamerou kolem postavy, ovl´ad´an´ıˇcistˇena z´akladˇekl´aves je neintui-

40 3.4. Animace a v´yvoj aplikace tivn´ı.Z tohoto d˚uvodu bude smˇerpohybu urˇcenkombinac´ırelativn´ıpozice kamery k postavˇea kl´aves.

D´alebude pomoc´ıkl´avesy moˇzn´eaktivovat bˇeh.Jelikoˇzse jedn´ao demon- straˇcn´ıaplikaci, ve kter´enen´ıprim´arn´ıc´ılrychl´ypohyb, bude postava bˇehat jen v moment, kdy hr´aˇcbude drˇzetkl´avesu pro bˇeh.Alternativou je pomoc´ı kl´avesy pˇrep´ınatch˚uzia bˇeh.

Zb´yv´aovl´ad´an´ıpro skok a zam´av´an´ı.U zam´av´an´ıje tˇrebazaruˇcit,aby se animace nedala spustit znovu, pokud jeˇstˇehraje. Podobnˇeu skoku je nutn´e zamezit tomu, aby postava skoˇcilave vzduchu.

3.4.5 Inverzn´ıkinematika

Pro humanoidn´ımodely lze vyuˇz´ıtintern´ıinverzn´ıkinematiku pˇr´ımov Unity. V´yvoj´aˇrmus´ınastavit polohu a rotaci koncov´ehoefektoru dan´ekonˇcetiny a v´ahu urˇcuj´ıc´ı, jak moc se m´aIK aplikovat. V´aham˚uˇzem´ıt hodnotu nula aˇzjedna. Jedniˇckaznaˇc´ıznaˇc´ıc´ılovou polohu/rotaci IK, zat´ımconula znaˇc´ı origin´aln´ıpolohu/rotaci.

Polohu lze z´ıskatnapˇr´ıkladpomoc´ısledov´an´ıpaprsku. Na pˇredpokl´adanou lokaci dopadu chodidla lze vyslat paprsek. M´ısto,kde protne paprsek povrch lze pouˇz´ıtjako c´ılovou lokaci. Pro rotaci lze pouˇz´ıtnorm´alupovrchu v m´ıstˇe dopadu paprsku. D´elkavyslan´ehopaprsku by mˇelab´ytomezen´a,aby byl c´ılv realisticky dosaˇziteln´evzd´alenostipostavy. Tento v´ypoˇcet lze prov´adˇet na kaˇzd´emsn´ımku urˇcen´ymsn´ımkovou frekvenc´ı aplikace nebo sn´ımkovou frekvenc´ıfyzik´aln´ıhosyst´emu Unity.

V´ahap˚usoben´ı nem˚uˇzez˚ustatcelou dobu s hodnotou 1, jelikoˇzby IK pˇrepisovala napˇr´ıkladzved´an´ınohy ze zemˇepˇrich˚uzi.Proto lze pro jednotliv´e animace definovat kˇrivky, kter´emohou v´ahu mˇenitv z´avislostina pr˚ubˇehu animace. V´ahu je vhodn´emˇenitplynule, jinak na animaci bude viditeln´asko- kov´azmˇena.Pˇripokl´ad´an´ınohy na zem se v´ahaplynule zv´yˇs´ına hodnotu 1 a pˇrizved´an´ınohy ze zemˇese opˇetplynule sn´ıˇz´ına 0.

Pro realistiˇctˇejˇs´ıv´ysledkym˚uˇzeb´ytvhodn´ez´aroveˇnupravit polohu p´anve postavy v z´avislostina vertik´aln´ızmˇenu v´yˇskynohou.

41 3. Analyza´ a navrh´

3.4.6 Kamerov´ysyst´em Dle [44] existuj´ıtˇriprim´arn´ızp˚usoby pozicov´an´ıkamery z pohledu tˇret´ıosoby, kter´ese vyuˇz´ıvaj´ıve 3D aplikac´ıch:

• Automatizovan´e,kter´eneumoˇzˇnuj´ı hr´aˇcis kamerou manipulovat, coˇz m˚uˇzeb´ytpro hr´aˇceomezuj´ıc´ı.

• Volnˇeovl´adan´ehr´aˇcem.Typicky se nastavuj´ıomezen´ı,aby se kamera nemohla dostat mimo hrac´ıpole, do neˇz´adouc´ıch ´uhl˚u, dovnitˇrobjekt˚u, apod.

• Hybridn´ısyst´em,kter´ykombinuje prvn´ıdva zp˚usoby. Prim´arn´ımani- pulace je automatizovan´a,ale hr´aˇcije umoˇznˇenodo jist´em´ırykameru ovl´adat.

Hybridn´ısyst´emobsahuje v´yhody obou dvou syst´em˚u.Prim´arn´ıpohyb kamery je automatizov´an,ˇc´ımˇzse zaruˇc´ı,ˇzehr´aˇcvid´ıjen to, co m´avidˇet. V tomto prostoru je hr´aˇciumoˇznˇenokameru do jist´em´ıryovl´adat,napˇr´ıklad kameru pˇribliˇzovat, oddalovat nebo ot´aˇcetkolem postavy. V´ybˇerkamerov´ehosyst´emu je individu´aln´ıpro kaˇzdouaplikaci/hru. Vzhle- dem k tomu, ˇzetato aplikace m´aza ´uˇceldemonstrovat animace, je d˚uleˇzit´e umoˇznithr´aˇcisi animace prohl´ednout z r˚uzn´ych ´uhl˚ua vzd´alenost´ı.Z toho d˚uvodu bude implementov´anhybridn´ıkamerov´ysyst´em.Kamera se bude po- hybovat s postavou. Hr´aˇcibude umoˇznˇenos kamerou toˇcitkolem postavy, pˇribliˇzovat ˇcioddalovat pohled a mˇenitstˇredz´ajmu (napˇr´ıklad se zamˇeˇrit na nohy postavy). Omezen´ızamez´ı,aby se kamera dostala mimo hrac´ıplo- chu, pod zem, dovnitˇrobjekt˚u,apod. Z´aroveˇnbude omezen´avzd´alenostma- xim´aln´ıhopˇribl´ıˇzen´ıa odd´alen´ıkamery.

42 Kapitola 4

Implementace

V t´etokapitole je pops´anproces ´upravy modelu, tvorba kostry, animovan´ıa vytv´aˇren´ıdemonstraˇcn´ıaplikace.

4.1 Model a textury

Model robota je rozdˇelen´yna 14 oddˇelen´ych ˇc´ast´ı.Trup, na kter´yje napojen´a hlava, ruce a nohy. Kaˇzd´akonˇcetina se skl´ad´aze tˇr´ıˇc´ast´ı,viz obr´azek4.1. Jednotliv´eklouby jsou domodelovan´ea upraven´etak, aby nebylo moˇzn´evidˇet dovnitˇrrobota. Domodelovan´eˇc´astirobota obsahuj´ı34 101 vrchol˚u.Jelikoˇzje vˇetˇsinaz do- tvoˇren´ych ˇc´ast´ıkloub˚uschovan´av d˚ulkuna kloub, bylo by moˇzn´etoto ˇc´ıslo d´aleredukovat decimaˇcn´ımialgoritmy bez z´asadn´ıhorozd´ıluve kvalitˇe. Pro model je dotvoˇren´atextura v m´ıstech, kde jsou domodelovan´eklouby. Na obr´azku4.2a je ˇc´astrobota bez dotvoˇren´etextury. Na obr´azku4.2b je stejn´aˇc´astrobota s dotvoˇrenou texturou. Ve v´ysledkum´amodel jeden materi´als jednou difuzn´ıtexturou, kter´am´a rozliˇsen´ı8192×8192. Textura je kombinac´ıdvou textur – upraven´eorigin´aln´ı textury vygenerovan´ez fotogrammetrie a dokreslen´etextury pokr´yvaj´ıc´ıdo- modelovan´eklouby. Byla vytvoˇren´apomoc´ıtechniky zap´ek´an´ıtextur, zm´ınˇen´e v kapitole 2.1.6. V´yslednoutexturu v mal´emrozliˇsen´ılze vidˇetna obr´azku4.3

43 4. Implementace

Obr´azek4.1: Robot s oddˇelen´ymiˇc´astmi

(a) Bez dotvoˇren´etextury (b) S dotvoˇrenoutexturou

Obr´azek4.2: Model s domodelovan´ymiklouby

44 4.2. Level of Detail

Obr´azek4.3: Zapeˇcen´atextura robota

4.2 Level of Detail

Pro model je vytvoˇren´adruh´averze s niˇzˇs´ımstupnˇemdetailu, kter´aje vyuˇzit´a v demonstraˇcn´ıaplikaci. Tato verze je sloˇzen´az pˇribliˇznˇe24 700 vrchol˚ua 48 000 troj´uheln´ık˚u.Jelikoˇzdecimace zp˚usobujedeformaci textury, je pro mo- del z´aroveˇnvytvoˇren´anov´atextura se stejn´ymrozliˇsen´ım. Na obr´azku4.4 lze vidˇet,ˇzejsou modely vizu´alnˇeprakticky nerozeznateln´e,pˇrestoˇzezjed- noduˇsen´ymodel obsahuje m´enˇeneˇz5 % z celkov´ehopoˇctuvrchol˚uorigin´aln´ıho modelu.

4.3 Kostra

Model m´avytvoˇrenoukostru, pomoc´ıkter´elze p´ozovat a animovat. Kostra obsahuje kontroln´ıkosti, deformaˇcn´ıkosti, kosti pro dopˇrednoukinematiku, kosti pro inverzn´ıkinematiku a c´ılov´ekosti pro v´ypoˇcetinverzn´ıkinematiky.

45 4. Implementace

Obr´azek4.4: Origin´aln´ımodel (vlevo) a model se sn´ıˇzen´ymstupnˇem detailu (vpravo)

Tyto skupiny kost´ımaj´ıv programu Blender pˇriˇrazen´erozd´ıln´ebarevn´e znaˇcen´ıpro zv´yˇsen´ıpˇrehlednosti.Barevn´eznaˇcen´ıje n´asleduj´ıc´ı: kontroln´ı – ˇzlut´e deformaˇcn´ı – bledˇezelen´e dopˇredn´a kinematika – ˇcerven´e inverzn´ı kinematika – fialov´e ovladaˇce inverzn´ı kinematiky – modr´e

Pro nˇekter´ekosti jsou z´aroveˇnvytvoˇren´evlastn´ımodely pro lepˇs´ıodliˇsen´ıa vizualizaci. Koˇrenov´akost je reprezentovan´akruhem s ˇsipkou, kter´aurˇcujeori- entaci modelu, ostatn´ıkontroln´ıkosti a kosti pro dopˇrednoukinematiku jsou reprezentov´any dvojic´ıkruˇznica ovladaˇce inverzn´ıkinematiky jsou reprezen- tov´any dr´atˇen´ymmodelem koule. Kostru lze vidˇetna obr´azku4.5. Vytvoˇrenou kostrou lze identicky p´ozovat obˇeverze modelu. Inverzn´ıkinematika je implementovan´astandardn´ım Blender zp˚usobem, tedy pˇreskostern´ıomezen´ı (IK Bone Constraint). Kaˇzd´akonˇcetinam´adva ovl´adac´ıprvky – jeden pro pozici koncov´ehoefektoru a druh´ypro orientaci kolen a lokt˚u.

46 4.4. Animace

Obr´azek4.5: Kostra robota

Deformaˇcn´ıkosti konˇcetinkop´ıruj´ıpolohu kost´ıinverzn´ıa dopˇredn´ekine- matiky. Mezi nimi je moˇznopˇrep´ınatpomoc´ıimplementovan´ehoovladaˇce.

4.4 Animace

Animace jsou vytvoˇreny v animaˇcn´ımsyst´emu, kter´yje implementov´anv pro- gramu Blender. Nˇekter´eanimace jsou vytvoˇreny pomoc´ıovladaˇc˚udopˇredn´ekinematiky a nˇekter´epomoc´ıinverzn´ıkinematiky. Z´aroveˇnjsou nˇekter´eanimace cyklick´e, coˇzznamen´a,ˇzese plynule opakuj´ı. To znamen´a,ˇzeposledn´ı sn´ımek mus´ı navazovat na prvn´ısn´ımek,nikoliv, ˇzejsou tyto sn´ımkystejn´e.Tyto detaily jsou pops´any v tabulce 4.1. Animace jsou vytvoˇreny zp˚usobem in-place, tedy na m´ıstˇe,protoˇzese po- hyb postavy implementuje v Unity pomoc´ıskript˚u.Tedy postava chod´ıi bˇeh´a na m´ıstˇea pˇriskoku nenab´ır´av´yˇsku.

4.5 Aplikace

Aplikace obsahuje z´akladn´ı hlavn´ı menu, ze kter´ehoje moˇzn´ehru spustit, zobrazit informace o projektu nebo aplikaci ukonˇcit.Po spuˇstˇen´ıhry m˚uˇze hr´aˇcovl´adat robota ve vytvoˇren´ejednoduch´esc´enˇe.

47 4. Implementace

Tabulka 4.1: Detaily vytvoˇren´ych animac´ı

Animace Poˇcetsn´ımk˚u Cyklick´a Kinematika T-pose 1 — — Idle 49 ano IK Walk 24 ano IK Run 12 ano IK Wave 40 ne FK Jump start 14 ne IK Jump mid 18 ano IK Jump land 17 ne IK

Obr´azek4.6: Sc´ena aplikace

Sc´enaobsahuje ˇradu objekt˚u,kter´eslouˇz´ıpro demonstraci animac´ı.Mezi objekty napˇr´ıkladpatˇr´ırampy, schody a hrbolat´ypovrch pro demonstraci in- verzn´ıkinematiky. Sc´enanem´aˇz´adn´y´ukol ani c´ıl.Sc´enu lze vidˇetna obr´azku4.6. Robot se ovl´ad´apomoc´ıvstup˚upopsan´ych v tabulce 4.2. Animaci zam´av´an´ı lze spustit v kombinaci se vˇsemiostatn´ımianimacemi, viz obr´azek 4.7. Pokud robot spadne ˇciseskoˇc´ız pˇr´ıliˇsvysok´ehoobjektu, pˇrehraje se animace dopadu. Pomoc´ıkl´avesy Escape se hra pozastav´ıa zobraz´ıse menu, ve kter´emsi hr´aˇc m˚uˇzezobrazit ovl´ad´an´ınebo se navr´atitdo hlavn´ıhomenu. Kameru lze myˇs´ıvolnˇepohybovat dokola kolem robota. Pomoc´ıkoleˇcka lze kameru pˇribliˇzovat ˇcioddalovat. Podrˇzen´ımprav´ehotlaˇc´ıtkav kombinaci s vertik´aln´ımposunut´ımmyˇsise mˇen´ıstˇred z´ajmu kamery. Kamerou nelze proj´ıtskrze zdi a ostatn´ıobjekty ve sc´enˇe. Inverzn´ıkinematika srovn´av´arobotovy nohy a trup v z´avislostina nerov-

48 4.5. Aplikace

Tabulka 4.2: Ovl´ad´an´ıaplikace

Ch˚uze ˇsipky/ WASD“ ” Bˇeh lev´yshift Skok mezern´ık Ovl´ad´an´ıkamery rotace – pohyb myˇs´ı pˇribl´ıˇzen´ı– koleˇcko vertik´aln´ıposunut´ı– RMB + pohyb myˇs´ı Zam´av´an´ı H Zapnut´ı/Vypnut´ıIK I Menu + pauza escape

Obr´azek4.7: M´ıch´an´ıanimac´ınohou s animacemi rukou nosti povrchu. Toho je doc´ılenovys´ıl´an´ımdvou paprsk˚uz pozice kaˇzd´enohy, jeden paprsek smˇeremkolmo do zemˇea druh´yve smˇerunorm´alyplochy, nad kterou je noha. Z norm´alya m´ıstdopadu paprsk˚use vypoˇc´ıt´ac´ılov´apozice a rotace koncov´ehoefektoru. Vyuˇzit´ıinverzn´ıkinematiky v aplikaci lze vidˇetna obr´azc´ıch 4.8, 4.9 a 4.10.

49 4. Implementace

Obr´azek4.8: Aplikace inverzn´ıkinematiky (pˇr´ıklad1)

50 4.5. Aplikace

Obr´azek4.9: Aplikace inverzn´ıkinematiky (pˇr´ıklad2)

Obr´azek4.10: Aplikace inverzn´ıkinematiky (pˇr´ıklad3)

51

Z´avˇer

C´ılempr´acebylo upravit 3D model robota pˇridˇelen´ehood vedouc´ıhopr´ace, aby byl vhodn´ypro animaci. N´aslednˇetomuto modelu vytvoˇritkostru, pomoc´ı kter´ebude moˇzn´emodel animovat. S touto kostrou vytvoˇritsadu animac´ıa nakonec vytvoˇrit jednoduchou aplikaci, kde tyto animace bude moˇzn´edemon- strovat. Model byl v programu Blender upraven tak, aby se dalo manipulovat s jeho individu´aln´ımiˇc´astmia p´ozovat ho. Pro usnadnˇen´ıp´ozov´an´ıbyla vytvoˇrena kostra, kter´am´ajak ovl´adac´ı a deformaˇcn´ı kosti, tak kosti pro dopˇrednou a inverzn´ıkinematiku. Mezi tˇemitosyst´emy je moˇzn´ese v programu Blen- der volnˇepˇrep´ınatpomoc´ıvytvoˇren´eho driveru. Z´aroveˇnbyla vytvoˇren´ajed- noduˇsˇs´ıverze modelu, s niˇzˇs´ımstupnˇemdetail˚u.Pro model byly vytvoˇreny animace z´akladn´ıp´ozy, ch˚uze,bˇehu, skoku a zam´av´an´ı.Tyto animace byly za- znamen´any pomoc´ıkl´ıˇcov´ych sn´ımk˚u.Animace s modelem byly exportov´any do hern´ıhoengine Unity, kde byla vytvoˇrenaaplikace. Aplikace obsahuje hlavn´ı menu, kde lze spustit hru, zobrazit informace o aplikaci nebo ji ukonˇcit.Ve hˇrem˚uˇzehr´aˇcpomoc´ıkl´aves chodit, bˇehata sk´akats postavou ve vytvoˇren´emprostˇred´ı,nebo spouˇstˇetanimaci zam´av´an´ı. V aplikaci je implementovan´ypohyb kamerou, kter´an´asledujepostavu a lze ovl´adatmyˇs´ı.Pomoc´ıprocedur´aln´ıinverzn´ıkinematiky se nohy postavy pˇrizp˚usobuj´ınerovnosti podlahy. Hru lze pomoc´ıdruh´ehomenu pozastavit, zobrazit ovl´ad´an´ınebo se vr´atitzpˇetdo hlavn´ıhomenu. V budoucnu by bylo moˇzn´epr´acirozˇs´ıˇritv nˇekolika smˇerech. Pro mo- del lze vytvoˇritv´ıceLoD. N´aslednˇeje v aplikaci moˇzn´eimplementovat jejich pˇrep´ın´an´ıv z´avislostina vzd´alenostiod kamery. Pro kostru je moˇzn´evyvi- nout Blender skript, kter´ypˇresune kosti IK do polohy kost´ıFK a naopak. To umoˇzn´ısnazˇs´ıkombinaci tˇechto pˇr´ıstup˚upˇrianimov´an´ı.Pro model lze vy- tvoˇritdalˇs´ıanimace, kter´elze n´aslednˇev aplikaci demonstrovat. Pˇr´ıkladem m˚uˇzeb´ytbojov´ysyst´emnebo pˇrekon´av´an´ıpˇrek´aˇzek.Syst´eminverzn´ıkine- matiky je moˇzn´evylepˇsitpro lepˇs´ıchov´an´ıv extr´emn´ıch ´uhlech, napˇr´ıklad vys´ıl´an´ımv´ıcepaprsk˚u.

53

Literatura

[1] CHOPINE, Ami. 3D art essentials: the fundamentals of 3D modeling, texturing, and animation. Boston: Elsevier/Focal Press, 2011. ISBN 978- 0240814711.

[2] ZEMAN, Nicholas Bernhardt. Essential Skills for 3D Modeling, Rende- ring, and Animation [online]. Boca Raton: CRC Press, Taylor & Francis, 2015 [cit. 2020-03-26]. ISBN 978-1-4822-2414-6.

[3] Structure – Blender Manual. Blender Documentation – blender.org [on- line]. [cit. 28.03.2020]. Dostupn´ez: https://docs.blender.org/manual/ en/latest/modeling/meshes/structure.html

[4] RATNER, Peter. Mastering 3D animation. 2nd ed. New York, NY: Allworth Press, 2004. ISBN 1-58115-345-7.

[5] HORMANN, Kai a Marco TARINI. A quadrilateral rendering primi- tive. In: Proceedings of the ACM SIGGRAPH/EUROGRAPHICS con- ference on Graphics hardware - HWWS ’04 [online]. New York, New York, USA: ACM Press, 2004, 2004, s. 7-14 [cit. 2020-03-26]. DOI: 10.1145/1058129.1058131. ISBN 3905673150. ISSN 17273471.

[6] ZˇARA,´ Jiˇr´ı,aj. Modern´ıpoˇc´ıtaˇcov´agrafika. 2., pˇreprac.a rozˇs. vyd. Brno: Computer Press, 2005. ISBN 80-251-0454-0.

[7] Triangulating before baking – Substance Bakers. [online]. [cit. 28.03.2020]. Dostupn´e z: https://docs.substance3d.com/bake/triangulating- before-baking-159451841.html

[8] Topology – 3D Modeling Resources. TurboSquid [online]. Co- pyright © TurboSquid 2017 [cit. 28.03.2020]. Dostupn´e z: https://www.turbosquid.com/3d-modeling/checkmate/checkmate- product-presentation/topology/

55 Literatura

[9] How to Identify Topology in 3D Animation. Lifewire [online]. [cit. 2020-03-28]. Dostupn´ez: https://www.lifewire.com/topology-in-3d- animation-2181

[10] Quad-Based Toplogy in Your 3D Model – 3D Modeling Re- sources. TurboSquid [online]. Copyright © TurboSquid 2017 [cit. 28.03.2020]. Dostupn´e z: https://www.turbosquid.com/3d-modeling/ training/modeling/quad-based-topology/

[11] Wunkolo [Do you have any good guides for topology when it. . .] In: Tumblr [online]. 9. ˇcervna 2015 [cit. 28.03.2020]. Dostupn´ez: https: //wunkolo.tumblr.com/post/121136952712

[12] HUGHES, John F. Computer graphics: principles and practice. 3rd ed. Upper Saddle River: Addison-Wesley, 2014. ISBN 978-0321399526. [13] ZACH, Christopher. Integration of geomorphing into level of detail ma- nagement for realtime rendering. In: Proceedings of the 18th spring confe- rence on Computer graphics - SCCG ’02 [online]. New York, USA: ACM Press, 2002, s. 115-122 [cit. 2020-03-26]. DOI: 10.1145/584458.584478. ISBN 1581136080. [14] KRS, Vojtˇech. Sculpting in Virtual Reality [online]. Czech Techni- cal University in Prague, 2014 [cit. 2020-03-26]. Dostupn´e z: https: //dcgi.fel.cvut.cz/theses/2014/krsvojte. Bachelor’s thesis. Czech Technical University in Prague, Faculty of Information Technology. [15] MODELING vs SCULPTING: how do you know which to use?. METHOD: J [online]. [cit. 2020-03-29]. Dostupn´e z: https:// www.methodj.com/modeling-vs-sculpting/

[16] Sketchfab Community Blog - How to retopologize 3D scans into low poly game assets. Sketchfab [online]. [cit. 28.03.2020]. Do- stupn´e z: https://sketchfab.com/blogs/community/retopologise- 3d-scans-low-poly-game-assets/

[17] What is Photogrammetry? Photogrammetry [online]. [cit. 2020-03-29]. Dostupn´ez: http://www.photogrammetry.com/ [18] LINDER, Wilfried. Digital Photogrammetry: A Practical Course [online]. 4. vyd´an´ı.Berlin: Springer, 2016 [cit. 2020-03-26]. ISBN 978-3-662-50463- 5. Dostupn´etak´ez: 10.1007/978-3-662-50463-5 [19] BARSANTI, Sara Gonizzi, Fabio REMONDINO a Domenico VISIN- TINI. Photogrammetry and Laser Scanning for Archaeological Site 3D Modeling - Some Critical Issues [online]. University of Trieste, 2012 [cit. 2020-03-29]. Dostupn´ez: http://citeseerx.ist.psu.edu/viewdoc/ summary?doi=10.1.1.416.9595.

56 Literatura

[20] FOSTER, Shaun a David HALBSTEIN. Integrating 3D Modeling, Photo- grammetry and Design [online]. London: Springer, 2014 [cit. 2020-03-26]. ISBN 978-1-4471-6329-9. Dostupn´etak´ez: 10.1007/978-1-4471-6329-9

[21] TRAMMELL, Kent. Big Idea: Baking“. In: Cgcookie.com [online]. ” 3. kvˇetna2016 [cit. 2020-05-04]. Dostupn´ez: https://cgcookie.com/ articles/big-idea-baking

[22] BEANE, Andy. 3D Animation Essentials. Wiley, 2012. ISBN 978-1-118- 14748-1.

[23] PARENT, Rick. : algorithms and techniques. San Francisco: Morgan Kaufmann Publishers, c2002. ISBN 978-1558605794.

[24] HODGINS, Jessica K., James F. O’BRIEN a Robert E. BODE- NHEIMER. Computer Animation [online]. Wiley, 1999 [cit. 2020- 03-26]. Dostupn´ez: http://www.vuse.vanderbilt.edu/˜bobbyb/pubs/ ency99.html

[25] JEPPSSON, Daniel. Realtime Blending Using Wei- ghted Skeleton Hierarchies [online]. Lund University, 2000 [cit. 2020- 03-26]. Dostupn´e z: http://fileadmin.cs.lth.se/graphics/theses/ reports/jeppsson_masterthesis.pdf. Master Thesis. Lund University, Faculty of Engineering.

[26] GREGORY, Jason. Game engine architecture. Third edition. Boca Ra- ton: Taylor & Francis, CRC Press, 2018. ISBN 9781138035454.

[27] Procedural Animation. The University of Texas at Dallas [online]. [cit. 2020-03-29]. Dostupn´ez: https://www.utdallas.edu/atec/midori/ Handouts/procedural_animation.htm

[28] JOHANSEN, Rune Skovbo. Automated Semi-Procedural Animation for Character Locomotion [online]. Aarhus University, 2009 [cit. 2020-03-26]. Dostupn´ez: http://runevision.com/thesis/. Master’s Thesis. Aarhus University, Department of Information and Media Studies.

[29]PE CENKA,ˇ Michal. 3D animace postavy v poˇc´ıtaˇcov´egrafice [online]. Vysok´e uˇcen´ı technick´e v Brnˇe, 2008 [cit. 2020-03-26]. Dostupn´e z: https://dspace.vutbr.cz/handle/11012/53224. Diplomov´apr´ace.Vy- sok´euˇcen´ıtechnick´ev Brnˇe,Fakulta informaˇcn´ıch technologi´ı.

[30] MUKUNDAN, Ramakrishnan. Advanced Methods in Computer Graphics: With examples in OpenGL [online]. London: Springer London, 2012 [cit. 2020-03-25]. ISBN 978-1-4471-2340-8. Dostupn´etak´ez: 10.1007/978-1- 4471-2340-8

57 Literatura

[31] KAVAN, Ladislav, Steven COLLINS, Jiˇr´ı ZˇARA´ a Carol O’SULLIVAN. Skinning with Dual Quaternions [online]. 2007 [cit. 2020-04-14]. Dostupn´e z: 10.1145/1230100.1230107

[32] WATT, Alan H. a Mark WATT. Advanced animation and rendering tech- niques: theory and practice. Reading, Mass.: Addison-Wesley Pub., c1992. ISBN 978-0201544121.

[33] NILSSON, Rickard. Inverse kinematics [online]. 2009 [cit. 2020-03- 26]. Dostupn´ez: http://www.diva-portal.org/smash/record.jsf?pid= diva2%3A1018821&dswid=5431. Master’s thesis. Lule˚a University of Technology.

[34] KOVAR, Lucas a Michael GLEICHER. Flexible automatic motion blen- ding with registration curves [online]. San Diego, California: Eurographics Association, 2003 [cit. 2020-04-15]. ISBN 1581136595. Dostupn´etak´ez: 10.5555/846276.846307

[35] HALPERN, Jared. The What and Why of Game Engines. In: Medium [online]. 11. prosince 2018 [cit. 2020-04-15]. Dostupn´e z: https://medium.com/@jaredehalpern/the-what-and-why-of-game- engines-f2b89a46d01f

[36] Comparison: the Top 6 Most Popular 3D Modeling Software. Medium [online]. 17. ˇr´ıjna 2018 [cit. 30.03.2020]. Dostupn´e z: https://medium.com/imeshup/comparison-the-top-6-most- popular-3d-modeling-soft-1c6a9ed204a4

[37] THE BLENDER FOUNDATION. Blender 2.81 [software]. 13. ˇr´ıjna2002. [pˇr´ıstup2020-04-28]. Dostupn´ez: https://www.blender.org/download/

[38] UNITY TECHNOLOGIES. Unity 2019.3.4f1 [software]. [pˇr´ıstup2020- 04-29]. Dostupn´ez: https://unity3d.com/get-unity/download/

[39] Godot Review. Slant [online]. [cit. 2020-05-18]. Dostupn´ez: https:// www.slant.co/options/1068/˜godot-review

[40] DEALESSANDRI, Marie. What is the best game engine: is CryEngine right for you? In: gamesindustry.biz [online]. 16. ledna 2020 [cit. 2020- 05-18]. Dostupn´ez: https://www.gamesindustry.biz/articles/2020- 01-16-what-is-the-best-game-engine-is-cryengine-the-right- game-engine-for-you

[41] AUTODESK. Meshmixer 3.5.474 [software]. 2017. [pˇr´ıstup2020-04-28]. Dostupn´ez: http://www.meshmixer.com/download.html

58 Literatura

[42] PROVOST, Guillaume, 2003. Beautiful, Yet Friendly Part 1: Stop Hitting the Bottleneck. In: Ericchadwick.com [online]. [cit. 2020-05-04]. Dostupn´e z: http://www.ericchadwick.com/examples/provost/byf1.html

[43] Optimizing graphics performance, Unity Manual [online]. [cit. 2020-05-04]. Dostupn´e z: https://docs.unity3d.com/Manual/ OptimizingGraphicsPerformance.html

[44] HAIGH-HUTCHINSON, Mark. Real-time cameras: a guide for game de- signers and developers. Oxford: Elsevier Science [distributor], 2009. ISBN 978-0-12-311634-5.

59

Prˇ´ıloha A

Seznam pouˇzit´ychzkratek

3D; 2D Three-dimensional; Two-dimensional

CLoD Continuous LoD

DOF Degree of Freedom

DLoD Discrete LoD

FK Forward Kinematics

FPS Frames Per Second

GPU Graphics Processing Unit

IK Inverse Kinematics

LED Light-Emitting Diode

LERP Linear Interpolation

LoD Level of Detail

NTSC National Television System Committee

NURBS Non-Uniform Rational Basis Splines

PAL Phase Alternating Line

Quad Quadrilateral

RMB Right Mouse Button

SRT Scale, Rotation, Translation

SQT Scale, Quaternion, Translation

61

Prˇ´ıloha B

Obsah pˇriloˇzen´ehoCD

readme.txt ...... struˇcn´ypopis obsahu CD exe ...... adres´aˇrse spustitelnou aplikac´ı src impl...... zdrojov´esoubory implementace blender ...... Blender soubory unity ...... Unity soubory thesis ...... zdrojov´aforma pr´aceve form´atuLATEX text ...... text pr´ace thesis.pdf...... text pr´aceve form´atuPDF

63