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:
-
5. září 2024
Matrixmedia - Obsluha a tisk na velkoformátových digitálních tiskárnách
-
30. září 2024
-
4. října 2024
-
14. listopadu 2024
3D grafika
Přehled nových funkcí v Blenderu (16. část): Novinky animačního systému potřetí
11. února 2009, 00.00 | V posledních dvou článcích jsme si představili novinky v animačním systému Blenderu a NLA Editor. Na poodhalení svého tajemství však stále ještě čeká nemalé množství novinek a vylepšení. Proto si je v dnešním - převážně teoretickém - článku představíme.
Constraints
S Constraints jsme se setkali již dříve - jde o jakési "automatizované ovladače" objektů, především Armatur. Díky Constraints můžeme vytvářet animace, jejichž ruční výroba by trvala nesrovnatelně déle a byla by mnohem složitější.
Constraints se nacházejí v Object buttons (F7):
Pozn.: pokud bychom neměli vybranou kost v Pose módu Armatury, v nabídce by se nenacházela možnost IK Solver
Úpravy kódu ve verzi 2.46 vedly k optimalizaci výpočtů, lepší použitelnosti a rozšiřitelnosti a mohlo tak vzniknout i několik nových Constraints. Všechny výpočty nyní probíhají v jediném passu a to tak, že Constraints se aplikují v takovém pořadí, v jakém jsou v zásobníku (obdobně jako Modifikátory), s jedinou výjimkou - IK Solver a Rigid Body Joint jsou použity až úplně na konec. Změna architektury pak umožnila přidání několika zajímavých vymožeností, jako např. více Cílů nebo Prostorové Konverze. Pojďme si je představit.
Space Conversions - konverze souřadnic mezi různými prostory
Aby se Constraints mohly počítat ve správném pořadí a aby byly stále pohodlně ovladatelné, musel se vyvinout systém, který by zvládal dostatečně rychle a čistě počítat matice v různých "prostorech". Základním prostorem je tzv. World-Space (Globální Prostor) - z něj se všechny potřebné matice konvertují do dalších prostorů, v nichž se provádějí potřebné operace. Poté se matice konvertují zpět do World-Space a jsou tak připraveny na další operace. Pro Constraints, jichž se týkají Prostorové Konverze je k dispozici nastavení prostoru (záleží na zdrojovém/cílovém objektu).
Přidejme si do základní scény se světlem a kamerou jednu Armaturu:
Vyberme Armaturu a přidejme jí Copy Scale Constraint:
Nastavení prostor se nachází vedle popsiku C Space: ve dvou roletkových menu - to více vlevo určuje cílový prostor (Target Space), to více vpravo určuje vlastníkův prostor (Owner Space). Nejdříve zatrhneme tlačítko Offset (pouze pro demonstraci jeho funkčnosti - pokud už jsme nějakým způsobem upravili vlastníka, tato změna se přičítá k k transformaci vyvolané Constraint) a libovolně zvětšíme či zmenšíme Armaturu. Když poté budeme škálovat kameru, změna se projeví ihned a to tak, že v potaz se bude brát i škálování Armatury.
Nyní naparentujeme světlo kameře (RMB vybereme nejdříve kameru, SHIFT+RMB pak světlo a CTRL+P parentujeme). Pokud nyní budeme zvětšovat světlo, změna se projeví i na kameře a použijí se přitom koordináty z World-Space, proto se bude měnit i Armatura:
Zvětšila se jak kamera, tak Armatura
Pokud ale v nastavení Constraint vybereme lokální souřadnice (Local (Without Parent) Space) pro Cíl, nastane při škálování světla jiná situace:
Tentokrát nebyla Armatura nijak ovlivněna
Jak vidno z obrázku, s Armaturou se nic nestalo. Čím to? Světlo ovlivňuje kameru v Globálním Prostoru, ale lokální souřadnice kamery se nemění => Constraint nastavená tak, aby přebírala matice z Lokálního Prostoru jednoduše nezaznamená změnu.
Pro objekty tedy existují dva druhy prostorů:
- World-Space - souřadnice objektu jsou relativní vůči globálním souřadnicím
- Local (Without Parent) Space - souřadnice objektu jsou relativní vůči lokálním souřadnicím nadřazeného cílového objektu
- World-Space - viz výše
- Pose-Space - změny v Object módu nejsou brány v potaz, počítá se pouze s těmi z Pose módu
- Local with Parent - projeví se sice změny lokální, ale rodičovský objekt bude stále ovlivňujícím faktorem
- Local - striktně lokální transformace; relativní vůči výchozí pozici kosti
Armatura na kraji se jmenuje A1, ta uprostřed A2 a krychle má název K. Přidejme A2 Copy Rotation Constraint (bude kopírovat rotaci A1). Poté nadřadíme K Armtuře A2 (vybereme A2, pak K a CTRL+P). Nyní, pokud zkusíme zarotovat krychlí, pravděpodobně se stane něco jiného, než bychom očekávali:
Podřízená kost se nijak neotočila
Čím to, že se A2 neotočila, i když její rodič změnil rotaci? Odpověď je jednoduchá - změna rotace A1 se na A2 projeví v globálních souřadnicích (kvůli nastavenému World-Space) a ty se proto nezmění ani když zarotujeme A2, ani když zarotujeme nadřízeným objektem (v našem případě krychlí). Pokud nastavíme hodnotu Local, všechno již proběhne podle předpokladů:
Předpokládaná změna proběhne i při natočení A1:
To by bylo k jednotlivým prostorům vše, proto se nyní podíváme na další novinku.
Více Cílů, více možností
V minulosti nebylo nic takového možné, dnes - po četných úpravách kódu - však už ano. Z této popory těží především IK Constraint - díky více cílům lze nyní určit, kam mají být natočeny oba konce kosti. Pojďme si vše předvést na příkladu. Klasickým předmětem takovéto situace může být noha:
Pozn.: koule u kolena a objekt u paty - požití Custom Bone Shapes, o nichž jsme hovořili v předminulém díle
Kost u paty se jmenuje solver, koule má název rot. Takto nastavíme Cíle pro IK Constraint prostřední ("holenní") kosti:
Při pohybu kostí solver se koleno stále natáčí směrem k rot.
Toto by ovšem tak samozřejmě neproběhlo, kdybychom vymodelovali stehenní a holenní kost v jedné přímce - holeň by se poté nemohla "rozhodnout", jakým způsobem se má ke kouli točit. Ze stejného důvodu se obecně doporučuje při modelování Meshe a vytváření Armatury myslet právě na takovéto drobnosti - ve výsledku totiž mohou ušetřit drahocenný čas. S Pole Target souvisí i nové nastavení - Pole Offset (na stejném panelu) určuje, o kolik stupňů bude kost otočená od Pole Target objektu.
Pokud jako cíl (např. u Track To Constraint) nastavíme jakoukoli kost, můžeme vybrat, která její část má být sledována. Toto lze nastavit na panelu Constraints tlačítkem Head/Tail:
Nulová hodnota znamená, že se sledující kost zaměří na začátek sledované kosti, jednička pak zaměří její konec. Výsledek hodnoty 0.5:
Díky této novince je spousta rigů mnohem snazších, dříve se totiž musela nadřadit kost např. Empty objektu (ten musel být umístěn v požadované pozici) a tento Empty byl poté nastaven jako sledovaný objekt.
U Meshů a Lattices, které mají vertexovou skupinu, se tato může nastavit jako sledovaná část v kolonce VG:, která se objeví poté, co jako sledovaný objekt nastavíme Mesh či Lattice.
V potaz se při výpočtu bere průměrná pozice všech bodů skupiny, normálová orientace faců a dokonce i deformace skupiny (např. v rámci Shape Keys). Obdobně jako u Head/Tail, i zde bylo dříve potřeba vypomoci si Empty objektem.
Nové Constraints
PyConstraints mají tu výhodu, že si je uživatel může naprogramovat sám. K programování se používá opět Python a přednastavený template je k dispozici v textovém editoru v záložce Text-Script Templates-Script Constraint - zde se také nacházejí další instrukce.
Chlid-Of představuje Constraint umožňující více rodičovských vazeb a bylo v plánu jako část původního konceptu pro Constraints, nakonec ale nikdy nebylo implementováno. K dispozici je nastavení, který z atributů bude rodič ovlivňovat (pozice, rotace i přesun, pro každou z os zvlášť). Dalšími tlačítky na panelu jsou Set Offset (přesune potomka na místo, v němž byl parentován) a Clear Offset (potomek se přesune na takové místo, které mu absolutně určí jeho rodič).
Transformation přenáší vzájemně mezi sebou informace o rotaci, pozici a velikosti a konvertuje je do různých rozsahů. Lze například nastavit, aby se zvětšování cílového objektu projevilo v pozici vlastníka a přitom aby se vlastník pohyboval jen v jisté vymezené oblasti. Tlačítka vlevo určují, které údaje se v jakém rozsahu budou přenášet z Cíle, tlačítka vpravo pak vymezují účinek a jeho rozsah na vlastníkovi. Volba Extrapolate určuje, zda se hodnoty přesahující vymezené rozsahy ořežou, či zda budou pokračovat i za stanovenou hranici.
Limit Distance vytvoří pomyslnou kouli kolem Cíle s určenou vzdáleností (Distance) od vlastníka. Poté lze nastavit, zda se dané operace budou projevovat pouze pokud bude vlastník uvnitř, vně, či na povrchu oné koule.
Pole působnosti se určuje výběrem z roletkového menu Clamp Region:
Typickým příkladem využití může být IK Solver, po němž chceme, aby se nedostal dál, než mu to umožňuje např. délka paže. V takovém případě je vhodné umístit na začátek řetězce (rameno) pomocnou kost, která bude oním Cílem pro Limit Distance IK Solveru - aby nedocházelo k cyklickým chybám. Abychom nemuseli ručně počítat maximální vzdálenost, necháme Blender, aby to udělal za nás. Vybereme Cíl, poté vlastníka a CTRL+ALT+C vyvoláme menu pro přidávání Constraints. Vybereme Limit Distance...a voilà! V políčku Distance máme vyplněnou hodnotu s přesností na čtyři desetinná místa.
Vylepšené Constraints
Změny kódu rozšířily možnosti i pro stávající Constraints, proto byla většina z nich upravena, popř. vylepšena. V prvé řadě se toto vylepšení týká Action Constraint - funguje obdobně jako Driver u Shape keys, ale neovlivňuje vertexy, nýbrž Akce. Vyzkoušejme si, co nám Action Constraint nabízí na nějaké jednoduché Armatuře:
Nyní vytvoříme Akci, při níž se během pěti snímků poslední dva články ohnou k počátku řetězce:
Je vhodné také nějaké smysluplné pojmenování Akce v Action Editoru:
Nyní přidáme kosti k2 (viz obrázek) Action Constraint a vyplníme potřebná políčka:
Jmenovitě jsou to pak následující:
- Target - určuje cílový objekt - v našem případě nejdříve Armaturu a pak kost driver
- AC - název Akce, která se bude vykonávat
- Roletkové menu - zde vybereme operaci na ovladači, která bude spouštět Akci (Armatura na obrázku byla přidána v pohledu shora, proto bude Akci ovládat rotace kolem osy Z)
- Start, End - počátek a konec Akce
- Min, Max - udává spodní a horní limit pro zadanou operaci
Space Conversions vděčíme za to, že Akce mohou být ovládány i změnou pozice či velikosti cílového objektu, kterým nově už zdaleka nemusí být jen kost Armatury.
Co se týče Copy Constraints (ať už se kopírování vztahuje na polohu, rotaci či velikost), všechny mají nyní tlačítko Offset, které zaručí, že transformace vlastníka se připočte k transformaci převzaté z Cíle. Blender.org doporučuje používat stejné typy prostorů pro vlastníka i Cíl.
Tím posledním, co si dnes představíme, je Clamp To Constraint. Je jakousi obdobou Follow Path Constraint - díky ní tedy můžeme pohybovat objektem po libovolné křivce. Oproti Follow Path je zde ale jeden podstatný rozdíl: animovat můžeme přímo objekt, a to pohybem po dané souřadnici. U Follow Path je třeba zadávat hodnoty na Speed křivce v IPO Editoru, což je v některých případech zcela nevyhovující, nehledě na to, že výsledkem by potom ani nemusela být plynulá animace. Stinnou stránkou Clamp To je fakt, že neexistuje možnost, jak přenést rotaci objektu při pohybu na křivce obdobným způsobem, jako činí Follow Path. Nutno ovšem dodat, že to často ani není potřeba - koneckonců, pohodlnějsí použití Clamp To dělá z této Constraint zajímavou (a mnohdy také použitelnější) volbu.
Do políčka Target se píše jméno cílové křivky, volby v části Main Axis určují, že se objekt bude pohybovat po křivce pouze tehdy, když jím budeme posouvat po ose X, Y či Z. Je též možné nechat Blender automaticky zvolit tuto osu tlačítkem Auto. Tlačítko Cyclic pak určuje, zda se při překročení limitu pro danou osu objekt objeví opět na začátku křivky a pohyb po ní se tak bude moci opakovat.
A to by bylo pro dnešek vše. Constraints jsou na poli animace široce využívaným nástrojem a v kombinaci s ostatními možnostmi Blenderu (NLA Editor) lze dosáhnout leckdy až neuvěřitelných výsledků. Nutné je také dodat, že Constraints se zdaleka neomezují jen na Armatury, např. Clamp To Constraint není pro Armatury vůbec doporučena! Možná právě proto jsou (při plném využití jejich potenciálu) ve spoustě případů jediným východiskem. Několik novinek animačního systému sice stále čeká na své odhalení, ale svým rozsahem je lze zařadit do praktického příkladu, na němž konečně vyzkoušíme naše dosavadní poznatky. Příště se můžete těšit na tvorbu modelu, který budeme v budoucnu animovat. Na shledanou příště.
Diskuse k článku
-
14. května 2014
Jak vkládat snímky do galerií a soutěží? Stručný obrazový průvodce
-
23. dubna 2014
Konica Minolta přenesla výhody velkých zařízení do kompaktních modelů
-
12. června 2012
-
9. dubna 2014
-
29. listopadu 2013
-
6. září 2004
OKI snižuje ceny barevných laserových tiskáren C3100 a C5200n
-
13. května 2004
-
19. ledna 2004
QuarkXPress Passport 6: předvedení nové verze na konferenci Apple Forum 27.1.2004
-
6. února 2001
-
30. listopadu 2014
Nový fotoaparát α7 II: první plnoformát s pětiosou optickou stabilizací obrazu na světě
-
8. září 2024
-
14. října 2024
-
22. října 2024
-
14. listopadu 2024