Přehled nových funkcí v Blenderu (4. část): Material Node Editor - 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 (4. část): Material Node Editor

8. listopadu 2007, 00.00 | V minulém díle jsme si představili node editor a vysvětlili si, jak funguje.
Dnes se podíváme na druhou část kompozitního editoru - material node editor.

V minulém díle jsme si představili node editor a vysvětlili si, jak funguje. Dnes se podíváme na druhou část kompozitního editoru - material node editor. Ano, vím, že v minulém díle jsem slíbil použití node editoru v praxi a ukázky použití vector bluru, ovšem nepočítal jsem s tím, že téma dnešního článku nabyde takových rozměrů. Doufám, že pro to budete mít, milí čtenáři, pochopení a trpělivě vydržíte do příštího dílu, kterým uzavřeme velikou kapitolu node editoru.

Rozdíl mezi materiálovým a kompozitním node editorem není příliš výrazný, nody samozřejmě vypadají stejně, jen obsahují jiné informace. Tento editor je též v okně node editoru, náhled na něj zaktivujete zatržením kuličky:

Materiálový node

Aby se mi vše lépe vysvětlovalo, vytvořil jsem tuto jednoduchou scénu:

Pár primitiv

Scénu stahujte zde (.blend, 192kB)

Každému z těles jsem přiřadil zatím prázdný materiál. Krychli jsem přidal tento materiál a texturu:

Krychle dostala tuto texturu, pouze aby byla textura ve scéně, jinak už s krychlí pracovat nebudeme. Obdobně je tomu i u materiálu koule. Nyní budeme pracovat s jednou novinkou, a sice Render Preview. Jak název napovídá, bude to pomocník při náhledu na scénu. Jeho princip použití spočívá v tom, že si tento rámeček umístíte kamkoliv do 3D okna a v něm se bude renderovat ta část scény, kterou ohraničuje. Můžete se k němu dostat pomocí headeru (View -> Render Preview) nebo pomocí klávesové zkratky SHIFT+P.

Okýnko render preview

Jak je patrné, Render Preview kvůli úspoře času nevyhlazuje hrany, ovšem proto je to také pouze preview ;). Nyní pojďme přidat materiálový node materiálu válce. Tento úkon se jednoduše provede kliknutím na tlačítko Nodes v materiálovém editoru a poté kliknutím na červeně zvýrazněné Add new. Mělo by se vám objevit následující:

Aktivace nodu v node editoru

V node editoru se vám objeví defaultní nastavení:

Defaultní nastavení

Abych ozvláštnil budoucí nastavování materiálu válce, použil jsem LSCM metodu a unwrapoval jej. Není to jenom ozvláštnění ale i výpomoc při následovné aplikaci textury, takže silně doporučuji tento krok nevynechávat. Pokud byste si při unwrapování nevěděli rady, odkazuji na článek zde nebo ještě lépe zde. Takto vypadal unwrap:

Unwrap válce

Aby se vám pohodlně pracovalo, doporučuju také nastavit pracovní pole tímto způsobem (vpravo nahoře je UV image editor, pod ním node editor):

Pracovní pole

Nyní bude naším úkolem přiřadit materiálu válce stejnou texturu jako má krychle, ovšem s nastavením UV koordinátů válce, to vše za pomoci material node editoru. Prvním krokem ve zdolání tohoto úkolu musí být vložení několika inputů - v našem případě dvou - a sice textura (Tex) a geometrie (Geometry). Přidání obou lze provést z menu na headeru Add->Input->Tex/Geometry. Menu vyvoláte též stiskem SHIFT+A.

Po tomto kroku bude potřeba říct nodu s texturou, aby ovlivnil barvu materiálu a nodu s geometrií, aby ovlivnil mapování textury. V nodu s geometrií do pole UV napište jméno objektu válce (já ten svůj pojmenoval jednoduše: valec) a poté z outputu UV napojte na input Vector na nodu Tex. Output Color na nodu Tex napojte na input Color na materiálu a poté by se vám měl korektně zobrazit materiál na output nodu:

Nastavený node

Pokud by mapování na válci bylo roztáhlé buď po ose x nebo y, znamená, že máte problém s UV koordináty, jež se ovšem snadno dají upravit v UV image editoru. V neustále zapnutém Render Preview rámečku se mi objevil tento náhled:

Render materiálu

Ano, při podrobnějším průzkumu lze odhalit šev, nicméně nešlo nám o to skvěle otexturovat válec, ale pochopit princip přiřazování textury v node editoru. Možná naznáte, že tento postup byl až zbytečně složitý, obzvlášť když šlo o pouhé přidání procedurální textury, nicméně node editor přináší přehlednost do každého materiálu, nehledě na to, že jestli budete pracovat se složitějšími materiály, tak jejich vytvoření je někdy pouze za pomoci samotného material editoru téměř nemožné. Nyní ukázka toho, jak namixovat 2 materiály a nastavit, jakým způsobem se budou prolínat:

Smíchání 2 různých materiálů

Je-li libo, klidně můžete na texturu použít jinou geometrii, výsledkem bude, že se materiály budou prolínat jinak. V roletkovém menu v mix nodu nastavíte typ prolínání (sčítání, odčítání, násobení, zesvětlení ...), textura určuje, na kterých místech bude jeden materiál překrývat ten druhý. Jen okrajově - textuře, která určuje právě tato místa překrývání, se říká stencil mapa. Myslím, že bude vhodné popsat jednotlivé typy nodů:

INPUT menu

Material - tento node obsahuje informace o materiálu a má 4 inputy, do budoucna ale vývojáři slíbili, že jich přidají více. Napojením některého z následujících nodů můžete ovlivnit barvu materiálu, specularity, míru reflexe a vektor mapování materiálu. Při použití jen jednoho materiálového nodu dostanete stejný výsledek, jako při použití obyčejného materiálu
Texture - node obsahující informace o textuře by měl mít zadaný jako input vektor, který určuje způsob mapování
Geometry - node, který určuje vektor, podle kterého se bude mapovat textura na materiál. Jeho ekvivalentem je paleta Map Input v material editoru
Value - node, který má jeden output a do kterého jednoduše zadáte hodnotu. Používá se např. na definování alpha hodnoty
Camera Data - v tomto nodu se ukládají informace o vzdálenosti mezi kamerou a objektem, na němž se bude projevovat efekt, z těchto informací poté vychází mapování textur. Pokud máte zapnutý render preview, za kameru se bude považovat váš aktuální pohled. Jako malý příklad použití připojuji obrázek:

Hodnota z view vector ovlivňující mapování textury

Hodnota z view z depth ovlivňující mapování textury

View distance se chová podobně jako view z depth. Když jsem napojil view z depth na input reflectivity na materiálu, změna se projevovala s přibližováním či oddalováním kamery - tedy čím byla kamera dál, tím byl efekt viditelnější:

Změna reflexe při přiblížení

Změna reflexe při oddálení

RGB - v tomto nodu jednoduše nastavíte barvu, kterou poté můžete aplikovat na materiál, popř na mix node nebo Math node

RGB hodnoty podobné paletě barev z 2D grafických programů

OUTPUT menu

Output - první output (jenž je už defaultně přidán) zobrazuje ten materiál, který se bude aplikovat na objekt/y. Každý další output, který přidáte, zobrazuje pouze výsledek tam, kde ho napojíte, výsledný materiál tedy neovlivňuje

COLOR menu

RGB nodu je velice podobný RBG Curves - barvu můžete vybrat buď na panelu podobně jako ve 2D programech na barevné paletě kapátkem nebo upravením jednotlivých křivek v každém barevném kanálu. Levé tlačítko myši vybírá nebo přidává 1 bod na křivce, CTRL+levé tlačítko myši bod přidává, ikona X bod odebírá. RGB node se dá také využít jako nástroj pro ladění - pokud již máte hotový nějaký materiál (popř. obrázek v renderlayers, viz https://www.3dscena.cz/art/3dscena/blender244-2.html) a chcete jej ladit do nějaké barvy, můžete jej napojit na input RGB nodu a poté mu přidat např. zlatavý nádech

Křivky RGB kanálů

Mix - díky tomuto nodu můžete překrýt 2 materiály a můžete nastavit, jak bude druhý materiál viditelný, na kterých místech ho bude vidět a jaká operace se bude provádět na místech jejich překrývání (násobení, sčítání, zesvětlování, ...)

VECTOR menu

Mapping - node, za jehož pomoci můžete přesně nastavit velikost/přesun/rotaci vektoru mapování textury/materiálu:

Mapping node

Normal - osobně ho považuji za jeden z nejpozoruhodnějších. Pracuje se skalárním součinem (ten slouží např. k ověření kolmosti), a tedy euklidovým prostorem, nicméně, vysokoškolskou matematiku přenechám někomu, kdo jí rozumí a pokusím se popsat funkci tohoto nodu o něco srozumitelněji :). Tento node může vypočítat buď jeden neměnný vektor (na výstupu Normal) nebo, při napojení Geometry nodu na vstup Normal, skalární součin na výstupu Dot. Tento skalární součin se odvíjí od polohy kamery a dají se s ním dělat vskutku zajímavé věci. Jen dodatek k ovládání - vlastnosti tohoto nodu můžete měnit jednoduše pohybováním zdroje světla. To se provádí levým kliknutím na ikonu kuličky a pohybem v požadovaném směru:

Změna vektoru

Dalo by se říct, že pokud použijete tento node, při správné aplikaci se textura/barva bude mapovat na vektor, který bude směřovat z facu ke kameře, a to i pokud se kamera bude pohybovat. Využijeme následující nastavení:

A válec se nám změnil takřka k nepoznání:

Válec s jiným nastavením

K cíli nevede jen jedna cesta a proto vás seznámím s dalším nastavením, s kterým lze dosáhnout téměř identického výsledku:

To bylo ovšem jen okrajově, pojďme se podívat, jak lze ještě Normal node využít k aplikaci alphamapy, myslím, že to je i v praxi použitelný příklad:

Čímž jsme způsobili tento efekt:

Válec s průhlednými okraji

A poslední příklad s Normal node, tentokrát s bumpmapou. Všimněte si, že jeden output je v síti pouze jako náhled na stencil mapu vytvořenou právě naším Normal nodem:

Částečně viditelný materiál s bumpmapou

Výsledek na válci

Vector curves - pomocí tohoto nodu lze, obdobně jako u RGB, pomocí křivek vektorů X, Y či Z měnit mapování textury/materiálu/barvy

Vektorové křivky

CONVERTOR menu

ColorRamp - node, který určitě poznáváte z materiálového menu z palety Ramp Shaders. Pracuje na principu nastavení barev a průhlednosti jednotlivých sliderů (posuvníků)

Color ramp

RGB to BW - jak název napovídá, tento node konvertuje barevný model do černobílého

RGB to BW

Math - díky tomuto nodu můžete provádět některé matematické operace na hodnotách, které povedou do inputu/ů

Math node

Vector Math - téměř to stejné jako Math, zde ovšem pracujeme s vektory, nikoli s hodnotami

Vector Math

Squeeze Value - tento node zpracovává jakoukoli hodnotu a dosadí ji do logistické křivky. Můžete nastavit střed této křivky a rozsah osy x

Squeeze value

Abych vás nenechal tápat, logistická křivka vypadá takto:

Logistická neboli sigmoidní křivka

GROUP menu

- group = skupina
- implicitně je toto menu prázdné, dokud nevytvoříte nějakou skupinu
- skupina je několik sdružených nodů, které vyvolávají nějaký efekt (záleží jen na vaší představivosti)
- skupinu vytvoříte výběrem několika nodů a poté stiskem CTRL+G nebo přes menu Node->Create group
- vytvoření takovéto skupiny znamená, že ji můžete použít vícekrát, můžete ji vložit kamkoli do sítě a použít na různé nody (na všechny ovšem bude mít stejný efekt)
- skupiny fungují na stejném principu i v kompozitním node editoru
Na obrázku je ukázka skupiny vytvořené z několika výše zmiňovaných nodů:

Zmenšený group node

Tabulátorem se dostanete na editaci skupiny

Skupina

Při stisknutí ALT+G skupinu rozdělíte zpět na jednotlivé nody

A ještě malá poznámka k nodům: pokud vidíte někde v síti červenou křivku, znamená to, že jste napojili některý node špatně a vznikla cyklická chyba:

Cyklická chyba

A to by bylo k materiálovým nodům zhruba vše. Doufám, že tutoriál napomohl k pochopení této zapeklité novinky a že nenecháte na materiálový node editor sedat prach :). Příštím dílem, jak jsem předeslal v úvodu, uzavřeme kapitolu node editoru tím, že si ukážeme možné příklady použití v praxi, a předvedeme si pár zbývajících funkcí. Těším se příště na shledanou.

Tématické zařazení:

 » 3D grafika  

Poslat článek

Nyní máte možnost poslat odkaz článku svým přátelům:

Váš e-mail:

(Není povinný)

E-mail adresáta:

Odkaz článku:

Vzkaz:

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: