CINEMA 4D R 11,5 značný pokrok v mezích zákona (3) - 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

CINEMA 4D R 11,5 značný pokrok v mezích zákona (3)

24. září 2009, 00.00 | Dynamika, toužebně očekávaná, nakonec přišla v podobě součásti MoGraphu a Bullet systému kolizí. V podobě silné, ale přitom velmi rychlé a efektivní. V podobě velmi dobře zpracované, snadno uchopitelné a také poměrně snadno použitelné. Dnešní téma jsme vytyčili, kolizní dynamický systém MoDynamika modulu MoGraph.

Při přípravě koncepce tohoto dílu jsem poměrně dlouze zvažoval, zda jej zpracovat ve formě klasické recenze s popisem nástrojů, nebo jej spíše pojmout jako drobnou demonstraci doplněnou popisem podstatných parametrů a principů. Domnívám se, že v tomto případě bude asi lepší druhá cesta, protože odprezentuje možnosti a uvedené technologie a hlavně si každý nadále bude moci již zjištěné informace dále rozvíjet. A my můžeme na různých příkladech rozvíjet to co jsme již zjistili...

Krok první, klonování, objekty a události

Základním objektem který asi použije takřka každý je objekt Klonování. Je to objekt, který je klíčem jak k tomu, abychom vytvořili instance objektů které budou kolidovat s objekty scény, tak objektu, který bude například do scény vystřelen.

Nejdříve si ale vše vyzkoušíme na jednoduchém příkladu. Vytvoříme si jednoduché jablíčko pomocí rotace křivky, jednoduchou stopku pomocí Protažení NURBS a nakonec další jednoduchý objekt – lidově řečeno „bubáka“. A všechny tři objekty si zařadíme do jednoho objektu Osy.

01

Vytvoříme si jednoduchou rotační misku a také objekt Podlaha, ukážeme si totiž, že i takový čistě virtuální objekt jakým podlaha je, umí být objektem kolidujícím.

A jdeme na to. Vybereme si objekt misky a také objekt Podlahy a těmto objektům můžeme vytvořit novou vlastnost, respektive hlavní vlastnost systému MoDynamiky Správce objektů > Vlastnosti > MoGraph vlastnosti > Tuhá tělesa. Jakmile se vlastnost na uvedených objektech vytvoří, můžeme nastavovat základní parametry „kolizního objektu“. Všimněme si a zkusme mít na paměti vzhledu samotné ikony. Ta má totiž modrou velkou krychli a bílé jsou krychličky malé. To značí kolizní objekt. Vlastnost MoGraphu se totiž svým vzhledem upravuje podle toho, na který typ objektu ji nastavíme. Však si to oddemonstrujeme ještě za okamžik.

02

Co se týká samotného nastavení, obsahuje jen tři záložky a z toho podstatné jsou jen dvě. A první z těchto dvou je jen jednoduchým aktivátorem vlastnosti. Jakmile vlastnost vypneme, nebude se objekt účastnit kolizí a ikonka dostane šedou barvu, indikující vypnutý stav.

Vytvoříme si nový objekt MoGraph > Klonování a můžeme si pod tento objekt vložit objekt Osy, který skrývá naše jablíčko. A objekt Klonování můžeme nastavit na režim Matice a například na Krychli, je to relativně z pohledu demonstrace irelevantní.

Klonování si posuneme výše tak, aby nám objekty nezasahovaly do ostatních objektů scény, se kterými mají kolidovat a je také vhodné nastavit pozici klonů pomocí nastavení Klonování tak, aby se v počátku jablíčka neprolínala. A to proto, že by se snadno stalo že se „rozstřelí“ na všechny strany ve snaze splnit podmínku vzájemné kolize.

Pokud máme, můžeme si na náš objekt opět vložit vlastnost Správce objektů > Vlastnosti > MoGraph vlastnosti > Tuhá tělesa. Všimněme si, že v tomto případě má vlastnost jinou barvu, modré jsou malé krychličky a bílá naopak krychle velká. Barevné provedení tedy značí, že nastavujeme objekty které se budou ve scéně pohybovat a kolidovat.

03

Podívejme se tedy zatím letmo na nastavení této vlastnosti. Na rozdíl od svých kolegyň má více charakteristických záložek (4) a ty definujíc všechny podstatné aspekty kolidujících objektů. Nejdůležitější jsou opět záložky Dynamika a Kolize a s podivem možná zjistíme, že obsahují více voleb než nastavení předešlá.

04

Parametry se ale prozatím zabývat nebudeme a pustíme si animaci. Pokud je to potřeba prodloužíme délku animace v časové ose ve spodní části okna, abychom si přehráli vše co je potřebné.  

Pokud jsme vše nastavili tak jak jsme měli, měla by nám jablíčka popadat na talíř a podlahu, různě se od sebe odrážet, poskakovat a nakonec svůj pohyb zklidnit a zastavit se... Jednoduchá simulace je za námi.

Otázkou samozřejmě je, zda bychom nemohli upravit parametry kolizních objektů a i samotná jablíčka, aby tak brutálně neposkakovala. Vybereme si tedy vlastnost Tuhá tělesa na objektu talíře a nebo podlahy a podíváme se na parametry, které nabízí.

V prvé řadě je zde odrazivost a také „hrubost“ povrchu vyjádřená třením. Povrch na který částice dopadnou nemusí být zcela hladký a tak se může stát, že odražené objekty se nebudou odrážet přímo v úhlu dopadu (respektive, úhel odrazu, vektoru směru odrazu objektu a normály povrchu, by měl být teoreticky shodný s úhlem dopadu s normálou povrchu, jen by měl být na druhou stranu od této normály). Tato potenciální nerovnost je vyjádřena hodnotou „Šum kolize“. Ano, není to zcela fyzikální volba, ale dává simulaci dotek reality právě v té náhodnosti ,ve které se částice odrážejí. Tuto „realističnost“ bychom jinak museli řešit zbytečným členěním povrchu.

Podívejme se nyní také do nastavení vlastnosti Tuhá tělesa. Zde najdeme naprosto stejné volby, řešící vlastnosti povrchu našich kolidujících objektů. Pokud tedy nesedí našim představám poskakování jablíček, není problém upravit odrazivost a případně zvýšit tření podle potřeby.

06

Podstatná otázka ale zní poněkud jinak. A to, jak to, že spolu kolidovala celá jablka a ne jejich jednotlivé součásti. Ono toto nastavení je samozřejmě velmi důležité, protože nám umožňuje rozhodovat, zda budeme kolidovat všemi podřízenými objekty nějaké duplikované skupiny a nebo jen celky. V tomto případě samozřejmě chceme, aby kolidovaly pouze celky, ale jindy tomu tak nemusí. Požadované nastavení najdeme na vlastnosti Tuhá tělesa, v záložce Kolize, parametru Individuální elementy. Zde definujeme zda má kolidovat Celek jako nejvyšší úroveň, či jednotlivé části (vše) a nebo (i když to se týká spíše speciálních užití například s objektem Text) v rámci sekundární úrovně. Poslední možností je volba „vypnuto“, která způsobí, že se obsah pod objektem Klonování (ale samozřejmě obecně na všech objektech které podporují kolizi částic) spojí do jednoho útvaru, který koliduje jako celek.

05

Iniciátor pohybu - efektor

Připravíme si další příklad. Tentokráte o něco jednodušší, protože přitom budeme využívat i efektory a tak bychom si asi neměli situaci zbytečně komplikovat.

Vytvoříme si tedy objekt Klonování a pod tento objekt si vložíme jednoduchou krychličku a můžeme si tuto krychličku i malinko zaoblit (v nastavení primitiva). Následující ukázka by měla demonstrovat skutečnost, že lze objekty ovlivňovat efektory. Vytvoříme si tedy pomocí nastavení objektu Klonování klony „do matice“ a to do plochy, tedy na výšku budeme mít jen jeden jediný klon. Vytvoříme si tak tedy rovinu objektů, kterou umístíme nad podložku – objekt Podlaha. Opět si můžeme na tomto objektu nastavit vlastnost Tuhá tělesa, aby nám naše klony měly na co dopadat.

Můžeme si na náš objekt nastavit efektor Shader, pokud chceme a tímto efektorem upravit barvu povrchu klonů. Pokud chceme, samozřejmě. Stejně tak můžeme na nastavení polohy (ale jen mírně, chceme si ostatně něco ještě otestovat) a hlavně rotace použít efektor Náhodnost a vytvoříme si nový efektor „Krok“. A tím si vyzkoušíme tzv. přepínač, tedy nastavení události, kterou aktivujeme dynamiku instancí. Protože předchozí příklad, kdy nám najednou začaly padat všechny instance, není zas tak moc animačně zajímavý.

01

02

03

Vybereme si tedy náš efektor Krok a u tohoto efektoru si nastavíme úbytek na Koule a tu si nastavíme tak velkou, aby zaujímala víceméně celou šíři „pásu“ instancí. A také ji umístíme na jednu stranu „pásu“ obdélníku instancí. V záložce Parametr si aktivujeme posun instancí v dosahu ve všech třech směrech a zejména ve směru +Y a připravíme si animaci, kdy efektor pojede z jedné strany pole instancí na stranu druhou. V záložce Efektor si ještě upravíme křivku tak, aby byla v obou výchozích bodech na hodnotě 100%. A scéna je připravená.

04

Pokud si nyní přehrajeme animaci, co se stane. Pokud hned v nultém snímku efektor zabírá nějaké instance, pak budou podle tohoto efektoru umístěné, mimo to ale všechny instance padnou jak podťaté. To určitě není ono.

05

Vybereme si vlastnost Tuhá tělesa u našeho objektu Klonování a přejdeme na záložku Dynamika, kde je parametr Přepínač. Tento parametr je nesmírně důležitý, protože generuje způsob počátku kolizí. Nastavíme si zde volbu „Nejvyšší rychlost“. A opět si necháme proběhnout celou animaci a můžeme sledovat co se děje.

06

Jak projíždí efektor skrze pole instancí, tyto instance „explodují“ ve směr zadaného posunu . Ale tím že se začnou pohybovat zapříčiní změnu stavu v jejich chování a začnou být dynamické. Takže, začnou kolidovat a následně se řítit k zemi, vzájemně se odrážet a tak dále.

Iniciátor pohybu - objekt

Zkusme si další příklad. Opět využijeme objekt Klonování a malinkou krychličku, kterou ale nyní vyklonujeme do „matice“ krychle. A to docela husté. Hodnoty nastavíme tak, aby vnikl skutečně plný tvar, ale aby se současně objekty neprolínaly. A také, aby celý tvar „stál“ na podlaze. Opět si nastavíme na tomto objektu vlastnost Tuhá tělesa a nastavíme si také přepínač na volbu Na kolizi.

01

02

03

Vytvoříme si další objekt Klonování a pod tento objekt vytvoříme například objekt Koule. Vše necháme jak je v souřadnicích 0, 0, 0 a teprve až zařadíme kouli pod Klonování, můžeme Klonováním pohybovat. Umístíme si jej tak, aby osa Z objektu Klonování směřovala do krychličky, kterou tvoří naše instance. Na objektu vytvoříme vlastnost Tuhá tělesa a objektu Klonování zadáme množství klonů na 1. Vytvoří se tak jeden jediný objekt.

Vybereme si vlastnost Tuhá tělesa na objektu Klonování s objektem Koule a přejděme do stránky Dynamika, kde si aktivujeme volbu Vlastní úvodní rychlost. Pokud jsme postupovali podle právě zmíněného popisu, můžeme zadat vektor ve směru osy X=0 a hlavně Z na vysokou hodnotu a Y tak, aby koule, řekněme míček směřoval vzhůru a do hloubky, jako by byl vystřelen z děla. Zkusíme, zda při animaci míček letí směrem k bloku krychliček.

04

Pokud jsme vše udělali správně, měli bychom dostat animaci ve které koule naruší blok krychliček a ty se začnou hroutit jakoby do beden z papíru vrazila koule. Jenže, aby byla simulace o něco názornější a hlavně reálnější, bylo by asi potřeba aby měla koule vyšší hmotnost a více prorazila stojící blok. Je to vlastně aplikace zákonu zachování hybnosti.

Dobrá tedy, vybereme si vlastnost Tuhá tělesa u objektu klonován který vystřeluje Kouli a zde přejdeme na stránku Hmotnost. A můžeme zde zadat hmotnost objektu, přičemž zatím je zde nastavena globální hustota. Co to znamená? Jednoduše čím větší objekt bude, tím vyšší má absolutní hmotnost. Velké objekty tak v sobě skrývají více energie než objekty malé (při stejné rychlosti, opět podle zákona zachování hybnosti). V současné chvíli ale mají všechny objekty scény stejnou hustotu a tudíž není naše situace příliš reálná. Tedy, pokud je vystřelená koule dostatečně velká, pak možná i ano. Pokud je ale poměrně malá, pak bychom měli upravit hustotu či hmotnost, prostě upravit parametry objektu tak, aby smysluplně generoval požadovanou kolizi.

Máme tedy dvě možnosti, pokud preferujeme nastavení hustoty, zadáme volbu na „Vlastní hustota“ a upravíme hodnotu na požadovanou míru (pravděpodobně bude potřeba hodnotu zvýšit). Pokud přitom ještě zvětšíme samotný objekt, bude možná výsledkem „tank“ co se provalí skrz naše pole krychliček.

05

Druhou možností je zadat „absolutní“ hmotnost tělesa bez ohledu na jeho velikost. Co je lepší? To je otázka, pokud budeme vystřelovat nějaký osamocený objekt který bude iniciovat kolize, pak možná i hmotnost, ale pokud chceme aby spolu kolidovali jednotlivé „instance“, pak je jistojistě lepší hustota, protože ta zajistí korektní chování a kolize velká částice, malá částice.

Závěrem   

Pro dnešek MoDynamiku modulu MoGraph opustíme, ale rozhodně ne na dlouho, protože některé její užití jsou natolik fantastické, že bychom se jich měli alespoň drobně dotknout.

Tématické zařazení:

 » 3D grafika  

 

 

 

 

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

Uživatelské jméno:

Heslo: