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
Zkrocení času v CINEMĚ 4D a technologii XPresso, 2. díl
10. června 2004, 00.00 | V minulém díle jsme práci zakončili v okamžiku, kdy jsme měli čas v číselné podobě a jeho hodnota byla odvozena z odehraných snímků animace. Dnes si čas převedeme na ručičkové hodiny a také vytvoříme ovládací prvky, kterými budeme hodiny nařizovat.
V předešlém díle tvorby hodin jsme se rozloučili v okamžiku, kdy jsme měli vytvořené základní "digitální" hodiny, které začínaly svůj "čas" vždy v prvním snímku animace. Slíbili jsme si ale, že si hodiny doplníme o ručičky a také o možnost nastavení aktuálního času. Jak jsme si slíbili, tak také dnes učiníme. Opět nepůjde o nic zas až tak těžkého či složitého, bude to spíše jen pracné, takže se nikdo nemusí bát, že by náš postup nezvládl. Nahrajme si tedy soubor, který jsme si posledně připravili.
Začneme s vytvořením ručiček ciferníku, které budou ukazovat čas. Vytvoříme si tedy tři objekty podle libosti (to pouze pro názornost, pokud bychom vytvářeli čistě obecné chování, pak bylo asi nejlepší, aby jednotlivé ručičky hodin zastupovaly prázdné objekty Osy, pod které bychom vždy mohli v každé jedné scéně zařadit finální tvar hodinových ručiček). Vytvořené objekty ponecháme bez rotace a také je pravděpodobně (to samozřejmě nemusíme) ponecháme v souřadnicích 0,0,0. Pro názornost a přehlednost si tyto objekty pojmenujeme například r_sekundy, r_minuty, r_hodiny (ručička_název), přičemž jsem všechny tři objekty ručiček pro zjednodušení umístění výsledného chování seskupil do jedné skupiny, jménem ukázka_ručiček.
Nejjednodušší bude tvorba chování sekundové a minutové ručičky. Začneme tedy u nich. Jmenovitě u sekundové. Při její rotaci využijeme hodnoty, který vysílá uzel Mat:Modulo do textové křivky Sekunda (jistě si všichni pamatujeme, že šlo o zobrazené hodnoty v digitální podobě času). Nám přeci stačí, pokud hodnotu v rozsahu čísel od 0 do 59 (Modulo 0/60) převedeme do úhlu od 0 do 2*Pi (tedy 360o) a tento úhel použijeme pro řízení rotace příslušné ručičky. Abychom mohli tato data převádět, musíme si do editoru XPresso vložit speciální uzel Nový nod > XPresso > Počítat > Překladač rozsahu. Tento speciální uzel nám umožňuje jednu z nejdůležitějších věcí, a to převod dat jednoho typu na data úplně jiného typu. Třeba rotaci na obecnou hodnotu, která je použita pro řízení jasu světla. Tento uzel se nejvíce využívá při zadávání automatického řízení ve Správci nastavení.
Ve Správci objektů uchopíme objekt r_sekundy a přetáhneme jej do okna editoru XPresso. Klikneme na modré pole nově vloženého uzlu r_sekundy a vybereme si port Souřadnice > Rotace > Rotace.B. Je načase, abychom si nastavili před chvilinkou vytvořený uzel Překladač rozsahu. Vybereme si jej a tím se otevřou jeho parametry ve Správci nastavení. Upravovat budeme hodnoty na záložce Node. Vstupní rozsah ponecháme na parametru Uživatelsky definovaný, výstupní rozsah zadáme na Radiány. Vypnout můžeme volbu Použít křivku (ale nemusíme, je to jedno). Mimo to musíme zadat také rozsah hodnot, které se mají převádět. Ve výstupu je hodnota 2*Pi (6,283) a tak zde nebudeme zadávat nic, ale ve vstupu musíme zadat maximální hodnotu, kterou má překladač zpracovávat. A tou je stejná hodnota, jakou máme v předchozích uzlech Mat:Modulo, tedy 60.
Jak jsme již poznamenali výše, je pohyb minutové ručičky fakticky podobný pohybu sekundové. Stejně jako ona má minutová ručička 60 poloh pro každou minutu a tak využijeme stejně nastaveného uzlu Překladač rozsahu. Vybereme si tedy uzel Překladač rozsahu u sekundové ručičky a pomocí Ctrl+C a Ctrl+V jej zkopírujeme. Přetáhneme jej do oblasti výpočtu minut. Spojíme výstupní port uzlu Mat:Modulo, který posílá data do uzlu Minuty se vstupním portem nově zkopírovaného uzlu Překladač rozsahu. Uchopíme ve Správci objektů objekt r_minuty a přetáhneme jej do okna editoru XPresso. Klikneme na levý vstupní modrý čtverec tohoto uzlu myší a vybereme port Souřadnice > Rotace > Rotace.B. Tento port spojíme s výstupním portem v předchozím okamžiku kopírovaném uzlu Překladač rozsahu. Díky tomu se nám bude zcela adekvátně otáčet i minutová ručička.
Opět si vybereme jeden z uzlů Překladač rozsahu a ten si zkopírujeme. Přetáhneme jej do spodní části našeho diagramu, někam pod výpočet hodin. Aby se nám zobrazovali správně hodiny, tak využijeme opět funkci modulo, kterou však nebudeme přebírat z některého uzlu Mat:Modulo, ale kterou nastavíme přímo v uzlu Překladač rozsahu. Vstupní port nového uzlu Překladač rozsahu, který bude určen pro hod. ručičku spojíme s výstupem uzlu Výsledek (nad výstup), který nás, jak si jistě každý pamatuje od minula, informuje o aktuální uběhnuvší vteřině. Jak již bylo řečeno, využijeme jen uzel Překladač rozsahu, kde nadefinujeme vstupní rozsah ve vteřinách, které dohromady dají 12 hodin (jedna otočka hodinové ručičky) a výstupní rozsah bude stále 0 a 2*Pi (6,283). Vybereme si tedy nově vytvořený uzel Překladač rozsahu a ve Správci nastavení zadáme rozsah vstupních hodnot 0 a 12*60*60, což je 43 200, ale zadat můžeme i vzorec. Výstup ponecháme tak jak je, jen se ubezpečíme, že je nastavena v záložce Nod volba Modulo (viz výše).
Jistě každého už napadne, že pro zadání času bychom měli zase použít uzel Překladač rozsahu, do kterého budou vstupovat data o natočení řídícího objektu, například Min_natoc a vystupovat z něj budou hodnoty převedené na vteřiny. V případě Min_natoc tedy bude vstupní rozsah v radiánech 0 až 2*Pi a výstupní 0 až 60*60, tedy 3 600. Až budeme mít všechna data ze nastavovacích objektů, tak je sečteme a výsledek sečteme s hodnotou uzlu Čas, který nám prozatím jako jediný definoval začátek běhu hodin.
Začneme nastavením hodin. Ty jsou nejdůležitější a fakticky nepotřebujeme ani žádný další regulátor, protože využijeme tak nastavený překladač rozsahu, že pomocí jeho hodnot můžeme nastavit jakýkoliv čas od 00:00:00 až po 11:59:59. My si ale regulátory pro minuty a sekundy vytvoříme také a to z toho důvodu, že se jen velmi těžko bude pouze regulátorem hodin přesně definovat hodnota minut a ještě hůře sekund. Regulátory pro minuty a sekundy tedy vytvoříme hlavně pro precizní ladění času. Měli bychom to mít po dokončení chování na paměti.
Ve Správci objektů uchopíme objekt Hod_natoc a přetáhneme jej do okna editoru XPresso. Tím se nám vytvoří uzel tohoto objektu. Klikneme na pravý červený čtverec tohoto uzlu a vybereme Souřadnice > Rotace > Rotace.B. Osa B by měla být jednou osou, okolo které bychom mohli objekt otáčet. Ostatní osy by měli být uzamčené (viz výše). Stejným způsobem si do okna editoru přetáhneme objekty Min_natoc a Sek_natoc. I u nich nastavíme stejný, červený výstupní port Rotace.B.
Vytvoříme si nový uzel Překladač rozsahu, kterým budeme "překládat" rotaci objektu Hod_natoc na hodnoty sekund. Klikneme tedy pravým tlačítkem myši do volné plochy editoru XPresso a vybereme Nový nod > XPresso > Počítat > Překladač rozsahu. Vybereme si nově vytvořený uzel a nastavím jej ve Správci nastavení. Vstupní typ dat dáme na radiány a výstupní ponecháme na "Uživatelsky definované". Hodnota spodní vstupu bude stále na 0, horní na 2*Pi (tedy 6,283). Hodnoty Spodního výstupu 0 a Horního 12*60*60, což je 43 200. Zapneme také volbu Modulo. Nyní spojíme výstupní port Rotace.B uzlu Hod_natoc se vstupem nově vytvořeného uzlu Překladač rozsahu.
Poslední Překladač rozsahu vytvoříme pro převod hodnot pro nastavení sekund. Tento překladač bude na vstupní straně nastaven stejně jako dva předešlé, ale na výstupní straně bude nastavena hodnota horního výstupu na 60 (tedy max. 60 vteřin). Opět zapneme volbu Modulo a spojíme červený výstupní port Rotace.B uzlu Sek_natoc se vstupním portem nově vytvořeného uzlu Překladač rozsahu.
Je načase, abychom všechny hodnoty, které nám poskytují ovládací prvky hodin sečetli. Klikneme tedy do volné plochy editoru pravým tlačítkem myši a vybereme Nový nod > XPresso > Počítat > Mat. Označíme si právě vytvořený uzel a ve Správci objektů přepneme funkci na Sečíst a typ dat na Celá (čísla). Můžeme si všimnout, že na levé straně právě vytvořeného uzlu máme jen dva vstupní porty. My však máme tři hodnoty, které chceme sečíst. Stačí tedy kliknout na pravé modré pole vytvořeného uzlu Mat:Sečíst a vybrat nový port Vstup. Díky tomu nám budou moci do uzlu vstupovat tři hodnoty. Do každého vstupu tedy propojíme jeden uzel Překladač rozsahu pro Hod_natoc, Min_natoc a Sek_natoc.
Měli bychom ještě poznamenat to, co jsme již zmínili. Totiž to, že při řízení hodin bychom měli nejdříve nahrubo nastavit čas pomocí prvku Hod_natoc a teprve pak jej ladit pomocí Min_natoc a Sek_natoc.
Tématické zařazení:
-
23. dubna 2014
Konica Minolta přenesla výhody velkých zařízení do kompaktních modelů
-
11. května 2014
-
23. května 2014
Epson na konferenci Droidcon Berlin ukázal nové možnosti čekající na vývojáře OS Android
-
24. listopadu 2014
-
13. května 2014
Samsung NX3000: retro styl, špičkový výkon a snadná konektivita v jednom přístroji
-
30. listopadu 2014
Nový fotoaparát α7 II: první plnoformát s pětiosou optickou stabilizací obrazu na světě
-
15. prosince 2014
Konica Minolta pomůže živnostenským úřadům s digitalizací dokumentů
-
11. května 2014
-
26. listopadu 2014
Canon Junior Awards již posedmé ocení mladé fotografy v rámci Czech Press Photo
-
21. srpna 2014