Přehled nových funkcí v Blenderu (8. část): modifikátory podruhé - 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

Přehled nových funkcí v Blenderu (8. část): modifikátory podruhé

12. března 2008, 00.00 | Modifikátory nacházejí velké uplatnění na poli animace. I přesto, že Wave a Array modifikátory nelze použít všude, jsou rozhodně více, nežli jen zajímavým počinem.
Dnes se zaměříme především na Array.

Dnes dokončíme problematiku modifikátorů, tedy popíšeme si poslední tři zbylé - Wave, Displace a Array.

Wave modifikátor

Wave modifikátor dělá to, co by se podle názvu dalo očekávat - tedy rozvlní objekt. Kolega David Střelák zde nedávno rozebíral tvorbu vodní hladiny pomocí animované textury. Jako by to měl Blender ve zvyku, opět existuje další způsob, jak dosáhnout animované vodní hladiny, a to právě díky Wave modifikátoru. Ovšem animace bude vypadat trochu odlišně. Wave si budeme demonstrovat na rovném meshi. Přidáme tedy mřížku (či plane, který ale musíme poté zahustit, aby se mělo vůbec co deformovat) a aktivujeme jí modifikátor Subsurf a Wave:

Přidání mřížky

Zásobník

A mělo by se nám objevit něco takového:

Zvlněný plane

Pojďme si popsat, co jednotlivé parametry znamenají:
X, Y - určují, po kterých osách bude vlna probíhat
Cycl - nastavení opakovatelnosti animace, pokud není aktivováno, proběhne meshem (či křivkou nebo textem) jen jediná vlna
Normals - pokud je aktivováno, mesh se bude deformovat podle normál. Pokud zkusíme aktivovat u naší mřížky, neshledáme žádnou změnu, protože všechny normály mají orientaci nahoru, pokud ale přidáme mesh s různě natočenými normálami, výsledek už je patrnější. Pro srovnání: na horním obrázku bez deformace podle normál, na spodním s ní:

Nehezky zvlněná opice

Hezky zvlněná opice

Deformace podle normál má efekt pouze na meshe, jiné objekty totiž normály nemají. K dispozici jsou zde (po aktivaci) ještě nastavení, podle kterých os bude deformace probíhat
Time sta - frame, na kterém animace začne
Lifetime - délka animace ve framech
Damptime - udává ve framech, jak dlouho bude trvat, než animace skončí po dosáhnutí Lifetime (tím lze regulovat plynulost animace)
Sta x, Sta y - určení souřadnic, na nichž bude centrum vlny (relativně vzhledem k centru objektu)
Ob - jméno objektu, od jehož centra se bude odvíjet pozice centra vlny
VGroup - vertexová skupina, kterou efekt ovlivní
Texture - textura, která bude určovat rozsah efektu v černých a bílých bodech

Vlna ovlivněná texturou
Příklad použití Blend textury

Roletkové menu - určuje způsob mapování textury
Speed - rychlost vlny
Height - výška vlny
Width - šířka vlny
Narrow - ostrost vlny, tzn. jak pozvolna bude splývat s okolím

Jak vidno z posledního obrázku, zajímavých výsledků lze dosáhnout i použitím více vln přes sebe:

Vícenásobné vlny

Pokud si s tímto modifikátoremem pohrajeme, můžeme dosáhnout i jednoduché napodobeniny kapky:

Trochu kýčovitá atrapa kapky

Samozřejmě, že na kapalinu bychom mnohem lépe uplatnili Fluid simulation, ale tou se prozatím zabývat nebudeme. Wave modifikátor je, i když se to možná na první pohled nezdá, zajímavou možností k tvorbě nejen vodní hladiny, jediným limitem je opět pouze fantazie. Je načase jít o krok dál.

Displace modifikátor

Možná někoho napadne otázka, proč vlastně vývojáři implementovali do Blenderu něco takového, když už je možnost displacement mappingu v materiálech delší dobu. Odpověď je opět prostá. Při použití tlačítka k aktivaci displacement mapy se výsledek zobrazoval pouze na renderu, což ovšem dávalo nedostatečnou možnost kontroly ve 3D okně. Displace modifikátor toto vše řeší. Pojďme se podívat, co všechno dokáže.

Panel

VGroup - opět nastavení vertexové skupiny, která bude ovlivněna
Texture - textura, která bude ovlivňovat displacement mapping. Klasicky, černá určuje snížení, bílá vyvýšení
Midlevel - určuje střední úroveň textury, tzn. všechny body na textuře, které mají nižší úroveň budou vyhodnoceny jako záporné (tedy budou mesh deformovat "dolů") a všechny body nad touto úrovní budou vyhodnoceny jako kladné (tedy budou mesh deformovat "nahoru"). V praxi se nižší číslo projeví zdánlivým ztluštěním meshe, čísla lze zadávat od intervalu 0,0000 do 1,0000
Strength - síla efektu, lze jít i do záporných čísel, což přehodí interpretaci textury (černá nahoře, bílá dole)
Roletkové menu - určuje typ deformace, lze nastavit deformaci podle normál, deformaci podle jedné z os a převedení RGB modelu na deformaci podle XYZ
Spodní roletkové menu určuje způsob mapování textury

Displace modofikátor v akci
Jeden ze starších modelů, pořád ale vhodný k demonstraci

Logicky - čím lepší náhled chceme ve 3D okně mít, tím větší hodnotu Subsurfu musíme nastavit, což při náročnějších modelech/scénách může výrazně zpomalovat výkon. V tomto případě doporučuji buď nepřekračovat jisté meze (které jsou individuální a záleží na výkonu počítače), nebo jednoduše umístit model do separátní vrstvy.

Array

A to nejlepší na konec. Tedy aspoň já shledávám Array jedním z nejzajímavějších modifikátorů. Možná někoho napadla souvislost s poli a programovacími jazyky (array = pole). Pole v programátorské termniologii je prvek, do nějž je možné načíst libovolné množství dat/proměnných, k nimž přistupujeme pomocí indexů. Array v Blenderu do jisté míry pracuje na stejném principu - konkrétně vytvoří libovolné množství kopií meshe, jež lze deformovat posunem, otočením, či zvětšením. Tyto kopie dále mohou např. kopírovat tvar křivky nebo být libovolně animovány. Vše si budeme demonstrovat na objektu krychle, kterému přidáme Array modifikátor:

Přidání Array

Roletkové menu - zde se vybírá kritérium, kterému se bude přizpůsobovat počet kopií.
- Fixed length - vytvoří se tolik kopií, aby vyhovovaly nastavené délce

Fixní délka

- Fixed count - vytvoří se tolik kopií, kolik zadáme v políčku

Fixní počet

- Fit to curve length - vytvoří se tolik kopií, aby odpovídaly délce křivky. Bohužel zatím není způsob, jak přizpůsobit počet kopií tak, aby se deformovaly podle tvaru křivky, aniž by se musel modifikátor aplikovat. Nezbývá než doufat, že tuto možnost vývojáři přidají do některé z dalších verzí

Přizpůsobení se délce křivky

Přizpůsobení se délce křivky

My k našemu příkladu použijeme neměnný počet kopií nastavený na 5. Constant a Relative offset určují vzdálenost mezi jednotlivými kopiemi. X, Y a Z samozřejmě udávají posun v Blender jednotkách.
Constant offset - využívá vzdálenosti určené napevno, tzn., že při zvětšení originálu se kopie začnou překrývat.

Konstantní vzdálenost mezi kopiemi

Používání Constant offset by tedy nemuselo být praktické, pokud by mesh využíval např. Shape keys, které by mesh zvětšovaly. Proto je zde Relative offset, který slouží též k určení posunu, ale vzdálenosti se budou počítat relativně, vzhledem k velikosti objektu. Hodnota 1 pro všechny tři parametry X, Y a Z bude mít za následek posun meshe tak, že se jejich bounding box mřížky budou dotýkat jen rohy.

Relativní vzdálenost kopií

Pro naše účely ponecháme relativní offset s nastaveným X na 2. Nastavení spojování poslední a první kopie a posunu určeném jiným objektem si budeme demonstrovat na jiném meshi, např. na tomto:

Zvláštní mesh
Pozn.: Všimněme si, že je brán zřetel na to, aby mesh neměl "švy", tzn, aby byl návazný

K centru objektu přidáme Empty objekt a jeho jméno vepíšeme do kolonky Ob pod Object offset, který aktivujeme.

Nastavení posunu učeného jiným objektem

Podle úhlu, který kopie zabírá, vytvoříme odpovídající počet kopií (u mě zabíral mesh 20°, tedy 360 : 20 = 18 kopií). Pokud máme nastavený Relative offset na 1, pořád jsou kopie zarovnány v jedné přímce. To snadno změníme. Bude nám stačit pouze zarotovat Empty objektem a patřičně stáhnout relativní posun:

Zvláštní zkopírovaný mesh

Toto už vypadá vcelku vkusně, ale pořád se nám nelíbí jedna drobnost. Pokud se podíváme pozorněji, zjistíme, že jednotlivé kopie jsou od sebe stále odděleny:

Nesloučené kopie

Jak z toho ven? Pomoc je opět snadná, k tomu nám slouží tlačítka
Merge - spojování jednotlivých kopií s možností nastavení merge limitu (obdobně jako u Mirror modifikátoru)
First Last - spojení první a poslední kopie - což je tedy i náš případ

Spojení všech kopií

Výsledek

Start cap, End cap - těmito tlačítky určíme dva meshe, které budou určovat začátek a konec array, tyto meshe se s array spojí. Tedy tak to aspoň udává blender.org, nicméně nevím, zda šlo o bug, či nějakou chybu u mě, každopádně mi ale tato funkce ani při různých obměnách nefungovala.

Začátek a konec array

Vraťme se nyní zpět k naší krychli. Když už víme, jak funguje Object offset, přidáme krychli obdobným způsobem tento posunový objekt:

Posun kopií určený Empty objektem

A nyní uděláme věc, která vystřeluje použití Array do dalekých končin abstrakce. Nebude to nic jiného, než přidání dalšího Array modifikátoru a jemu nastavíme jiný Empty objekt:

Zatím nic významného

Asi si leckdo řekne, že na tom není nic zvláštního. Nyní ale stačí zlehka zarotovat, přesunout a zmenšit Empty objekty:

Spousta kopií, rozmístěných zdánlivě náhodně

Všechny kopie se zdají být rozmístěny zdánlivě náhodně, ale není tomu tak. Umocnění efektu můžeme dosáhnout přidáním dalšího Array. V čem spočívá jednoznačná výhoda postupu s Object offset? Array lze jednoduše animovat pomocí standartních transformací na posunovém objektu - přesunem, rotací či zvětšením. Jak jsem již zmínil, tyto animace budou spíše abstraktního rázu, ale zajímavě by mohly působit ve spojení s Array např. částice. Osobně mi je líto, že Array nefunguje v kombinaci s Meta objekty, animace, kde by se spojovaly a rozpojovaly, zvětšovaly, či zmenšovaly kapky vody by mohla být vskutku efektivní. Nezbývá, než doufat, že vývojáři jednoho dne splní naše přání - přání nenasytných uživatelů :).

Tématické zařazení:

 » 3D grafika  

 

 

 

 

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

Uživatelské jméno:

Heslo: