Kompletní animace v Blenderu podruhé (2. část): Materiály a rigování těla - Grafika.cz - vše o počítačové grafice

Odběr fotomagazínu

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

Kompletní animace v Blenderu podruhé (2. část): Materiály a rigování těla

26. května 2009, 00.00 | V předchozím článku jsme vymodelovali cartoonovou postavičku se jménem Steve. Dnešní díl si klade za úkol Steva dokončit po vzhledové stránce – tedy nastavit mu materiály a otexturovat ho, přičemž se velmi zblízka podíváme na rigování nohou a podrobně rozebereme většinu mechanismů, jež nám Blender nabízí.

Steve se od minula nezměnil, každopádně si ale zaslouží být připomenut, tentokrát s jednoduchým nastavením 2 spot světel:

Steve v černobílém vydání

Textury

Před samotným procesem texturování nastavíme všechny ostatní materiály a unwrapujeme meshe, které budeme chtít zkrášlit texturou. Všem "nahým" částem těla přidáme jednoduchý materiál připomínající kůži. Zůstáváme sice stále v oblasti cartoon, ovšem byla by škoda nevyužít např. možností SSS. Zde je samotné nastavení:

Nastavení materiálu kůže
Pozn.: barva prosvítání (scattering color) - R: 1.000, G: 0.765, B: 0.406

Pro zuby zvolíme stejný materiál jako pro boty, jediný rozdíl bude v tom, že u botů bude nulová hodnota Emit:

Dále nastavíme obroučky brýlí, např. takto:

Materiál skel v brýlích:

Nastavení materiálu skel
Můžeme také zapnout RayTransp a pohrát si s materiálem skla, použití raytracingu však ve finále povede k vyšším nárokům na výpočetní čas

Pro nastavení materiálu a otexturování oka odkazuji na tutorial na modelování lidského oka. Co se týče kalhot a trika, rozhodl jsem se je otexturovat - model získá na uvěřitelnosti a pokud to s texturováním "nepřeženeme", budeme moci také hovořit o jakési stylizaci. V prvé řadě bude tedy potřeba unwrap. Řezy můžeme vést v místech, kde jsou švy na oblečení v reálném světě:

Švy na triku

Na kalhotách postačí řezy na obou vnitřních a jedné vnější straně nohavic:

Švy na kalhotách

Na výstupu v UV Image editoru pak dostaneme vcelku solidní unwrapy:

Unwrap trika

Unwrap kalhot je lepší podél hranice švu zarovnat - usnadníme si tak texturování:

Unwrap kalhot

Ještě před samotným texturováním je vhodné ověřit (ať už na renderu či v Textured módu ve 3D okně), zda nám sedí UV koordináty. Textura kalhot má 1500x1500 px a textura trika 2000x2000 px:

Ověření UV koordinátů

Texturování bude opět záležitostí 2D editoru, nejdřív bychom si ale měli sehnat texturu riflí a látky, ze které bude utkáno triko. Kvalitním zdrojem přitom může být jak internet, tak vlastní šatník a fotoaparát. Textura kalhot vypadá po útoku 2D editoru přibližně takto:

Textura Stevových riflí
Pozn.: použité textury pocházejí z cgtextures.com

Co se nevešlo do modelu, se muselo umístit do textury - zip, švy a knoflík. Kapsy pro tentokrát (z čistě časových důvodů) vynecháme. V případě knoflíku jde ale spíše o tragédii - pokud zkusíme Steva vyrenderovat, knoflík je nepěkně roztáhlý a už vůbec nepůsobí plasticky, proto je lepší jej přímo vymodelovat:

Knoflík

A zde materiálové nastavení knoflíku:

Materiál knoflíku
Pozn.: knoflík je unwrapovaný (kvůli Tangentovému stínování) a má nastavenou texturu clouds

Po vyrenderování již můžeme být celkem spokojení:

Stevovy povedené rifle

Je pravda, že absence kapes ovlivňuje výsledek spíše negativně, pokud bychom je však chtěli přidat, nejspíš by bylo nejlepší je přímo vymodelovat, včetně oček na pásek, popř. zipu. S trikem bude již podstatně méně práce, snadno na něj můžeme umístit např. nějaký potisk:

Triko s logem Blenderu
Pozn.: použité textury pocházejí z mayang.com/textures

S použitou texturou sice Steve trochu vypadá, jako by triko někdo vyrobil z pytloviny, ale to nevadí - řekněme, že to patří ke Stevovu charakteru :). Zbývá nám už jen vybrat nějakou vhodnou barvu pro ponožku. Já jsem nakonec zvolil černou. Pojďme se nyní podívat, co že jsme to vlastně vytvořili - po stisknutí F12 se nám objeví Steve v celé své kráse:

Pěkně se nám vybarvil
Kliknutím zobrazíte větší náhled

Nyní máme Steva připraveného na zakostění. Pokud by měl někdo zájem o .blend soubor Steva tak, jak je na obrázku (včetně přibalených textur), ke stažení je k dispozici zde (.rar, 3,9 MB).

Zakostění

Pozn.: následující postup bude využívat informace z těchto dílů seriálu:
Přehled nových funkcí v Blenderu2.44: část 1.
Přehled nových funkcí v Blenderu (14. část): Novinky animačního systému poprvé
Přehled nových funkcí v Blenderu (16. část): Novinky animačního systému potřetí

Nyní přichází zlatý hřeb večera - rigování. Nenechme se zmýlit; kvalitní rig nemusí být ani u takto jednoduchého modelu zdaleka otázkou několika minut. Začneme vložením kosti, s jejíž pomocí budeme pohybovat celým tělem. Bude to kost mover a bude umístěná na samém spodu Steva (ovšem není problém umístit ji kamkoli jinam):

Hlavní ovládací kost

Co se týče těla, jeho základ budou tvořit tyto kosti:

Základ těla

Vztahy mezi kostmi jsou pak následující: moveru je podřízená kost telo, telo je rodičem kostí bedra a hrudnik, ramena s krkem jsou extrudovány z kosti hrudnik (=>jsou jí podřízeny). Pro úplnost: parentování lze provést pouze v Edit módu, pokud nepoužíváme Child Of Constraint (což by ostatně v našem případě bylo zbytečné). Aby kosti ramena a hrudnik lépe deformovaly mesh, nastavíme jim větší počet segmentů:

Kosti s větším počtem segmentů

Do další vrstvy Armatury přidáme kosti nohy a pojmenujeme je tak, aby za nás Blender později mohl přehodit jména kostí pro pravou a levou nohu:

Kosti nohy

Rozmístění kostí se možná může zdát netradiční, má však své opodstatnění - brzy se k němu dostaneme. Nyní kosti nohy zkopírujeme a zrcadlíme podél osy X, poté stisknutím W-Flip Left-Right Names přehodíme jejich názvy:

Přehozené názvy kostí

Obě stehna jsou přitom podřízena kosti bedra. Důležitý je také tzv. roll u kostí, pokud by se při upravování kost natáčela podél své lokální osy Y, je potřeba stiskem CTRL+N -> Clear Roll anulovat tuto rotaci - později by docházelo k nežádoucím deformacím. To stejné platí pro kteroukoli jinou kost v těle, snad až na palce na rukou (ty by neměly být natočeny stejně jako např. ostatní prsty). Ruku zarigujeme čtyřmi kostmi, přičemž je tentokrát budeme vkládat do třetí vrstvy Armatury:

Zakostěná ruka

Nesmíme také zapomenout kost trapez.L podřídit kosti ramena. Kosti prstů budeme přesně zarovnávat pomocí kurzoru a zkratky SHIFT+S vždy do středů kloubů.

Prsty

Nyní kosti prstů subdividujeme - vzhledem k povaze postavičky budou na každý prst stačit 2 články:

Prsty podruhé

Do první vrstvy Armatury přidáme hlavu (zatím provizorně) a aktivujeme druhou a třetí vrstvu - základ Armatury máme tedy kompletní:

Všechny základní kosti

Tímto jsme ovšem zdaleka ještě neskončili. Nyní nastavíme u všech meshů vertexové skupiny. U hlavy, krku, těla a rukou by neměl být žádný problém, detailněji se budeme zabývat rameny a nohama. Kost trapez.L bude ovlivňovat tuto oblast:

Vertexová skupina trapézu

Kost krk bude na triku ovlivňovat také malou část vertexů:

Vertexová skupina na krku

Jen orientačně některé další vertexové skupiny na triku:

Bedra:
Bedra
Hrudník:
Hrudník
Levý loket:
Levý loket

Loket je rizikovým místem, proto upravíme váhu vertexové skupiny loket.R a loket.L:

Úprava váhy vertexové skupiny

Kost bedra bude na kalhotách ovlivňovat tyto vertexy:

Vertexová skupina bedra

Z pragmatických důvodů také můžeme ve Weight paint módu decentně upravit působnost beder, aby později nedocházelo k nehezkým deformacím:

Váha beder

Co se týče stehen, jejich vliv se bude vztahovat na následující body:

Stehno

Obdobně i pro Stevovu pravou nohu, rozdělujícím bodem tentokrát nebude kosočtverec symbolizující koleno, protože na pravé noze není stejně vysoko jako na levé:

Stevovo pravé stehno

Lýtko na levé noze pak bude řídit tyto vertexy:

Lýtko

Nárt bude ovládat nejspodnější část nohavice:

Nárt

A ještě část bot:

Nárt

Zbytek boty pak připadne špičce. Pojďme se podívat na krk. Některé body musí být ovládány "trapézovými kostmi", proto kosti krk nepřipadne celá oblast krku na meshi hlava:

Krk na meshi hlava

"Trapézovým kostem" pak připadnou celkem 4 vertexy na krku (pro každou kost 2):

Body ovládané trapézovými kostmi

Zbytek hlavy, brýle, oči a zuby pro dnešek jen podřídíme kosti hlava. Pokud vyzkoušíme Armaturu deformovat, na některých místech se tak děje korektně, jinde zase ne:

Nekorektní deformace

Úkolem riggera je vytvořit takovou strukturu, aby se model pokud možno v žádné situaci nedeformoval nežádoucím způsobem. Než se ale pustíme do ladění chyb, dokončíme rig na nohách. Prozatím vše v Armatuře funguje na principu FK (Foreward Kinematics - Dopředná Kinematika), tzn. že manipulujeme každou kostí zvlášť, přičemž ta která kost ovlivní všechny podřízené kosti. IK neboli Inverzní Kinematika - náš cíl - pak zajišťuje pohyb nadřazených kostí na základě pohybu IK Solverem. Začneme tak, že u paty přidáme solver:

Nové kosti

Kost ik.noha.L není nijak spojená s lytko.L - je pouze zarovnaná na její konec. Pokud nastavíme ik.noha.L jako solver kosti lytko.L a pohneme s ní, nestane se nic neočekávaného, my ovšem budeme chtít, aby kosti nart.L a spicka.L byly pořád vodorovně. Proto přidáme další kost pata.L a nadřídíme ji kosti ik.noha.L. Při pohybu patou ale nárt stále mění rotaci, proto jej patě podřídíme. Nyní je výsledek mnohem lepší, ovšem když pohneme patou za jistou hranici, způsobíme další nechtěné deformace - chodidlo totiž nedrží na lýtku:

Nechtěná deformace

Budeme tedy potřebovat pomocnou kost. Tu tentokrát vyextrudujeme přímo z lytko.L a nazveme ji např. lytko.cil.L. Poté už jen pro nart.L nastavíme Copy Location Constraint, přičemž kopírovat bude právě pozici kosti lytko.cil.L. Při dalším pohybu je již nárt vodorovný:

Vodorovný nárt

Stejný postup aplikujeme i na druhé noze. Nyní nám stačí pohybovat/rotovat patou a hýbe se celá noha, objevily se však nějaké nedostatky. Konkrétně není definovaný směr ohýbání kolena a jako další nepříjemnost se ukazuje stále nekorektní deformace v oblasti bot a kolen.

Opět nekorektní deformace

Na opravu směru ohybu kolen použijeme další pomocnou kost:

Další pomocná kost

Tuto kost zkopírujeme, abychom ji mohli použít i pro druhou nohu a pak už jen nastavíme jako Pole Target u obou holenních kostí. Bez Pole Target možnosti bychom korektním nastavením strávili nesrovnatelně delší čas. Nyní se nám kolena ohýbají tím správným směrem, který můžeme v případě potřeby animovat. Teď už se tedy konečně můžeme vrhnout na odstraňování nežádoucích deformací - k tomu nebudeme využívat nic jiného, než Stretch To Constraint. Začneme u pánve; pro každou nohu přidáme dvě pomocné kosti:

Pomocné kosti
Pozn.: trislo.stretch.L je potomkem kosti bedra, trislo.cil.L je potomkem stehno.L

Nyní kosti trislo.stretch.L nastavíme Stretch To Constraint - např. tak že vybereme nejprve cíl, poté požadovanou kost a CTRL+ALT+C vyvoláme menu pro přidání Constraints a vybereme Stretch To. Výhodou takovéhoto postupu je fakt, že jméno cíle se po výběru Constraint automaticky vepíše do kolonky. Pokud nyní v pose módu hýbeme patou, kromě deformace nohy vidíme také stahování kosti trislo.stretch.L - toto stahování použijeme na horní část kalhot, konkrétně vytvoříme novou vertexovou skupinu trislo.L:

Vertexová skupina trislo.L

Přidáme novou kost, pojmenujeme ji trislo.L a umístíme ji přibližně na stejnou pozici jako je vertexová skupina. Této kosti nastavíme buď Transform nebo Copy Scale Constraint. Kopírovat velikost budeme samozřejmě z trislo.stretch.L. Já osobně jsem zvolil Transformation - jednotlivé hodnoty se totiž dají limitovat. V případě potřeby ještě upravíme váhu na vertexové skupině bedra. Deformace na pánvi je nyní mnohem lepší:

Korektní ohyb

Pravda, v rozkroku stále ještě nemůžeme hovořit o ideálním ohybu, vzhledem k topologii meshe však nejspíš lepšího výsledku nedosáhneme. Deformace Armatury:

Deformace Armatury

Pořád se nám nedeformuje zadní strana ani jednoho kolena, nemluvě o stranách předních - u vyhrnuté nohavice dochází opět k silně nežádoucí deformaci. Opakovaně použijeme Stretch To Constraint, tentokrát ale v kombinaci se Shape Keys. Přidáme kost, která bude spojovat začátek stehna s koncem lýtka:

Kontrolor ohnutí

Kost je podřízená stehno.L a název kctrl.L znamená kontrolor kolena - čím víc se tato kost bude stretchovat, tím patrnější bude Shape Key, který bude deformovat kalhoty. Přidejme si tedy pro rifle výchozí Shape Key a hned na to další, který pojmenujeme např. skrceni. V něm budou vertexy deformovány přibližně takto:

Deformovaná noha

Samozřejmě pozici vertexů nemůžeme jen tak "střelit" od oka - jde především o to, aby nedocházelo k divokým deformacím při skrčení nohy. Proto je nejlepší pohnout solverem na noze tak, aby stehno a holeň (resp. lýtko) svíraly pravý úhel a poté teprve hýbat vertexy. S výsledkem můžeme být spokojeni, když se na ohyb dá dívat:

Správně ohnuté koleno

Po zralé úvaze jsem naznal, že trik s trislo.stretch kostmi není zcela čistý, proto jsem obě kosti trislo.cil přesunul přímo na kolenní kloub a decentně upravil i pozici obou trislo.stretch kostí (viz obrázek). Po jakýchkoli úpravách kostí s nastaveným Stretch To bychom měli resetovat velikost kosti tlačítkem R na Stretch To Constraint panelu. Nyní budeme chtít vytvořit driver pro náš Shape Key - ovládacím parametrem by přitom mělo být škálování kosti kctrl.L podél její osy Y. Po přidání driveru však vidíme zcela jiný efekt - při skrčení se sice Shape Key zobrazí ve víceméně dostatečné míře, při natažení je ale stále nepříjemně viditelný:

Špatně nastavený Shape Key

Pomoc tentokrát není snadná - přezkoušel jsem zhruba 6 různých soustav Constraints, které by mohly ovládat Shape Key skrceni, vždy se ale objevily nějaké komplikace. Po nemálo hodinách strávených nad řešením tohoto zdánlivě banálního problému jsem odhalil zatím jediný funkční setup sestávající z několika kroků:

  • Vytvoříme novou kost h.L - její rotace po vlastní ose Z bude driverem našeho Shape Key.
  • Nastavíme klíči skrceni IPO driver - Rot Z kosti h.L - a přidáme křivku, která nám ohraničí rozsah klíče skrceni od 0 do 1 (jinak by totiž hodnoty překračovaly mez a docházelo by k přehnaným deformacím).

Křivka s driverem

  • Na kosti h.L vytvoříme Akci (s názvem koleno.skrc), při níž bude kost rotovat např. mezi snímky 1 a 6; při rotaci bychom přitom měli vidět, jak naše (tedy spíš Stevovy) kalhoty mění tvar - jedním krajním bodem rotace bude nulová hodnota skrceni, druhým krajním bodem bude naopak jeho maximální hodnota. U mě šlo o relativně malý rádius cca 30°.
  • V Action Editoru smažeme naší kosti h.L Akci koleno.skrc, téže kosti přidáme Action Constraint a jako Akci nastavíme naši smazanou koleno.skrc.
  • Na Action Constraint panelu si musíme pečlivě pohrát s parametry Min a Max tak, aby Min odpovídalo minimální délce kosti kctrl.L (když bude mít kctrl.L právě tuto délku, Akce koleno.skrc bude na svém konci - tedy kost h.L bude v krajním bodě), Max potom bude rovno maximální délce kctrl.L - tedy hodnota 1. Mé nastavení:

Nastavení Action Constraint

Nyní, pokud pohneme patou tak, že skrčíme nohu, kctrl.L se zmenší, Action Constraint na h.L způsobí, že se tato zarotuje a vyšle tak jako IPO driver signál, že se má změnit hodnota skrceni na kalhotách. To znamená, že teď máme skrčení kolena ošetřeno proti nežádoucím deformacím a zároveň automatizováno - alespoň v uspokojivém rozmezí. Už teď je ale (bohužel) jasné, že ze Steva nebude žádný gymnasta.Postup, který jsem právě popsal mi osobně nepřijde nejsnadnější (a tudíž ani nejelegantnější) - proto pokud by kdokoli přišel na lepší řešení, budu jen rád, když se o něj podělí v diskusi pod článkem :). Na levé noze máme stále jisté nedořešené problémy - např. při otáčení chodidla nevkusně vykukuje bota zpod riflí.

Nepěkně vykouklá bota

Tentokrát je řešení o poznání snazší. Jediné, co potřebujeme udělat, je upravit vertexovou skupinu. Tyto tři body:

Tři nezbedné vertexy

odstraníme ze skupiny lytko.L a přidáme je do skupiny nart.L. Nakonec je ještě posuneme trochu výš, aby byly zarovnány s okrajem boty:

Zarovnané vertexy

Nyní, pokud zarotujeme chodidlem, zjistíme, že u paty je snad vše v pořádku a byť možná není deformace z fyzikálního hlediska zcela korektní, pro nás je podstatné, že nikde nevykukují žádné body, které by vykukovat neměly. Zbývá nám ještě pořešit problém se špičkou - při ohýbání totiž jazyk boty prochází kalhotami:

Přesahující jazyk

Opět použijeme naši oblíbenou Stretch To Constraint. Nejprve tedy nadefinujeme novou vertexovou skupinu nart.stretch.L - drobným rozdílem bude váha (weight), nastavená na hodnotu 0,5:

Vertexová skupina nart.stretch.L

k ní přidáme ještě několik vertexů z nohavice (samozřejmě je předem odstraníme ze skupiny nart.L)

Vertexy na nohavici

a vytvoříme stejnojmennou pomocnou kost:

Nová pomocná kost

Procedura přidání Stretch To je vesměs stejná jako u kosti kctrl.L. Nadřazenou kostí bude tentokrát spicka.L a cílem bude lytko.cil.L. Ve Stretch To panelu nastavíme NONE, díky tomu se body nebudou roztahovat do prostoru a podle citu stáhneme slider Influence - to vše v zájmu přirozenější deformace:

Upravené nastavení
Ostatní hodnoty parametru Volume ( Vol ) mají při ohýbání boty za následek zvětšování/zmenšování objemu meshe podle některé z os, a tím pádem navození dojmu, že objem zůstává zachován

Abychom výsledné krčení ještě trochu "namarkýrovali", ve Weight Paint módu upravíme vertexovou skupinu spicka.L:

Nová váha

A nart.stretch.L:

Nová váha

A výsledek? Mnohem lepší, než se očekávalo. Bota se skrčila možná trochu nereálně, ale, vzhledem ke stylizaci, je to krok správným směrem.

Stylizovaně ohnutá bota
Pozn.: na obrázku je vidět, že v této póze již kalhoty kolidují samy se sebou

Nyní budeme chtít ošetřit ohyb na horní straně chodidla, resp. jej limitovat, aby se chodidlo nemohlo vnořit do riflí. Abychom mohli všechno lépe pozorovat, přidáme další kost se Stretch To Constraint:

Holenní Stretch To

Jak tedy zabránit nechtěnému vnořování? Limit Rotation Constraint tentokrát není odpovědí, protože nijak nebere v potaz úhel mezi nart.L a lytko.L. Pokud by ale nart.L byla přímo podřízená lytko.L, dalo by se využít této rodičvské vazby, rodičem je však tentokrát pata.L. K řešení využijeme Limit Distance - špička nohy bude působit jako IK Solver, který se nebude moci přiblížit na určitou a menší vzdálenost ke kosti holen.stretch.L. IK Solverem se přitom nemůže stát přímo kost spicka.L, protože potřebujeme, aby se otáčela s patou a zároveň aby byla pořád "přilepená" na nart.L, nehledě na to, že by nejspíš docházelo k problému se závislostmi (poskakování atp.). Řešením tedy bude další pomocná kost spicka.help.L:

Další pomocná kost

Opět se nám trochu zkomplikovaly rodičovské vazby - ik.noha.L je rodičem spicka.help.L, ta je zase rodičem spicka.L. Nárt má IK Constraint s cílem spicka.help.L, ta má 2x Limit Distance:

2x Limit Distance

Constraint dist nart zaručí, že spicka.help.L se bude pohybovat pouze na povrchu jakési koule o poloměru 0,546 se středem ve spoji mezi lýtkem a nártem. V praxi je přitom úplně jedno, jestli jako cíl zvolíme lytko.cil.L nebo nart.L. V podstatě jde o alternativu postupu s lytko.cil.L - dosáhli jsme opět toho, že se kost nedostane nikam jinam, než chceme, tentokrát ovšem bez další pomocné kosti. Stejně tak jsme předtím mohli kosti nart.L místo Copy Location nastavit Limit Distance. Druhou Constraint dist holen získáme tak, že přesuneme patu do polohy, kterou budeme považovat za krajní (tedy v tom smyslu, že se bota nevnořuje do riflí):

Krajní poloha

A teď už jen nastavíme Limit Distance (opět s použitím zkratky CTRL+ALT+C), Cílem tentokrát bude kost holen.stretch.L (která je mimochodem potomkem kosti stehno.L). Mimoděk jsme výběrem právě tohoto objektu zajistili, že v budoucnu nebudeme mít problém se závislostmi (čím více pomocných kostí, tím menší pravděpodobnost, že někde vznikne cyklická chyba). Pro dist holen už zbývá jen nastavit v roletkovém menu hodnotu Outside - díky tomu se spicka.help.L bude moci pohybovat jen mimo objem koule o poloměru 1,4086 se středem v koleni (viz obrázek s oběma Limit Distance) - tzn, že nárt a lýtko by nikdy neměly vytvořit tak malý úhel, že by se bota vnořila do riflí. Při libovolném pohybu tedy už na levé noze de facto nedochází k nežádoucím deformacím, pro klid v duši už jen nastavíme kosti spicka.L Limit Rotation. Pro nás nejvhodnější prostor bude Local Space, proto jej nastavíme v Limit Rotation Panelu. Nula stupňů znamená stejný směr, v jakém jsme kost vložili. Pokud kost zarotujeme v kladném směru (směr hodinových ručiček), změní se její hodnota Rot Z záporně:

Krajní mez
Pozn.: v Transform properties jsou zamklé některé transformace - občas velmi užitečná věc

Tato hodnota bude tedy minimální možnou rotací (panel Limit Rotation), maximální rotaci najdeme obdobným způsobem. Mezní hodnoty jsem tedy zvolil -60 a 25 stupňů. Pokud nyní vyzkoušíme hýbat patou, už se skoro všechno zdá v pořádku, vyvarovat bychom se však měli extrémním polohám, jako např. rovné patě vysoko vzadu za postavou:

Přetočené chodidlo

Nehledě na fakt, že pokud nezarotujeme patou, Limit Rotation se u spicka.L začne projevovat nežádoucím způsobem. Toto je tedy jedna z věcí, na které si jako budoucí animátoři budeme muset dávat pozor. Když nepatřičně rotujeme patou v místě, kde vypadala deformace meshe v pořádku, noha se začne nehezky kroutit:

Překroucené chodidlo

Třešničkou na levé noze je už jen vyspravení přesahujícího jazyka boty. Pro tentokrát nebudeme potřebovat žádnou Constraint. Vzhledem k faktu, že jazyk je schovaný pod nohavicí, bude stačit, když jej decentně upravíme:

Upravený jazyk boty

Sláva, vypadá to, že animování levé nohy už by mohlo - až na "problém" s překrucováním paty - jít bez nějakých větších obtíží. Už nám zbývá zakostit jenom celý zbytek postavy :). Na druhé noze budeme postupovat obdobně, nejlepší asi bude začít od toho nejtěžšího - totiž od kolena. Specialitou kolena jsou upravené vertexové skupiny lytko.R a stehno.R:

Upravená vertexová skupina lytko.R

Upravená vertexová skupina stehno.R

Při vytváření druhého Shape Key si (v případě, že postupujeme přesně podle tutorialu) můžeme postesknout nad tím, že jsme nepojmenovali klíč skrceni nějak smysluplněji. V případě, že jsme si posteskli přejmenujeme skrceni na skrceni.L a ze základního klíče vytvoříme skrceni.R - v něm bude určen tvar deformovaného pravého kolena:

Klíč skrceni.R

A takto bude vypadat koleno při deformaci:

Skrčené pravé koleno

Zopakujeme postup s přidáním IPO driveru, tentokrát však pro pravou nohu a klíč skrceni.R. Ve Wire módu vidíme, že vykukující holeň se nedeformuje správně - což je na výsledku bohužel patrné i mimo Wire mód. Opět nám pomůže Shape Key.

Špatně deformované koleno

Deformace obou kolen vypadá v pořádku, můžeme se tedy vrhnout na spodní část pravé nohy. Nejdříve zkopírujeme kosti a Constraints z levé nohy, přičemž patřičně upravíme jak názvy, tak jednotlivé rodičovské vazby + eventuálně nastavení Constraints. Pokud nyní hýbeme špičkou pravé nohy, jazyk se noří do meshe holeně. Tento problém vyřešíme tak, že upravíme ve Weight paint módu vertexové skupiny lytko.R (kterou budeme muset samozřejmě nejdříve vytvořit, pokud jsme tak ještě neučinili):

Vertexová skupina lytko.R

nart.stretch.R:

Vertexová skupina nart.stretch.R

a spicka.R:

Vertexová skupina spicka.R

Pokud nyní zarotujeme špičkou nahoru do krajní polohy, jazyk pořád ještě trochu přesahuje - k opravě použijeme opět Shape Key:

Opravný Shape Key

Při ohnuté špičce pak bota vypadá takto:

V podstatě správně deformovaná bota

Teď už jen budeme potřebovat přiřadit driver - protentokrát můžeme použít alternativu způsobu opravy kolena - klíč totiž bude řízen přímo rotací kosti spicka.R; tato kost bude rotovat v rozmezí -60° a 25°, my ale budeme chtít, aby se rotace projevovala jen do 0° - když se totiž bota začne ohýbat dolů (tedy pod "vodorovnou" hranici), už nepotřebujeme, aby se Shape key projevoval. Ovládací křivka tedy bude vypadat takto:

Ovládací křivka Shape key na botě

Při nulové rotaci spicka.R má klíč nulovou hodnotu, při -60° má klíč hodnotu 1. Pokud tedy ohýbáme samotnou špičku, probíhá opět vcelku stylizovaná deformace. Horší to bude, pokud se noha začne dostávat do nepatřičných poloh - obdobně jako levá noha se začne nehezky kroutit, jako další problém se ukázala také ponožka:

Nehezká ponožka
Pozn.: horní část ponožky je podřízena kosti lytko.R, zbytek pak kosti nart.R

Abychom zabránili nehezkým deformacím na ponožce, přidáme další pomocnou kost; tu ponožce nadřadíme na bývalé vertexové skupině lytko.R a kosti nastavíme Limit Rotation Constraint, aby se zleva nedostala pod "vodorovnou" (vzhledem k rodičovi) hranici. Rodičem přitom bude lytko.R. Pokud kostí zarotujeme, ještě do jistého nereálného přesahu můžeme hovořit o nepodstatném detailu:

Deformace chodidla

Zobrazování počtu kostí
Člověka občas zarazí i vzhled Blenderu - v praxi se např. při hledání nějaké ztracené kosti osvědčí přehledný Outliner (Shift+F9), bez povšimnutí pak nezůstane ani způsob označování počtu podřízených kostí.

Pojďme se nyní podívat, jak bychom mohli vylepšit zakostění našeho chodidla. Kost spicka.help.R má Limit Distance Constraint od dvou kostí. Myšlenka to byla sice hezká a vcelku fungující, ovšem k problému by došlo v momentě, kdy by vzdálenost podle dist holen musela být určité číslo, ale dist nart by zároveň tuto vzdálenost nepovolilo. Znamenalo by to, že koule představující vzdálenost od obou kostí by se v žádném bodě nepřekrývaly (tzn, že menší z nich by ležela uvnitř té větší, nebo - pokud bychom Limit Distance nastavovali v příliš krátké vzdálenosti - by se nacházely vedle sebe) a v ten moment by se Blender rozhodoval podle pořadí Constraints v zásobníku, logicky by ale vznikla pozorovatelná chyba. A právě tohle se děje s naší (Stevovou) nohou :). Proto mírně upravíme nastavení rigu nohy - v Edit módu přesuneme kost spicka.help.R na špičku nohy (na konec podřízené spicka.R) a jako rodič nastavíme pata.R.

Přesunutý rodič špičky

Pokud se přepneme do Pose módu, bota se kvůli zatím stále zachovaným Constraints sroluje:

Stažená bota

Na spicka.help.R je potřeba smazat a znovu vytvořit (popř. složitěji přenastavit) obě Limit Distance - pro dist holen zůstane stejná, jen se změní vzdálenost, ale pro dist nart se změní Cíl - na lytko.cil.R (ochrana proti cyklickým chybám), nastaví se nová vzdálenost a pole působnosti bude nyní uvnitř (volba Inside). IK Solver na nart.R se také změní - jeho Cílem nyní bude kost spicka.R. Noha vypadá stejně jako předtím, ovšem teď je o kapku lepší. No a to by bylo - co se dolních končetin týče - pro dnešek vše. Pojďme se ještě podívat, co jsme vlastně vytvořili:

Celá Armatura

Náš rig zatím stále není dokončen, ale tu nejnáročnější část (tedy alespoň co se týče těla) máme za sebou. Víme také o několika chybách, na které budeme muset v budoucnu dávat pozor, ovšem jednoduché operace jako změna pozice či rotace na nemnoha důležitých kostech jakékoli nepatřičné deformace rychle vyřeší.

Příště dokončíme rigování těla, podrobně prozkoumáme možnosti animace mimiky a nastíníme si některá další vylepšení rigu - samozřejmě v zájmu cartoon stylu. Tímto se s vámi loučím, nashledanou příště.

Tématické zařazení:

 » Rubriky  » VSE  

 » Rubriky  » 3dscena  

 » Rubriky  » Go verze  

 » Rubriky  » 3D grafika  

 

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: