Tvorba kulečníku v CINEMĚ 4D R6 a pluginu Fizz - 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

Tvorba kulečníku v CINEMĚ 4D R6 a pluginu Fizz

5. dubna 2004, 00.00 | V článku o pluginu Fizz jsme si tento velmi silný nástroj popsali. Není ale nad to si jej vyzkoušet na nějakém demonstrativním příkladu. Třeba při tvorbě sofistikovaně se chovajícího kulečníkového stolu a koulí, které se na něm zvesela prohánějí.

V článku o pluginu Fizz, který vyšel na serveru grafika.cz jsme se podrobně seznámili s tím, co nám plugin nabízí. Pravdou ale je, že méně zkušený uživatel může být i tak poněkud nerozhodný jak tento vskutku výborný plugin použít. A právě takovým uživatelům je určen dnešní článek, ve kterém se podíváme na to, jak Fizz využít pro tvorbu zcela reálně se chovajícího kulečníku, tedy lépe řečeno karambolu.

V prvé řadě však musím jako autor upozornit, že mimo automobilismu se taktéž přespříliš nevyznám v parametrech těchto barových sportů a tak prosím omluvte zřejmě špatné barvy koulí v mém ukázkovém příkladu a taktéž zcela jistě chybnou velikost. Nemám to v oku….

No ale to by stačilo. Přejdeme k věci. Naším cílem bude vytvoření scény reálně se chovajícího kulečníkového stolu, ve které se bílá koule začne pohybovat po šťouchu tága, načež po nárazu na sestavu ostatních koulí se tyto koule reálným způsobem "rozprchnou" po stole, přičemž se budou reálně odrážet jak sami od sebe, tak od okrajů stolu. Při tom je zachována podmínka, že koule "nevystřelí" mimo stůl.

Tolik k podmínkám. Nyní k tomu, co pro takovou scénu budeme potřebovat. V prvé řadě objekt tága, stolu a všech koulí, přičemž velikost všech těchto objektů ponechám na Vás, protože jak jsem řekl, nemám lidově řečeno ani páru o tom, jak by měly být tyto objekty veliké. V prvé řadě si musíme specifikovat, jak jednotlivé objekty vytvoříme. Je nasnadě, že objekty tága a stolu budou běžnými polygonovými objekty, přičemž v případě stolu doporučuji využít dva objekty, jeden jednoduchý pro tvorbu "odrážeče" a druhý složitější, který bude viditelný ve finálním renderu, který bude mít zaoblené hrany a jeho tvar bude přesněji odpovídat originálu. To vše proto, že jednodušší objekt se často rychleji počítá při generování dynamických kolizí a v tomto případě je celkový tvar pracovního "odrážeče" velmi podobný tvaru finálnímu.

Určitě si všichni pamatujeme, že kolize částic se daly v pluginu Fizz vytvořit jen tak, že na sebe reagovaly částice emitované nějakým generátorem částic. Jinými slovy Fizz neumí vytvářet dynamické interakce mezi běžnými objekty. Z toho důvodu si musíme pro každou jednu kouli kulečníku vytvořit emitor, který vytvoří právě jen tu jednu kouli na jednom specifickém místě.

Začneme ale tvorbou stolu. Pro základ ke stolu můžeme použít například objekt Krychle. Vložíme si tedy do scény objekty Krychle (Objekty > Primitiva > Krychle), ve Správci objektů poklepeme myší na jeho ikonu a nastavíme velikost například (a teď přijde první rozladění kulečníkových mistrů) třeba 1000*100*1600. Celou krychli se převedeme na polygony, nejlépe pomocí zkratky C (Struktura > Převést na polygony, zkratka C). Přejdeme do režimu editace polygonů (Nástroje > Polygony) a za využití výběrového nástroje si vybereme vrchní pouze polygon. Klikneme pravým tlačítkem myši a z menu vybereme příkaz Vytažení uvnitř (Struktura > Vytažení uvnitř, zkratka I) a interaktivně tažením myši vtáhneme do původního polygonu polygon nový, který bude o něco menší. Znova klikneme pravým tlačítkem do plochy a vybereme příkaz Vytažení (Struktura > Vytažení, zkratka D). Nyní potáhneme nový polygon směrem dolu, to bude deska stolu. Využijeme Správce souřadnic, kde zadáme hodnotu Y=0. Tím jsme si vytvořili tvar kulečníkového stolu, který se nám bude podílet na generování dynamiky koulí. Bude li někdo chtít si vytvořit finální stůl pro render, ať využije kopii tohoto "polotovaru" a u výsledného stolu nastaví pomocí dvojtečky ve Správci objektů viditelnost při renderu (šedá/zelená barva ve spodní tečce, červená v horní). Naopak u pomocného stolu ať nastaví viditelnost pouze v editoru (šedá/zelená v horní tečce, červená ve spodní)….



Máme stůl, ještě co na něj. Přeci kulečníkové koule! Tak tedy vzhůru na ně. Primárně si však musíme stanovit, kolik jich uděláme. Osobně jsem jich vyrobil 10 a bílou. Jestli jsem trochu mimo, tak pardon (nebojte se, už se nebudu opakovat). Co ale víme všichni jistě je to, že kulečníkové koule jsou rozestavěné do rovnostranného trojúhelníku, přičemž jejich stěny se vždy dotýkají svých sousedů. A jak tedy koule rozmístit? Uděláme to tak, že si nejdříve vytvoříme polygonový objekt, ve tvaru rovnostranného trojúhelníka, který vhodně rozsegmentujeme a na jednotlivé body pomocí přichytávání umístíme generátory částic, kdy každý jeden generátor vytvoří jen jednu částici, kouli.

Vložíme si tedy do scény objekt Polygon (Objekty > Primitiva > Polygon). Poklepeme ve Správci objektů na ikonu nově vytvořeného objektu a nastavíme jej. Aby byl náš vytvořený trojúhelník rovnostranný, musíme vycházet z rovnice Šířka = Výška x 1,1547. Zároveň si můžeme stanovit velikost průměru koule a říci si, že koule je v základně trojúhelníka obsažena přesně 3 x. To vychází z úvahy, že ? koule je mimo tento vytyčující trojúhelník na každé straně (jednotlivé generátory a tedy i koule budeme umisťovat podle os, díky tomu bude vždy polovina koule přesahovat mimo vytyčený obrazec. Osobně jsem si stanovil poloměr koule na 29 jednotek. Díky tomu můžeme říci, že Šířka = Poloměr x 6, přičemž 2 x poloměr je průměr a ten má být do šířky 3 x. Jestliže obě tyto triviální rovnice spojíme, pak máme výraz Poloměr x 6 = Výška x 1,1547, kdy Poloměr je hodnota, která by měla odpovídat poloměru námi vytvořených kulečníkových koulí. Pokud bychom dosadili hodnotu, kterou jsem zvolil já, pak by nám vyšlo 29 x 6 = Výška x 1,1547. z tohoto výrazu je Výška = 150,69. Vypočítáme li ještě parametr Šířka, pak ten bude 29 x 6 = 174. Do nastavení objektu Polygon tedy zadáme vypočítané hodnoty, parametr Počet segmentů nastavíme na 3 (díky tomu bude vytvořená mřížka odpovídat počtu koulí), parametr Orientace nastavíme na +Y a zapneme volbu Trojúhelníky, díky které se nám po převedení objektu na polygony vytvoří pouze trojúhelníky a struktura tak bude zřetelnější.



Je načase si vytvořený objekt polygon převést. Máme li jen stále vybraný, převedeme jej nejlépe stisknutím klávesové zkratky C (Struktura > Převést na polygony). Výsledný objekt by měl mít velmi přesně rozmístěné body, kdy každý bod tvoří vrchol alespoň jednoho rovnostranného polygonu. Máme tedy připravený objekt pro rozmístění koulí.



Vytvoříme si nový Generátor částic (Objekty > Částice > Generátor). Poklepeme si ve Správci objektů na nově vytvořený generátor a v otevřeném okně jej nastavíme. Začneme na stránce Částice. Počet částic (pro editor i pro render) nastavíme na 1. Počátek emise ponecháme na 0, ale parametr Konec emise nastavíme na 30. Díky tomu bude v prvním snímku animace vytvořena jen jedna částice (jedna částice za 30 snímků, tedy jednu vteřinu) a pak již žádná. Tedy každý jeden generátor vytvoří jen jednu kouli. Nastavení parametru Životnost závisí na délce animace. Můžeme prozatím ponechat hodnotu 600. Důležité je nastavení parametru Rychlost. Zde nastavíme 0. Poslední důležitou volbou je aktivace parametru Tangenciálně. Díky tomu se budou jednotlivé částice, koule při pohybu po stole otáčet. Nezapomeneme zapnout volbu Zobrazovat objekty, abychom ve scéně všechny koule viděli.



U generátoru musíme upravit ještě volby na stránce Generátor. Aby byl koule z tohoto generátoru vytvořená přesně na místě tohoto generátoru, pak musí být velikost tohoto generátoru taková, aby nemohlo při emisi dojít k posunu vytvářené částice. Velikost by tedy měla být 0, 0. Nastavíme tedy tyto hodnoty.



Vytvoříme si nyní vzor částice, kterou bude generátor vytvářet. Vytvoříme si tedy objekt Koule (Objekty > Primitiva > Koule). Poklepeme na ikonu tohoto objektu ve Správci objektů a nastavíme zejména parametr Poloměr. Ten ale máme již určený, jistě si na to všichni pamatujeme, protože jsme jej použili pro vytvoření pomocného trojúhelníku, podle kterého budeme koule rozmisťovat. V mém případě jsem tedy nastavil parametr Poloměr na 28,9 (to abychom byli 100% zabezpečeni, že se nebudou čirou náhodou koule v prvním snímku protínat). Objekt Koule zařadíme pod objekt Generátor.



Nyní přejdeme do Správce objektů. Vytvoříme si 9 kopií právě vytvořeného generátoru a zapneme si ve Správci přichytávání režim přichytávání na "Body". Přepneme se do vrchního pohledu (F2), pojmenujeme si nějak popisně každý jeden generátor (například Generátor částic 01, 02 atd.) a pomocí nástroje Posun (Nástroje > Posun, zkratka E) a nastaveného přichytávání umístíme každý jeden generátor na jeden bod námi připraveného pomocného trojúhelníku.



Pokud si přesuneme aktuální snímek animace (pomocí spodního posuvnému časové osy), například hned na snímek 1, měla by naše situace vypadat podobně jako na obrázku.



Viditelně nám koule leží svým středem v desce kulečníkového stolu. Nápravu učiníme jednoduše. Víme, že jsme si nastavili výšku desky na 0 (viz tvorba stolu) a tak umístíme každý z generátorů podle osy Y do výšky rovnající se poloměru koulí. V mém případě tedy 28,9.



Jejej, něco nám chybí. No jistě, bílá. Jeden z generátorů si tedy zkopírujeme, pojmenujeme jej právě třeba bílá a přetáhneme jej na místo, kde by měla být bílá koule pro první šťouch. Tedy naproti trojúhelníkové skupině. Trojúhelníkovou skupinu taktéž případně umístíme na správné místo (můžeme při tom využít příkaz Seskupit, pak přesuneme celou skupinu a Zrušit skupinu). Celá situace by měla vypadat jako na obrázku.



Už nám chybí vytvořit jen jeden jediný objekt. Tágo. Vytvoříme si tedy pro demonstraci objekt Válec, který si vhodně nastavíme (můžeme snížit počet segmentů, protože objekt nebude příliš vidět). Umístíme jej také tak, aby směřoval, stejně jako tágo, k bílé kouli. Osobně jsem tento objekt nastavil na Poloměr 6 a Výšku 400. Počet segmentů jsem snížil na 16, segmentů na výšku na 1 a podstavy také na 1.



Abychom rozpohybovali bílou kouli, musíme vytvořit jednoduchou animaci pohybu tága. Pomocí posuvnému časové osy se přesuneme na snímek 1 (to je také první snímek případně renderované animace, protože v tomto snímku existují všechny koule). Ve spodní liště vypneme všechny základní parametry nahrávání animace mimo nahrávání pozice.



Stiskneme nahrávací tlačítko (červená tečka ve stejné paletě), čímž nahrajeme první klíčový snímek pohybu tága. Přesuneme se například do snímku 4, ku příkladu v bočním pohledu posuneme třeba jen podle jedné osy tágo do pozice, kdy tágo již mírně proniká tělesem bílé koule. Opět nahrajeme klíčový snímek (stiskneme červené tlačítko). Poté se přesuneme ku příkladu do snímku 10 či 12 a tágo "stáhneme" mimo stůl. Nahrajeme poslední klíčový snímek. Nutno poznamenat, že pro opravdu dobře chovající se naražení a odtažení tága by bylo potřeba upravit chování animace mezi klíčovými snímky. To lze upravit ve Správci Časová osa v editování časových křivek. To však ponechám na Vás. Stejně tak může být zapotřebí upravit třeba délku odtažení, třeba zkrátit na 10 snímek. Pak stačí ve Správci animací přetáhnout klíčový snímek do příslušné polohy….

V tento okamžik máme vlastně vše, co pro tvorbu chování z objektů jako takových potřebujeme. Nyní budeme tedy pracovat jen s nastavením kolizí a prostředí dynamického chování. V prvé řadě do scény vložíme objekt Gravitace, který nám zajistí, že nám jednotlivé koule nemohou nereálně ulétnout. Objekt Gravitace vložíme z Objekty > Částice > Gravitace. Objekt Gravitace by měl být minimálně stejně veliký, jako velikost stolu. Tedy v námi popisovaném příkladu minimálně se základnou 1000*1600 a o něco větší výškou, například 200. Objekt Gravitace umístíme na stejné místo, na kterém máme stůl a koule.





Vložíme si do scény první funkci pluginu Fizz. A to Kolize Polygon-Částice (Pluginy > Fizz 1.31f > Kolize Polygon-Částice. Pod objekt této funkce vložíme jak objekt tága, tak objekt kulečníkového stolu. Chceme přeci, aby koule byly ovlivňovány oběma těmito objekty. Tágo rozpohybuje bílou kouli a všechny koule se budou odrážet od stolu jako takového. Máme li tedy oba objekty umístěné, poklepeme na ikonu objektu Kolize Polygon-Částice a otevřeme nastavení tohoto objektu. Parametr Poloměr nastavíme podle poloměru koulí. V našem reprezentativním příkladu tedy 28,9. Tření, tedy zpomalení vyvolané pohybem částic po povrchu nastavíme na 15%, Valivé tření na 100%, díky čemuž a také díky aktivní volbě "Tangenciálně" v nastavení generátorů částic se budou naše koule otáčet. Parametr Pružnost nastavíme na 80%. Energie odražené koule od tělesa bude 80% energie při dopadu. Ostatní parametry ponecháme, mimo parametrů na stránce Volby. Na té se ujistíme, že máme aktivní volbu Oboustranný a Automaticky převést na polygony (to kvůli tágu). Můžeme zvýšit hodnoty Převzorkování a Hloubka kolize, aby byl efekt přesnější. To však můžeme udělat posléze když zjistíme, že stávající hodnoty nebudou stačit…





Nyní vložíme do scény i objekt zajišťující kolizi mezi částicemi. Jde o objekt Pluginy > Fizz 1.31f > Kolize Částice-Částice. Pod tento objekt ani nemusíme nic vkládat. Funkce bude ovlivňovat všechny částice ve scéně. Poklepeme tedy na ikonu vložené funkce a nastavíme ji. Parametr Poloměr opět nastavíme na 28,9, pružnost na 50% (energie se při srážce předá v 50% energie původní). Ostatní hodnoty ponecháme, opět mimo stránku Volby. Zde musíme nastavit velikost oblasti, ve které se budou kolize odehrávat. Zde musím podotknout, že velikost zadává v poloměru. Chceme li tedy, aby byla tato mřížka stejně velká jako stůl, pak v půdorysu zadáme hodnoty 500 (500*2=100) a 800 (800*2=1600). Výšku můžeme ponechat. Tím je náš kulečník hotový.





Musíme ještě učinit poslední věc. A to nastavit celkovou délku animace. To nastavíme skrze okno Nastavení projektu (Úpravy > Nastavení projektu, zkratka Ctrl+D).

Celková animace ke stažení, velikost cca 2,5 MB. Pro ty, kteří nechtějí čekat na stažení souboru, přikládám několik obrázků z animace…









Ještě jedna poznámka na závěr. Pokud bude nějaký problém, zkuste si upravit jednotlivé parametry. Tedy rychlost šťouchu, umístění objektu Gravitace a podobně….

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: