Naučit se chodit je výzva. Není tedy od věci takovou výzvu pokořit, první díl

21.4.2004· Autor: Pavel Zoch, Ph.D.· Počet komentářů: 6

V rozsáhlém návodu si projdeme způsob nastavení komplexního modelu tak, aby bylo možné tento model jednoduše rozanimovat. Návod je určen zejména uživatelům CINEMY 4D R8.x, avšak postupy jsou použitelné i u verze R6 (CE6).

Asi největší výzvou člověka je, naučit se chodit. Tedy člověka, to není přesné, řekněme raději animátora. S trochou shovívavosti se ale dá říci, že i animátor je jen člověk, i když si svým způsobem hraje na boha. Budeme si tedy dnes hrát na bohy všechodící a zkusíme si rozpohybovat jednoduchý model pomocí inverzní kinematiky.

Inverzní kinematikou jsme se již kdysi zabývali, to jsme se věnovali jakémusi úvodu a její funkčnost jsme si otestovali na skeletovém modelu parabolické antény, která se automaticky natáčela za svým cílem. Kdo si kdysi tento návod zkusil, má výhodu, protože dnes své znalosti může zužitkovat. Co se v mládí naučíš, ve stáří jako když utne.

Možná bychom si ale nejdříve mohli říci, pro ty kteří minulou hodinu tak říkajíc prospali, k čemu inverzní kinematika vlastně je a jak pracuje. Tedy stručně, jasně a výstižně, termínem inverzní kinematika se běžně označuje „technika“, kdy se objektem umístěným zcela na konci hierarchického řetězce objektů řídí celý tento řetězec za podmínky, že jednotlivé články řetězce se chovají v místech svého působení, v kloubech, podle jistých zadaných omezeních. Jelikož asi většina z nás sedí právě před onou miasmaticky fosforeskující bednou obrazovky a má v ruce myš, pak bychom si tuto techniku mohli objasnit na příkladu s myší. Představme si, že jsme kostra (ale fuj), tedy spíše naše ruka se skládá z objektů, kostí (zase fuj), které mají místo svého působení vždy v kloubu předchozí kosti. První objekt, kostičku, si můžeme představit tak, že působí v místě ramena a směřuje k lokti. Od lokte pokračuje další kostička (vím, že tam máme dvě kostičky pro dva psíky, to je ale irelevantní, jak by řekla 7./9), od zápěstí další, pak chaos dlaně a prstů blahosklonně přehlédneme a přejdeme k tomu podstatnému, konec paže drží myš, kterou pohybuje. Tak je tomu ve skutečnosti. To lze samozřejmě i převést do 3D, ale taková činnost by byla neuvěřitelně pracná a neefektivní, protože natočením nadřazeného objektu by se vždy zcela změnila poloha koncového objektu, ku příkladu naší myši a to na 99% tak, jak bychom zcela určitě nechtěli. Tento systém se běžně označuje FK, přičemž můžeme pro zvídavé prozradit, že druhé písmeno opět skrývá slovo kinematika. První skrývá slovo „forward“.

Jak asi nadšenci a věční šprti tuší, řešením je inverzní kinematika. Pomocí inverzní kinematiky bychom totiž náš příklad s pohybem paže a myši řešili tak, že bychom si vytvořili logicky strukturovanou konstrukci jednotlivých objektů, řekněme třeba kostí paže, kdy nadřazená kost je hierarchicky vždy výše jak podřízená a zároveň má nastavené omezení rotace v místě působení, které jí říká, jak moc že ještě může být natočena, aniž by při tom způsobila majiteli ruky akutní otevřený průnik do dutiny břišní. Toto omezení můžeme nastavit u všech kostí struktury. Poslední článek řetězce se pak odvolává na myš ležící na podložce takovým způsobem, kdy se snaží dosáhnout stanovené polohy řečené myši za každou cenu a tak, pokud je to možné, natáčí všechny nadřazené objekty (ve vymezených mezích) tak, aby svého cíle dosáhl. Pak nám jen stačí naanimovat pohyb myši po podložce a celá struktura objektů, kostí, se bude pohybovat podle pohybu výše zmíněné myši. Této technice se ve zkratce říká inverzní kinematika. Tedy že bychom to podali nějak stručně, tak to zase ne….

Slibovanou problematiku si vyzkoušíme na malém chodícím přesunovadle, které původně mělo připomínat hopíka, kterého používal Lister. Původně, jenže hopík skáká snožmo a my potřebujeme, aby z názorných důvodů úžasně kráčel. I když na konci si přeci jen trochu poskočí. Však uvidíme.


Zdrojový model ke stažení.

Měli bychom si ještě ale říci jednu drobnost. Z hlediska struktury animace pomocí inverzní kinematiky je zcela jedno, zda tvoříme animaci nějakého robota, či „elastického“ objektu typu lidské postavy. U postavy totiž použijeme strukturu deformátorů Kost, která nám bude nahrazovat objekty, ze kterých jsou složeny části robota. Stejně jako u robota nastavíme pak vlastnosti inverzní kinematiky i u deformátorů kostí. I když to možná není tak úplně přesné. Máme totiž také možnost použít v CINEMĚ verze R8.x inverzní kinematiku skrze vlastnosti a možnosti modulu Mocca. Určitě se na něj někdy podíváme. Avšak i Mocca pracuje v principu ve stejném duchu, jaký si dnes představíme.

Náš dnešní článek není možná tak zcela návodem v pravém smyslu slova. Nebudeme se totiž zabývat tvorbou projektu od prvního kroku k poslednímu, ale pouze si ukážeme cestu. Tato cesta je přitom v zásadě shodná jak pro majitele verze CE6 (R6), tak i pro majitele posledních verzí programu. Je však pravda, že v několika krocích použijeme pro jistá omezení nové rysy CINEMY 4D R8.x, avšak tyto techniky nemají žádný vliv ta principielní stránku věci.

Při tvorbě animací, a to platí hlavně při použití inverzní kinematiky, je velmi důležitá struktura objektů modelu. Z toho důvodu si tedy musíme nejdříve specifikovat, jak vypadá náš model a jaký pohyb od něj očekáváme.

Model: Jak jsme se zmínili, model představuje Listerova hopíka. Má tedy kabinu a dvě nohy, které se ohýbají stejně jako čapí nohy, dozadu. Nohy začínají zhruba ve středu trupu a jsou složeny vzad, kde od kolenního kloubu směřují dopředu. Na jejich konci je samotné „chodidlo“, tvořené velkou deskou. Model se skládá z poměrně velkého počtu objektů, polygonových i parametrických. Při tom je dodržena zásada, že hierarchicky výš je vždy nadřazený článek řetězce a objekty které k předchozímu článku řetězce patří jsou ve stejné hierarchické úrovni zařazené opticky NAD objekt řetězce následujícího.

Hlavní objekt, který určuje umístění kabiny a vlastně celé struktury je objekt hopik. Pod tímto objektem jsou objekty svetlo , což jsou světla, které osvětlují kabinu hopika, hopik_kabina, což je model kabiny, objekty noha prava a noha leva. Můžeme si všimnout, že na prvý pohled struktura splňuje dříve uvedená tvrzení. Je tedy načase si upřesnit pohybující se objekty. Objekt, který bude řídit pozici celého chodícího modulu je objekt hopik, který je hierarchicky nejvýše. Souřadnice tohoto objektu prioritně určují umístění modulu ve scéně. Z toho tedy však také vyplývá skutečnost, že objekt hopik bude prvním objektem ve struktuře inverzní kinematiky. A takový objekt musí být upevněn, aby jej níže vytvořená struktura IK nepožadovaně nenatáčela. Z toho důvodu následně umístíme na tento objekt vlastnost Kotva (Anchor).


Umístění hopiku je zřejmé z obrázku. Znázorňuje jej fialová hvězda.

Nyní si musíme říci, které objekty budou tvořit místa působení jednotlivých částí řetězce. Kdybychom tvořili ruku, řekli bychom místa kloubů kostí. Vše si přitom předvedeme na objektu noha prava a je logické, že objekt noha leva má strukturu zcela shodnou a tak bude mít shodné i nastavení IK. Objekt nohy začíná přirozeně ve struktuře nejvýše. Tedy v objektu noha prava. Zde tedy bude působiště prvního objektu řetězce IK nohy. Můžeme si při tom všimnout, že můžeme v tomto případě využít toho, že máme v kloubu první části nohy objekt Válec (jmenuje se právě objekt prava ), pod kterým jsou hierarchicky zařazené (ve stejné úrovni) další objekty tvořící první část nohy. Posledním objektem, který je hierarchicky ve stejné úrovni s podřízenými objekty objektu noha prava , je objekt noha spodní . Tento objekt je již dalším článkem nohy hopika. Místo jeho působení je v kloubu na konci předchozího článku (struktury noha prava). S dalším článkem řetězce se pak situace opět opakuje. Nejlépe si asi vše vysvětlíme obrázkem.

Třetí článek řetězce nohy není na obrázku zcela popsán. Je tomu tak proto, že se pro tento článek již příliš nehodí použité heslo „objekty, které jsou bezvýhradně řízeny nadřazeným objektem“. Třetí článek řetězce je totiž chodidlem, které bude došlapovat na terén a pohyb tohoto chodidla bude ovlivňovat celý řetězec nohy (IK, že?). Aby se nám ale animace podstatně lépe připravovala, použijeme pro definování polohy tohoto článku řetězce řídící body, které budou zcela mimo strukturu modelu hopika. A v tom je ten vtip. Abychom ale také mohli definovat natočení chodidla nohy, je zcela na konci struktury pomocný objekty Osy, pojmenovaný noha_pravá_otočení. Tento objekt nám s popsaným problémem pomůže.

Je vhodná chvíle pro to, abychom si nastavili na jednotlivé články požadovaná omezení. Vybereme si tedy ve Správci objektů hlavní objekt hopik . Nastavíme na tento objekt vlastnost Kotva (Anchor) pomocí menu Správce objektů Soubor > Nová vlastnost > Kotva – vlastnost. Můžeme také použít kontextové menu. To vyvoláme kliknutím pravého tlačítka myši nad zmíněným objektem. Struktura menu je stejná. Jak jsme se již zmínili, objekt Kotva nám zajistí stabilitu objektu hopik, aby nebyla jeho poloha nepožadovaně ovlivňovaná pohybem podřízených objektů.

Vybereme si objekt noha prava (stejnou proceduru poté zopakujeme i s objektem druhé nohy, však to dá rozum). Stejně jako jsme nastavili na objekt hopik vlastnost Kotva, tak nastavíme vlastnost Kinematika na objekt noha prava . Vybereme si jej tedy a pomocí menu Správce objektů Soubor > Nová vlastnost > Kinematika –vlastnost. Kotva jako taková nemá žádné extra volby, které by se daly nastavit nemá. S vlastností Kinematika je to zcela jinak. U této vlastnosti se totiž definují omezení volnosti pohybu (omezení úhlů). Ve verzi R8 stačí vybrat řečenou vlastnost a poté přejít do Správce nastavení. Ve verzi R6 lze dvakrát poklepat na tuto vlastnost a nastavit ji v okně, které se otevře. Nastavení však prozatím ponecháme na pozdější dobu.

Ve struktuře objektu si tedy vybereme hlavní objekt dalšího článku. To je objekt noha spodní . Také na tento objekt aplikujeme vlastnost Kompozice. Vybereme jej a tak opět použijeme menu z kontextového menu, které vyvoláme kliknutím pravého tlačítka myši. Máme li vytvořenou vlastnost Kompozice, přejdeme na další klíčový objekt. Tím bude Válec_central. Také na tento objekt aplikujeme vlastnost Kinematika.

Tímto jsme si na tři „hlavní“ objekty nastavili vlastnost Kinematika, která nám zajistí správné chování objektů jednotlivých kloubů. Sice jsme si ještě rozsah pohybu těchto kloubů nenastavili, ale to přijde. Jak jsme si ale již řekli, na konci hierarchie kinematikou řízené struktury musí být objekty, které se budou pokoušet „uchopit“ cílové objekty, které budou celou strukturu řídit. Vlastnost tohoto uchopení se nazývá Inverzní kinematika – chování (IK chování). Toto chování se nastaví skrze menu Správce objektů Soubor > Nové chování > IK chování (ve verzi R6 Inverzní kinematika). Prvním objektem, u kterého toto chování vytvoříme, je přímo poslední objekt Válec_central. Tento objekt pak bude „chytat“ cílový objekt, který je zcela mimo strukturu. Zatím cílový objekt však nebudeme nastavovat. Mimo to máme zcela na konci řetězce nohy nulový objekt Osy pojmenovaný noha_prava_otočení. Můžeme si při tom všimnout, že tento objekt je na špičce „chodidla“. To z toho důvodu, že nám bude sloužit pro zaměření dalšího cílového bodu, kterým budeme případně kontrolovat natočení chodidla jako takového a který zároveň bude hierarchicky zařazen pod hlavním řídícím bodem….

Nyní je asi obecně vhodný okamžik pro to, abychom si vytvořili cílový objekt, respektive objekty, kterými budeme nohu řídit. Jeden bod můžeme vytvořit hned. Je to vlastně řídící objekt noha_prava_natočení , který je na konci řetězce nohy. Tak si jej jenom vybereme a zkopírujeme. Novou kopii umístíme zcela mimo strukturu hopika . Právě zkopírovaný objekt si zkopírujeme ještě jednou a nový objekt přejmenujeme na noha_prava_lokal . Zapneme si přichytávání na 2,5D a osy objektů a v bočním pohledu si umístíme právě vytvořený objekt do místa rotace posledního článku řetězce nohy.


Na obrázku jsou oba řídící body zobrazené fialovými osmiúhelníky.

Ve Správci objektů ještě uspořádáme řídící objekty pravé nohy tak, že objekt noha_prava_otočení umístíme hierarchicky pod objekt noha_prava_lokal . Tím máme všechny objekty, vlastnosti a chování, která potřebujeme k vytvoření chůze pravé nohy. Je pravda že většinu těchto vlastností a chování musíme ještě nastavit, ale již je máme. Je samozřejmé, že stejnou strukturu, vlastnosti a chování nastavíme i pro nohu levou….

Nyní si nastavíme jednotlivá omezení pohybu jednotlivých článků nohy, v jejích kloubech. Prvním kloubem, tedy vlastností Kinematika, kterou se budeme zabývat, je vlastnost nastavená na objektu noha prava. Označíme si tuto vlastnost a její nastavení se nahrají do Správce nastavení (pokud si vytváříte podle popisovaného postupu „skeletový“ model ve verzi 6, pak dvakrát poklepejte na ikonu). Nyní je důležité si říci, okolo jaké osy chceme, aby se nám končetina v tomto kloubu otáčela. Není tedy od věci se podívat, jak jsou orientované osy tohoto objektu.

Podle obrázku je zřejmé, že osy jsou orientované tak, že rotace bude probíhat okolo osy B (Z). Abychom zajistili tuhost, tedy netočivost okolo zbylých dvou os (H a P), nastavíme u nich jak min., tak max. hodnotu na 0 a tyto osy rotace zapneme. Nulové hodnoty zajistí požadovanou tuhost rotace. Zcela pracovně si můžeme pootočit objektem směrem dolu. Zjistíme, že v ose B přibývají kladné hodnoty. Vrátíme tedy objekt na výchozí hodnotu (0) a nastavíme omezení rotace 0 a 85.

Přejdeme na další kloub. Ten zosobňuje vlastnost Kinematika u objektu noha spodní . I zde jsou omezení rotace podobné předchozím popsaným pravidlům. Z toho důvodu budou hodnoty H a P rotace omezeny na 0, 0. Hodnoty osy B však budou zcela jiné. A to proto, že osy tohoto objektu jsou sice orientované shodně, ale objekt sám se otáčí obráceně. Z toho důvodu bude maximální hodnota 0 a minimální hodnota bude záporná, blízká hodnotě 180 stupňů. Nastavíme jí například na -160 stupňů.


Poslední kloub který nám zbývá bude nastaven ve vlastnosti Kinematika u posledního článku řetězce nohy, objektu Válec_central. I tento objekt má shodně orientované osy a tak můžeme tuto vlastnost nastavit velmi podobně jako u prvního objektu řetězce. Hodnoty u osy B budou 0 a 90. Díky tomu bude chodidlo moci docílit kolmé polohy k „holeni“.


Pro to, abychom mohli celý model rozchodit nám stačí již jen jediné. Nastavit vztah řídících objektů nohy k objektům, které tyto řídící objekty budou ovládat. My tyto ovládací objekty máme již vytvořené, jsou mimo strukturu hopíka a jsou to skupinky objektů Osa, kdy jedna skupinka se jmenuje noha_prava_lokal a druhá noha_leva_lokal a umístění těchto skupinek je shodné s posledním článkem řetězce obou noh. U tohoto posledního článku však také máme chování IK – chování (u R6 Inverzní kinematika). Označíme si tedy toto chování u objektu Válec_central pravé nohy a toto chování se nám označí ve Správci nastavení. Do pole tohoto chování přetáhneme název objektu noha_prava_lokal (uživatelé verze R6 poklepou na ikonu a do otevřeného okna vepíší název cílového objektu).

Pod posledním článkem řetězce nohy máme však ještě jeden řídící objekt, na kterém máme chování IK – chování. Tím je noha_prava_otočení (respektive noha_leva_otočení ). Označíme si tedy příslušné chování u tohoto objektu a do pole cílového objektu přesuneme jméno příslušného cílového objektu, který jak jistě všichni víme, jsme si před několika okamžiky připravili. Všechny předešlé operace provedeme i na struktuře druhé nohy.

Tím pro dnešek návod uzavřeme. Pokračovat budeme opět příště.

Pavel Zoch, Ph.D. Úplnej a naprostej .....

E-mail: pzdm(zavinac)digitalmedia.cz | Web: www.3dsoftware.cz | ICQ: 248707187 |

Motto: "Co ve věčnosti leží, mrtvé není, v záhadě věků i smrt se ve smrt změní." (H.P.L.)

Komentáře k článku  
bezva neznám | 22.4.2004 0:00
Bezva neznám | 22.4.2004 0:00
Re: Bezva neznám | 22.4.2004 0:00
Re: bezva neznám | 22.4.2004 0:00
Re: Re: Bezva neznám | 23.4.2004 0:00
Re: Re: Re: Bezva neznám | 23.4.2004 0:00

Přihlášení uživatele