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:
-
5. září 2024
Matrixmedia - Obsluha a tisk na velkoformátových digitálních tiskárnách
-
30. září 2024
-
4. října 2024
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:
A mělo by se nám objevit něco takového:
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í:
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
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:
Pokud si s tímto modifikátoremem pohrajeme, můžeme dosáhnout i jednoduché napodobeniny 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.
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
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:
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
- Fixed count - vytvoří se tolik kopií, kolik zadáme v políčku
- 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í
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.
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.
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:
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.
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:
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:
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
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.
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:
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:
Asi si leckdo řekne, že na tom není nic zvláštního. Nyní ale stačí zlehka zarotovat, přesunout a zmenšit Empty objekty:
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ů :).
-
14. května 2014
Jak vkládat snímky do galerií a soutěží? Stručný obrazový průvodce
-
23. dubna 2014
Konica Minolta přenesla výhody velkých zařízení do kompaktních modelů
-
12. června 2012
-
9. dubna 2014
-
29. listopadu 2013
-
6. září 2004
OKI snižuje ceny barevných laserových tiskáren C3100 a C5200n
-
13. května 2004
-
19. ledna 2004
QuarkXPress Passport 6: předvedení nové verze na konferenci Apple Forum 27.1.2004
-
6. února 2001
-
30. listopadu 2014
Nový fotoaparát α7 II: první plnoformát s pětiosou optickou stabilizací obrazu na světě
-
5. srpna 2024
Bubnový scanner na 4000dpi optické rozlišení + PC + software
-
8. září 2024
-
14. října 2024
-
5. listopadu 2024