Přehled nových funkcí v Blenderu (5. část): Node editor - dokončení - 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 (5. část): Node editor - dokončení

27. listopadu 2007, 00.00 | Předminule jsme začali probírat tematiku composite node editoru a vysvětlili si některé jeho funkce.
Minule jsme si pověděli, jak lze využít material node editor. Dnes uzavřeme velkou kapitolu node editoru tím,
že si ukážeme několik příkladů, jak jej lze použít, a doplníme znalosti o zbývající možnosti.

Pro začátek opět trocha nudné teorie pro doplnění znalostí o možnostech node editoru (budu uvádět pouze zatím nepopsané nody, ostatní jsou stejné jako ve článcích "Přehled nových funkcí v Blenderu (3. část): Node Editor" a "Přehled nových funkcí v Blenderu (4. část): Material Node Editor"):

Důležitým parametrem v každém nodu je faktor (Fac) efektu. Pomocí tohoto parametru určíte, jak bude ten který efekt patrný. Při nastavení 0.0 nebude viditelný vůbec, přičemž první (horní) input bude viditelný vždy. Na Fac lze napojit i obrázek, takže nad tímto parametrem má uživatel dokonalou kontrolu.

Faktor ovlivňující míru efektu

INPUT menu

RenderLayers, Texture, Value a RGB Image - jak už název napovídá, tento node přidává do sítě nějaký obrázek, popř. animaci, sekvenci ze sequence editoru nebo generovaný obrázek (např. zapečený AO pass). V případě animace je opět nutné nastavovat počet framů (parametr Frs):

Image node

Sfra říká, na kterém snímku se spustí animace
Offs, tedy offset neboli posun udává, o kolik snímků bude animace při spouštění posunutá
Ikonka autíčka signalizuje, zda bude probíhat refresh snímků animace při posunu aktuálního snímku v Blenderu
Cycl určuje, jestli se bude animace cyklicky opakovat

Time - tento node se používá pro animování. Nastavíte rozmezí animace (na obrázku 253 framů) a pomocí křivky určíte proměnlivost hodnot v závislosti na čase. Můžete jej např. napojit na Fac hodnotu v mix nodu a v průběhu animace se bude jeden obrázek zprůhledňovat. S křivkou se pracuje stejně jako s těmi v RGB Curves nodu. Osa X znázorňuje čas, osa Y je rozmezí hodnot od 0 do 1.

Časový node

OUTPUT menu

Composite - tento node zobrazí výsledek v místě v síti, kde je napojen na rendereru
Viewer - díky tomuto nodu vidíte výsledek v UV image editoru
SplitViewer - tento node slouží ke zpětné kontrole provedených změn. Lze na něj napojit dva obrázky, přičemž horní input se zobrazuje v levé polovině obrázku a spodní input v pravé. Můžete nastavit, zda se budou obrázky dělit podle osy X či Y a v kterém místě k tomu dojde (posuvník určující procentuální rozdělení).

SplitViewer node

File Output - tento node ukládá výsledek do souboru do složky, kterou určíte. Pokud v políčku nebude poslední znak lomítko, bude se poslední slovo za lomítkem považovat za název souboru. Další částí názvu souboru je čtyřmístné číslo udávající snímek, na kterém byl proveden render. Poslední částí souboru je, jak jinak, koncovka. Můžete nastavit formát, kvalitu obrazu a, v případě animace, rozmezí renderovaných snímků.

File Output

COLOR menu

RGB Curves, Mix
Hue Saturation Value - odstín sytost jas - tento node slouží k barevné úpravě vstupního obrázku. Hodnota či obrázek napojený na Fac hodnotu opět určuje, jak moc a na kterých místech se bude efekt projevovat.

HSV node

AlphaOver - díky tomuto nodu lze překrýt dva inputy. Horní input se stane pozadím, dolní input překryje pozadí. Pokud má spodní input místa, která mají alpha hodnotu mezi 0 a 1, může se stát, že se budou vytvářet "zuby". Pomocí tlačítka ConvertPremul lze tento defekt odstranit.

AlphaOver node

Z Combine - tento node je pro mě jedním z nejdůležitějších, co se týče komponování scény. Jeho použití spočívá v prolnutí dvou inputů na základě Z hodnot (hloubky, jednoduše řečeno). Tento způsob nachází využití zejména u RenderLayers a to tak, že můžete na různě vzdálené objekty použít různé efekty (např. objekty "vpředu" a "vzadu" rozostřit Blur nodem a objekty mezi nimi nechat zaostřené). Z input se vztahuje k image inputu, který je nad ním. Pokud zanecháte Z input bez povšimnutí, Blender bude s příslušným image inputem pracovat jako s 2D obrázkem a bude přitom používat vámi určenou Z hodnotou.

Z node

Z node v akci

Bright/Contrast - node, jehož pomocí můžete upravit jas a kontrast inputu
Gamma - úprava gamma hodnoty (světlosti)

VECTOR menu

Normal - v podstatě stejný účinek jako v material node editoru, ovšem zde jej můžete použít např. k simulaci nasvětlení scény:

Vector Curves - opět určování vektorů pomocí křivek, jako příklad uvedu malou obměnu obrázku výše:

Map Value - tento node se používá ke zvětšení či posunu hodnot. Offset určuje posun hodnoty a Size určuje její znásobení. Pokud zatrhnete tlačítka Min a Max, hodnota se bude udržovat v těchto mezích (které samozřejmě můžete sami změnit). Tento node nachází uplatnění především v simulaci DOF efektu, pro určení rozmazaných míst obrázku.

Výsledek není nijak patrný

A nyní s použitím Map Value nodu:

Jedna z mošností použití
Další způsob použití

FILTER menu

Filter - pomocí tohoto nodu můžete ovlivnit především vykreslování hran. Na výběr máte z několika možností:
Soften - jemné rozostření celého obrázku
Sharpen - zvýraznění hran zostřením
Laplace - jemné rozostření hran
Sobel, Prewitt, Kirsch - algoritmy, které slouží též k práci s hranami, možná je znáte z 2D editorů. Složitější definici můžete nalézt na Wikipedii. Laicky bych řekl, že na obrázku dojde ke zvýraznění hran, přičemž všechny materiály získají téměř černou barvu a nulové stínování. Vždy jsem viděl alespoň částečně specularitu a Prewitt a Sobel filtry vykazovaly téměř stejný výsledek, na hranách se vždy projevila i barva materiálu.

Filter node - Sobel

Filter node - Prewitt

Blur - další z hojně používaných filtrů. Ovlivnit můžete rozostření po ose X a Y a nastavení typu rozostření (některé např. lépe rozostřují hrany, osobně si ale myslím, že typ rozostření až tak důležitý není, většinou se spokojím s Flat). Volba Bokeh vytváří kvalitnější, ale časově náročnější rozmazání, Gamma volba způsobí, že se obrázek mírně zesvětlí (gamma correction - oprava světlosti). Parametr Size určuje míru rozostření, mohlo by se tedy zdát, že je zbytečný, jeho význam ovšem poznáte, když budete chtít obrázek rozostřit jen na specifických místech - můžete k němu totiž napojit obrázek, jenž v černobílých barvách bude určovat, která místa zůstanou zaostřená (černá) a která se rozmažou (bílá).

Blur node

Vector Blur - jedna z důležitějších novinek, zejména pro animátory. Pokud by si někdo nebyl tímto pojmem zcela jistý, pomoc je snadná - jde o rozmazání rychle se pohybujících objektů na jednotlivých snímcích animace. Dříve bylo možno tohoto efektu dosáhnout nastavením Motion blur v render buttons, nicméně ani tato metoda nemusela být vždy nejspolehlivější a když už nic jiného, byla opravdu časově náročná. Spočívala ve vypočtení mezisnímků a jejich následným překrytím přes sebe, čímž vznikl jeden snímek se zdánlivě rozostřenými objekty. Snad mi prominete, že o této funkci hovořím v minulém čase, i když je stále dostupná.
Vector blur naproti tomu zpracovává předchozí a následující snímek a propočítá vektor pohybu, přičemž je zahrnuta i vzdálenost těles od kamery, takže se pohybové účinky jednotlivých těles nijak negativně neovlivňují. Podrobným výkladem o tom, jak tento filtr pracuje, by se dal strávit docela dlouhý čas, což myslím není pro tento článek nutné. Ty opravdu zvídavé odkazuji na http://www.blender.org/development/release-logs/blender-242/vector-blur/. K tomu, abyste tento node mohli úspěšně použít, je třeba zaktivovat Vec pass v render buttons:

Vector Pass

Což se projeví na RenderLayers nodu přidáním Speed outputu:

Output rychlosti bodů

Při pohledu na Vector Blur node je hned patrné, kam který output přijde napojit:

Vector blur node

Podotýkám, že pokud jedinou zástrčku vynecháte, výsledek se vám nezobrazí, ani kdyby padaly trakaře :). Objekty samozřejmě musí být v pohybu, je tedy potřeba jim nastavit potřebné animační klíče. Pro jistotu připojuji konečné nastavení, kdyby to přece jen někomu dělalo problém:

Nastavení

Určitě se ještě bude hodit vysvětlení nastavovacích tlačítek:
Samples - určuje počet vzorků, které překryjí obrázek, zjednodušeně by se dalo říct, že určují kvalitu rozmazání (více samplů = větší kvalita = více času)
Min - tato hodnota určuje v pixelech délku vektoru, který musí pohybující se bod mít, aby se pro něj počítalo rozmazání
Max - opět délka vektoru v pixelech, tentokrát však určuje maximální délku, kterou bude mít výsledné rozmazání. Slouží tedy k regulaci délek rozmáznutí.
BlurFac - souhrnně řečeno - tento faktor ovlivňuje délku mezi jednotlivými samply, i on tedy reguluje délku rozmáznutí, ovšem v tom kvantitativním smyslu, nikoli kvalitativním (zvětšuje mezery mezi samply, nezvyšuje však jejich počet)

Dilate/Erode - tento filtr zvětšuje či zmenšuje plochu masky, jeho ekvivalentem ve 2D programech je funkce rozšíření/zúžení u výběru

Ukázka možností dilate

Defocus - dalším důležitým vylepšením v oblasti node editoru je tento node, díky němuž lze efektivně a pohodlně dosáhnout DOF (depth of field) efektu. DOF - pro ty, kteří se s ním snad ještě nesetkali, i když jde podle mě o základní pojem ve 3D - je efekt rozostření objektu/ů v pozadí/popředí především ve fotografování, v 3D se používá k navození fotorealističnosti.
Máte-li zájem se potrénovat na mnou přichystané scéně, stahujte ji zde (1,2 MB). Připravte se ovšem, že jsem vám nic kromě tvorby scény neusnadnil, tzn. že defocus node si budete muset nastavit sami.

Scéna na rozostření

Nejprve se seznámíme se samotným nodem:

Defocus node

Přebytek tlačítek možná na první pohled vypadá děsivě, nicméně poté, co se s nimi seznámíte, jistě uznáte, že jsou zde všechna právem. Do inputů Image a Z se opět připojují příslušné outputy. Nyní se pojďme podívat na jednotlivá nastavení:

Bokeh - zde můžete nastavit tvar imaginární clony pro kameru. V reálném světě je tento parametr ovlivněn např. tvarem objektivu a spoustou dalších faktorů. Nicméně, vraťme se k Defocus nodu. Dá se říct, že kvalita rozostření je vzestupná od trojúhelníkovitého tvaru clony po diskový tvar. Navýšení kvality znamená navýšení času potřebného pro výpočet.

Rotate - nastavení je viditelné pouze, pokud je "Bokeh" nastaven jinak než na "disk". Umožňuje otočení clony - výsledek je tedy lehce odlišný

Gamma Correct - opět úprava světlosti

fStop - je to určovatel míry rozostření a je viditelný pouze, když deaktivujete No zbuffer volbu. Používá se, pokud je kamera zaostřená na nějaký vzdálenější bod, ne na ten bezprostředně u kamery. Nemusí ovšem vždy přinášet uspokojivé výsledky. Na to, jak se s tímto problémem vypořádat, se ale zaměřím až v závěru článku. Implicitně má hodnotu 128, což znamená nulové zaostření, při snižování tohoto čísla se zvětšuje míra rozostření.

Maxblur - omezuje nejvyšší možné rozmazání, umožňuje tedy snížit časové nároky na výpočet. Při nastavení 0 trvá výpočet opravdu nehorázně dlouho, a to zejména kvůli pozadí vzdálenému nejdále od kamery.

BThreshold - tento parametr určuje rozdíl mezi rozostřením objektů, které se překrývají, a zabraňuje tak jejich nesprávnému zobrazování. Nicméně ve scéně, kterou jsem nachystal, se mi nedařilo se všemi různými nastaveními parametrů fStop a BThreshold dosáhnout uspokojivého výsledku (to ovšem neznamená, že jinde může být vítaným pomocníkem).

Preview - pokud máte aktivovanou tuto volbu, výsledný obrázek bude optimalizován podle počtu samplů

No zbuffer - při zatrhnutí této volby se přestanou používat reálné Z hodnoty, Z input určuje, na kterých místech se bude rozostření projevovat. Tato volba rovněž způsobuje, že nejzaostřenější bod bude vždy hned u kamery, nemůžete tedy dosáhnout zaostření pouze na objekty dál od kamery. Jak jsem slíbil, na konci článku si řekneme, jak lze tuto chybičku obejít.

Zscale - účinek tohoto parametru by se dal přirovnat k fStop, ovlivňuje totiž míru rozostření, lépe řečeno upravuje Z input, ale změna se projeví až na výsledném obrázku. Pokud nastavíte u Zscale příliš velké číslo a u Maxblur 0, může se stát, že Blender přestane odpovídat, naštěstí i zde už ale funguje klávesa Esc :)

A nakonec malý dodatek k Defocus nodu - pokud budete používat fStop, jistě se vám bude hodit nastavení bodu zaostření. To provedete jednoduše v edit buttons při vybrané kameře nastavením DoFDist:

Vzdálenost bodu zaostření

Pokud zapnete volbu Limits, budete schopni také tento bod vidět ve 3D okně.

CONVERTOR menu

Color Ramp, RGB to BW a Math - stejná funkce jako u materiálových nodů
Set Alpha - název už hovoří sám za sebe, tento node slouží k nastavení průhlednosti inputu

Set Alpha node

ID mask - další zajímavý node, za jehož pomoci se vytváří masky jednotlivých objektů podle jejich ID čísla. Toto číslo se nastavuje modelu v object buttons (F7) v kolonce PassIndex:

Nastavení ID čísla

A takto může vypadat výsledek:

ID mask v node editoru

Další konvertory (Separate RGBA, Separate HSVA, ...) rozloží barevný obrázek na barevné kanály podle toho, co je v názvu a Alpha kanálu. Opakem těchto rozdělujících funkcí je Combine, která naopak barevný model složí dohromady. Za všechny uvedu pouze Separate YCbCrA (dnes se používá u HDTV, dřívější možnosti nacházely uplatnění ve starších televizorech), poněvadž všechny tyto konvertory mají vesměs stejný účinek:

MATTE menu

Všechny nody v tomto menu pracují na základě vytvoření masky z nějaké barvy. Je pochopitelné, že je tedy nejvíce využijí filmaři používající modré či zelené pozadí. Mám v plánu se k nim v budoucnu podrobněji vrátit, takže pro dnešek se budete muset spokojit s tímto strohým popisem :)

DISTORT menu

Opět jen ve zkratce - většina z těchto nodů slouží k transformaci inputu (většinou obrázku, vzhledem k povaze nodů). Můžete tedy provádět přesun (translate), otočení (rotation), zvětšování (scale) či zrcadlové obracení (flip). Myslím, že není potřeba se vyjadřovat k jednotlivým nastavením, jen se pozastavím u Scale - pokud použijete volbu Absolute, můžete zadávat šířku i výšku výstupu v pixelech:

Distort nody

Displace - tento node by možná mohl patřit do menu filtrů, protože jeho funkce spočívá v optickém zkreslení obrázku podle vámi zadaného inputu:

Displace node

Jak vás možná napadlo, do inputu vector musí být tedy napojená ona "displacement mapa", přičemž to nemusí být černobílý obrázek, povoleny jsou i normal mapy, s nimiž lze dosáhnout podstatně kvalitnějších výsledků. X Scale a Y Scale musejí být nenulové, aby byl efekt viditelný. Není vyloučeno ani použití animované textury.

Uff, konečně už dobíháme do pomyslného cíle, posledním nodem, který si dnes představíme, je Map UV node. Slouží k namapování obrázku na zadané UV koordináty. Nejdříve je nutné aktivovat UV pass v render buttons:

Aktivace UV passu

Samozřejmě musíte mít také unwrapovány jednotlivé objekty. Poté stačí už jen příslušně napojit. Map UV v pravém slova smyslu nenamapuje obrázek jako texturu, nýbrž vytvoří nový. Dalo by se říct, že výsledek bude stejný, jako když přidáte materiálu texturu a nastavíte mu vlastnost shadeless, proto je v nastavení situován i mix node:

Nastavení Map UV nodu

Pro úplnost větší render:

Výsledek kombinace Map UV nodu a původního obrázku

Na závěr dva příklady, které si s čerstvě nabytými poznatky vyzkoušíme. Bude to tvorba glow efektu a vylepšení DOF za částečné pomoci Defocus nodu. Pro glow efekt jsem připravil tuto jednoduchou scénu:

Scéna pro dnešek

Scénu stahujte zde (.zip, 50 kB)

Pracovní plocha
Klasické rozvržení pracovního pole pro práci s kompozitním editorem,
vpravo nahoře UV image node editor s nastaveným náhledem na
viewer node, pod ním node editor a vlevo 3D okno

Podotýkám, že jediné, co jsem vám, milí čtenáři, usnadnil, je rozvržení scény. Další nastavování, jako např. zobrazování kompozice v rendereru, nechávám na vás, berte to jako procvičení znalostí nabytých v prvním článku o node editoru. Pokud byste si přece jen nevěděli rady, odkazuji na "Přehled nových funkcí v Blenderu (3. část): Node Editor". A co vlastně od glow efektu očekáváme? Tato zajímavá úprava spočívá v překrývání dvou obrázků. Jeden obrázek je náš původní render a druhý obrázek je modifikace prvního (úprava jasu a kontrastu, rozostření, snížení alpha hodnoty), přičemž je důležité zachovat pořadí změn. Typický začátek editace kompozice:

Defaultní zobrazení nodů

Začneme tedy rozpojením těchto dvou nodů a vložením Bright/Contrast nodu (Add->Color->Bright/Contrast) mezi ně. I podle tohoto se odvíjí míra efektu, takže nastavujte dle libovůle. Já jsem nastavil následující:

Nastavení Bright/Contrast nodu

A změna se projevila takto:

Obrázek se zvýšeným kontrastem

Dalším krokem bylo přidání Blur nodu přes Add->Filter->Blur:

Nastavení blur nodu

S takovýmto výsledkem:

Rozostřená scéna se zvýšeným kontrastem

Posledním krokem bylo přidání Mix nodu, pomocí kterého překryjeme původní a upravený obrázek:

Nastavení s Mix nodem
Pozn.: Všimněte si zatrženého A v mix nodu. Díky této volbě se použijí
Alpha hodnoty z druhého obrázku. Jestliže jste po zamyšlení zjistili, že zde je
tato volba zapnutá zcela zbytečně, protože ve scéně není alpha hodnot
potřeba, máte bod k dobru :)

Odměnou za mé krátké snažení mi byl tento obrázek:

Upravený obrázek

A pro srovnání ještě jednou původní verze:

Původní scéna

Ano, můžete namítnout, že v pravém dolním rohu vzniká až možná příliš velký přepal, nicméně my jsme si chtěli ukázat, jak vytvořit takovýto jednoduchý a pěkně vypadající efekt. Jen pro doplnění ukázka, co by se stalo, kdybychom v Mix nodu místo typu překrývání Add použili např. Subtract:

Scéna s odlišným nastavením

Okrajově: stejně jako u materiálových nodů, i zde lze vytvářet skupiny. Vytvořil jsem tedy z Bright/Contrast, Blur a Mix nodů skupinu (označit -> CTRL+G). Tím pádem můžete tento efekt použít kdekoli jinde ve scéně, popř. není problém import této skupiny do jiného .blend souboru.

Skupina nodů tvořících glow efekt

A co se týče dlouho slibovaného vylepšení DOF efektu, budeme potřebovat nějakou vhodnou scénu. Pokud zrovna nemáte žádnou vlastní, přikládám svoji, kterou jsem již použil výše.

Scéna určená k DOF

Následující postup spočívá v nastavení bodu zaostření trochu dále od kamery a poté rozmazání popředí. K tomu využijeme kombinaci Defocus, Blur a Map Value nodu. Defocus nám rozostří pozadí obrázku a pomocí Map Value určíme, na kterých místech (popředí) se použije dodatečně Blur. Při tomto všem není nutné u Defocus nastavovat fStop, bohatě si vystačíme i s No zbuffer nastavením. Postup je opět jednoduchý:

A i výsledek vypadá celkem k světu:

Bystrému oku nejspíš neunikne pár nesrovnalostí, ovšem po svých testech jsem naznal, že výsledky jsou i takto mnohem lepší než při použití fStop. Minimálně u této scény. To znamená, že fStop nezavrhuji, jen dokládám, že není vždy nejlepším (ani jediným) řešením. Další alternativy DOF lze dosáhnout pouze za pomoci Map Value a Blur nodů. Tento postup ovšem už ponechám na vás, tímto článkem uzavírám rozsáhlou kapitolu node editoru a pro dnešek se s vámi loučím. Jak jste doufám poznali, Node editor je velice účinnou zbraní, jejíž síla vynikne teprve tehdy, až o ní budete vědět všechno. Existuje nespočetná řada možností využití tohoto skvělého nástroje a záleží jen na vaší fantazii, jestli je zužitkujete či nikoli. Doufám také, že jste se článkem neunudili a že informace byly patřičně přínosné. Na shledanou příště.

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: