Přehled nových funkcí v Blenderu - část 2. - 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

Přehled nových funkcí v Blenderu - část 2.

7. srpna 2007, 07.00 | Dnešní článek se bude zabývat dalšími novinkami v Blenderu. Z oblasti materiálů se podíváme na problematiku SSS - SubSurface Scattering, dále si vysvětlíme, co jsou to Softbodies a k čemu všemu je lze využít.

SSS

Budeme používat náš škaredý obličej z minula, samozřejmě – doufám, že nemusím opakovat – že bude jedině dobře, když si následující postupy budete zkoušet především na svých modelech:

Škaredý obličej

Pokud ho nemáte z minula - download zde (pravé tlačítko myši -> uložit odkaz jako)

A o čem vlastně SSS je? Je to nová volba ve vykreslování materiálů, umožňující prozařování pod povrch materiálu. Obdobný jev lze vidět i u materiálů reálného světa, jako například vosku, lidské kůže nebo minerálu nefritu. Jaký efekt prozařování vyvolává, pochopíte nejlépe z obrázku:

Různé materiály, jež jsou prozářeny

Pojďme si tedy demonstrovat, čeho je SSS schopno.

Dal jsem si za úkol vytvořit materiál lidské kůže. Aby byl náš škaredý obličej aspoň trochu různorodý, unwrapoval jsem model a nakreslil colormapu a bumpmapu.

Unwrap

Nebudu se rozepisovat o tom, jak jsem unwrapoval - šlo o LSCM metodu, navíc unwrap je tak jednoduchý, že místa jednotlivých švů jsou zřetelně vidět.

Colormapa

Odkaz na tuto texturu v plném rozlišení - 1 500 * 1 500 px, 84 kb (pravé tlačítko myši -> uložit odkaz jako)

Bumpmapa

Odkaz na tuto texturu v plném rozlišení - 1 500 * 1 500 px, 99 kb (pravé tlačítko myši -> uložit odkaz jako)

Takto vypadal model po aplikování textur:

Bez SSS

A teď k subsurface scatteringu - SSS panel se nachází v material buttons:

SSS panel

Takto jsem nastavil materiál pro kůži:

Nastavení materiálu kůže

Určitě vás bude zajímat význam jednotlivých tlačítek:
Subsurface Scattering aktivuje toto nastavení.
Scale znamená zvětšení. To znamená, že čím vyšší číslo nastavíte, tím více bude objekt působit dojmem, že je menší a víc přiblížený. Uveďme si jako příklad fotku voskové figurky. Na jedné fotce je řekněme 50 cm velká figurka, na druhé figurka ne vyšší než 5 cm. Obě fotky mají totožné proporce, dokonce i figurky jsou zabrány stejným způsobem, nicméně rozdíl uvidíte v tom, že prozařování se více projeví na menší figurce (přeneseně by se dalo říct, že parametr scale je u ní nastaven na mnohem vyšší číslo). Pro doplnění dodám, že pokud je scale na 1,000, znamená to, že 1 Blender jednotka = 1 milimetr. Takže pokud nastavíte scale na 2,000, 1 Blender jednotka = 0,5 milimetru atp. Pro představu, co udělá nastavení příliš vysokého čísla u scale:

Příliš velké zvětšení

Radius R,G a B - tímto parametrem určíte, která z barevných složek spektra (červená, zelená a modrá) bude prozářena pod materiálem. Tento parametr je úzce svázán s nastavením barvy materiálu, tedy pokud například není v materiálu nijak zastoupena modrá složka, posuvník Radius B nijak neovlivní výsledek.
IOR - index refrakce, tento pojem se používá především v oblasti raytracových světel a určuje míru lámání světla na povrchu průhledných materiálů (sklo, voda, diamant, ... každý z těchto materiálů má IOR nastavení různé), zde jeho změna ovlivňuje viditelnost SSS efektu, podle blender3d.org postačí pro většinu materiálů 1.3.
Error - určuje, s jakou přesností se render vyhne chybám. Čím menší číslo, tím pomalejší, ale kvalitnější render.
Roletkové menu nabízí několik přednastavených materiálů, jako je například brambora, mléko, krém atp.
Pole pro barevný vzorek umožňuje nabrat barvu - barvu difúzní reflektace, což ovlivňuje nejen barvu materiálu, ale i barvu samotného prozařování
Tex určuje míru rozostření textury při aplikaci efektu
Front určuje míru prozařování přední strany objektu
Back určuje míru prozařování zadní strany objektu

A tedy s nastavením, které je patrné na předposledním obrázku jsem dosáhl tohoto:

Kůže

Další pokus o vlastní nastavení materiálu - a sice nefritu. Je to lesklý zelený minerál, prostupností světla lehce podobný vosku. Je třeba si uvědomit, jaké předpoklady tento materiál má. Je to rozhodně lepší, než střílet naslepo. V prvé řadě, materiál má středně tmavou zelenou barvu, takže pokud byste u rádia zelené nastavili příliš vysoké číslo (řekněme vyšší než 3), nebyla by pořádně viditelná geometrie, jedině že byste stáhli IOR. Rádius červené a modré v podstatě nijak neovlivňuje celkový výsledek, protože hlavní barevnou složkou materiálu je zelená, ovšem stále platí, že pokud tato nastavení poženete příliš vysoko, výsledný materiál může vypadat přinejmenším šíleně - samozřejmě v závislosti na barvě materiálu.

Uvádím i kompletní nastavení tohoto materiálu:

Nastavení

A tady je výsledek:

Pokus o nefrit
Pozn. vypnul jsem colormapu, bumpmapa zůstala

S tímto nastavením jsem se pokusil o vosk:

Nastavení

Musím uznat, že mi docela dlouho trvalo, než jsem byl s tímto materiálem spokojený. Nakonec to spočívalo v nastavení vyššího čísla u scale, protože jsem nastavoval hodně světlou barvu, a tudíž zvětšování rádia jednotlivých barev vedlo nanejvýš k šíleným materiálům. Výsledek:

Vosk

Jen pro představu ukážu jeden z materiálů, kterého se mi podařilo dosáhnout při pokusu o vosk:

Podivné

Ovšem vzhledem k tomu, že v Blenderu se dá vytvořit snad všechno možné i nemožné, určitě i takovýto materiál by někde našel uplatnění :).

Aby byl přehled kompletní, ještě uvedu pár drobných chyb, o kterých je dobré vědět.

- pokud byste se chtěli podívat na zadní stranu SSS materiálu, jediný způsob, jak to udělat, je použít zrcadlo - a právě v tomto momentě zjistíte, že SSS se počítá jenom na těch facech, které vidí kamera. Zbytek samozřejmě také prochází určitými změnami, jenomže při použití zrcadla už jde vidět, že to není žádná sláva. Toto šetření má ovšem jeden pádný důvod - snížení náročnosti na paměť počítače, SSS tedy vychází z polohy objektu vůči kameře a světlu. Lépe to pochopíte z obrázku (koule nahoře je čisté SSS, zrcadlo je čistě raytracingový odraz a koule vlevo je kombinace obojího):

Chybičky při použití odrazu

-část prozařování může chybět, pokud se 2 objekty prolínají, protože SSS se nepočítá z faců mezi přední a zadní stranou - opět kvůli nárokům na paměť
-normály musí ukazovat správným směrem (tedy ke kameře) - nejsou otočeny automaticky kvůli správnému výpočtu prosvítání zadní stranou
-iregulární stíny (novinka u spot světel) nejsou správně vrhány na zadní stranu SSS materiálů
-panoramatické rendery a rendery s širokoúhlým nastavením čoček údajně nepodávají dobré výsledky

A to by bylo k SSS asi tak vše :)

Softbodies

A nyní se dostáváme k Softbodies.

Softbodies jsou animačním nástrojem, umožňujícím simulaci například látky nebo "želatinové" hmoty na základě fyzikálních zákonů. Každý mesh v Blenderu může mít aplikován softbody efekt. K ovládání této techniky se používají dvě metody - goal (definování rozsahu působnosti softbody efektu za pomoci vertexové skupiny) a springs (pružnost):

Softbody GOAL v podstatě uzamkne pozice jednotlivých vertexů, které se poté chovají jako normální animovatelný objekt. K definování těchto vertexů se používají vertex groups. Slouží také jako omezovač efektu, aby se objekt nedeformoval až příliš. Ukážeme si vše na příkladu:

Nejdřív přidejte do scény mřížku (grid) s rozlišením 8 x 8 vertexů.

Mřížka s 8 x 8 vertexy

Poté si označte krajní vertexy. Ty budou právě ty nepohyblivé.

Vybrané body

Nyní je přidejte do vertexové skupiny (New->Assign), třeba s názvem neohebne:

Vytvoření vertexové skupiny

Aktivujte (se stále vybranou mřížkou v objekt módu) softbody efekt v této záložce:

Záložka se simulací fyzikálních jevů - particly, fluid simulace a softbodies

Tlačítkem Soft Body a tlačítkem GOAL použití vertexové skupiny (v roletkovém menu vyberte skupinu neohebné):

Nastavení

Tímto jsme nyní nastavili softbody efekt pro všechny vertexy mimo skupinu neohebné. Aby byl efekt patrný a koukatelný, přidejte modifikátor subsurf (edit buttons -> add modifier -> subsurf) a klikněte na SetSmooth tlačítko k vyhlazení ploch. Abychom se ještě dozvěděli, co jsme to vlastně právě vytvořili, bude nutné objekt rozhýbat. Na první a dvacátý pátý snímek přidejte IPO klíč Loc (na obou snímcích stiskněte při vybrané mřížce I->Loc), totéž udělejte i na dvanáctém snímku, ale mřížku přesuňte o něco nahoru.

Klíčování animace

Nyní při náhledu animace ALT+A uvidíte gumové prohýbání středu objektu, který vyletí nahoru a pak zase dolů.

31. snímek
31. snímek animace

72. snímek
72. snímek animace

Podle libosti můžete upravit vertexovou skupinu weight paint modem (CTRL+TAB - ovládací panel weight paintu se nachází v edit buttons, ale aktivuje se až poté, co vstoupíte do weight paint modu) a změnit tím rozsah působnosti efektu:

Úprava ve vertexové skupině

A takto bude vypadat animace ve výsledku:

Výsledný efekt

Za chvíli si vysvětlíme jednotlivá nastavení softbody efektu, nyní si ale ještě vysvětlíme springs. Tato metoda způsobuje, že se hrany (edges) snaží udržet původní vzdálenosti mezi sebou (představte si krychli s tělesovou úhlopříčkou, která omezuje "želatinový" pohyb). Tato metoda se automaticky použije, když zapnete volbu Use Edges.

Pojďme si ještě připomenout softbody panel, abychom se v něm orientovali a mohli si vysvětlit jednotlivá nastavení:

Softbodies

Enable softbody je snad jasné, jde o aktivování tohoto efektu :)
Friction - tření, čím vyšší číslo, tím méně bude objekt působit dojmem želatiny
Grav - určuje sílu gravitace ve směru dolů :)
Mass - dá se říct hmotnost objektu. Čím vyšší číslo, tím budou vertexy víc taženy dolů.
Speed - určuje rychlost efektu, tedy čím vyšší číslo, tím rychleji se budou vertexy vracet do původní polohy
Use goal - aktivuje goal metodu s možností výběru vertexové skupiny
G Stiff - určuje pevnost vazby mezi vertexy ve skupině a mimo ni. Vyšší číslo = pevnější vazba
G Min/G Max - tohoto nastavení lze dobře využít, pokud máte ve vertexové skupině různé hodnoty (díky weight paintu). G Min udává hodnotu, všechny vertexy s váhou nižší než tato jsou automaticky nastaveny na ni. G Max udává hodnotu, všechny vertexy s váhou nad tuto hodnotu jsou nastaveny na ni.
G Damp - udává tření vertexů přiřazených do skupiny goal. Vyšší číslo = vyšší tření
Use Edges - aktivuje používání hran v meshi jako omezovače pružnosti (doporučuju zapnout, efekt vypadá realističtěji)
Stiff Quads - zapnutí této volby znamená, že i mezi čtyřhrannými facy se budou počítat úhlopříčky, facy tedy nebudou kolidovat tak drasticky (tento efekt je patrný při komplexnější deformaci - například spadnutí látky na objekt atd.)
E Stiff - síla pružnosti hran. Vyšší číslo = méně elastický materiál
E Damp - vyšší hodnoty tlumí E Stiff nastavení
Aero - způsobuje, že se objekt pomalu snáší k zemi. Vyšší číslo = pomalejší let
Rigidity - díky tomuto parametru je objekt soudržnější a neprochází ostatními softbody objekty
CEdg - pokud aktivujete tuto možnost, znamená to, že mezi sebou budou vzájemně kolidovat i hrany v meshi, dodávám pro úplnost, že je to náročnější na výpočet.
CFac - v podstatě to samé, jenom místo hran kolidují facy. Tuto volbu je možné aktivovat i když máte zapnuto CEdg - výsledek vypadá realističtěji, nicméně celé je to ještě o krapet náročnější (musíte si to prostě vyzkoušet - síla každého stroje je individuální :))

Pokud jste s animací spokojení, můžete ji zapéct (ano – to je zcela běžný termín, a ne – já jsem si ho nevymyslel :) za pomoci aktivace Bake Settings záložky:

Zapékání

Start/End - určuje rozsah snímků, v kterém se bude animace počítat
Interval - dá se říct, že určuje kvalitu animace, udává totiž, které snímky se budou počítat (v našem případě každý desátý). Animace mezi nimi se dopočítá automaticky. Dovoluji si podotknout, že nastavení vyššího čísla než 1 při finálním výpočtu není dobré, výsledek potom opravdu není ani z poloviny tak dobrý jako při nezapečeném náhledu.
Local - určuje, zda budou použity místní či globální souřadnice. Upřímně, nedošel jsem na to, k čemu tohle tlačítko slouží :)
No a samozřejmě, BAKE zapeče animaci

Samozřejmostí jsou kolize s jinými objekty (podobně jako u částic), u kolizního objektu stačí zatrhnout volbu Deflection v Anim buttons (F7):

Kolizní objekt

Damping - určuje velikost tření při kolizi. Pokud nastavíte 0, je možné, že softbody objekt zavadí o deflektor, ale propadne jím dolů
Inner a Outer - určují sféru kolem každého facu, která bude odpuzovat vertexy softbody objektu (buď vzdálenost po normále -outer- nebo proti ní, do centra objektu -inner-)

Nachystal jsem si následující jednoduchou scénu:

Scéna

Plane nahoře má aktivovaný modifikátor subsurf, je ale zároveň docela hodně zahuštěný (v edit módu W->Subdivide, aspoň 4x).Softbody simulace látky je tím přesnější (ale náročnější na výpočet), čím hustější je síť meshe. U subsurfované krychle dole jsem zapnul deflection a ponechal beze změn. U planu nahoře jsem v softbody panelu pouze vypnul volbu goal. Pak jsem už jen stiskem ALT+A sledoval animaci:

Kolize

Pro odzkoušení želatinového odrazu jsem vytvořil následující jednoduchou scénu:

Scéna s želé kuličkou

Upravený plane je opět nastaven jako deflektor (opět bez jakýchkoliv změn defaultního nastavení) a kulička je icosphere se subdivizí 2 a aktivovaným subsurfem rovněž na levelu 2 s použitým SetSmooth. Po aktivaci softbodies jsem nastavil faktor Rigidity na 0.5 a vypnul goal. Poté jsem již jen spustil animaci:

Kolize

Kulička se samozřejmě poté dál odrážela, ale to už si vyzkoušejte sami. Nyní se ještě podíváme na další možnosti kolize objektu o sebe sama. Panel se nachází v Anim buttons pod záložkou soft body collision:

Nastavení

Použití zapnete tlačítkem Self collision.
Tento druh kolize se počítá na základě předpokladu, že jednotlivé vertexy objektu, s kterými softbody koliduje, jsou obklopeny "kluzkou koulí" (viskoelastická koule, přesně řečeno). Velikost této koule můžete nastavit parametrem Ball Size.
Popisky jednotlivých nastavení mluví za vše - jsou na nich uvedeny rovnice, podle kterých se bude volit velikost oné viskoelastické koule. (Man Av Min Max a AvMiMa)
B-Stiff - určuje opět pružnost, ale v rámci kolidování o sebe sama.
B Damp - určuje míru "mazlavosti" koule.

Error limit - podle tohoto parametru nastavujete kvalitu animace. Nižší číslo = větší kvalita, ale delší čas na výpočet
O - výpočet proběhne podle metod ze starší verze. Trochu pomalejší, ale v některých případech se to osvědčilo.
Fuzzy - ovlivňuje "načechranost" koule, vyšší čísla urychlují animaci, ale nejsou spolehlivá a mohou být nestabilní
M - zapisuje do konzoly dobu výpočtu jednoho kroku, který se počítá během jednoho snímku.
MinS - nastavení minimálního počtu vypočítaných kroků během jednoho snímku. Pokud máte rychle se pohybující kolizní objekt, toto číslo zvyšte. Nula vypíná nastavení.
MaxS - určuje maximální počet vypočítaných kroků během jednoho snímku. Kroky se totiž defaultně vypočítávají z Error limit. Čím menší error limit, tím více kroků. Vyšší čísla urychlí, ale možná někdy znekvalitní animaci. Nula vypíná nastavení.
Choke - "zklidňuje" kolizi a nedovoluje ostatním vertexům proniknout skrz své facy

Tak a již poslední část tohoto rozsáhlého tématu: silová pole.

Typy silových polí

Silovým polem se většinou stává empty objekt. Tato volba se nastavuje v anim buttons v roletkovém menu Force field. V Blenderu jsou různé druhy silových polí:

Spherical - silové pole ve tvaru koule. Buď odpuzuje nebo přitahuje body v softbody objektu ležící v jeho "sféře vlivu".
Wind - jednosměrné silové pole simulující vítr.
Vortex - vytvoří vír, všechny softbody objekty se začnou se zrychlením roztáčet kolem osy silového pole a poletí buď pryč od něj nebo k němu (v závislosti na nastavení).
Curve guide - vedoucí křivka pro statické částice, její použití je popsáno zde

Nyní k nastavení hodnot:

Nastavení silových polí

Strenght - jak jinak než síla pole
Falloff - tvrdost přechodu mezi stoprocentní a nulaprocentní působností
Use MaxDist zapíná použití MaxDist - tedy vzdálenosti od centra objektu, ve které bude efekt patrný

A na závěr si tedy ještě ukážeme případné použití silového pole wind. Nachystal jsem si tuto jednoduchou scénu, plane má nastavenou horní řadu vertexů ve vertexové skupině Group a je 4x subdividovaný, s aktivovaným subsurf modifikátorem:

Jednoduchá scéna

Zde je nastavení planu:

Jednoduchá scéna

A tady empty objektu:

Jednoduchá scéna

Aby vítr vypadal věrohodně, v IPO editoru jsem vytvořil takovouto drobnou fluktuaci. Stačí kliknout na parametr FStrenght a CTRL+LMB přidávat kontrolní body:

Jednoduchá scéna

A takto tedy vypadal výsledek:

Jednoduchá scéna

Tak, vypadá to, že jsme se konečně prokousali k závěru :). Díky za pozornost, doufám opět, že jste tutoriál shledali přínosným, na shledanou příště.

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: