Kosterní animace, přímá a inverzní kinematika. Inverzní kinematika (pouze pro verze Pro)

V předchozí lekci jsme se seznámili s metodou přímé kinematiky, při které se hierarchické vztahy přenášejí z předků na potomky. To vede k tomu, že podřízené objekty částečně nebo úplně přebírají chování rodičovských objektů a zároveň na ně nemají žádný vliv. Tento typ hierarchického propojení usnadňuje animaci objektů skládajících se z velkého počtu prvků za předpokladu, že všem prvkům objektu jsou přiřazeny stejné transformace. Nepomůže však, když pohyb jednoho prvku musí ovlivnit všechny ostatní prvky spojené v rámci komplexního objektu s přihlédnutím k jejich pozici v hierarchickém řetězci a také k vlastnostem. Toto chování je simulováno pomocí inverzní, nebo, jak se často říká, inverzní kinematiky (Inverse Kinematics), jednoduchých příkladů použití, na které se podíváme v této lekci.

Teoretické aspekty

Pojem inverzní kinematiky

Inverzní kinematika se od přímé kinematiky liší jiným principem dědičnosti. Jestliže u přímé kinematiky je transformace potomků určena transformací jejich předků, pak s inverzní kinematikou potomci uvedou rodičovské objekty do pohybu, to znamená, že program vypočítá polohu a orientaci nadřazených objektů na základě polohy a orientace. transformovaného dítěte. Potomek, který způsobuje transformace jiných objektů podle zákonů inverzní kinematiky, se nazývá buď efektor ( Efektor), pokud se nachází uprostřed samostatné hierarchické větve, nebo koncového efektoru ( KonecEfektor), pokud je konečným objektem této větve. Prostřednictvím efektoru je manipulován celý hierarchický řetězec. Transformace výsledného efektoru v tomto případě zajišťuje transformaci všech objektů hierarchické větve podle zákonů inverzní kinematiky a transformace právě efektoru vede k tomu, že se pozice objektů níže v hierarchii mění podle zákonů inverzní kinematiky. na zákony přímé kinematiky, a objekty s vyšší hierarchií - podle zákonů inverzní kinematiky kinematiky.

Chcete-li to vidět, vytvořte jednoduchou scénu s jakýmsi žezlo vymodelovaným z primitiva Hedra, deset tori a válec se zkosenými základnami (obr. 1). Propojte objekty s nástrojem VybrataOdkaz(Vybrat a propojit) vzdalující se od objektu Hedra 01 vznést námitku ChamferCyl 01 - v důsledku toho se válec ukáže jako kořenový objekt (obr. 2). Vyberte válec a posuňte jej doleva – všechny ostatní objekty, které jsou jeho potomky, se budou pohybovat spolu s ním. Zatímco pohyb jednoho z tori umístěných uprostřed řetězu povede k pohybu pouze objektů řetězu, které jsou jeho dětmi, zatímco předměty umístěné nad ním v hierarchii zůstanou na místě (obr. 3) . Vraťte se do původní polohy objektů a aktivujte režim inverzní kinematiky otevřením v panelu Hierarchie záložka IK a kliknutím na tlačítko InteraktivníIK, který by měl být zvýrazněn (obr. 4). Uložte pracovní scénu do souboru a opakujte stejné operace s pohybem válce a torusu - posunutím prvního objektu získáte stejné výsledky jako dříve, ale změna polohy torusu povede k odpovídajícím změnám v poloze všech ostatních (a nejen děti ve vztahu k němu) prvky, včetně objektu Root (obr. 5). V tomto případě se pozice objektů umístěných v hierarchii pod posunutým torusem (v tomto případě hraje roli jednoduše efektoru) změní podle zákonů přímé kinematiky a objektů s vyšší hierarchií - podle zákonů inverzní kinematiky.

Ovládání rotace a pohybu objektů

Vraťte se do uložené pracovní scény, vyberte objekt Hedra 01 a pohybujte s ním, sledujte všechny objekty hierarchického řetězce a přesvědčíte se o naprostém nedostatku kontroly nad nimi, protože poloha a orientace těchto objektů se mění tím nejnepředvídatelnějším způsobem (obr. 6). To je způsobeno tím, že ve výchozím nastavení je u objektů ovládaných efektorem povolen jakýkoli typ pohybu a rotace. V praxi nejčastěji lze spojené objekty transformovat pouze určitým způsobem, což znamená, že všechny ostatní možnosti transformace jsou pro ně zakázány.

Tento aspekt inverzní kinematiky je regulován především pomocí parametrů Joint, které umožňují určit, o kterých osách a v jakých mezích ( RotačníSpojs) a/nebo přesunout ( PosuvnéSpojs) jeden nebo jiný podřízený objekt vzhledem k nadřazenému objektu. Jinými slovy, parametry Joint specifikují povahu transformace spojení (nebo, jak se často říká, kloubu nebo kloubu) mezi podřízeným a nadřazeným objektem. Tyto parametry se konfigurují na záložce IK panely Hierarchie ve výchozím nastavení jsou zde však dostupné pouze parametry, které jsou zodpovědné za omezení rotace objektů v hierarchickém řetězci ( RotačníSpojs). Schopnost spravovat objekty pomocí parametrů PosuvnéSpojs se objeví až po přiřazení specializovaného ovladače IK. To druhé se provádí prostřednictvím nabídky Animace=>IKŘešitelé(Animation=>IK solutions), což zahrnuje přiřazení jednoho z následujících IK ovladačů k objektům:

  • AHOJŘešitel (DějinyNezávislýŘešitel) - historicky nezávislý ovladač (považovaný za nejuniverzálnější pro animaci postav);
  • HDŘešitel (DějinyZávislýŘešitel) - historicky závislý regulátor;
  • IKKončetinaŘešitel- ovladač pro animaci končetin (určený pouze pro dva objekty hierarchického řetězce);
  • SplineIKŘešitel- Spline ovladač.

Tyto ovladače poskytují nejen přístup k parametrům PosuvnéSpojs, ale také poskytují spoustu možností díky tomu, že transformují běžné hierarchické sekvence do tzv. inverzních kinematických řetězců ( IKŘetěz), což jsou nevizualizované řídicí objekty, které zjednodušují správu prvků hierarchie podle zákonů inverzní kinematiky. Externě v projekčních oknech se obvody IK objevují jako řada nitkových křížů a čar spojujících začátek a konec konkrétního obvodu IK. Tyto prvky se vybírají obvyklým způsobem (kliknutím na nitkový kříž nebo pomocí VybratpodleJméno), ale nejsou upravovány prostřednictvím panelu Upravit(stejně jako jiné objekty) a prostřednictvím panelu Pohyb. Bez ohledu na typ ovladače jsou obvody IK vytvořeny stejným způsobem: je vybrán první prvek navrhovaného obvodu, pak je k němu přiřazen ovladač IK a je určen poslední prvek řetězce. Rozdíl mezi regulátory IK spočívá v použití různých metod převodu řetězců IK při výpočtu řešení IK.

Abyste se ujistili, že IK řetězy zjednoduší správu prvků hierarchie, vytvořte zjednodušený model nohy (stehna a bérce s chodidlem) - obr. 7. Propojte je do hierarchického řetězce, začněte tento proces odspodu, takže nakonec horní válec (to znamená stehno) skončí jako kořenový objekt. Zapněte režim inverzní kinematiky a zkuste posunout nohu doleva - výsledek nebude vůbec stejný jako při chůzi, protože i při malém pohybu budou otočky kloubů příliš velké (obr. 8). Nyní vytvořte další fiktivní objekt v horní části stehna a zahrňte jej do hierarchie jako kořenový objekt. Vyberte objekt Dummy a přiřaďte k obvodu ovladač AHOJŘešitel pomocí příkazu Animace=>IKŘešitelé=>AHOJŘešitel a určení chodidla jako konečného efektoru, při provedení této akce se za kurzorem myši natáhne tečkovaná čára (obr. 9). Tím se vytvoří inverzní kinematický řetězec s ovladačem IK, který bude indikován výskytem čáry táhnoucí se od horní části stehna k chodidlu a zaměřovacím křížem (jedná se o tzv. cílový objekt IKGól) v referenčním bodě efektoru (obr. 10). Pokud pohnete zaměřovacím křížem, uvidíte, že se noha pohybuje, ohýbá a otáčí tak, že referenční bod chodidla je vždy ve středu zaměřovacího kříže, ale samotná noha se vůči bérci nepohybuje (obr. 11 ). Zkuste podobný pohyb animovat kliknutím na tlačítko AutoKlíč, aktivaci 50. snímku, přetažení zaměřovacího kříže trochu zpět a poté, na 100. snímku, jeho návrat do původní polohy a vypnutí režimu automatického generování klíče. Přehrajte si animaci a uvidíte extrémně zjednodušenou simulaci chůze (obr. 12). Do skutečné chůze je samozřejmě ještě daleko, ale my se zatím omezíme na toto a vrátíme se k této problematice v některé z nadcházejících lekcí, kdy si povíme o budování hierarchie pomocí Kosti.

Vraťme se na pracovní scénu s palcátem uloženým na disku a zkusme trochu zaexperimentovat s nastavením parametrů Joint. Z nabídky vyberte Kořenový objekt Animace=>IKŘešitelé(Animace=>řešení IK) select command HDŘešitel a ukažte myší na koncový efektor (tj. objekt Hedra 01). Vyberte objekt Hedra 01, posuňte jej opět jedním ze směrů a uvidíte, že výsledek je mnohem realističtější (obr. 13). Vyberte objekt ChamferCyl 01 a otevřete záložku IK panely Hierarchie. Ve výchozím nastavení jsou pro něj parametry PosuvnéSpojs vypnutá zaškrtávací políčka Aktivní ve vztahu ke všem třem osám a povoleno pro parametry RotačníSpojs(obr. 14). To znamená, že tento objekt se může jakkoli otáčet, ale je zakázáno pohybovat se vzhledem k jakékoli z os. Například zrušte omezení posuvu vzhledem k ose Z zapnutím zaškrtávacího políčka Aktivní v sekci ZOsa, - poté poloha a orientace objektu ChamferCyl 01 se při pohybu koncového efektoru zcela změní (obr. 15 a 16); vrátit omezení. Všimněte si, že i při nastavení posuvných omezení dochází k určitému pohybu objektu ChamferCyl 01 se stále vyskytuje, protože omezení nejsou nastavena přímo na objekty, ale na jejich vzájemné propojení ( Spoj), tedy na kloubech (pokud nakreslíme přirovnání s lidským údem). Zkuste také nastavit omezení otáčení objektu ChamferCyl 01 ve vztahu ke všem třem osám, což umožní dosažení tuhé fixace polohy a orientace daného předmětu, přičemž všechny ostatní prvky IK řetězu budou stále zcela oproštěny od jakýchkoli omezení rotace a posuvu (obr. 17).

Rýže. 14. Počáteční vzhled svitků Posuvné spoje A Rotační klouby pro objekt ChamferCyl 01

Nastavení limitů omezení

Kromě povolení/zakázaní omezení posouvání a točení ve svitcích PosuvnéSpojs A RotačníKlouby můžete regulovat, jak velký pohyb nebo rotace je přípustný vzhledem k jedné nebo druhé ose, to znamená nastavit limity omezení. Toho dosáhnete zaškrtnutím políčka Omezený(Limit) a definování mezních hodnot rotace v polích Z A Na(„Od“ a „Do“). Naše pracovní scéna není příliš vhodná pro experimentování s limity skluzu a rotace, proto vytvořte novou scénu ze tří válců různých průměrů, umístěných na sobě tak, aby válec s největším poloměrem byl nahoře (měl by být na počátek), a dole je nejmenší (obr. 18). Výška všech válců je stejná a rovná se 30. Propojte je do hierarchického řetězce a začněte tento proces shora tak, aby nakonec spodní válec skončil jako kořenový objekt (obr. 19).

Vyberte spodní válec a přiřaďte okruh ovladači AHOJŘešitel pomocí příkazu Animace=>IKŘešitelé=>AHOJŘešitel a určení horního válce jako koncového efektoru. Vyberte horní válec a na záložce IK panely Hierarchie ve svitku RotačníKlouby zrušte zaškrtávací políčka Aktivní pro všechny tři osy a ve svitku PosuvnéSpojs zaškrtněte políčko Aktivní pro osu Z. Proveďte podobnou operaci pro střední válec a pro spodní válec zakažte všechny typy kloubových s-transformací. Poté zkuste posunout horní válec nahoru a dolů - po nastavení oprávnění se bude pohybovat vzhledem k ose Z(obr. 20) a může se neomezeně pohybovat nahoru a dolů bez omezení. Nyní nastavíme limity válců pro jejich pohyb podél osy Z tak, že horní válec je nejprve zcela ponořen do prostředního a poté prostřední do spodního. To znamená, že konečným výsledkem by měla být nějaká imitace skládací trubky (například dalekohledu). Nejjednodušší způsob je vybrat vhodná omezení s vizuální kontrolou limitů, což je možné zvýšením a snížením pomocí myši při stisknutí klávesy Ctrl odpovídající hodnoty v polích umístěných vpravo od vstupních polí (bez povolení prozatím zaškrtávací políčko Omezený). V tomto případě se aktuální stav válců okamžitě zobrazí v aktivním projekčním okně. Vyberte horní válec a tímto způsobem (to znamená změnou parametrů při stisknuté klávese Ctrl) se ujistěte, že jeho počáteční pozice (tedy když zaujímá svou původní pozici) odpovídá hodnotě Z, rovná 30, a konečná (když je tento válec zcela ponořen ve spodním válci) - na hodnotu Na, rovna 0. Podobně vyberte hodnoty omezení pro střední válec, které se pro daný úkol ukážou být naprosto stejné. Aktivujte příslušná zaškrtávací políčka Omezený(obr. 21) a uvidíte, že při pohybu horním válcem se náš „dalekohled“ skutečně složí tak, jak bylo zamýšleno (obr. 22). Uložte svou pracovní scénu do souboru. Animujte pohyb cylindrických vložek: aktivujte režim automatického generování klíčů, přetáhněte posuvník na poslední snímek, posuňte horní cylindr tak, aby byl zcela ponořen do spodního, a deaktivujte režim automatického generování klíčů. Uložte scénu do souboru (budeme jej potřebovat později).

Rýže. 21. Konečný vzhled svitku Posuvné spoje pro horní a střední válce

Pokud si to přejete, může být připojení objektů hladší zaškrtnutím políčka pro odpovídající omezení spojů Snadnost(tato funkce se často používá k animaci „měkkých“ modelů). Udělejte to například pro horní a střední válec (obr. 23). Poté se efekt pohybu válců během animace změkne, protože prostřední válec se začne pohybovat nikoli, když horní válec dosáhne své spodní hranice, ale o něco dříve.

Co je to „inverzní kinematika“?

Úkolem inverzní kinematiky je hledat takovou sadu kloubových konfigurací, která by zajistila co nejměkčí, nejrychlejší a nejpřesnější pohyb k daným bodům. Mnoho existujících metod však trpí takovými nevýhodami, jako je vysoká výpočetní náročnost a nepřirozenost výsledných pozic. Tento článek popisuje nový ( pravděpodobně v době psaní článku - 2010.) heuristická metoda s názvem „Metoda vpřed a vzad“ ( Inverzní kinematika s dopředným a zpětným dosahem, dále jen FABRIK),
FABRIK se vyhýbá použití rotací a matic ve prospěch přímého získání bodu na přímce. Díky tomu zabere jen pár iterací, má nízké výpočetní náklady a ve výsledku vizuálně přirozenou pózu. FABRIK bez problémů zvládá i ukládání omezení a použití více okruhů a/nebo koncových bodů. O této metodě je tento příspěvek.

Žádám vás, abyste s tímto úryvkem zacházeli s pochopením, protože originál je poměrně velký, má spoustu vody, vhodných a nevhodných opakování a odklonů od tématu, stejně jako srovnání s jinými algoritmy. Toto jsem se rozhodl ignorovat, proto obsahuje jen malou část textu, která však odráží podstatu - cca. překlad

1. Model umělého těla

Systém vícenásobných tuhých těles se skládá ze souboru tuhých těles, nazývaných uzly, spojených dohromady hranami. Všechny hrany jsou komponenty citlivé na pohyb: omezují pohyb v určitém úhlu vzhledem k sousedním hranám. Modelování virtuálního těla je důležité pro výpočet lidské pozice. Model se správně umístěnými omezeními vám umožní získat sadu správných pozic, což umožní získat realističtější pohyb. Většina modelů předpokládá, že části těla jsou tvrdé, i když se jedná pouze o přiblížení skutečnosti.
Kostra je obvykle modelována jako hierarchie pevných segmentů spojených hranami, z nichž každý je definován vlastnostmi, jako je délka, tvar, objem a hmotnost. Manipulátor na způsob robotické ruky nebo animované postavičky je modelován jako řetězec sestavený z pevných uzlů navzájem spojených hranami. Každý pohyb a/nebo rotace kosti s indexem i ovlivňuje všechny následující prvky řetězce. Řetězec lze formalizovat následovně: každý uzel bez potomků by měl být nazýván koncovým bodem; pro každý koncový bod lze vytvořit řetězec pohybem zpět podél kostry, od rodiče k rodiči, dokud nenarazíme na kořenový uzel řetězce (začátek řetězce). Podle definice problém IK předpokládá, že kořenový uzel je statický. Metody si však obvykle poradí s přesunem kořene.

Algoritmus plného cyklu algoritmu FABRIK (pseudokód, první prvek pole na indexu 1)

Vstupní data: pole pozic uzlů p[i] s i = 1...n, cílová pozice t a hodnoty vzdálenosti mezi spárovanými uzly. d[i] = | p -t | pro i = 1, ... , n-1 Výstup: Nové pozice p[i], i = 1...n //Vzdálenost mezi kořenem a cílovým dist = | p - t | //Zkontrolujte, zda je cíl dosažitelný, pokud dist > d + d + ... + d ( //cíl je nedosažitelný pro i = 1, ..., n-1 do ( //Najděte vzdálenost r[i] mezi cíl t a uzel p [i] r[i] = |. t - p[i] |. lambda[i] = d[i] / r[i] //Najděte novou polohu uzlu p[i] p = (1 - lambda[i]) * p[i] + lambda[i] * t ) ) else ( //Bod je dosažitelný; tedy b bude nová poloha uzlu p b = p //Zkontrolujte, zda je vzdálenost mezi koncový uzel p[n] a / je vyšší /cílová pozice t hodnota tolerance (tolerance) DIFa = | [n] jako cíl (pravděpodobně myšleno "umístit cílovou pozici" - přibližně transl.) p[n] = t pro i=n -1 , ..., 1 do ( //Získejte vzdálenost r[i ] mezi uzlem p[i] a novou pozicí p r[ i] = |. lambda[i] = d[i] / r[i] //Vypočítejte novou polohu uzlu p[i]. ] p[i] = (1 - lambda[i]) * p + lambda[i] * p[i] ) //Fáze 2: obrácená sekvence //Nastavte kořenový prvek p na výchozí pozici p[i] = b pro i=1 ,..., n - 1 do ( //Získejte vzdálenost r[i] mezi uzlem p a pozicí p[i] r[i] = | p - p[i] |

lambda[i] = d[i] / r[i] //Získat novou pozici p[i] p = (1-lambda[i]) * p[i] + lambda[i] * p ) DIFa = | p[n] - t |

)) 2.FABRIK - nové heuristické řešení problému IK Tato část poskytuje podstatu metody FABRIK. Využívá již vypočítané pozice v dopředném a zpětném režimu. FABRIK dosahuje minimalizace chyb jednorázovým nastavením úhlu každého uzlu. Tito. celý řetězec se projede, počínaje posledním uzlem, přičemž se nastaví úhel každého vynechaného uzlu, načež se řetězec přejde v opačném směru. Tato metoda na rozdíl od rotační transformace mění problém hledání polohy uzlu v problém hledání bodu na přímce; lze tedy ušetřit čas a snížit počet výpočtů. Předpokládejme, že soubor p,…, p[n] je množina pozic uzlů manipulátoru. Předpokládejme také p je kořenový uzel a p[n] je koncový uzel, tzn. Pro zjednodušení ponecháme jeden koncový uzel. Cíl představuje pozice t. Metoda FABRIK je uvedena ve výše uvedeném seznamu a grafická interpretace celého cyklu na obrázku vlevo, s jedním cílovým bodem a čtyřmi uzly v řetězci. Zvažte celý cyklus algoritmu na obrázku:

  • A- Výchozí polohy manipulátoru a cíle.
  • t- Posuňte koncový uzel p,…, p[n] k cíli.
  • C- Hledání pozice p" p" A p,…, p[n], na dálku d z bodu p".
  • d- Opakujte pro všechny uzly.
  • E- Druhá fáze algoritmu: přesuňte kořenový prvek z jeho pozice p" do své výchozí pozice.
  • F- Opakujeme pro všechny uzly, ale tentokrát začínáme od základny a přecházíme do koncového uzlu. Algoritmus se opakuje, dokud se pozice konečného prvku nepřiblíží k cíli na dostatečnou vzdálenost.

Další podrobnosti:
Nejprve se vypočítají pozice mezi uzly (pole d), poté zkontroluje, zda je cílový bod dosažitelný; Vypočítá se vzdálenost mezi kořenovým uzlem a cílem ( dist), a pokud je tato vzdálenost menší než celkový součet vzdáleností mezi uzly, pak je cíl dosažitelný, jinak ne. Pokud je cíl dosažitelný, celý cyklus je omezen na dvě fáze. V první fázi algoritmus odhaduje počáteční pozici každého uzlu, počínaje koncovým prvkem p pohybující se směrem k základně manipulátoru p,…, p[n]. Nechejme tedy cílovou pozicí pozice koncového uzlu, p"[n] = p[n]. Dostaneme rovnou čáru l, ležící na bodech p,…, p[n] A p"[n]. Nová pozice uzlu s indexem n-1, p", leží na této čáře v určité vzdálenosti d z p"[n]. Podobně nová pozice uzlu s indexem n-2, p", lze vypočítat pomocí přímky l, ležící na bodech p,…, p[n] A p" na dálku d z p". Algoritmus se opakuje, dokud nejsou vypočteny všechny nové pozice pro všechny uzly, včetně posledního. V případech, kdy je kořenový prvek přesunut do požadované polohy, FABRIK funguje tak, jak je popsáno, pouze s tím rozdílem, že nová poloha p"" kořenový uzel bude požadovaná pozice, nikoli výchozí pozice.
Po jedné úplné iteraci se téměř ve všech případech (podle pozorování) konečný uzel přiblíží k cíli. Postup se bude opakovat tolikrát, dokud konečný uzel nepadne na cílovou pozici nebo se k ní nepřiblíží na přijatelnou vzdálenost. Implementace metody FABRIK bez zavádění omezení bude konvergovat v jakémkoli cílovém bodě/řetězci, pokud je cíl dosažitelný. Pokud je však cíl dále, než je vzdálenost, na kterou se může řetěz rozšířit, je zapotřebí podmínka přerušení, která porovná minulou a aktuální polohu koncového uzlu a která zastaví provádění algoritmu, pokud je posun koncového uzlu menší než určitá hodnota (epsilon). Ve speciálních případech je také algoritmus po určitém počtu iterací přerušen (taková situace však zatím nenastala).
Pro rychlejší výsledky a řešení v několika iteracích je možná optimalizace pomocí konformní geometrické algebry (dále jen CGA); CGA má výhodu v základních tvarech, jako jsou koule, čáry, roviny a kružnice, které jsou poměrně snadno reprezentovány algebraickými objekty. Hledání polohy uzlu nacházejícího se mezi dvěma známými uzly lze proto vyjádřit průsečíkem dvou koulí se středy v polohách odpovídajících těmto uzlům a poloměrem rovným vzdálenosti mezi polohami hledaného uzlu a stávající; nová poloha uzlu bude ležet v nejbližším bodě na kružnici tvořené průsečíkem dvou koulí. Další jednoduchou optimalizací je přímé nakreslení čáry ve směru cíle, když cíl není k dispozici.

3. Model s více koncovými uzly


Stejně jako v případě jednoho koncového uzlu je algoritmus rozdělen do dvou fází:

  • První fáze je úplně stejná, ale tentokrát začíná od každého koncového uzlu a pohybuje se směrem dovnitř po řetězci od tohoto uzlu, až k podzákladně (pravděpodobně podzákladna je uzel s několika sousedícími hranami - cca překlad) . Získáme tak tolik různých pozic pro podzáklad, kolik je k ní připojených koncových uzlů. Konečnou pozici lze vzít jako těžiště těchto pozic. Poté vykonávání algoritmu pokračuje v normálním režimu a pohybuje se od podzákladu ke kořenu. Pokud mají dílčí základny vlastní dílčí základny, pak se ve vztahu k nim provádějí podobné akce - je také sestaven seznam možných pozic, načež je tato dílčí základna nastavena na těžiště z celého seznamu pozic.
  • Ve druhé fázi je na každý uzel aplikován obvyklý algoritmus, který se pohybuje dále a dále od kořenového uzlu. V tomto případě musí být každý řetězec zpracován samostatně až do konečného uzlu: čím více dílčích základen, tím více opakování pro každou z nich. Proces se opakuje, dokud koncové uzly nedosáhnou svého cíle nebo dokud nenastane podmínka přerušení.

4. Omezovače

A nakonec nejchutnější částí tohoto článku jsou výpočty pomocí omezovačů. Jsou potřeba, jak jste mohli uhodnout, pro větší podobnost se skutečnými organismy. Samotný uzel je obvykle charakterizován třemi stupni volnosti. Otočení uzlu lze charakterizovat jako „jednoduché otočení“ (2 stupně volnosti), které odráží jeho konečnou polohu, a rotaci kolem vlastní osy (1 stupeň volnosti). Rozdělením pohybu uzlu na dvě takové fáze a aplikací omezovačů na ně je tedy možné řídit polohu uzlu. Samotná omezení lze uložit podobným způsobem: protože Algoritmus je iterativní; omezení rotace lze použít při každé iteraci algoritmu. Limitery však neovlivní konvergenci algoritmu. Hlavní myšlenkou použití omezovačů je přemístit a přeorientovat uzly v rámci limitů.

  • A- Počáteční konfigurace manipulátoru a cíle.
  • t- Posuňte koncový uzel p,…, p[n] k cíli a orientovat ho k němu.
  • C- Hledání pozice p", ležící na čáře mezi pozicemi p" A p,…, p[n], na dálku d z bodu p".
  • d- Přeorientujte uzel do polohy p" takže se dívá podél okraje spojující p" A p".
  • E- Výpočet hraniční elipsy: povolené pozice jsou ve stínované oblasti. Žádný z vrcholů se v této fázi nikam nepohybuje.
  • F- Uzel p,…, p[n] přesune do polohy p^, což je nejbližší pozice na stínované elipse, čímž je zajištěna nová pozice p^ bude v přijatelných mezích.
  • G- Přesuňte uzel p^ za bod p" aby byla zachována délka hrany.
  • h- Pojďme se znovu zaměřit p" aby bylo splněno omezení orientace.

Tento postup se opakuje pro všechny uzly v dopředném a opačném pořadí, podobně jako byly pohyby prováděny ve verzi bez omezení. Omezení „elipsa“ je přitom pravděpodobně charakteristikou hrany, nikoli uzlu, tzn. ve druhé fázi se uzel musí přesunout do elipsy p,…, p[n]- cca. překlad

  • Překlad
  • Režim zotavení

Co je to „inverzní kinematika“?

Úkolem inverzní kinematiky je hledat takovou sadu kloubových konfigurací, která by zajistila co nejměkčí, nejrychlejší a nejpřesnější pohyb k daným bodům. Mnoho existujících metod však trpí takovými nevýhodami, jako je vysoká výpočetní náročnost a nepřirozenost výsledných pozic. Tento článek popisuje nový ( pravděpodobně v době psaní článku - 2010.) heuristická metoda s názvem „Metoda vpřed a vzad“ ( Inverzní kinematika s dopředným a zpětným dosahem, dále jen FABRIK),
FABRIK se vyhýbá použití rotací a matic ve prospěch přímého získání bodu na přímce. Díky tomu zabere jen pár iterací, má nízké výpočetní náklady a ve výsledku vizuálně přirozenou pózu. FABRIK bez problémů zvládá i ukládání omezení a použití více okruhů a/nebo koncových bodů. O této metodě je tento příspěvek.

Žádám vás, abyste s tímto úryvkem zacházeli s pochopením, protože originál je poměrně velký, má spoustu vody, vhodných a nevhodných opakování a odklonů od tématu, stejně jako srovnání s jinými algoritmy. Toto jsem se rozhodl ignorovat, proto obsahuje jen malou část textu, která však odráží podstatu - cca. překlad

1. Model umělého těla

Systém vícenásobných tuhých těles se skládá ze souboru tuhých těles, nazývaných uzly, spojených dohromady hranami. Všechny hrany jsou komponenty související s pohybem: omezují pohyb v rámci určitého úhlu vzhledem k sousedním hranám. Modelování virtuálního těla je důležité pro výpočet lidské pozice. Model se správně umístěnými omezeními vám umožní získat sadu správných pozic, což umožní získat realističtější pohyb. Většina modelů předpokládá, že části těla jsou tvrdé, i když se jedná pouze o přiblížení skutečnosti.
Kostra je obvykle modelována jako hierarchie pevných segmentů spojených hranami, z nichž každý je definován vlastnostmi, jako je délka, tvar, objem a hmotnost. Manipulátor na způsob robotické ruky nebo animované postavičky je modelován jako řetězec sestavený z pevných uzlů navzájem spojených hranami. Každý pohyb a/nebo rotace kosti s indexem i ovlivňuje všechny následující prvky řetězce. Řetězec lze formalizovat následovně: každý uzel bez potomků by měl být nazýván koncovým bodem; pro každý koncový bod lze vytvořit řetězec pohybem zpět podél kostry, od rodiče k rodiči, dokud nenarazíme na kořenový uzel řetězce (začátek řetězce). Podle definice problém IK předpokládá, že kořenový uzel je statický. Metody si však obvykle poradí s přesunem kořene.

Algoritmus plného cyklu algoritmu FABRIK (pseudokód, první prvek pole na indexu 1)

Vstupní data: pole pozic uzlů p[i] s i = 1...n, cílová pozice t a hodnoty vzdálenosti mezi spárovanými uzly. d[i] = | p - p[i] | pro i = 1, ... , n-1 Výstup: Nové pozice p[i], i = 1...n //Vzdálenost mezi kořenem a cílovým dist = | p - t | //Zkontrolujte, zda je cíl dosažitelný, pokud dist > d + d + ... + d ( //cíl je nedosažitelný pro i = 1, ..., n-1 do ( //Najděte vzdálenost r[i] mezi cíl t a uzel p [i] r[i] = |. t - p[i] |. lambda[i] = d[i] / r[i] //Najděte novou polohu uzlu p[i] p = (1 - lambda[i]) * p[i] + lambda[i] * t ) ) else ( //Bod je dosažitelný; tedy b bude nová poloha uzlu p b = p //Zkontrolujte, zda je vzdálenost mezi koncový uzel p[n] a / je vyšší /cílová pozice t hodnota tolerance (tolerance) DIFa = | [n] jako cíl (pravděpodobně myšleno "umístit cílovou pozici" - přibližně transl.) p[n] = t pro i=n -1 , ..., 1 do ( //Získejte vzdálenost r[i ] mezi uzlem p[i] a novou pozicí p r[ i] = |. lambda[i] = d[i] / r[i] //Vypočítejte novou polohu uzlu p[i]. ] p[i] = (1 - lambda[i]) * p + lambda[i] * p[i] ) //Fáze 2: obrácená sekvence //Nastavte kořenový prvek p na výchozí pozici p[i] = b pro i=1 ,..., n - 1 do ( //Získejte vzdálenost r[i] mezi uzlem p a pozicí p[i] r[i] = | p - p[i] |

lambda[i] = d[i] / r[i] //Získat novou pozici p[i] p = (1-lambda[i]) * p[i] + lambda[i] * p ) DIFa = | p[n] - t |

)) 2.FABRIK - nové heuristické řešení problému IK Tato část poskytuje podstatu metody FABRIK. Využívá již vypočítané pozice v dopředném a zpětném režimu. FABRIK dosahuje minimalizace chyb jednorázovým nastavením úhlu každého uzlu. Tito. celý řetězec se projede, počínaje posledním uzlem, přičemž se nastaví úhel každého vynechaného uzlu, načež se řetězec přejde v opačném směru. Tato metoda na rozdíl od rotační transformace mění problém hledání polohy uzlu v problém hledání bodu na přímce; lze tedy ušetřit čas a snížit počet výpočtů. Předpokládejme, že soubor p,…, p[n] je množina pozic uzlů manipulátoru. Předpokládejme také p je kořenový uzel a p[n] je koncový uzel, tzn. Pro zjednodušení ponecháme jeden koncový uzel. Cíl představuje pozice t lambda[i] = d[i] / r[i] //Získat novou pozici p[i] p = (1-lambda[i]) * p[i] + lambda[i] * p ) DIFa = | p[n] - t |
  • A- Výchozí polohy manipulátoru a cíle.
  • t- Posuňte koncový uzel p,…, p[n] k cíli.
  • C- Hledání pozice p" p" A p,…, p[n], na dálku d z bodu p".
  • d- Opakujte pro všechny uzly.
  • E)) p" do své výchozí pozice.
  • F- Opakujeme pro všechny uzly, ale tentokrát začínáme od základny a přecházíme do koncového uzlu. Algoritmus se opakuje, dokud se pozice konečného prvku nepřiblíží k cíli na dostatečnou vzdálenost.

Další podrobnosti:
Nejprve se vypočítají pozice mezi uzly (pole d), poté zkontroluje, zda je cílový bod dosažitelný; Vypočítá se vzdálenost mezi kořenovým uzlem a cílem ( dist), a pokud je tato vzdálenost menší než celkový součet vzdáleností mezi uzly, pak je cíl dosažitelný, jinak ne. Pokud je cíl dosažitelný, celý cyklus je omezen na dvě fáze. V první fázi algoritmus odhaduje počáteční pozici každého uzlu, počínaje koncovým prvkem p pohybující se směrem k základně manipulátoru p,…, p[n]. Nechejme tedy cílovou pozicí pozice koncového uzlu, p"[n] = p[n]. Dostaneme rovnou čáru l, ležící na bodech p,…, p[n] A p"[n]. Nová pozice uzlu s indexem n-1, p", leží na této čáře v určité vzdálenosti d z p"[n]. Podobně nová pozice uzlu s indexem n-2, p", lze vypočítat pomocí přímky l, ležící na bodech p,…, p[n] A p" na dálku d z p". Algoritmus se opakuje, dokud nejsou vypočteny všechny nové pozice pro všechny uzly, včetně posledního. V případech, kdy je kořenový prvek přesunut do požadované polohy, FABRIK funguje tak, jak je popsáno, pouze s tím rozdílem, že nová poloha p"" kořenový uzel bude požadovaná pozice, nikoli výchozí pozice.
Po jedné úplné iteraci se téměř ve všech případech (podle pozorování) konečný uzel přiblíží k cíli. Postup se bude opakovat tolikrát, dokud konečný uzel nepadne na cílovou pozici nebo se k ní nepřiblíží na přijatelnou vzdálenost. Implementace metody FABRIK bez zavádění omezení bude konvergovat v jakémkoli cílovém bodě/řetězci, pokud je cíl dosažitelný. Pokud je však cíl dále, než je vzdálenost, na kterou se může řetěz rozšířit, je zapotřebí podmínka přerušení, která porovná minulou a aktuální polohu koncového uzlu a která zastaví provádění algoritmu, pokud je posun koncového uzlu menší než určitá hodnota (epsilon). Ve speciálních případech je také algoritmus po určitém počtu iterací přerušen (taková situace však zatím nenastala).
Pro rychlejší výsledky a řešení v několika iteracích je možná optimalizace pomocí konformní geometrické algebry (dále jen CGA); CGA má výhodu v základních tvarech, jako jsou koule, čáry, roviny a kružnice, které jsou poměrně snadno reprezentovány algebraickými objekty. Hledání polohy uzlu nacházejícího se mezi dvěma známými uzly lze proto vyjádřit průsečíkem dvou koulí se středy v polohách odpovídajících těmto uzlům a poloměrem rovným vzdálenosti mezi polohami hledaného uzlu a stávající; nová poloha uzlu bude ležet v nejbližším bodě na kružnici tvořené průsečíkem dvou koulí. Další jednoduchou optimalizací je přímé nakreslení čáry ve směru cíle, když cíl není k dispozici.

3. Model s více koncovými uzly


Stejně jako v případě jednoho koncového uzlu je algoritmus rozdělen do dvou fází:
  • První fáze je úplně stejná, ale tentokrát začíná od každého koncového uzlu a pohybuje se směrem dovnitř po řetězci od tohoto uzlu, až k podzákladně (pravděpodobně podzákladna je uzel s několika sousedícími hranami - cca překlad) . Získáme tak tolik různých pozic pro podzáklad, kolik je k ní připojených koncových uzlů. Konečnou pozici lze vzít jako těžiště těchto pozic. Poté vykonávání algoritmu pokračuje v normálním režimu a pohybuje se od podzákladu ke kořenu. Pokud mají dílčí základny vlastní dílčí základny, pak se ve vztahu k nim provádějí podobné akce - je také sestaven seznam možných pozic, načež je tato dílčí základna nastavena na těžiště z celého seznamu pozic.
  • Ve druhé fázi je na každý uzel aplikován obvyklý algoritmus, který se pohybuje dále a dále od kořenového uzlu. V tomto případě musí být každý řetězec zpracován samostatně až do konečného uzlu: čím více dílčích základen, tím více opakování pro každou z nich. Proces se opakuje, dokud koncové uzly nedosáhnou svého cíle nebo dokud nenastane podmínka přerušení.

4. Omezovače

A nakonec nejchutnější částí tohoto článku jsou výpočty pomocí omezovačů. Jsou potřeba, jak jste mohli uhodnout, pro větší podobnost se skutečnými organismy. Samotný uzel je obvykle charakterizován třemi stupni volnosti. Otočení uzlu lze charakterizovat jako „jednoduché otočení“ (2 stupně volnosti), které odráží jeho konečnou polohu, a rotaci kolem vlastní osy (1 stupeň volnosti). Rozdělením pohybu uzlu na dvě takové fáze a aplikací omezovačů na ně je tedy možné řídit polohu uzlu. Samotná omezení lze uložit podobným způsobem: protože Algoritmus je iterativní; omezení rotace lze použít při každé iteraci algoritmu. Limitery však neovlivní konvergenci algoritmu. Hlavní myšlenkou použití omezovačů je přemístit a přeorientovat uzly v rámci limitů.
  • A- Počáteční konfigurace manipulátoru a cíle.
  • t- Posuňte koncový uzel p,…, p[n] k cíli a orientovat ho k němu.
  • C- Hledání pozice p", ležící na čáře mezi pozicemi p" A p,…, p[n], na dálku d z bodu p".
  • d- Přeorientujte uzel do polohy p" takže se dívá podél okraje spojující p" A p".
  • E- Výpočet hraniční elipsy: povolené pozice jsou ve stínované oblasti. Žádný z vrcholů se v této fázi nikam nepohybuje.
  • F- Uzel p,…, p[n] přesune do polohy p^, což je nejbližší pozice na stínované elipse, čímž je zajištěna nová pozice p^ bude v přijatelných mezích.
  • G- Přesuňte uzel p^ za bod p" aby byla zachována délka hrany.
  • h- Pojďme se znovu zaměřit p" aby bylo splněno omezení orientace.
Tento postup se opakuje pro všechny uzly v dopředném a obráceném pořadí, podobně jako byly pohyby prováděny ve verzi bez omezení. Omezení „elipsa“ je přitom pravděpodobně charakteristikou hrany, nikoli uzlu, tzn. ve druhé fázi se uzel musí přesunout do elipsy p,…, p[n]- cca. překlad

Zde vytvoříme animaci pro postavu, kterou jsme vytvořili v kapitole 4. Tentokrát si nevystačíme s oddělenými koulemi a konvičkami, protože nepotřebujeme experimentální objekt, ale hierarchicky propojený systém objektů.

Dopředná kinematika (FK)

Dopředná kinematika (FK - Forward Kinematics) představuje pohyb podřízených objektů vzhledem k jejich nadřazeným. Není tu nic složitého. Vytvořme přímou kinematiku pro ruce naší postavy. Chcete-li to provést, otevřete soubor se znakem. Klepněte na tlačítko Auto Key.

Ať nám postava zamává.

Posuňte posuvník na nějaký snímek, například na 10., a zvedneme ruku nahoru. Uděláme to pomocí rotace a abychom dali požadovanou pozici, s největší pravděpodobností budeme muset otočit obě části ruky.

Vraťme se na začátek rozsahu () a přehrajte si animaci. Pokud se vám zdá, že postava zvedá paži příliš rychle, proveďte následující: vyberte obě části paže (rameno a předloktí), poté přejděte na řádek zobrazení čísla snímku, vyberte druhé klávesy (máme dvě klávesy stejné místo - pro rameno a pro předloktí), aby obě vynikly, nakreslete kolem nich obdélníkovou oblast. Vybrané klávesy se změní na bílou. Přesuňte je do jiného snímku, například 15. Můžete se vrátit a přehrát animaci znovu.

Umístěte posuvník do další polohy (pár snímků po 15.) a otočte rameno trochu doleva. Posuňte jezdec ještě několikrát a otočte ramenem tam a zpět. Poté vytvořte konečný rám, ve kterém je paže spuštěna a loket je mírně ohnutý. Pokud spustíte animaci, uvidíte, že se rameno pohybuje tak, jak má, když člověk mávne rukou, a předloktí se pomalu naklání. Je to proto, že pro předloktí jsme vytvořili pouze dvě klávesy s poměrně velkou vzdáleností mezi nimi.

Abyste se tohoto efektu zbavili, musíte v posledním mávnutí ruky vytvořit klíč, ve kterém je předloktí ve správné poloze. Tento klíč je vhodné vytvořit ve stejném rámu, ve kterém je umístěn klíč pro poslední švih ramene (předposlední klíč pro rameno). Vyberte rameno, aby se zobrazily jeho animační klávesy, a přesuňte jezdec na snímek, kde se nachází jeho předposlední klávesa. Nyní vyberte předloktí a otočte jej do požadované polohy. Přehrajte animaci znovu. Nyní postava mávne rukou přirozeněji. Vypněte tlačítko Auto Key. Obecně je lepší nenechat toto tlačítko zapnuté nadarmo, protože v tomto případě můžete při úpravách a umisťování objektů vytvářet nechtěnou animaci. Když je tlačítko Auto Key deaktivováno, animace se stále přehrává, ale již ji nelze vytvořit. Transformace objektů způsobí posun samotné animace. Pokud nyní otočíme ruku postavy ve snímku nula tak, aby byla natažená dopředu a přehrajeme animaci, uvidíme, že se ruka pohybuje v jiné poloze. Klepnutím na tlačítko Zpět obnovíte původní animaci.

Abychom to shrnuli: vytvořili jsme spoustu animačních kláves pro rameno a pouze čtyři klávesy pro předloktí. Mezi druhou a třetí klávesou je předloktí nehybné vůči svému mateřskému objektu – rameni.

Zde je soubor s ruční animací (formát 3ds MAX 6).

Inverzní kinematika (IK)

Inverzní kinematika se používá v případech, kdy potřebujeme dostat nějaký objekt z naší hierarchie na danou pozici. Chceme-li například animovat chůzi postavy, měly by nohy přistát na zemi a neklouzat, když se tělo pohybuje vzhledem k zemi. Dosáhnout toho pomocí přímé kinematiky je extrémně obtížné, téměř nemožné. Naštěstí existuje inverzní kinematika.

Podíváme se na nástroje inverzní kinematiky, které byly představeny v 3ds MAX 4 a zůstaly až do nejnovějších verzí (3ds MAX 7). V dřívějších verzích byla inverzní kinematika uspořádána poněkud odlišně.

Inverzní kinematika se vytváří pomocí tzv. inverzních kinematických řetězců (IK Chain). Mezi objekty, které jsou k sobě postupně připojeny, se vytvoří řetěz. Aby bylo možné takový řetězec vytvořit, musí hierarchická sekvence končit nějakým pomocným podřízeným objektem. Budeme sledovat vytvoření inverzního kinematického řetězce na nohách naší postavy, přičemž posledním pomocným objektem řetězce je chodidlo.

Vyberme kořenový objekt našeho řetězce. Mějte na paměti, že kořenový objekt řetězce není kořenovým objektem celé hierarchie, tedy ne tělo, ale stehno (stehno). Vyberte stehno a přejděte na položku hlavní nabídky Animace. Otevřeme položku Animace Řešitel IK(řešič inverzní kinematiky). Zde můžete vidět:

HI Solver (History Independent Solver) - historicky nezávislý řešitel

HD Solver (History Dependent Solver) – řešič závislý na historii (nejlepší řešič pro krátké animační sekvence, ale dává špatné výsledky pro dlouhé animace)

IK Limb Solver - řešič pro animaci končetin, určený pro dva objekty hierarchického řetězce

Spline IK Solver - spline řešitel

Použijeme HI Solver. I když je IK Limb Solver navržený pro animaci lidských končetin, při používání se s ním špatně pracuje, postava se vždy ohne o jedno koleno dozadu a jeden loket dopředu.

Pokud máme stehno stále vybrané, vybereme HI Solver a klikneme na chodidlo stejné nohy, jejíž stehno je vybráno. Měli bychom mít smyčku spojující obě části nohy a modrý kříž v opěrném bodě nohy. Inverzní kinematický řetězec je pomocný objekt, který má barvu a název. Pro usnadnění můžete vytvořený okruh přejmenovat. Vytvořme přesně stejný řetěz pro druhou nohu.

Modrý kříž je tzv. cílový objekt ( Gól IK). Pokusíme-li se s ním nyní pohnout, uvidíme, že se noha ohýbá a otáčí tak, že opěrný bod chodidla je vždy ve středu kříže (i když se chodidlo samo vůči bérci nepohybuje ). Nastavení dědičnosti otáčení, které jsme provedli pro chodidlo, již nefunguje, protože bylo vytvořeno pro dopřednou kinematiku.

Nyní je jasné, proč je potřeba pomocný podřízený objekt: jeho referenční bod je referenčním bodem pro inverzní kinematický řetězec. Aby se noha mohla přirozeně pohybovat, musíme k ní připojit nějaký další pomocný objekt a vytvořit další inverzní kinematický řetězec, ale to teď neuděláme, ale pokusíme se vytvořit animaci chůze.

Pokud není tlačítko Auto Key stisknuto, stiskněte ho. Posuňte posuvník na nějaký snímek, například 10. Začněme chodit pravou nohou. Zvedneme ho (pomocí IK Goal) a trochu pohneme. Posuňme také tělo trochu dopředu, stejně jako se pohybuje o půl kroku. Znovu posuneme posuvník. Položme nohu na zem a trochu více pohnime trupem. Všimněte si, že jsme nevytvořili animační klávesy pro otáčení stehna a bérce, ale pro pohyb IK Goal.

Nyní potřebujeme vytvořit animační klíč pro IK Goal ve stejném snímku, kde pravá noha opět dopadne na zem. Obecně platí, že klíč bude vytvořen sebemenším pohybem našeho IK Goal pro levou nohu, ale pro vytvoření klíče bez pohybu nohy musíte kliknout na velké tlačítko s obrázkem klíče (Set Key - put klíč). Nebo můžete přejít na kartu Pohyb a vytvořit klíč animace pomocí tlačítka Umístění ve skupině Vytvořit klíč.

Nyní animujme levou nohu stejným způsobem, jako jsme to udělali pro pravou, aniž bychom zapomněli pohnout trupem. Přetočíme animaci a přehrajeme ji. Pokud jsme vše udělali správně, postava udělá dva kroky, a zatímco jedna noha jde, druhá neklouže. Podivnému pohybu nohou se v tomto případě zatím věnovat nebudeme, hrají roli pomocných předmětů.

Zde je připravená scéna, kdy postava udělá dva kroky a mávne rukou.

Takže jsme se seznámili s dopřednou a inverzní kinematikou, nyní můžeme přejít k vážnějším věcem: seznámení se s kostními systémy a vytvoření kostry pro animaci složitější a detailnější postavy.

Pracovali jsme s nástrojem Joint a přišli na to, jak funguje. Nyní se podívejme, jak můžeme klouby ovládat jednodušším způsobem. V této kapitole představím některé z těchto nástrojů, abychom je mohli dále používat k úpravě naší postavy. A první nástroj, který vám představím, je jeden z nejdůležitějších nástrojů, o kterém byste se měli dozvědět, nástroj IK Handle. Jen vám řeknu, co je to inverzní kinematika, jak funguje a základy, jak ji nastavit.

Inverzní kinematika je jedním ze dvou způsobů ovládání kosterních kloubů. První metoda se nazývá Forward Kinematics (přímá kinematika) a v podstatě je to rotace. Při ní otáčíte a vracíte klouby na místo, což je pravděpodobně nejpřirozenější způsob manipulace, protože naše klouby se prostě otáčejí různými směry a také kolem sebe. To znamená, že každý pohyb našeho těla je rotace nějakého kloubu.

Inverzní kinematika vychází z konceptu Goal, tedy místa, kde by se měl kloub otáčet. To nám umožňuje určit konečnou polohu kloubu při jeho otáčení. Nejjednodušší způsob, jak si to zapamatovat, je pochopit, že dopředná kinematika je založena na rotaci kloubu a inverzní kinematika je založena na poloze kloubu v prostoru, když jej otáčíme.

Dovolte mi, abych vám rychle ukázal příklad. Mám zde dva stejné řetězy kloubů. První řetěz kloubů nemá inverzní kinematiku, takže se ovládá přes Forward kinematiku a na našem pravém řetězu máme nainstalovanou IK Handle, která nám umožňuje ovládat klouby pomocí Inverzní kinematiky. Přejdu k projekčnímu oknu bočního pohledu. A model trochu přiblížím v promítacím okně, aby lépe viděl.

Forward Kinematics je opět zvrat. Chci vybrat konec tohoto řetězce spojů a přesunout tento spoj sem na středové souřadnice. Otočím všechny tyto klouby kolem jednoho bodu. Začněme to dělat hned. Stisknutím E zapnu nástroj Rotate, a jak vidíte, když jej začneme otáčet, je poměrně obtížné dosáhnout cíle pouhými rotacemi. Takže otočím tento kloub takhle a tenhle takhle a tenhle otočím trochu zpátky a možná budu muset otočit znovu tenhle. Nyní dělám vše od oka a nedávám si příliš pozor na umístění těchto kloubů, protože rotace a poloha kloubů spolu příliš neladí.

Inverzní kinematika tento proces značně usnadňuje. Pokud chceme tento inverzní kinematický řetězec někam přesně posunout, stačí mi kliknout na tento křížek dole, jmenuje se IK Handle1. Nyní mohu stisknutím W přejít na nástroj Přesun a jednoduše přesunout kloub k cíli.

Je to tak jednoduché. Maua automaticky otáčí všechny klouby rovnoměrně, aby dosáhl cíle. Pokud ale například posunu kloub za tuto metu, máme problémy. Nemůžeme proto dosáhnout žádného bodu, který bychom chtěli, ale pokud si vybereme body blíže, vše bude fungovat. Jak jste si možná všimli, tyto dvě metody se používají v různých situacích.

Dopředná kinematika nám obvykle poskytuje přirozenější pohyb, protože je založena na rotaci, která v animaci postav vypadá velmi přirozeně. Ale oba způsoby mají své místo. Ukázal jsem vám, jak to funguje, nyní vám ukážu, jak je rychle nastavit. Vytvořme nový soubor/novou scénu a získáme prázdné místo. A přejděme k bočnímu pohledu na projekční okno. Vyberu nástroj Skeleton/Joint.

Udělejme velmi jednoduchý kloubový řetěz složený ze dvou kostí. Klikněte zde levým tlačítkem a vytvořím joint. Trochu se zde posunu vzhledem ke středové ose a vytvořím zde další spoj. Máme zde malý úhel, který Inverzní kinematice řekne, jakým směrem chceme, aby se kloub otáčel. Už jsme to dělali v předchozí kapitole a teď vám ukážu, proč to děláme. Nyní máme řetězec kloubů, takže tomuto řetězci nastavíme Inverzní kinematiku.

Můžeme přejít na Skeleton, nástroj IK handle, nebo můžeme použít tuto ikonu zde, obě fungují stejně. Nyní je potřeba vybrat první kloub, ze kterého budeme IK řetěz vyrábět, ať je to vrchní. A teď poslední spoj, to bude ten spodní. Meziklouby máme, ale důležité je, abych si vybral hned poslední.

A nyní máme IKHandle1. Můžeme to vybrat, stisknout W a jak je vidět, můj kloub uprostřed se ohýbá tímto směrem. Kdybych udělal svůj řetěz rovný, IKHandle by nefungoval, protože by nerozuměl, kterým směrem ohnout kloub, takže jsme zde udělali mírný ohyb. Pojďme se podívat na Outliner. Vidíš, tady jsou naše klouby.

A IKHandle je samostatný objekt a není na řetězu kloubů. Můžeme s ním tedy samostatně pohybovat a měnit polohu kloubů. Zde jsou základy, jak pracovat s IK Handles a inverzní kinematikou na Maua.

Proto si musíme pamatovat, že máme dva způsoby ovládání kloubů, přímou kinematiku a inverzní kinematiku, a každý z nich má své vlastní výhody.




Nahoru