Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
3D grafika
Přehled nových funkcí v Blenderu (15. část): Novinky animačního systému podruhé
2. ledna 2009, 00.00 | Blenderovský NLA Editor je mocným nástrojem na poli animace. Umožňuje nedestruktivní mixování jednotlivých částí animace - konkrétně jsou to akce a IPO data objektů. Vzhledem k jeho použitelnosti a faktu, že během několika posledních verzí prodělal významné změny, si jej dnes blíže představíme.
NLA Editor se nachází pod zkratkou CTRL+SHIFT+F12 nebo pod touto nenápadnou položkou dostupnou z menu na headeru kteréhokoli okna:
Samotný editor pak vypadá takto:
Abychom vše lépe pochopili, budeme možnosti NLA Editoru postupně odhalovat za pomoci jednoduché Armatury:
Vytvořme si krátkou animaci. Poslední článek naší Armatury se v ní během 24 snímků ohne o 90° doprava. Připomínám, že animaci pohybujících se kostí můžeme vytvořit pouze v Pose módu - na prvním snímku je Armatura ve stejné pozici, v jaké jsme ji vytvořili; vytvoříme zde tedy keyframe klávesou I (z InsertKey menu vybereme Rot - budeme totiž animovat rotaci). Na 25. snímku bude poslední kost ohnutá a zde vložíme stejným způsobem další keyframe. Přejmenujeme Akci v Action Editoru (ikonka nebo SHIFT+F12) na " horni"; v NLA (i Action) Editoru se nám objevila data informující o nové Akci:
Každý z keyframů (ano, jsou to ony žluté čtverce) přitom představuje rozmístění kosti/kostí na tom kterém snímku. Pokud v NLA - potažmo Action - Editoru posuneme keyframy jinam, logicky: póza se přesune na tento snímek a celková animace se náležitě upraví (prodlouží či zkrátí). Zde bychom se mohli pozastavit nad jednou z novinek NLA Editoru. Jde o roletkové menu s defaultně vybraným No Snap. O co jde? Položka vybraná zde nám určí, jak se budou zarovnávat klíčové snímky, když je budeme přesouvat. No Snap nijak nezarovnává (tzn. že keyframy lze přesouvat např. i o desetinu snímku), Frame Step přesouvá keyframy s rozestupem jednoho snímku. Nearest Frame pak zarovnává k nejbližšímu snímku (což má v podstatě stejný efekt jako předchozí volba, rozdíl je pouze v tom, že se vám ukáže číselná hodnota se čtyřmístným desetinným rozvojem vyjadřujícím hodnotu, o kterou keyframy posouváme, ty se však budou zarovnávat vždy přímo na snímek) a Nearest Marker zarovnává k nejbližší Značce. Tu lze vložit buď klávesou M nebo z menu na headeru Marker->Add Marker (Značka se přitom vloží na pozici aktuálního snímku; tuto pozici zároveň reprezentuje "zelená čára"). V menu Marker je také kompletní výčet zkratek pro operování s Markery. Jejich funkce je prostá - slouží k označení libovolného snímku a aby to nebylo málo, Markery se zobrazují i v Action a IPO Editoru.
V minulém díle jsme si řekli o Action Stripech. Action Strip může obsahovat libovolný počet keyframů v rámci jedné Akce - Stripy pak lze v NLA Editoru skládat za sebe a vytvořit tak komplexní animaci. Strip jednoduše vyrobíme stiskem SHIFT+A nebo výběrem Add Action Strip v menu Strip na headeru NLA Editoru, musíme však přitom mít vybránu tu Akci, z níž chceme Strip vytvořit; v menu, které se objeví, vybereme název naší akce - k dispozici by zatím měla být jen jedna. Při použití naposledy zmiňované zkratky se Strip vytvoří na místě kurzoru NLA Editoru ("zelená čára"). V menu Strip se nacházejí veškeré nástroje a zkratky pro manipulaci se Stripy:
Pokud označíme naši Akci "horni"(defaultně je vyselektovaná automaticky při vytvoření keyframu) a stiskneme klávesu C, převedeme ji na Action Strip. Oproti "SHIFT+A" má "C" tu výhodu, že se Akce převedou na Strip přímo, místo aby se vytvořily na místě kurzoru:
Abychom se neustále nemuseli přepínat z Action Editoru do NLA Editoru, bude vhodné rozvrhnout si pracovní plochu na 3 okna:
Pozn.: vlevo - 3D okno, vpravo nahoře - Action Editor, vpravo dole - NLA Editor
V Action Editoru vedle názvu kosti, jíž se keyframy týkají, uvidíme dvě užitečné ikonky:
- - určuje viditelnost Akce na dané kosti, pokud viditelnost deaktivujeme, kost se při přehrávání animace nebude pohybovat
- - určuje, zda bude Akce "chráněná" proti změnám, tzn. nelze přidávat, přesouvat ani mazat keyframy
Pokud animaci ALT+A přehrajeme, zjistíme, že smazání Akce nemělo na výsledek vliv. Pokud bychom ale Akci smazali bez jejího předchozího převedení na Strip, Armatura by se po přehrání animace nijak nepohybovala. Vraťme se nyní do NLA Editoru a vypněme viditelnost Akce ikonkou oka. Všimněme si, že po smazání Akce nám zmizely keyframy i z NLA Editoru:
Vytvořme nyní animaci na jiné kosti. Tentokrát se během 39 snímků (animace začne na 1. a skončí na 40.) ohne o 90° doleva prostřední kost:
Pozn.: Akci pojmenujme nějak smysluplně, např "prostredni"
Pokud zkusíme přehrát animaci, nemělo by se nic stát. Když ale opět zviditelníme akci, animace se přehraje, ale ne tak, jak bychom očekávali. I přesto, že v Action Editoru je nastavená k přehrávání Akce na prostřední kosti, po stisknutí ALT+A vidíme opět jen animaci horní kosti. Čím je to způsobeno? NLA Editor je v tomto ohledu nadřazen Action Editoru. Podívejme se nejdřív, jak dosáhnout toho, aby byla animace viditelná lokálně. NLA Editor by měl obsahovat tyto údaje:
Pozn.: Akci "horni" jsme již převedli na Strip, v Action Editoru ale máme vybranou Akci "prostredni"
Když klikneme na NLA ikonku vedle názvu naší Armatury, změní se NLA Editor z NLA módu na Action mód - přehrávat se pak bude jen jedna aktuálně vybraná akce:
Při přehrání animace je viditelná pouze Akce "prostredni". Převedeme tedy i Akci "prostredni" na Strip:
Animace se sice přehraje, ale horní kost nepěkně poskočí zpět do své původní pozice při přechodu z 25. na 26. snímek. Máme několik možností, jak toto vyřešit. Prvním řešením je úprava Akce "horni" v Action Editoru tak, že poslední keyframe zkopírujeme na 40. snímek:
Na obrázku vidíme žlutou čáru - žlutá je proto, že aspoň jeden z jejích keyframů je označen (barevné schéma je stejné jako pro označené a odznačené Stripy v NLA Editoru). Čára je to proto, že jde o tzv. Long keyframe - pomáhá nám zjistit, které dva po sobě jdoucí keyframy jsou shodné. Pokud tedy máme zkopírovaný keyframe a přehrajeme animaci, všechno je již v pořádku - obě Akce se zobrazí zároveň. Armatura na 40. snímku:
Dalším řešením - které ovšem pravděpodobně využijeme jen když Stripy půjdou po sobě a nebudou se překrývat - je zkopírování pózy horní kosti na Akci "prostredni". Nejdříve tedy přesuňme Strip Akce "prostredni" za "horni":
Pokud bychom přehráli animaci, horní kost by z 25. na 26. snímek skočila do své původní pozice a hned na to by se začala přehrávat Akce na prostřední kosti. Přesuneme se tedy na 25. snímek a označíme horní kost. Poté zkopírujeme pózu tlačítkem na headeru 3D okna. V Action Editoru vybereme z roletkového menu Akci "prostredni" a na jejím prvním snímku označíme horní kost a vložíme pózu z paměti tlačítkem . Poté vložíme pro horní kost keyframe, aby zůstala po celou dobu natočená doprava. Když nyní přehrajeme animaci, vše se provede dle očekávání: nejdřív se ohne horní kost doprava a poté se prostřední s horní ohnou doleva. Ve výsledku tedy budou kosti v již známé pozici:
Poslední možností, jak vyřešit neposednou kost je nastavit Strip Akce "horni" tak, aby závěrečná póza zůstala od konce Akce až do konce animace. Jak na to? Odpovědí je nastavení volby Hold v dialogu Transform Properties. Vyvoláme jej stejně jako ve 3D okně - klávesou N. Pokud označíme Strip a stiskneme N, uvidíme jeho volby:
- Strip Start, Strip End - první a poslední snímek Stripu, tyto údaje jsou oddělené od délky Akce, ta se ale vždy bude "natahovat" tak, aby seděla do délky Stripu
- Ikonka zámku - určuje, jestli bude délka Akce upravitelná, pokud můžeme její délku upravovat, Akci můžeme z jednoho konce "useknout"; např. kdybychom Akci "prostredni" nastavili Action End na 30. snímek, prostřední kost by jednoduše nedokončila ohnutí do 90°. Je dobré také vědět, že Action End nemůže mít menší hodnotu, než Action Start (= tímto způsobem nelze Akci obrátit)
- Auto Blending - pokud se budou Stripy překrývat, Auto Blending nám vytvoří plynulý přechod mezi nimi; využitelný je však nejlépe v případě, že se překrývají dva Stripy, které animují stejnou kost. Při použití Auto Blendingu Blender opticky signalizuje přechod:
- In, Out - počet snímků, během nichž se Akce zviditelní či zneviditelní (podle toho, jestli upravujeme hodnotu na začátku nebo na konci)
- Mute - vypne Strip (stejně jako ikonka oka)
- Repeat - počet opakování Stripu
- Scale - škálování Stripu
- OffsBone - název kosti, která bude určovat posun pro Pózu tak, aby se Armatura pohybovala "beze švů", tzn plynule
- Hold - podrží nám pózu z posledního snímku do nekonečna, nebo aspoň do té doby, než se začne vykonávat jiná Akce na stejných kostech; toto je tedy volba, která nám pomůže vyřešit problém s neposednou kostí
- Add - animační data pro stejné kosti se nepřepisují, ale sčítají; např. pokud by se naše dva Stripy překrývaly a u Akce "prostredni" by bylo nastaveno Add, horní kost by se neohnula o 90°, ale o 180°
- Stride Path - jde o rozsáhlejší téma; vysvětlíme si níže
Než se vrhneme na Stride Path a Stride Bone, bude vhodné uvést si ještě několik podstatných detailů týkajících se NLA Editoru.
- S - škáluje Strip kolem kurzoru NLA Editoru
- CTRL+PAGE UP - přesune označený Strip nahoru
- CTRL+PAGE DOWN - přesune označený Strip dolů
Stride podpora - první příklad
Stride = kráčet, chodit velkými kroky. Libovolně velké kroky samozřejmě není problém v Blenderu vytvořit, pokud ovšem máme např. walk cycle a chceme jej využít v praxi, musíme zajistit bezskluzovou animaci. Tzn, že pokud by se Armatura s walkcyclem pohybovala konstantní rychlostí vpřed, na místech dotyku chodidla se zemí by prokluzovala, což není ani žádoucí, ani realistické. Aby se předešlo takovému problému, byla vytvořena Stride Bone, která funguje přibližně jako běžící pás, po němž se Armatura pohybuje. Kvůli tomu musí být Stride Bone natočená opačným směrem, než se bude Armatura pohybovat. Dříve, než se ale pustíme do podrobného zkoumání Stride Bone, vytvoříme si malou animaci za pomoci cesty (Path). Následující postup přímo vužívá tutorial NLA Editor and Stride Path na oficiálním webu Blenderu. Pokud tedy upřednostňujete angličtinu, tutorial je k nalezení zde. Já jsem si dovolil změnit několik maličkostí.
Nejdříve tedy vymažeme scénu, přepneme se do pohledu zepředu či z boku a vytvoříme nějaký jednoduchý objekt, který se bude moct kutálet a na němž bude patrná změna rotace:
Pozn.: objekt je záměrně škálován tak, aby zabral přesně jednu Blender jednotku - to je důležité pro náš další postup
Nyní přidáme Armaturu o jedné kosti a přepneme se do Pose módu. Zde vytvoříme animaci, při níž se bude kost otáčet. Na první snímek vložíme keyframe, přesuneme se o 20 snímků vpřed (tedy na 21. snímek - k tomu stačí též 2x stisknout šipku nahoru), otočíme kost o 90° ve směru hodinových ručiček a tento postup opakujeme dokud není kost ve stejné pozici jako na snímku 1. Takto jsme vytvořili bezešvou animaci. O tom, že není až tak dokonale bezešvá se přesvědčíme již brzy. Nyní zarovnáme Armaturu na náš kruh (nejdřív zarovnáme kurzor na kruh a pak Armaturu na kurzor - vše v Object módu). Přepneme Armaturu do Pose módu, vyselektujeme kruh a kost a CTRL+P naparentujeme kruh kosti (Bone v roletkovém menu).
Když nyní spustíme animaci, kruh se otáčí společně s Armaturou. Přitom je důležité, že jsme kruh parentovali kosti v Pose módu a nikoli v Object módu. Pokud bychom parentovali v Object módu, žádná rotace by se přirozeně neprojevila.
Nyní přidáme cestu (Path), po níž se bude kost s Akcí pohybovat. Jedinou výhodou Path oproti Beziérovým či Nurbs křivkám je ta, že Path má již defaultně přidanou křivku rychlosti v IPO Editoru.
V Object módu nadřadíme Path Armatuře a v menu, které se objeví vybereme možnost Follow Path. Nyní se bude Armatura (a tím pádem i kruh) pohybovat po této naší Path. Armatura s kruhem se také zároveň otočí o 360°. Přesun po křivce trvá přesně defaultních 100 framů (což ovšem zanedlouho změníme). Nyní v NLA Editoru převedeme Akci na Action strip a aktivujeme mu volbu Stride Path:
Když přehrajeme animaci, pravděpodobně žádný kloudný výsledek neuvidíme. V téhle chvíli nám pomůže trocha matematiky. Náš kruh má průměr přibližně jedné Blender jednotky. Obvod kruhu snadno spočítáme ze vzorce o = 2πr = πd, tedy obvod našeho kruhu je přibližně 3,1415 krát 1 Blender jednotka = 3,1415 Blender jednotek. Takto dlouhý úsek tedy urazí kruh, než se otočí o 360°. Tuto hodnotu nyní zadáme do políčka Stride v Transform Properties v NLA Editoru:
Při spuštění animace vidíme hodně viditelné a v žádném případě žádoucí prokluzování. Jak jej odstranit? Tímto se dostáváme k odpovědi na otázku, zda je naše animace zcela bezešvá. Není, protože - i když koncová a počáteční poloha je shodná - cyklus neprobíhá konstantní rychlostí. Vyčíst to lze z IPO Editoru, při pohledu na křivky Akce, při níž se kost otáčí:
Vybereme všechny křivky v IPO Editoru a v Edit módu je klávesou V převedeme na polygonální, poté Edit mód opustíme:
Nyní by se již žádné prokluzování projevit nemělo. Na mém PC byl ale stále někde problém a nepomohlo nic jiného, než snížení čísla v políčku Stride. Vypozoroval jsem, kde se nachází kolečko, když urazí zhruba 3,14 Blender jednotky a nechal jsem stát animaci na tomto místě, poté už stačilo jen snižovat číslo v políčku Stride (konkrétně na 1,3), dokud nebyla na kolečku i Armatuře stejná rotace jako na počátku. Ač je nepoužitelnost výpočtu proti logickému úsudku, metoda "od oka" se v tomto případě ukázala být spolehlivější - rotace kolečka a pohyb po křivce jsou nyní synchronizovány.
Doplnění z 31. 3. 2009: Problém s hodnotou parametru Stride lze vyřešit jednoduše - je potřeba brát v potaz i škálování kteréhokoli z objektů, jichž se týká některé z nastavení. V našem případě byla křivka 2,511krát zvětšená. Blender ji pro výpočty "zmenšil" zpět na 1,000, což mělo za následek, že Armatura (a tedy i naše kolečko) se 2,511krát zmenšily. Do políčka Stride je tedy potřeba vepsat hodnotu 2,511krát menší, než číslo pí - přibližně 1,25.
Pokud jakkoli zdeformujeme křivku, změníme tím i trajektorii pohybu kruhu s Armaturou. Při vybrané křivce vidíme v IPO Editoru (Path) křivku rychlosti, která stoupá z 0 do 1 během 100 snímků - to znamená, že každý podřízený objekt se bude pohybovat od počátku křivky na její konec a to vše během 100 framů. Když nastavíme počáteční pozici na 1 a koncovou na 0, prohodíme tak směry (můžeme také využít jednu z novinek - zrcadlení kolem horizontální osy zkratkou SHIFT+M). Stejného efektu dosáhneme, když v Edit módu naší Path vybereme všechny body a v menu vyvolaném klávesou W vybereme Switch Direction.
Zdeformujme nyní naši Path tak, že uprostřed ji prohneme dolů. Podle fyzikálních zákonů by se měl náš kruh kmitavě tlumeně pohybovat, naši Speed IPO křivku tedy upravíme přibližně do této pozice (záleží jen na tom, jak moc je křivka prohnutá a jak je kruh "těžký" - aby ovšem byla animace reálná, je třeba si s IPO křivkou trochu pohrát):
A takto může vypadat náš výsledek:
Užitečné tipy, které byly přímo uvedeny také v již zmíněném tutorialu:
- Před parentováním křivce je vhodné aplikovat škálování a rotaci (CTRL+A)
- Pokud v Edit Buttons naší Path vypneme Curve Follow, Armatura se nebude pohybovat, ale animace otáčení proběhne
- Délka animace záleží jen na Speed IPO křivce; nikoli na délce Path
Stride podpora - druhý příklad
Následující příklad využívá informací ze stejného tutorialu jako příklad předchozí. Začněme novou scénou, do níž přidáme Armaturu, kterou vytvarujeme do velmi obrazné podoby nohy:
Pozn.: horní kost má délku jedné Blender jednotky, spodní měří polovinu horní
Poté přidáme přesně na konec "chodidla" další kost (přidáním z menu, nikoli extrudováním chodidla) a poté chodidlo zkopírujeme, přetočíme o 180° a posuneme kopii níž - později z ní vytvoříme onu záhadnou Stride Bone:
Pozn.: je vhodné si kosti nějak rozumně pojmenovat
Nyní vytvoříme v Action Editoru Akci pro naši Armaturu a na chodidlo použijeme jako IK Solver kost "ik". Následně vytvoříme animaci, při níž noha vyskočí. Na různých snímcích tedy vkládáme keyframy jak pro kost "noha", tak pro IK Solver:
Noha na prvním snímku
Do šestého snímku se noha odráží
Do šestnáctého snímku (tedy přesně deset snímků) noha letí nahoru, na dvacátém šestém snímku je noha ve stejné pozici jako na snímku šest, na jednatřicátém snímku pak musí být noha ve stejné pozici jako na počátku (aby byla animace bezešvá). Jednotlivé pózy snadno zkopírujeme již dobře známými Copy a Paste na headeru 3D okna:
Je možné, že pohyb nebude vypadat zcela podle představ (např. noha se při výskoku nepřirozeně narovná atp.) - proto je vhodné pohrát si s LocX IPO křivkou IK Solveru (červená na obrázku), díky níž ovlivňujeme vertikální pohyb kosti ik:
Pozn.: LocX upravujeme proto, že jsme Armaturu přidali z čelního pohledu
Nyní rozanimujeme i Stride Bone. Je důležité, aby byla otočená na opačnou stranu, než se bude Armatura pohybovat. Na prvním až šestém snímku bude na stejném místě jako jsme ji umístili - vložíme tedy klíčové snímky. Mezi šestým a dvacátým šestým snímkem se Stride Bone bude pohybovat ve směru skoku (tedy doprava, ne nahoru) a posune se při tom přesně o polovinu Blender jednotky. Na jednatřicátém snímku bude ve stejné pozici jako na šestadvacátém:
Vše je připraveno pro přidání Path; po jejím přidání zopakujeme postup z předchozího příkladu - nadřadíme Path Armatuře jako Follow Path, v NLA Editoru převedeme Akci na strip a nastavíme mu Stride Path. Pokud ale animaci přehrajeme, patrně se nebude dít nic jiného, než posun Armatury podél cesty. Musíme ještě kost "stride" nastavit jako skutečnou Stride Bone - můžeme tak učinit vepsáním názvu do políčka Stride:
Pozn.: záměrně byla nastavena osa Y - je to totiž dominantní osa kosti stride (to můžeme vyčíst v IPO Editoru kosti stride), pokud by se objevily komplikace, pravděpodobně budou způsobeny chybným nastavením dominantní osy
nebo aktivací Stride Root v Editing Buttons v Pose módu při vybrané kosti stride:
Při druhé možnosti se nám název kosti v políčku vyplní automaticky a kost získá fialové zbarvení:
Výsledek můžeme také upravit pomocí IPO křivek. Když prodloužíme Speed IPO křivku naší Path, řekněme na 200 snímků, animace se dvojnásobně zpomalí. Výsledek animace po zpomalení:
Pozn.: pokud animace proběhne jen jednou, je třeba nastavit korektně v NLA Editoru v Transform Properties atribut Repeat
Důležitá je pro nás také LocY IPO křivka kosti Stride:
Vrátíme změny provedené na Speed IPO křivce a posuneme poslední dva body LocY IPO křivky kosti stride přesně o jednu Blender jednotku dolů - získáme tak trojnásobnou hodnotu (jmenovitě -1,5). Jak se to projeví ve výsledku? Jeden skok bude trvat třikrát déle a bude třikrát delší. Pro srovnání dvě nohy, jedna s původní, druhá s trojnásobnou hodnotou:
Díky Stride Bone tedy můžeme regulovat dopředný pohyb Armatury - pokud stojí Stride Bone, stojí, Armatura; pokud se pohybuje Stride, Armatura se pohybuje. Byť může být ovládání Stride Bone na první setkání komplikovanější, jde o vymoženost, která výrazně usnadňuje práci. Mohli bychom strávit ještě nějaký čas laděním IPO křivek, ale to už není nic, co by každý nezvládl sám - ostatně, bez experimentování bychom se moc daleko nedostali :).
A tímto bychom pro dnešek mohli skončit. NLA Editor je mocným nástrojem, který se vyplatí umět ovládat. Na druhou stranu si vyžaduje spoustu času, osobně ale myslím, že výsledky rozhodně stojí za to. V dnešním článku jsme položili poněkud serióznější základy animace a v budoucnu je využijeme na dalším praktickém příkladu, příště to ale ještě nebude; čekají nás poslední novinky z oblasti animačního systému a na zub se podíváme třeba i takovým Constraints. Pro dnešek je to už ale opravdu vše, těším se příště na shledanou.
Tématické zařazení:
-
23. dubna 2014
Konica Minolta přenesla výhody velkých zařízení do kompaktních modelů
-
11. května 2014
-
23. května 2014
Epson na konferenci Droidcon Berlin ukázal nové možnosti čekající na vývojáře OS Android
-
24. listopadu 2014
-
13. května 2014
Samsung NX3000: retro styl, špičkový výkon a snadná konektivita v jednom přístroji
-
30. listopadu 2014
Nový fotoaparát α7 II: první plnoformát s pětiosou optickou stabilizací obrazu na světě
-
15. prosince 2014
Konica Minolta pomůže živnostenským úřadům s digitalizací dokumentů
-
11. května 2014
-
26. listopadu 2014
Canon Junior Awards již posedmé ocení mladé fotografy v rámci Czech Press Photo
-
21. srpna 2014