Jak na inverzní kinematiku v Cinemě 4D, nejen ve verzi 8 - 3D grafika - 3Dscena.cz: 3D grafika jako na dlani

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

Jak na inverzní kinematiku v Cinemě 4D, nejen ve verzi 8

18. února 2003, 00.00 | Na schematickém modelu si vyzkoušíme základní chování inverzní kinematiky a zjistíme, že je to technologie, která nám může zásadně ulehčit práci při tvorbě animací.

{1. část}

Před časem jsem byl otázán jedním přítelem, zda bych nepřipravil nějaký tutoriál, že by si chtěl zkusit něco nového. Pak se vyskytla nutnost použít při jednom svém výtvoru inverzní kinematiku a pojal jsem ideu, že to bude to pravé.

Tedy Inverzní kinematika. K čemu je to vlastně dobré? Pomocí inverzní kinematiky můžete ovlivňovat chování nadřazených objektů pohybem objektu podřízeného, či dokonce objektem, který s danou skupinou nemá nic společného, tedy zdánlivě, tím myslím, že není ve stejné struktuře. Další možnosti, které tato technologie nabízí, jsou omezení pohybu jednotlivých objektů a to samozřejmě v závislosti na ostatních souvisejících objektech. Tedy je toho dost, co vám tato technologie nabízí a také toho dost dokáže usnadnit. Představte si následující příklad. Na nějaké měsíční základně je satelit a ten sleduje cílový objekt, třeba nějaké těleso. Stojan tohoto satelitu se otáčí kolem své osy směrem k pohybujícímu se tělesu a rameno, na kterém je umístěna samotná parabola, rotuje výškově opět směrem k cílovému objektu. U všech objektů jsou samozřejmě nastavena úhlová omezení a takto připravená animace nepotřebuje nic jiného než nastavit polohu cílového objektu. A aby to nebylo tak fádní, tak je celý satelit doplněn o drobnosti, jako jsou písty, které se stahují do sebe a kabel, který se deformuje podle polohy ramena vůči stojanu. Jako na mém obrázku a animaci.


Jelikož by zřejmě bylo zbytečné modelovat společně celý satelit, tak si toto chování vyzkoušíme na jednoduchém modelu, který nám bude při troše fantasie satelit nahrazovat. Základ tohoto modelu budou tvořit dva poupravené kvádry o rozměrech 15*15*100 a na dvou protilehlých stranách vytvoříme pomocí funkce Vytažení dva výstupky. Souřadný systém tohoto objektu umístíme do středu spodního polygonu. Tento objekt zduplikujeme a novou kopii umístíme tak, že její souřadný systém bude na vrchním polygonu spodního, mateřského objektu. Ještě nový objekt mírně poupravíme a posuneme nově vytažené polygony níže. Výsledek by měl vypadat asi takto.


Přejmenujeme si naše objekty na základ a top (na které to platí je asi jasné) a top ve správci objektů umístíme pod základ. Nyní si připravíme píst hydrauliky. Ten sice bude mít s inverzní kinematikou pramálo společného, ale myslím, že tento jednoduchý trik je docela užitečný. Tedy vložte si do scény kvádr o velikosti 7*7*35 a tento zduplikujte a upravte na velikost 5*5*35. Převeďte oba objekty do meshe a přejmenujte na píst velký a píst malý (k pojmenovaní, to je samozřejmě pouze doporučené, abychom se v následujících částech článku shodovali v popisech a mohli se lépe orientovat). Píst velký umístěte k výstupku základu a píst malý k témuž výstupku na topu, přičemž dodržte pozici v osách "x" a "z". U obou pístů posuňte osy souřadného systému, a to u pístu velkého do středu spodního polygonu a pístu malého do středu vrchního polygonu. Poté oba objekty umístěte na středy protilehlých hran výstupků. Výsledek by měl vypadat takto (pozn. jestliže vám mezi objekty nedochází alespoň k "nulovému" průniku, styku, tak objekty zvětšte v podélném směru tak, aby k tomuto průniku došlo, přičemž by oba objekty měly zůstat podobně dlouhé).


Nyní vytvoříme pomocí funkce Target Expression (Cíl, chování) vzájemné cílení obou částí pístu hydrauliky. Tuto funkci vložíme oběma částem pístu. Nyní ještě jednou musíme upravit osy obou částí pístu, protože, jak jste si možná všimli v chování objektu světla "Slunce", tak cílený objekt vždy ke svému cíli směřuje v ose "z".



Jestliže to máme připravené, tak si ve správci objektu označte u jednoho z fragmentu pístu hydrauliky ikonu funkce Target, při současném označení objektu ve správci objektu, kterému tato funkce patří a v záložce Attributes se objeví pole, do kterého prostým systémem chyť přenes a pusť přenesete jméno druhé části pístu. Na obrázku jsou sloučeny stavy před a po přenesení. Stejnou operaci provedeme i s druhou částí. Chceme-li nyní vyzkoušet, jak se nám to vlastně zdařilo, tak musíme umístit píst velký pod základ na stejnou úroveň s topem a pod top umístíme píst malý.



Kdybychom nyní rotovali s topem, tak se nám krásně projeví chování pístu.

[-more-]{2. část} Tak to bylo to nejsnazší, ne nebojte, ani dál to nebude nějaká krvavá lázeň. Prosím ale o chvíli trpělivosti, protože si nejdříve musíme pro inverzní kinematiku připravit nějaké drobnosti a samotné osvícení inverzní kinematikou se dostaví samo v další části.

Vložíme si do scény nulový objekt a ten umístíme na vrchní polygon topu a pojmenujeme řídící. Jeho souřadnice by tedy měli být 0,0, a umístění vrchního polygonu. Řídící ve správci objektů umístíme pod top.


V budoucnu nám bude chování tohoto objektu ovlivňovat veškerý pohyb tohoto satelitu, protože právě tento objekt bude směřovat za pohybujícím se cílem. Vložíme do scény další nulový objekt a ten si pojmenujeme cíl. Tento objekt necháme ve struktuře zcela nahoře a umístíme jej někam na stranu od pístu a trochu nahoru, aby byl v budoucnu v dosahu výkyvu ramena "satelitu" (topu) jako je na mém modelu. Na tomto místě je možná věcná poznámka, že mezi drobné vylepšení nové Cinemy patří i správa zobrazení objektů a tak si pro zřetelnost můžete vybrat, jak Váš nulový objekt bude vypadat, což Vám rozhodně pomůže pro přehlednost scény.



Je na čase vložit inverzní kinematiku. Vybereme základ a vložíme tag Kinematic Tag (Inverzní kinematika). Totéž provedeme u topu. Další vloženou funkcí bude IK Expression (IK chování) u řídícího. Nyní musíme vložené funkce nastavit. A začneme Kinematic Tagem u základu.




Heading, směrový úhel, tedy rotace kolem osy "y". V našem případě necháme tuto volbu nezatrženou, protože zatržení značí omezovací úhel. Pitch, výškový úhel, úhel kolem osy "x", tedy při aplikaci tohoto směru se objekt přiklání při pohybech k ose "z". Bank, úhel náklonu, rotace kolem osy "z", objekt se přiklání k ose "x". Je zřejmé, že v našem případě je žádoucí možnost rotace pouze okolo osy "y" a to bez omezení. Tedy objekt jedině hodnota Heading zůstane bez omezení, hodnoty Pitch a Bank budou omezeny maximálně, tedy 0 až 0 a 0 až 0. Hodnota Damping značí útlum působení celého systému inverzní kinematiky v daném uzlu.


Nastavení tagu u topu již určitě sami tušíte. Bude se odehrávat v hodnotách parametru Bank, tedy v úhlu náklonu. A jelikož je můj model směřovaný do záporné strany osy "x", tak jsou hodnoty záporné a to minimální hodnota je -85o a maximální -5o . Můj, nebo snad lépe náš model, tedy může směřovat maximálně takřka přímo vzhůru a minimálně takřka do pravého úhlu vzhledem k základu. Můžete-li, tak si na tomto místě model uložte, protože funkce, kterou teď provedeme, je zrušitelná pouze zrušením její hodnoty (hned uvedu) a ručním znovuumístěním objektů, což je sice hned hotové, ale zbytečné. Jde o to, že náš pracovní stav objektu budeme ještě potřebovat pro výrobu kabelu.


Máte-li, tak si označte objekt řídící a jeho ikonu IK Expression a stejným způsobem jako jsme aktivovali funkci Target, aktivujte IK Expression objektem cíl.


Co se stalo?! Inverzní kinematika se aktivovala, respektive se tímto aktivoval náš model. Nyní když budete pohybovat objektem cíl, tak náš "satelit" bude stále tento objekt sledovat v mezích parametrů jednotlivých jeho částí. Možná Vás napadne, jaký že je rozdíl mezi funkcí Target a IK Expression. Objekt Target se chová pouze tak, že se natáčí za svým sílovým objektem, ale IK Expression se aktivně "snaží" přimknout se k cílovému objektu a tak touto snahou ovládá celou skupinu objektů, ke které patří.

Tedy vše funguje? Výborně, pustíme se do finální fáze. Vytvoříme kabel, který se bude deformovat podle polohy ramena. Postup bude podobný jako doposud při využití IK u základu a topu, až na to, že se bude týkat kostí, které budou řídit polohování u Hypernurbsu podřazenému objektu. Vrátíme si model do původní polohy (nebo pokud jste dali na mě, tak jej nahrajeme) a jdeme na věc. Nejdříve ale musím upozornit, že použijeme standardní nástroje a vězte, že by se daly spolu s dalšími možnostmi využít nástroje modulu Mocca, který je specializovaný právě na kosti a inverzní kinematiku "měkkých" objektů.

Vytvoříme si kvádr o velikosti 5*5*130, převedeme jej do meshe, pojmenujeme jej kabel a umístíme souřadný systém tohoto objektu, umístíme do středu spodního uzavíracího polygonu. Poté smažeme vrchní a spodní uzavírací polygon, na výšku vytvoříme čtyři segmenty (viz níže) a vložíme do scény Hypernurbs. Tuto funkci umístíme na stejné místo jako je kabel pomocí funkce Transfer. Poté umístíme celou skupinku na hranu opačného výstupku než máme píst velký a natočíme o 30o.



Pozn. v dalších části článku možná zjistíme, že je náš kabel krátký a tak jej možná budeme muset prodloužit a upravit kosti, avšak domnívám se, že to není problém, tedy nenechte se tím případně zmást.

[-more-]{3. část}


Vložíme do scény kost (Bone) a tuto kost umístíme opět pomocí funkce Transfer na místo kabelu, ale nyní využijeme i nastavení rotace. Poté umístíme ve správci objektů naší kost pod objekt kabelu. Uchopte v okně perspektivy vrcholový bod kosti a tažením ji umístěte ve směru kabelu a pomožte si nastavením úhlů koordinátů (Coordiantes). Má prvá kost má hodnotu rotace 0,90,0. Nyní umístíme další kost. Tu vložíme tak, že máme vybraný nástroj "move" a při stisknuté klávese Ctrl (či adekvátní u Macu) klikneme na špičku prvé kosti. Tím se nám vytvoří nová kost, která bude napojená na kost prvou a bude ve správci objektů umístěna pod kostí prvou. Každou kost kromě prvé mějte nastavenu v Coordiantors pod úhly 0,0,0 v lokálním souřadném systému.




Odpovídá-li Váš model alespoň zhruba mému, tak můžeme pokročit dále. Vložíme si do scény nulový objekt a umístíme jej na za hranu výstupku topu a také jej ve správci objektů přiřadíme pod top. Pojmenujeme jej cíl kabel. Poté tento bod zduplikujeme, pojmenujeme cíl kabel 1 a umístíme před plochu výstupku do vzdálenosti asi velikosti poslední kosti a zařadíme jej taktéž pod top. Určitě už tušíte proč. :-)

Vybereme skupinku s Hypernurbsu s kabelem a umístíme ji ve správci objektů pod základ. Poté vybereme prvou kost a aplikujeme na ní funkci Anchor tag, tedy kotvu. Tato fukce značí připevnění na místo bez možnosti rotace a změna pozice. Na každou další kost kromě poslední aplikujeme funkci Kinematic tag.



Upevníme kosti, což znamená, že se aktivují a tím již nadále bude kabel ovlivňován jejich chováním a na konec poslední kosti umístíme další nulový objekt, který umístíme ve správci objektů pod poslední kost a pojmenujeme jej kabel konec. Nyní musíme nastavit jednotlivé kosti a tagy inverzní kinematiky. IK se bude nastavovat jen ve směru Heading (důvod je jasný, kosti jsou definovány tak, že délka každé z nich je definována osou "z" a tak naše kosti budou rotovat kolem osy "y", tedy heading) a tak ostatní hodnoty budou omezeny na 0,0. Již umíte tyto hodnoty definovat a tak tuto fázi nechám na Vás. Ono ostatně je věcí zkušenosti a citu, jak nastavit jednotlivé úhly. Mé kosti jsou nastaveny na následující hodnoty: prvá -30, 70, druhá 0, 120.


Nyní aplikujeme na poslední kost a kabel konec IK Expression. Jistě víte proč a tak již sami určitě chcete přiřadit k této funkci adekvátní cílové objekty, v našem případě cíl kabel a cíl kabel 1, přičemž by ke kosti měl patřit cíl kabel 1, který je před plochou výstupku topu. Je-li všechno v pořádku, tak by model měl vypadat takto.


Nyní je nutno ještě nastavit kosti, respektive vysvětlit jejich chování, protože pro náš model jejich nastavení vyhovuje. Hodnoty, které můžete nastavit, jsou Délka kosti (tu jsme definovali interaktivně), poloměr kosti, tedy poloměr zlomení objektu v kloubu, a síla působení. Dále můžeme nastavit rádius působení kosti a dole je nastavení pozice, což jsme opět vytvořili interaktivně.


Je na čase opět zaktivovat náš model, což jsme již jednou dělali. Vybereme tedy řídící a jeho tak IK Expression přiřadíme mu nulový objekt cíl. Pohneme cílem a náš objekt by se měl "srovnat" a na dále fungovat.

Funguje? Výborně, tak to umíte inverzní kinematiku :-)!



Obsah seriálu (více o seriálu):

Tématické zařazení:

 » 3D grafika  

 

 

 

 

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

Uživatelské jméno:

Heslo: