Naučit se chodit je výzva. Není tedy od věci takovou výzvu pokořit, druhý díl - 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

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

28. dubna 2004, 00.00 | 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).

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

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).

V minulém díle jsme si připravili model k tomu, aby mohl vyrazit na procházku. Pokud bychom nyní uchopili objekt hopik a pomocí nástroje Posun bychom jej (zřejmě k nastavení celého modelu v bočním pohledu) zvedli, nohy by stále, pokud by to bylo možné, byly na zemi. Jejich pohyb bychom zajistili pomocí pohybu ovládacích objektů, skupinek noha_prava_lokal a noha_leva_lokal , které jsou mimo strukturu hopika.

Vše co jsme prozatím popsali, je možno učinit jak v programu CINEMA 4D R8, tak ve verzi R6 (či CE6). Rozdíly v této oblasti nejsou, mimo odlišné praktiky práce s nastavením jednotlivých vlastností. Náš model je poměrně komplexně připraven pro animování, ale je tu jistý háček, se kterým nám může velmi elegantně pomoci jeden z nových rysů verze 8. Tím rysem je samozřejmě míněn editor XPresso.

Jde totiž o to, že bychom si pomocí XPressa mohli velmi snadno zabezpečit situaci tak, aby nám chodidla v žádném případě (tedy to nemusíme brát zas tak doslova) nepropadla podlahou a také si můžeme nastavit řídící bod této podlahy, od kterého bude také určena minimální výška kabiny hopíka a také výška maximální, tedy kam až je možné, aby se hopík „vztyčil“. Je při tom velká výhoda, že lze XPresso animovat. My ale můžeme animaci XPressa využít i jen tím nejsprostším možným způsobem. A to animací toho, zda XPresso zapnuté je, či nikoliv. Díky tomu bude hopík ovlivněn XPressem jen tehdy, pokud se nám to bude hodit. Tedy v okamžiku chůze. Ale co kdybychom chtěli, aby na konci vyskočil výše, než jak mu dovolují limity? Pak prostě uděláme „animaci“ vypnutí chování XPressa, které bude na hopíku nastavené.

Definování pomocí XPressa začneme tak, že si vytvoříme pomocný objekt Osy, který nám bude definovat úroveň podlahy. Pomocí menu Objekty > Osy si tedy vytvoříme požadovaný objekt a přejmenujeme jej na min.výška. Jelikož nám model sedí nohama na výšce 0, pak i souřadnice objektu min. výška je Y=0. Souřadnice X a Y by měla odpovídat souřadnicím objektu hopik . Můžeme si při tom všimnout, že je model vytvořen tak, že souřadnice v ose X jsou v globálním souřadném systému shodné jak pro objekty noha prava , noha leva , tak i pro hopik. To samozřejmě není náhoda, ale naopak záměr.


Máme tedy vše co potřebujeme. Jdeme na XPresso. Vybereme si ve Správci objektů objekt hopik a pomocí menu Správce objektů Soubor > Nové chování > XPresso – chování vytvoříme u tohoto objektu nové chování XPresso, načež se automaticky otevře XPresso editor.


Chování, které vytvoříme bude velmi jednoduché. Pro naše účely však bude stačit a nutno podotknout, že by v případě složitější animace stálo za to jej zdokonalit. Jak jsme již ale řekli, pro naše účely postačuje. Uchopíme si tedy ve Správci objektů objekt hopik a přetáhneme jej do okna editoru XPresso, čímž vytvoříme uzel tohoto objektu. Stejně tak do editoru přeneseme i objekt min.výška. Jak jsme již naznačili, tak objekt min.výška nám bude sloužit pro definování minimální výšky „podlahy“, na které bude hopik stát. Z toho důvodu by bylo velmi nepraktické, kdybychom tento objekt museli někde hledat, když by nám hopik někam „odešel“. Nastavíme si tedy, aby pozice objektu min.výška podle os X a Z stále odpovídala pozici hopika.

Klikneme tedy na modré pole uzlu min.výška a vybereme z  menu porty Souřadnice > Pozice > Pozice X a Pozice Z. Poté klikneme na červený vstupní port uzlu hopik . Z menu vybereme stejné porty Souřadnice > Pozice > Pozice X a Pozice Z. Oba uzly skrze odpovídající porty spolu spojíme.


Říkali jsme si, že také nastavíme omezení výšky, do které se může kabina hopiku dostat. Z toho důvodu si do našeho vytvořeného uzlu hopik vytvoříme vstupní port (modrý) Pozice Y (Souřadnice > Pozice > Pozice Y). Poté klikneme do volného pole editoru pravým tlačítkem myši a z menu si vybereme Nový node > XPresso > Počítat > Omezení. Tím si vytvoříme uzel Omezení, kterým budeme definovat rozsah hodnot, které může podle osy Y hopík nabýt. Z uzlu Omezení spojíme výstupní port se vstupním portem Pozice Y uzlu hopik . Můžeme si všimnout, že uzel Omezení má tři vstupní porty. Jeden pro minimální hodnotu, druhý pro maximální a třetí pro definování „typu“ hodnoty. Do tohoto portu musíme zaslat informaci, že se nám jedná o umístění podle osy Y objektu hopik. Opět tedy uchopíme objekt hopik ve Správci objektů a přetáhneme jej do editoru. Novému uzlu vytvoříme výstupní modrý port Pozice Y (Souřadnice > Pozice > Pozice Y), který spojíme s portem Hodnota uzlu Omezení.


Nejdříve si vytvoříme definici minimální hodnoty. Minimální výška hopíku, tedy kabiny, vyplývá z pozice, kdy má hopík zcela „složené nohy. V základním stavu, kdy chodidla nohou leží na „podlaze“ mající výšku 0, to znamená, že výška hopíka součtem „přirozené“ hodnoty hopika v tomto stavu a hodnoty výšky, tedy umístění podlahy. Můžeme to tedy vyjádřit triviálním vzorcem, že Ymin(hopik)=Y(min.výška)+Y(výchozí stav hopika). Klikneme tedy do plochy editoru pravým tlačítkem myši a z kontextového menu vybereme Nový node > XPresso > Počítat > Mat. Tím vytvoříme uzel Mat. Tento uzel si vybereme a ve Správci nastavení se ujistíme, že je zvolena funkce Sečíst. Uzel Mat: Sečíst má dva vstupní porty a jeden výstupní. Výstupní port spojíme s portem Min uzlu Omezení. Ve Správci objektů si vybereme objekt min.výška a přetáhneme jej do editoru. Tím nám vznikne další uzel tohoto objektu. Klikneme na pravý červený výstupní port tohoto uzlu a z menu vybereme Souřadnice > Pozice > Pozice Y. Tím jsme zadali první vstupní parametr do uzlu Mat. Můžeme tedy spojit tento vytvořený port s prvním vstupním portem uzlu Mat:Sečíst. Vytvoříme si další uzel, ze kterého nám bude port vysílat konstantní hodnotu, o kterou musí být hopík výš než úroveň terénu. Klikneme tedy do plochy editoru pravým tlačítkem myši a z menu vybereme Nový node > XPresso > Hlavní > Konstanta. Označíme si nově vzniklý uzel Konstanta a ve Správci nastavení zadáme konstantní hodnotu, o kterou je hopík, respektive jeho kabina výše jak terén. V našem příkladu to je hodnota 22.339 (uznávám, že to není zrovna moc kulaté číslo :-)). Výstupní port uzlu Konstanta spojíme s druhým vstupním portem uzlu Mat: Sečíst.


Nadefinovali jsme si minimální hodnotu, do které se hopík může dostat. Nyní si nastavíme hodnotu maximální. Abychom to měli snazší, vybereme si před chvilinkou vytvořený uzel Mat:Sečíst i s jeho vstupními uzly Konstanta a min.výška a pomocí magické kombinace Ctrl+C a Ctrl+V si tuto skupinku uzlů zkopírujeme. Můžeme si říci, že maximální hodnota, kterou může hopík dosáhnout je v základním stavu 145. Z toho důvodu přepíšeme hodnotu právě zkopírovaného uzlu Konstanta ve Správci nastavení na 145. Výstupní port nově zkopírovaného uzlu Mat:Sečíst spojíme s portem Max uzlu Omezení. Tím máme základní omezení hopíka hotové.


Stejně jako jsme si omezili minimální možnou hodnotu, kterou může hopík dosáhnout, tak si omezíme i minimální hodnotu, jakou může dosáhnout každá z noh, tedy lépe řečeno ovládací prvek, který definuje polohu nohy. Přesněji řečeno se nám jedná o prvky noha_leva_lokal a noha_prava_lokal. Nejdříve uděláme omezení pro prvek noha_leva_lokal . Uchopíme jej tedy ve Správci objektů a přetáhneme jej do editoru XPresso. Tím nám vznikne nový uzel stejného jména. Nový uzel si zkopírujeme, protože jej budeme potřebovat ve dvou exemplářích. U jednoho z exemplářů klikneme na levé modré pole a z menu vybereme Souřadnice > Pozice > Pozice Y. Poté si vybereme druhý uzel a u něj vytvoříme stejný port, avšak na pravé, červené vstupní straně. Nyní si vybereme před několika okamžiky vytvořené uzly, které jsme použili u omezení hopíka. Jedná se nám o sestavu uzlů min.výška, Konstanta, Mat:Sečíst a Omezení.


Jakmile budeme mít soustavu uzlů zkopírovanou, spojíme uzel noha_leva_lokal s výstupním portem se vstupním portem uzlu Omezení a výstupní port uzlu Omezení spojíme s druhým uzlem noha_leva_lokal, u kterého máme port vstupní. Jediné co dále musíme udělat, je změnit hodnotu v uzlu Konstanta. Pokud se podíváme, jakou výšku má ve výchozím stavu poslední článek řetězce objekt Válec_central, tak zjistíme, že tato hodnota je 9,507. Do uzlu Konstanta tedy zadáme tuto hodnotu. Tím je omezení ovládacích prvků nohy ukončené. Stejné chování vytvoříme i pro druhou nohu….


Tím máme vše potřebné, co bychom mohli k animaci použít. Nyní stačí již jen animovat. Animování jako takové lze jen velmi těžko popisovat. Jelikož však máme omezení nastavené tak, že pohyb probíhá jen v jedné rovině u každé z nohou, můžeme animaci definovat v bočním pohledu. A využít můžeme také Automatické klíčování (většinou pouze pro definování pozice, nezapomeneme tedy vypnout parametry, které nechceme nahrávat), kdy si vytvoříme základní klíčové snímky animace a poté doladíme průběh manuální editací klíčových snímků a definováním interpolace v jednotlivých snímcích.


A ještě jedna poznámka na závěr. Během editace animace se může ukázat, že v jistém momentě může být nastavené XPresso chování tak trochu na obtíž. Pak stačí udělat u tohoto chování stopu animace, ve které bude definováno, kdy je chování zapnuto a kdy nikoliv.

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: