Je libo řetěz? Či alespoň řetízek? Část první - 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

Je libo řetěz? Či alespoň řetízek? Část první

30. října 2007, 00.00 | Některé věci lze simulovat poměrně složitě, jiné překvapivě lehce a toto je vlastně ten druhý případ. Případ, jak si pomoci při tvorbě nějakého kolidujícího objektu vytvořeného „po křivce“ s jiným objektem pomocí MOCCY a jejího systém šatů – Klotildy.

Je to smůla, ale Klotilda tak nějak s křivkami nemluví. A už vůbec ne v situaci, kdy by měla samotná křivka být oním kolidujícím objektem. Cesta, jak dosáhnout takové situace, ale existuje, a to dokonce tak dokonalá, že uvedená křivka je i animovaná. Samozřejmě, že ne přímo, ale o to praktičtěji (například oproti modulu Hair).

Vše si tedy předvedeme na postupných ideologických ukázkách a postupech, které by se mohly obecně hodit častěji, ale my je využijeme pro rozmístění křivky, podél které pak například rozmístíme ve statickém obrázku články řetízku, který má postava okolo krku.

Než však začneme, několik poznámek k tomu, co bychom měli mít vždy na paměti. Klotilda je simulace látek, ale nikoliv fyzikální simulace. Přesto má svá pravidla a některá z nich bychom měli akceptovat. Ideální například je, aby kolidující „látkové“ objekty měly homogenní strukturu, protože pak bude chování takových objektů přesnější a přirozenější. Na to tedy musíme pamatovat již v úvodu své práce. Další podmínky vycházejí ze systému samotného. Do verze 10.5 byla látka sto kolidovat jen s polygonovými objekty, nikoliv s generátory. Takže pokud používáte starší verzi, pamatujte na to. V nové 10.5 lze využívat HyperNURBS, primitiva a podobné objekty zcela volně, k radosti uživatele. Poslední upomínka spočívá v informaci, že nastavení parametrů látky je v případě Klotildy shodné s mnoha jinými nastaveními CINEMY 4D – tedy, že parametry mají posuvníky maximálně do hodnoty 100, ale ručně lze nastavit i hodnoty vyšší a často se tak také děje.

Statická simulace – analýza z výsledku

Připravíme si náš polygonový model, což bude těleso, se kterým bude náš testovací objekt kolidovat. Může být jakýkoliv, aktivitě se meze nekladou. Jen bychom měli pamatovat na to, co jsme napsali dříve. Tedy, že verze starší než 10.5 nepodporují generátory. To je z pohledu animací škoda, ale abychom někoho nediskriminovali (tedy pravda, na devítkaře jsem nepomyslel), připravil jsem výsledný soubor v R 10. R 10.5 by ale byla vhodnější, jelikož by takový objekt lépe pracoval s například s animovanou postavou a podobně (kolize by byly přesnější než kolize s podřízeným polygonovým objektem). Principielně to však nevadí.

Model je připravený tak, že jsem použil standardní krychli se segmentací 1,1,1. Její polygony jsem různě vytahoval (Extrude). Nakonec jsem model segmentoval pomocí příkazu Segmentovat (hodnota 2) s tím, že jsem aktivoval volbu pro aktivaci principu HyperNURBS.

01

Pro základní kolidující objekt použijeme drobný trik, který nám pomůže s krásně pravidelnou segmentací tohoto kolidujícího objektu.

Vytvoříme si NURBSovou B-spline křivku (uzavřenou), kterou vykreslíme základní „nezdeformovaný“ tvar budoucího řetízku, náramku, či co to vlastně tvoříme. Co je v tomto kroku naprosto nezbytné, je, abychom nastavili u této křivky vnitřní interpolaci na typ „jednotná“, protože právě a jen v takovém případě bude náš systém přesný. To se ostatně později projeví velmi názorně. Počet kroků můžeme nechat na 8, možná jej však ještě podle potřeby upravíme.

02

Dodatek ke křivce: v případě, že má objekt kolidovat se složitějším tvarem, není problém upravit tvar i ve vertikálním směru, pokud zvolíme vhodnou interpolaci mezilehlých bodů, není žádný tvar problém.

Zvolíme si přední pohled a připravíme si jednoduchou lineární křivku se dvěma body. První bod této křivky bude v 0,0 a druhý bude vpravo, ve směru osy X, při hodnotě Y=0.

03

Vytvoříme si Protažení NURBS a pod něj vložíme obě připravené křivky. Cestu – první křivku, a profil – druhou křivku. Můžeme profil pomocí nástroje Velikost trochu zmenšit, tím také změníme šířku vygenerovaných polygonů, protože jak si můžeme ověřit například v režimu zobrazení Gouraudovo stínování – hrany – Drátěný režim, tak délka profilu určuje šíři prstence a naším cílem je pravidelná segmentace.

04

V případě, že by byla nevhodná segmentace po „délce“, musíme upravit hodnotu množství mezilehlých bodů u křivky cesty.

Právě připravený objekt si převedeme na polygony a můžeme si jej rovnou přejmenovat, například na „řetízek-zdroj“.

U objektu, který slouží jako kolizní, vytvoříme vlastnost Správce nastavení > Vlastnosti > Clothilde > Kolizní objekt, u objektu „řetízek-zdroj“ vytvoříme vlastnost Správce nastavení > Vlastnosti > Clothilde > Oděv.

05

Můžeme ihned vstoupit do nastavení vlastnosti Oděv, protože vlastnost Kolizního objektu můžeme nechat, jak je (zatím). V záložce Vlastnosti se soustředíme na parametr Ztuhlost, kde zadáme vyšší hodnotu, řekněme 500 (řetízek či náramek většinou není tak volně ohebný) a snížíme Ohýbání na 0. V záložce Expert zadáme vyšší hodnotu Seg. vzorkování (5) v případě, že naše první testy nedopadnou příliš dobře. Tato hodnota je hodnotou „kvality“ vyšetřování simulace a v mnoha ohledech řeší nekorektní průběh, ale také prodlužuje propočet.

Další užitečnou volbou (také v záložce Expert) je nastavení „Sebe kolize“. To ale samo o sobě ne vždy musí stačit, takže co s tím. Je tu ještě jedna volba, která nám případně pomůže s tím, aby nám objekt „nepropadl“ skrze sebe. Tuto volbu najdeme v záložce Síly a jmenuje se „Sebe odpor“. Zde je nastavení, které definuje odpor elementů objektu v případě, že se přiblíží pod nějakou zadanou hranici. To je další systém vzájemné analýzy kolize, a to systém velmi účinný. Podle velikosti objektu definujeme vzdálenost. Abychom měli přehled, jakou hodnotu nastavit, je dobré si vybrat jeden polygon a podle velikosti nastavit hodnotu vzdálenosti do „sebe odporu“. V mém případě je velikost polygonu cca 10 jednotek, takže hodnota 5 je vcelku optimální. Je otázkou, zda tuto analýzu budeme potřebovat, ono pokud zadáme chybnou hodnotu, tak může být kontraproduktivní, protože se nám začnou elementy protáčet (jak se odpuzují body v rámci jednotlivého polygonu v případě, že je hodnota příliš velká).

06

Nyní můžeme pustit animaci (je dobré si prodloužit délku projektu). Alternativou a možná i lepší je použít příkaz pro relaxaci – tedy jakousi simulaci probíhající v jednom snímku. Tu najdeme v záložce vlastnosti Oděv > Oděv a najdeme tu také nastavení hodnoty kroků relaxace. Ve svém případě jsem zadal kroků 15 (kroky probíhají při každém dalším stisknutí dál a dál) a stiskl jsem tlačítko Relaxace. Proběhla analýza.

07

Jsme-li alespoň dílčím způsobem spokojeni, můžeme stav „upevnit“ a převést do výchozího stavu (tlačítko In. stav > Nastavit tamtéž). A možná, že si nyní opravdu můžeme pustit animaci a sledovat, jak se nám postupně objekt „uklidňuje“. Až bude uklidněný dostatečně, můžeme stav opět převést do in. stavu.

A co dál? Postupujeme opravdu po krocích, takže další krok bude skutečně velmi prostý. U vlastnosti Oděv vypneme v záložce Vlastnosti > Činnost oděvu. Vlastnost zešediví a co víc, budeme nyní moci s elementy objektu pracovat.

08

A to přesně využijeme. Máme vypnutou vlastnost Oděv, a tak si aktivujeme režim editace hran a pomocí příkazu Výběr > Smyčka z hran vybereme hrany, které následně chceme převést na křivku (jsou vybrané hrany >Struktura > Upravit křivku > Hrana na křivku).

09

Vytvořená křivka je lineární, ale pokud ji potřebujeme přesnější, stačí nastavit křivku na typ B-spline a režim interpolace na „jednotná“ (tento režim je nejvhodnější z pohledu distribuce instancí po křivce, tedy například i článků řetězu). V případě modulu MoGraph a jeho Klonování a distribuce instancí na křivku je nutné zvýšit hodnotu segmentů v interpolaci na poměrně vysoké číslo, aby byla distribuce skutečně homogenní, ale například v případě MoXPig spline objektu je to zcela bez potíží.

10

A máme hotovo, připravili jsme si statickou polohu křivky, která je „dynamicky“ položená, či visí na objektu. Ale slíbili jsme si, že můžeme vytvořit přímo dynamické chování, a to jen pomocí MOCCY (ono dynamickou křivku lze simulovat i pomocí jiných modulů, například Hairu). Toto téma je ale natolik obsáhlé (i když tím nemyslím složité), že si jej necháme na separátní díl, tedy na příště, prozatím dokážeme jakýkoliv objekt statické scény obohatit o různé provazy a podobně naprosto přesvědčivého tvaru, což není jistě k zahození.

Tématické zařazení:

 » 3D grafika  

Diskuse k článku

 

Vložit nový příspěvek   Sbalit příspěvky

 

Zatím nebyl uložen žádný příspěvek, buďte první.

 

 

Vložit nový příspěvek

Jméno:

Pohlaví:

,

E-mail:

Předmět:

Příspěvek:

 

Kontrola:

Do spodního pole opište z obrázku 5 znaků:

Kód pro ověření

 

 

 

 

 

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

Uživatelské jméno:

Heslo: