Xfrog 4.1, zákoutí virtuálního zahradníčka 1, obecný popis a objekt Branch
27.7.2004· Autor: Pavel Zoch, Ph.D.·
Přidat komentář
Xfrog 4.1 je jedním z nejdokonalejších pluginů, které pro CINEMU 4D R8.x vůbec existují. Pro tvorbu rostlin by se asi nedalo nalézt lepší řešení. V tomto prvním díle malého seriálu o pluginu Xfrog si z obecné roviny prostudujeme nástroje pluginu a podrobně prozkoumáme nástroj Branch, kterým se tvoří větve, listy a podobné objekty.
Je to svým způsobem zvláštní stav. Člověk má k dispozici zcela nezištně nějakou skvělou aplikaci a kvůli práci se k ní takřka nedostane. Asi tak to bylo i s novou subverzí výtečného řešení pro tvorbu rostlin, aplikace Xfrog 4.1. Nainstalovanou jsem ji měl již nějaký ten týden, či spíše měsíc, ale stále jsem ji podrobněji nevyzkoušel. Až do teď.
Jelikož je ale Xfrog 4.1 opravdu subverzí v pravém smyslu slova, tak není vyloženě aplikací o které by se měla psát recenze. Rozhodl jsem se tedy, že se v několika příštích článcích budeme potkávat jednak nad těmi několika novinkami nové subverze, tak hlavně obecně nad všemi nástroji, které Xfrog nabízí. Uděláme si tedy jakýsi průzkumný soubor minitutoriálů a ukázek práce tohoto skvělého nástroje.
Pro ty, kteří jsou spíše občasnými čtenáři našeho serveru, bychom měli asi pro začátek Xfrog mírně představit. Xfrog je produktem společnosti Greenworks Organic Software a ve verzi 4 a 4.1 je unikátním řešením prozatím vymezeným jen pro uživatele CINEMY 4D R8.x. K dispozici je také starší verze 3.5, která spolupracuje se všemi běžnými 3D programy. Tou se však zabývat nebudeme a podíváme se jen na verzi novou, která je vskutku se CINEMOU zcela srostlá a tak její ovládaní poměrně přirozené a nativní. To se ale nejlépe dokáže při popisu samotném.

Měli bychom také zmínit ještě jednu skutečnost. Tou je existence malé uživatelské příručky, která je ke stažení na našem serveru a ve které jsou velmi stručným způsobem popsány všechny základní nástroje programu. Pokud by někoho Xfrog skutečně zaujal tak, že by si jej chtěl sám vyzkoušet za využití plně funkčního trialu, pak lze tuto příručku více jak doporučit. Ke stažení je na www.digitalmedia.cz/users .
Po instalaci plugin Xfrog nalezneme na obvyklém místě, v menu Pluginy. Pokud se podíváme co položka Xfrog nabízí, pak můžeme konstatovat, že nabídka je rozdělena do čtyř sekcí. V prvé sekci jsou tři položky vztahující se k registraci, aktualizaci programu a také ke tvorbě příkazové palety programu. Tvorba palety je sice snadná, ale potěší, pokud to někdo udělá za nás a tak tento příkaz využije asi každý.

Ve druhé sekci je již to podstatné, což si také prozatím letmo probereme. Jsou to generátory povrchu, tedy objekty, které vytváří samotné elementy rostlin. Díky tomu, že se Xfrog využívá zejména pro tvorbu rostlin (ale to samozřejmě není podmínka), pak i některé názvy těchto příkazů rostliny tak trochu připomínají. V prvé řadě zde nalezneme příkaz Branch, což by se dalo přeložit jako "Větev", či "Ratolest". Jak název vypovídá, slouží tento příkaz ke generování větví, stonků, kmenů, ale i listů a okvětních plátků. Dalším objektem, který zde nalezneme, je objekt Phyllotaxis. Jméno tohoto objektu není vlastně přeložitelné, protože ani nepochází z angličtiny. Vyjádřit by se ale dalo termínem fylotaxie, což je oblast zabývající se postavením okvětních listů. A přesně tak také lze tento objekt využít, i když jeho použití je značně širší. Třetím objektem této skupiny je Hydra, která je složitější a hlavně podstatně výkonnější obdobou nástroje Pole, který známe ze CINEMY. Posledním objektem této skupiny je objekt Variation, což není jiného, jak výtečný náhodný generátor.
Třetí sekce je velmi malá a obsahuje jen jeden jediný příkaz, kterým se vytvoří objekt Curvature. Curvature je, jak název vypovídá, křivkou, která se generuje na základě zadání jejích parametrů a nikoliv kontrolních bodů. Jedná se tedy vlastně o takovou podstatně složitější, a také výkonnější parametrickou křivku.
Čtvrtá sekce obsahuje příkazy, které ve své podstatě negenerují objekty, ale které objekty deformují. Jsou to tedy vlastně deformátory, které ale pracují jen ve spojitosti s Xfrogem, nelze je tedy použít třeba na dynamické definování tvaru křivky, která je využita pro definování cesty pohybu objektu, aby se tato cesta měnila. Tak to bohužel nejde. Avšak mezi námi, ono to nejde ani se standardními deformátory. Prvním z těchto deformátorů je v menu pluginu uveden Tropism, což je deformátor, který generuje vliv vnějších vlivů na rostlinu, tedy třeba ohnutí větrem, otáčení za sluncem a podobně. Druhým nástrojem je nový Branch Deviation. To je nástroj, kterým se vytvoří objekt, který větev stromu zcela automaticky a tím pádem velmi snadno „zakřiví“ pro stromy charakteristickým způsobem.
Projeli jsme si tedy velmi stručně vše, co nám menu pluginu nabízí. První, co nový uživatel asi udělá je, že si aktivuje paletu. Pokud si ji tedy aktivujeme, pak v ní mimo uvedené nástroje nalezneme také celou řadu starých známých. Například nabídku výběrových nástrojů, nástrojů pro posun, změnu velikost a rotaci, či nabídku křivek a parametrických objektů. U těchto objektů se ale zastavovat nebudeme, od toho tu nyní nejsme. Aktivovanou paletu si tedy někam zakotvíme, mne se osobně jeví jako nejlepší její zaparkování do vrchní lišty palet, kde je stále po ruce ve formě záložky.

Podíváme se tedy podrobněji na jednotlivé objekty Xfrogu. Bude nás při tom primárně zajímat modelování a tak si vždy možnosti animací vždy spíše jen nastíníme, ono jde stejně o oblast, která je uživatelsky spíše minoritní. Vždyť kolik z nás by tvořilo scénu zrychleného růstu květiny. I když i to Xfrog samozřejmě umí. Ještě než se do toho pustíme, řekneme si několik pravidel, které se Xfrogu a vlastně nejen jeho, týkají. V prvé řadě musíme zmínit, že všechny parametry všech objektů Xfrogu se definují ve Správci nastavení. Skrze tohoto správce jsou tedy i animovatelné. Další obecnou pravdou je to, že u Xfrogu je neuvěřitelně důležitá struktura. A to proto, že má přímý vliv na funkci příkazů. Víme tedy vše co potřebujeme, jdeme na to.
Branch
Branch je bez diskuze tím nejdůležitějším objektem, generátorem, který nám Xfrog nabízí. Jeho použití je totiž velmi široké a stejně široké jako možnosti jeho užití jsou i jeho parametry. Pokud si zvolíme příkaz Branch, tak nám vznikne objekt Branch, pod kterým jsou ve výchozím stavu dvě křivky. Při tom vrchní křivka definuje protahovaný profil větve a druhá křivka definuje cestu. V tomto ohledu by se mohlo zdát, že je Branch podobný příkazu Potažení NURBS po křivce. Ale zdání klame. To ale ještě uvidíme.
Pokud si vybereme objekt Branch, tak přeneseme svou pozornost do Správce objektů, jmenovitě do záložky Objekt. V této záložce se definuje průběh tvaru větvě. Mimo záložku Objekt je zde ještě záložka Nodes, ale k té se ještě dostaneme. Nyní se pozastavíme na záložce Objekt.

Průběh tvaru větve se řídí křivkou, která je pod položkou Thickness, tedy tloušťka. Je samozřejmě možné si přidávat nové řídící body (kliknutí s Ctrl), body ubírat (pomocí příkazu z kontextového menu), body lze zadat numericky, lze zadat také tvar křivky ve formě rovnice. Křivka jako taková řídí průběh celkového průměru protahovaného profilu po cestě. Při tom je zcela irelevantní zda je tento profil uzavřený či otevřený a tak můžeme mít jeden objekt Branch pro větev a jeden pro list.
Zmínit bychom také měli skutečnost, že k dispozici jsou čtyři režimy bodů (ty se dají vyvolit z kontextového menu, vyvolaného pravým tlačítkem myši nad vybraným bodem). Dva pro tvorbu ostrého vrcholu (jeden ale vychází z „beziérů“), pak vyhlazený bod Bézierův a „Klasický“. Klasický režim vychází, alespoň podle toho jak se křivka chová, z Kubické či Akima křivky.
Jak jsme zmínili, je také možné křivku určit vzorcem a zapomenout bychom neměli také na to, že jakoukoliv křivku parametru můžeme animovat. Tedy můžeme ji nahrávat klíčové snímky, což se také často používá.
Pokud opustíme zadání šířky potahovaného profilu a svou pozornost zaměříme níže, pak narazíme na několik zatrhávacích polí. Prvním z nich je Inherit Thickness, což lze přeložit jako „Převzít tloušťku“. Jsme u toho, že objekt Branch toho umí více, než je na první pohled nezasvěcenému zřejmé. Je načase prozradit, že objekt Branch nejen vytvoří samotnou větev, či list, ale také podél této větve rozmístí podle pravidel nastavených v záložce Nodes (pamatujete?) instance podřízeného dalšího objektu. Tento další objekt musí! být na třetí pozici pod objektem Branch. Tedy pod definujícími křivkami. A představme si, že by tento třetí objekt byl další objekt Branch. Pak takový objekt Branch by měl mít aktivní volbu Inherit Thickness, aby jeho tloušťka byla odvozovaná od tloušťky nadřazené větve v tom místě, kde je instance podřízené větve umístěná! Zní to divoce, ale za chvilinku si to ukážeme. V tento okamžik stačí, když si budeme pamatovat, že volba Inherit Thickness zabezpečuje závislost tloušťky větve na umístění na rodičovské větvi. Proto také to slovo Inherit (dědit).
Volba Inherit Thickness zabezpečuje závislost tloušťky na rodičovské větvi. Aby ale byla sounáležitost mezi nadřazenými a podřízenými objekty úplná, máme zde také volbu Pass Thickness to Nodes, tedy „Přeposlat tloušťku do uzlů“, tedy do podřízených instancí. Tedy případně dalších větví! Jak snadné milý Watsone! Zapomenout bychom neměli na to, že tato volba je novinkou verze 4.1.
Následující pole patří parametrům Growth, tedy růstu. V tomto poli jsou dva parametry. Growht samotné, tedy procentická hodnota růstu, tak další volba dědění. Inherit Growth, která se stará o přeposílání dat růstu z nadřazeného objektu. Jinými a také více srozumitelnými slovy. Pokud budeme mít tři větve pod sebou a budeme animovat procentickou hodnotu růstu jen na větvi hierarchicky nejvýše, pak celá struktura roste zcela přirozeně a jednoduše takřka automaticky! Prostě úpravou jedné jediné hodnoty. Vyrůstá tedy hlavní větev, pak raší první podřízené a z nich druhé podřízené atd….
V posledním poli je zcela nezajímaví volba Iso Subdivison. Ta se stará o zobrazení izoparm při režimu, ve kterém jsou tyto izoparmy viditelné….
Již víme, jak se řídí a také čím se řídí tloušťka větve či listu. Dozvěděli jsme se také, že pod objektem Branch může být další objekt, třeba také Branch, jehož instance jsou rozmisťovány podél nadřazeného objektu v závislosti na nastavení záložky Nodes. Ale pod objektem Branch může být ještě jeden objekt. Tedy čtvrtý. A ten se umístí na konec, na vrchol nadřazeného objektu Branch, tedy na konec cesty. Takovým objektem může například být květ rostliny! A tento objekt může být opět připraven z objektů Branch či dalších libovolných objektů! Aby to bylo vše pochopitelnější, tak si to předvedeme na obrázku, na kterém jsou mimo to také různé deformátory, které si ale probereme později. Půjdeme nyní po tom, co je v tento okamžik podstatné.
V hierarchii nejvýše máme objekt Stonek1, který je označen okrovo-oranžovou barvou . Tvar tohoto objektu je řízen (mimo parametrů ve Správci nastavení) křivkami Kružnice, což je profil, tato křivka je označena azurovou barvou a také cestou, která se jmenuje prostě Křivka. Ta je označena magentou. Můžeme si také všimnout, že cesta Křivka je ovlivňována deformátory Branch Deviation a Tropism. To ale jen na okraj.
Podél objektu Stonek1 jsou podle nastavení záložky Nodes, kterou si za chvilinku probereme, rozmístěny instance třetího objektu v pořadí, zeleně označeného objektu Variation, který podle pravidel náhodně generuje objekty Letorost, které obsahují další objekty Branch! I na tyto, v hloubi struktury ukryté objekty Branch, platí volby Inherit!!!
Zcela na vrchol objektu Stonek1 je pak umístěn objekt Vrch. Objekt Stonek1 je v modelu, ze kterého je tento obrázek vlastně zužující se „trubkou“, která ale není uzavřená. Uzávěr vytváří právě objekt Vrch, což je další objekt Branch, na kterém je pak samotný květ rostliny.
Můžeme si všimnout, že i takto jednoduchá věc, jakou je objekt Branch, toho hodně umí. Než se koukneme na záložku Nodes, vrátíme se ještě do předchozího obrázku. A zaměříme se na objekt Vrch. Všimněme si, že pod tímto objektem je na třetí pozici, tedy na pozici „instancovaného“ objektu „podřízených“ větví prázdný objekt os, pojmenovaný Pomocne. Ten zde jen proto, abychom „ničím“ zaplnili třetí pozici a mohli tak umístit samotný květ na pozici čtvrtou. Docela finta, řekl bych…..
Již jsme několikráte zmínili, že parametry rozmístění instance podřízené větve, či jiného objektu, například Variation, se řídí ve Správci nastavení, záložce Nodes. Je asi ten správný okamžik se podívat, jaké parametry můžeme nastavit. Jelikož ale je na této záložce parametrů celý kopec, tak si ji budeme muset pracovně rozdělit na díly.

V prvé řadě si také všimneme, že se většina parametrů této záložky opět řídí křivkami. Je ale jasné, že možnosti editace těchto křivek jsou stejné, jako v případě křivek na záložce Objekt. Nebudeme se tedy jejich editací zabývat, budeme se zaobírat jen jejich významem na distribuci instancí podřízené větve.

První volbou v pořadí je Node Preset, tedy "Předvolba uzlu". Touto volbou se definuje, jakým způsobem budou instance rozmisťovány po větvi. Mimo volbu Custom, pro což bychom mohli použít (nikoliv přeložit) termín Vlastní jsou zde možnosti:
Perpendicular – Instance jsou kolmo.
Alternate Perpendicular – Instance jsou kolmo po dvou stranách.
Pair Perpendicular – Instance jsou kolmo po dvou stranách vždy v páru.
Lateral – Instance jsou rozmístěné paralelně k osám nadřazeného objektu.
Alternate Lateral – Instance jsou umístěné lichospeřeně a paralelně k osám nadřazeného objektu.
Pair Lateral – Instance jsou umístěné sudospeřeně a paralelně k osám nadřazeného objektu.
Stejně to ale většinou bude tak, že si nastavení upravíme podle svého a předvolby použijeme jen pro základní tvar…..
Volba Node Count definuje, jak již název napovídá, počet vytvořených uzlů. Tato volba by se tedy dala přeložit jako Počet uzlů. Další bližší vysvětlení není, podle mého mínění, snad ani možné.
Novinkou verze 4.1 na této záložce je volba Single Objetcs. Touto volbou se nevytvoří jeden objekt, jak by se mohlo zdát, ale naopak. Tato volba se totiž vztahuje k příkazu Funkce > Současný stav do objektu, kdy se z objektu Xfrog vytvoří polygonové objekty. Pokud bude u objektů Branch tato volba VYPNUTÁ, tak se z tohoto objektu vytvoří jen jeden objekt. Pokud bude zapnutá, vytvoří se z každé instance samostatné objekty. Tedy názvem Single Objects se míní Samostatné objekty!
Volba Inherit Density je dalším z parametrů, který se vztahuje k nadřazenému objektu a jeho růstu. Jedná se v tomto případě o přejímání hustoty rozmístění instancí a tak je největší vliv tohoto parametru u animování růstu atd.
Předposledním parametrem tohoto oddílu je volba Node Multiplication. Tedy Násobitel uzlu. Tato volba vypomáhá s řízením „zrcadlení“ a obecně distribuce stejných instancí v uzlu. Možnosti jsou dvě. Ring vytváří prstence instancí, kterých je tolik, kolik se jich nastavení v parametru Node Multiply (viz níže) a volba Pairwise Mirrored generuje vždy proti sobě ležící pár instancí. V takovém případě není Node Multiply aktivní.

Parametr Node Multiply násobí počet instancí v jednom uzlu. Jinými slovy, pokud je vytvořena v nějakém uzlu instance větve, tak zvýšením této hodnoty z 1 na 2 se vytvoří naproti vytvořené větvi další instance. Pokud se zadá tři, vytvoří se tři instance v jednom uzlu atd.
Máme před sebou druhou skupinu parametrů, které se již všechny ovládají křivkami. Jedná se však veskrze o parametry velmi dobře pochopitelné a tak to jistě půjde velmi snadno. Zmínit bychom ale měli to, co vlastně ony křivky definují. Směr horizontální osy definuje umístění vlivu parametru v závislosti na délce větve. Hodnota zcela vlevo tedy ovlivňuje instance, které jsou u kořene větve, hodnota zcela vpravo definuje instance umístěné takřka na vrcholu. Hodnota vertikální, tedy Y definuje míru vlivu parametru v určité pozici.

Pokud klikneme na malý trojúhelník, tak se pod polem s křivkou objeví pole se vstupními daty. Zde opět můžeme zadat tvar křivky definovaný vzorcem. Mimo to tu jsou Min a Max pole, která definují mezní hodnoty. Tyto mezní hodnoty lze ve výchozím stavu překročit (to že jdou překročit se definuje v kontextovém menu, které se aktivuje pravým tlačítkem myši v oblasti křivky). Nejde tedy o hodnoty omezující, ale spíše o zobrazení oblasti, ve které se nacházejí (ve výchozím stavu) všechny řídící body křivky. Pokud si nějaká bod vybereme, můžeme jej v polích pod křivkou zadat numericky atd. To ale všichni známe.
Node Angle, tedy Úhel uzlu definuje, jak je instance podřízené větve skloněná. Pomocí tohoto parametru tedy můžeme snadno nastavit vztyčené přilehlé listy, či naopak těžké, dolu padající větve.

Parametr Node Flap odpovídá českému pojmenování Natočení uzlu natáčí instance podřízeného objektu podél jejich vertikál. Pokud tedy původně podřízený objekt směřoval osou Y vzhůru, pak jsou tedy instance tohoto objektu otáčeny okolo svých os Y, které však již směřují spíše vodorovně (mluvíme li například o větvích). S obrázku to snad bude patrné….

Parametr Node Distrubution definuje hustotu rozmístění zadaného počtu instancí. A jak jinak než křivkou. Název by se dal tedy přeložit Distribuce uzlu.
Parametr Node Scale řídí velikost instancí podřízeného objektu vzhledem k průběhu nadřazeného objektu. Na tento parametr, který by se mimochodem přeložil asi jako Velikost uzlu, bychom si měli dávat pozor. A to z jednoho důvodu. Musíme si dát pozor, abychom skrze tento parametr nezvětšili velikost instancí tak, že by pak například větev vyrůstající z kmene měla větší průměr jak kmen samotný. Pokud máme aktivní volbu, která nám zajišťuje dědění tloušťky, tak bychom skrze tento parametr měly instance v 99% jen zmenšovat!
Posledním parametrem této skupiny je parametr Node Screw, který by se dal pojmenovat jako Stažení uzlu. Tento parametr ve své podstatě pracuje tak, že podle míry nastavení shromažďuje k „jedné straně“ distribuované instance. Výsledný efekt je užitečný například při tvorbě stromu, který je vytrvale vystaven jednosměrnému větru, kterému není sto odolat a tak mu začínají růst větve jen na straně po větru.

Máme před sebou dva, respektive čtyři parametry. Oni jsou však vždy v páru a tak to také vezmeme pospolu. Prvními z této dvojice, jsou parametry Set Node Growth a Node Growth. Vezmeme to ale od Node Growth, protože to je další parametr, který se definuje křivkou. Tato křivka definuje vzrůst instancí. To má vliv jen v případě, že generovaná instance, tedy hlavně další větev, obsahuje jí další podřízenou větev, jíž opět generuje instance. Tento parametr totiž v prvé řadě nedefinuje velikost či délku, i když to také, ale spíše bychom mohli říci vyvinutost.
Parametr Set Node Growth definuje, zda je Node Growth vůbec aktivní.
Velmi podobné je to i u druhé dvojice, parametrů Node Density a Set Node Density. Tyto parametry definují hustotu instancí, které jsou generovány instancovanými větvemi. Je to stejné jako v předchozím případě.
Zde dnes skončíme. Uznávám, není to nějak zvlášť veselé čtení plné vtipů, ale možná o to věcnější. Příště se podrobně podíváme na další generátory, které nám Xfrog nabízí. Ať slyšíte stromy růst!
Pavel Zoch, Ph.D. Úplnej a naprostej ..... zabývající se podporou CINEMY 4D v České a Slovenské republice, autor mnoha stovek odborných článků v internetových, ale i v tištěných periodikách (Pixel), spoluautor publikace CINEMA 4D Ce6 vydavší nakladatelstvím Computer Press. V rámci podpory je autorem veškeré české lokalizace produktů společnosti Maxon, dokumentace a jiné. Je přidruženým interním členem vývojové společnosti Maxon, však vázán podmínkami NDA stejně nesmí nic říci :-).
Zájmy: 3D, fotografie (klasika i digit), hudba, středověká a starověká architektura a umění, ekologie, sociobiologie, dějiny blízského a středního východu a tak dále... Toho prostě je...
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.), C4D - Created4Death