Emulace SaT modulu jen pomocí CINEMY 4D? Jistě… - 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

Emulace SaT modulu jen pomocí CINEMY 4D? Jistě…

15. listopadu 2007, 00.00 | Být druhý není žádná slast, no občas se zadaří a vymyslíme něco, co vymyslel již někdo jiný. I v tomto případě se mi to stalo, i když je pravdou, že omluvou mi může být skutečnost, že onen můj předchůdce se objevil před drahnou dobou a neměl k dispozici možnosti nových verzí, ale základní postup je shodný. Avšak nevadí, jistě to není zase tak známé, abychom si to nemohli předvést. Dámy a pánové, komplexní simulace manga stylu bez využití modulu Sketch and Toon jen za pomoci standardních shaderů…

Idea v pozadí

Jak všichni víme, CINEMA 4D má v oblasti shaderů skutečně co nabídnout a také obsahuje jeden speciální shader, který dokáže analyzovat osvětlení povrchu. Jedná se o shader Lumas, který je skvělý zejména pro své široké možnosti nastavení odlesků a chování světla na povrchu objektu. Tento shader se běžně používá v kanále Barvy a mezi jeho výhody patří separátní nastavení „rozptylu světla“ na povrchu objektu (difuse). A to je velmi podstatné, protože níže uvedená emulace je vlastně zcela založená na této skutečnosti.

Nejdříve si tedy musíme uvědomit, co je ona difuse, protože teprve poté můžeme pokračovat v našich ideologických úvahách o vytvoření manga efektu bez modulu Sketch and Toon.

Pokud hovoříme o difusi, či rozptylu světla na povrchu, pak hovoříme o změně barvy povrchu založené na úbytku řízeném velikostí úhlu dopadajícího paprsku světla a paprsku normály – kolmice povrchu. Tedy pokud nastavíme barvu povrchu na bílou a světlo má 100 jas a bílou barvu, pak bychom mohli předpokládat situaci, kdy povrch s normálami rovnoběžnými s paprsky světla (řekněme všesměrového) bude mít maximální možný jas. Čím větší bude úhel obou vektorů, tím tmavší povrch bude až do své hranice.

Tohle všechno se děje s povrchem zcela automaticky při osvětlení objektu jen na základě iluminačního režimu vytvořeného materiálu, jasu a kontrastu světla. A samozřejmě je do toho promítnuta také barva povrchu. Normálně však není cesty, jak tuto informaci přímo v rámci materiálu zpracovat a zpětně využít. Tedy není této cesty mimo shader Lumas.

Když použijeme shader Lumas, tak ten všechny výše zmíněné události zpracovává, a to nám dává obrovské pole působnosti. Máme totiž shader, který nám analyzuje „prostorovým“ přechodem na povrchu objektu všechny události difuse a co víc, dokáže do toho také zaimplementovat odlesk.

Představme si nyní, že shader Lumas místo kanálu Barva použijeme v kanále Svítivost, který sice apriori ignoruje osvětlení, jenže to ani není třeba, protože to nám již simuluje Lumas sám o sobě, a tak by to bylo zbytečné. Naopak bychom nebyli sto níže uvedenou simulaci provést v kanále Barva, protože pak by nám vše překrývala čerň ploch, které jsou světlem nezasažené (normály polygonů svírají s paprsky větší úhel než 90 stupňů).

Takže máme shader Lumas ve svítivosti, barva v shaderu je nastavená na bílou, iluminace na 100 %, ale může být i vyšší, podle potřeby. A co dále? Máme shader vybraný a zvolíme shader Obarvení. A to je velmi zajímavý shader, protože nám umožňuje pomocí přechodu zabarvit shader-texturu, kterou zpracovává. Můžeme přitom určit, podle čeho se má tento shader řídit. Ve výchozí situaci tu je nastavená volba Svítivost, což nám zcela vyhovuje. Shader Obarvení tedy analyzuje intenzitu (v případě bílé stejně jen jasu) barvy povrchu, jak ji generuje shader Lumas, a podle zadaného přechodu definuje barvu. A nyní si představme, že bychom tento přechod neměli hladký, ale krokový. Jinými slovy, že například plochy, jejichž normály svírají s povrchem (povrch je bílý, světlo také) úhel 0-10 stupňů, budou mít barvu například světle modrou, plochy od 10-22 stupňů budou středně modré, 22-40 budou tmavě modré a nakonec plochy 40 až 90 budou velmi tmavě modré. Tím máme de facto analyzovaný povrch a´la modul Sketch and Toon a shader Cel. Vše závisí na dvou, respektive třech věcech. Na intenzitě světla (to zpracovává Lumas), nastavení iluminace Lumasu a nastavení barvy přechodu a šířky jednotlivých polí.

Zatím to vypadá zajímavě, že. Ale můžeme jít ještě dále. Ideologicky vzato nám nic nebrání v tom, abychom použili výsledek našeho snažení jako masku vrstvy a můžeme v rámci jednoho povrchu využít více takto připravených shaderů.

Poslední úvahou, kterou bych rád před započetím samotné práce předestřel je, že můžeme stále využít klasickou „manga fintu“ se shaderem Fresnel, i když v tomto případě bych si shader Fresnel použil jako masku vrstvy, než že bych jej nechal samotný a nechal ho interaktovat s ostatními vrstvami.

Per Andersův příklad, který je principielně starší, avšak ideologicky shodný

Příprava scény - materiál objektu

Abychom opravdu všichni měli scénu shodnou, použil jsem pro další práci postavu, kterou máme k dispozici v knihovně CINEMY 4D. Stejně tak jsem k ní přidal jednoduše nastavenou kameru a také světla. Ta jsou velmi prostá, jedná se o dvě vzdálená světla, jedno se stínem a druhé bez, kdy druhé je jen z druhé strany, aby nebyly stíny od prvého tak tmavé a také nám povrch „lépe“ kreslil.

Soubor ke stažení

Začneme, jen upozorňuji, že jsem samozřejmě celý systém dělal od ruky a článek píši zpětně, hodnoty tedy nejsou vždy zcela dobře zapamatované…

Vytvoříme si nový materiál a tento materiál si můžeme rovnou pomocí čelní projekce promítnout na objekt. Vypneme vše a aktivujeme kanál Svítivost, nic jiného potřebovat nebudeme.

Do kanálu Svítivost načteme shader Lumas. V tomto shaderu (ono jej použijeme vícekrát, ale tentokrát) vypneme všechny odlesky a nastavíme trochu vyšší iluminaci, řekněme na 127%. Režim ponecháme na internal. Vrátíme se do kanálu Svítivost a zvolíme shader Obarvení. Ten do sebe načte výše připravený Lumas.

Shader Obarvení nyní nastavíme, čímž nastavíme efekt Lumas. Změníme režim přechodu na Interpolace > Žádný a změníme také barvy (zleva doprava). Barvu první na pozici 0% jsem nastavil na 131, 56, 37, barvu druhou na pozici 27,65% (říkal jsem, že jsem to dělal od oka :-)) na 157, 84, 49, barvu třetí na pozici 64,51% a 241, 138, 75 a nakonec barvu poslední, čtvrtou na pozici 92,49% a barvu 255, 194, 149. A už v této chvíli si můžeme vyzkoušet, co nám toto nastavení udělá. Vznikne mám poměrně pěkný efekt „manga“ povrchu.

01

02

Jelikož jsem chtěl na povrchu také odlesk, tak jsem si uvědomil, že s jedním shaderem to asi nepůjde. Takže si vybereme náš shader Obarvení, vytvoříme shader Vrstvy, díky čemuž se obarvené vloží do vrstev. Shader obarvení si zkopírujeme a vytvoříme jakýkoliv shader, například Barva a poté vložíme místo shaderu Barva shader Obarvení. Otevřeme si tento nový shader a budeme pokračovat v úpravách. Nejdříve samotný Lumas, který je v tomto našem novém Obarvení.

U tohoto zkopírovaného Lumasu vypneme iluminaci jako takovou a aktivujeme jen a pouze Odlesk 1. Zde nastavíme intenzitu na vysokou hodnotu (475) a také trochu zvýšíme velikost (8-10%). Vrátíme se do nadřazeného shaderu Obarvení.

V tomto shaderu upravíme barvy. Smažeme dva uzly barev a první barvu zadáme na šedou 128, 128, 128 a druhou barvu nastavíme do polohy 91,2% s barvou 253, 192, 111. Vrátíme se do vrstev. Tento nový shader bude výše než ten původní a režim krytí bude Překrýt (šedá oblast tak nebude mít vliv a projeví se jen oblast lesku).

03

04

Bylo by asi dobré si objekt nějak ohraničit. Vytvoříme si tedy shader Fresnel, který umístíme opět nahoru ve struktuře shaderu Vrstvy a u tohoto shaderu nastavíme opět přechod v podobě Interpolace > žádný a bude velmi snadný, barvy bílá a černá, kdy první uzel bude v poloze 0 a druhý (černý) 23,5%.

Právě vytvořený shader využijeme jako masku vrstvy. Vytvoříme tedy další shader Barva, který bude opět nejvýše a nastavíme v něm barvu 75, 38, 0.

06

Níže položený shader Fresnel nastavíme na režim Maska vrstvy, a tím získáme velmi pěkný a efektní okraj celého objektu, který není založený na analýze světlo/povrch, ale na analýze kamera/povrch, respektive paprsků kamery s normálami povrchu.

06

07

Můžeme pokračovat, pokud chceme, a ještě trochu doladit svůj výtvor tím, že mu přidáme také nějaké šrafy. A abychom mohli řídit oblast a krytí těchto šrafů, použijeme opět náš shader Obarvení s Lumasem, který bude fungovat jako maska. Zkopírujeme si tedy původní shader Obarvení a vložíme jeho kopii do nejvyšší úrovně shaderu Vrstvy. Upravíme barvy v rámci shaderu Obarvení a to tak, že všechny barvy budou mít sytost 0 a jas bude zprava doleva (pozice jsou shodné) 100%, 54%, 64%, 95%. Režim krytí tohoto shaderu zadáme opět na Maska vrstvy.

08

Vytvoříme si poslední shader tohoto materiálu – Přechod. Tento přechod bude lineární, a jak si můžete všimnout, vytváří nám docela zajímavé šrafování. Ono se to na první pohled nezdá, ale shader Přechod má standardně drobnou volbu, která nám s podobnými aplikacemi může velmi dobře pomoci. Vytvoříme si tedy lineární přechod 2D-U, ve kterém nastavíme Úhel natočení na 40 stupňů. Typ interpolace přechodu nastavíme na Interpolace > Žádná a barvy budeme potřebovat jen dvě. Pravá barva bude na pozici 0 a bude mít odstín 94, 67, 71, druhý uzel bude čistě bílý a bude v poloze 50%. Potřebujeme ale vytvořit šraf, že. Ale to není nic složitého. Klikneme na proužek přechodu pravým tlačítkem myši a vybereme příkaz Dvojnásobné uzly. A můžeme vícekrát, každým novým zadáním se duplikuje množství uzlů, a tím se zvyšuje hustota šrafu, až do „technického“ šrafu o velmi malé síle. Pro jistotu u přechodu aplikujeme volbu Cykly pro opakování.

09

Jen dodatek k této operaci. Ono bychom asi mohli namítnout, že jsme zapomněli na možnost využít shader Dlaždice. Avšak nezapomněli, tento shader totiž nelze v rámci jeho nastavení v tomto případě použitelných vzorků natočit, a tak jej shader Přechod mocně zastoupil.

Režim krytí této vrstvy nastavíme na Násobení a ujistíme se, že níže položený shader Obarvení s Lumasem má režim krytí na Masku vrstvy.

10

Tímto krokem jsme dokončili celý materiál a objekt se nyní bude renderovat v dokonale kresleném stylu. Co to ještě potřebuje, je dokončení pozadí a popředí.

11

Oba dva objekty vytvoříme tím nejjednodušším možný způsobem, tedy pomocí příslušných objektů, kdy objekt popředí bude mít alfa kanál – jakýsi rámeček okolo objektu. Začneme tím, že si oba objekty vytvoříme a vytvoříme si také dva nové materiály.

V obou případech můžeme pracovat v kanále Barva a stejně tak můžeme ignorovat nastavení odlesku, protože tato nastavení se ani v případě popředí, ani pozadí neprojeví.

Popředí

U objektu Popředí vytvoříme materiál, ve kterém opět využijeme shader Vrstvy. První vytvoříme shader Barva, který bude mít barvu 255, 195, 0. Nad tento shader přidáme shader Přechod, který nastavíme na typ Kruhový, přičemž opět využijeme Interpolace > Žádná. První barva bude černá a druhá bílá, ta bude mít pozici 70%.

12

A do třetice další shader bude opět Přechod, ale lineární, a to 2D-V, kdy první barva bude tmavě červená 149, 0, 0 a druhá oranžová 241, 138, 75 v pozici 50%. Interpolace bude nastavena na „Interpolace > Žádná“ jako vždy. V tomto případě ale opět obsah znásobíme pomocí kliknutí pravého tlačítka myši a příkazu Dvojnásobné uzly. Opět zapneme i volbu pro cykly.

12

Abychom definovali, kde se má právě vytvořené šrafování vytvořit, nastavíme druhý (kruhový) přechod na režim krytí Vrstva masky.

Objekt Popředí překryje vše, co není maskováno Alfa kanálem, takže přejdeme ještě do nastavení této součásti materiálu. I zde vytvoříme shader Přechod – kruhový s nastavením Interpolace > Žádná. Barvy a pozice jsou přitom následující. První barva je černá na pozici 0%, druhá bílá na pozici 57,5%, další opět černá na pozici 60% a nakonec bílá na 68.6%. Tím vytvoříme masku (a kroužek), ve kterém bude nakreslena naše postavička.

14

15

Pozadí

Materiál Pozadí bude o něco jednodušší. I zde využijeme shader Vrstvy, kdy první vrstva bude tvořena shaderem Přechod – kruhového tvaru s nastavením Interpolace > Žádná a barvami oranžovou 241, 138, 75, tmavě cihlovou 131, 56, 37 na pozici 44% a nakonec tmavší starorůžovou 255, 194, 149 na pozici 46,4%, čímž jsme vytvořili kruhové pole s proužkem, na kterém se vše bude odehrávat.

16

Druhou vrstvou bude náš starý známý obarvený Přechod – 2D se šrafem, který jsem zkopíroval z našeho hlavního materiálu, u kterého jsem jen upravil úhel na -49 stupňů. Aby měl přechod trochu jinou barvu, použil jsem shader Obarvení, který jsem ponechal v jeho výchozím nastavení. Tato vrstva (Obarvení) má nastavený režim krytí na Násobení.

17

Abychom měli popředí i pozadí nezdeformované, zvolil jsem velikost renderu v poměru 1/1, a to 800/800. Mimo nastavení vyhlazení není nic jiného zapotřebí aktivovat.

A co ještě? Samozřejmě nastavíme materiály na naše objekty. Materiál postavičky bude mít čelní projekci (to je podstatné z pohledu správného šrafování), zbývající dva materiály aplikujeme tak, jak jsou, bez dalšího zásahu.

Můžeme renderovat a za pár vteřin máme výsledek

18
kliknutím se obrázek otevře

Finální soubor ke stažení

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: