Cinema 4D: Záhadný to Lumas, principy materiálů a světel ve 3D prostoru - 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

Cinema 4D: Záhadný to Lumas, principy materiálů a světel ve 3D prostoru

13. prosince 2007, 00.00 | Tomuto shaderu jsme se již jednou poměrně podrobně věnovali v článku, který se pokoušel nastínit možnosti simulace „manga“ stylu právě pomocí tohoto nástroje. Pravdou však je, že možná ne každému mohli hned vytanout další možné aplikace, a tak se dnes podíváme na možná ideologická využití tohoto shaderu a obecně také to, jak pracují světla a materiály ve 3D prostoru.

Ještě jednou k Lumasu a popisu, cože to vlastně dělá. Obecně vzato je Lumas nástrojem, který ve formě shaderu povrchu analyzuje složky osvětlení dané plochy – tedy difuze a odlesku.

Difusi jsme si popisovali již v již zmíněném článku, tedy jen krátce. Jedná se o barevnost povrchu, která je závislá na původní barvě povrchu, barvě světla a samozřejmě jeho intenzitě. Jenže do toho vstupují i další atributy. A to zejména podíl úhlu normály povrchu a paprsku dopadajícího na toto místo povrchu. Obecně vzato – čím větší je tento úhel, tím je povrch osvětlen méně. Do této analýzy ještě vstupuje několik dalších parametrů umístěných na různých místech. Jedná se v prvé řadě o nastavení kontrastu u světel. Čím vyšší kontrast, tím větší je tolerance úhlu normály povrchu a paprsku světla, aby bylo osvětlení povrchu maximální. Podobný parametr je také v nastavení každého materiálu na stránce Iluminace (Úroveň rozpuštění na povrchu).

To, co jsme právě napsali, je jednoznačně pravda, ale možností rozptylu světla na povrchu tělesa je více v závislosti na tom, jaký iluminační režim zvolíme (na stránce iluminace materiálu). To nás ale nyní tolik netrápí, jelikož jsme si v rámci potřebného osvětlili vše, co jsme měli.

Dalším aspektem projevu světla na povrchu jsou odlesky. Odlesky jsou však poněkud zvláštní v tom, že se jedná o skutečně „plnohodnotné“ 3D simulování reality zcela nereálným způsobem. Jedná se o to, že světelný zdroj vlastně žádný „odlesk“ ve smyslu 3D aplikace nevrhá, jedná se o prostý odraz (tedy odrazivost). Odrazivost je však věcí ošemetnou – jak například odrážet zdroj, který není viditelný, a navíc je bodový (kuželové či naopak vzdálené světlo). Ani v jednom případě nemá takové světlo definovatelnou exponovanou plochu, kterou by povrch mohl odrážet, takže jediné, kdy bychom mohli uvedený postup využít, jsou plošná světla, která, světe div se, mají dokonce ve svém nastavení volbu pro zobrazení své plochy v odrazech.

Definice odlesku – budeme používat to veskrze pochybné slovo, když už víme, o co jde – tedy vychází ze stejné ideologické roviny jako princip difuse. Opět se analyzuje normála povrchu, opět se analyzuje paprsek světla, ale parametry odlesku jsou závislé na poněkud jiných parametrech. Samozřejmě na barvě a jasu světla, to je stejné, ale kontrast na vzhled efektu nemá žádný vliv. Co však ale je podstatné, je také umístění kamery – pozorovatele. Odlesk je totiž umístěn na ploše, jehož normála svírá střední úhel mezi paprskem světla a paprskem kamery (popis je hrubě zjednodušený, ale pro nás v této chvíli dostačující).

01

02

02

02

02

Projev odlesku na povrchu závisí na mnoha nastaveních materiálu, ale především na tom, že definujeme intenzitu tohoto efektu – tedy můžeme si to představit jako míru krytí vrstvy s odleskem na povrchu v režimu závoj. Pokud chceme, můžeme intenzitu odlesku zvyšovat na hodnotu vyšší než 100 %, což není vůbec od věci. Možná lze namítnout, že to je zbytečné, ale není. Musíme si uvědomit, že světlo – je-li bílé s jasem 100% – a odlesk dohromady (je-li povrch například šedý s jasem 80%) dá bílou stopu odlesku již intenzitě odlesku cca 20%. Jenže my požadujeme vždy bílou stopu a snížíme jas materiálu – povrchu. Tím pádem krytí odlesku nebude dostatečné a výsledné zesvětlení povrchu nebude ani zdaleka dosahovat přesně bílé barvy (při hranici jasu 255, 255, 255), nemluvě o možnostech 32 bitových obrazů. Ale co když snížíme jas světla? A přesto i při nižším jasu světla jsou povrchy, které jsou vysoce lesklé a které by odlesk měly skutečně poskytnout, a to odlesk intenzivní. Jenže světlo tomu nepostačuje a další přidávat nechceme, protože pro osvětlení například využíváme technologii Ambient Occlusion (okolní prostředí) či globální iluminace (radiozity). Pak máme řešení v tom, že zvýšíme intenzitu odlesku na hodnotu vyšší než 100 %.

Výše zmíněná možnost mít odlesk na vyšší hodnotě než 100 % se může projevovat ještě v dalších oblastech. Již jsme jen lehounce otřeli o vícebitovou datovou hloubku obrazu. Pokud použijeme render ve 32 bitech, tak se nám může opravdu vyplatit mít kvalitně vyvážené nastavení odlesku.

Další nastavení lesku jsou v zásadě velmi jednoduchá (v tomto případě nehovoříme o Lumasu). Mimo již notně proprané intenzity upravujeme šíři celkového efektu (tedy celkový rozsah úhlu normály povrchu a paprsku světla) a také tvar přechodu intenzity. Nastavení vnitřní šíře je již jen třešinkou na našem dortu.

Tím jsme si tedy prošli odlesk. Pokud to shrneme, tak odlesk jako takový je řízený stejnými principy jako difusní spektrum světla (kdy je navíc analyzovaná i poloha kamery), jen je jinak interaktovaný do výsledného obrazu.

Ale zpět k našemu shaderu Lumas. Jeho existence nám totiž do značné míry umožňuje věci, které mohou být na prvý pohled vyhrazené skutečně sofistikovaným renderovacím řešením, jako je například VRay. V tomto systému adaptovaném pro CINEMU 4D je mimo jiné také zajímavá struktura odlesků. Ty jsou separované do pěti samostatných efektů, které navzájem spolupracují, a co víc – odlesky spolupracují také s odrazivostí. Tedy je to logické propojení (již jsme si vysvětlili proč) a je to zároveň také jedna z drobností, která posouvá VRay k realitě.

Uvažoval jsem nad touto skutečností a došla mi podivná souvislost. Lumas je shader, který dokáže v plné síle analyzovat efekty osvětlení povrchu a všechny aspekty tohoto chování. Pokud tedy využijeme všechny možnosti shaderů, které nám CINEMA 4D nabízí, pak máme k dispozici ten samý systém, kterým disponuje také VRay.

Ideologicky je odrazivost svázána s odleskem, tedy zřejmě by bylo na místě, aby prostor, kde je odlesk, byl ovlivněn i vyšší odrazivostí (v některých případech, samozřejmě). Můžeme tedy v takové situaci využít shader Lumas v shaderu Vrstvy (v kanále odrazivosti), a to na mnoho způsobů. Shader Lumas (a to včetně oněch třech vnitřních odlesků) může být faktorem intenzity odrazivosti (režim závoj), nebo může být alfa kanálem jiného shaderu. Pokud ale chceme simulovat to, co umí VRay, tak je nejjednodušší ten systém, kdy budeme vytvářet separátní shadery Lumas vždy jen s jedním odleskem naladěným podle potřeby (a krytí Závoj), které postupně seskládáme nad sebe. Každý může mít svou vlastní barvu a každý odlesk může být doplněn i o řízení v difusi – iluminaci povrchu.

lumas
Nastavení shaderu Lumas

Toto řízení se může zdát poměrně kostrbaté, ale pokud si prohlédneme strukturu materiálu VRayforC4D, tak zjistíme, že to není zdaleka tak hrozné. Navíc to není jediné případné využití Lumasu. Možností je podstatně více.

vray
Odlesky mají vliv na chování "odrazů" materiálu VRayforC4D

Využití podobného efektu v materiálu CINEMY 4D - materiál jednoduchého metalického laku (snadného na úpravu)

kanál Barva

auto

Kanál Odrazivost

lumas

A výsledný efekt (Osvětlení je jen jedno světlo + hdri mapa a GI)

auto

Další možností je simulace SSS efektu, tedy pronikání světla povrchem. I toto téma jsme již jednou probírali a použili jsme opět shader Lumas, avšak v tomto zmíněném příkladu jsme jen a pouze využívali nevolumetrické efekty. Lumas však lze využít i u efektů volumetrických, či efektů, které volumetricitu simulují. Například v případě shaderu ChanLum.

ChanLum je ex plugin shader již plně implementovaný do CINEMY 4D, který lze použít pro simulaci právě efektu SubSurface scatteringu, tedy pronikání světla do tělesa. Toto světlo proniká na straně odvrácené k hlavnímu světelnému zdroji – je to prosvětlení v objemu.

Chanlum ale má jednu vlastnost, dokáže vytvořit analýzu, či spíše simulaci průniku, avšak s tím, že neanalyzuje oblasti, kde by „neměl být“. Řešení je ale prosté. ChanLum lze nastavit jen na světlo, které má analyzovat, a prostor, kde se nemá objevit, můžeme poměrně snadno řídit shaderem Lumas, který invertujeme a budeme jím násobit ChanLum. Zde ale vyplývá jedna zajímavá potíž…

Představme si, že používáme Lumas v situaci, kdy hlavní světla mají nižší intenzitu než 100 % (tedy například při využití GI). Pak je nezbytné, abychom si vždy hráli s nastavením Lumasu, protože po jeho prosté inverzi by se nám efekt ChanLumu projevil i tam, kde nemá.

Ale dost teoretizování, dnešní článek přeci jen ukončíme drobným návodem. Vytvoříme si nový materiál, kterým budeme simulovat povrch nějakého plastu v barvě kůže (třebas hračky), nikoliv nějak přesně, ale jen pro názornost. V kanále Barva vytvoříme Lumas s barvou 255, 215, 196 a iluminaci nastavíme na 100 %. Aktivní necháme jen první odlesk s bílou barvou a intenzitou 125%.

chan

Vytvoříme si také samozřejmě nový objekt, kterým nebude nic menšího než krychle. Velikost X nastavíme na 100 a počet segmentů v tomto směru na 3. Převedeme objekt na polygony a vybereme prostřední smyčku polygonů, kterou vytáhneme jako celek (tedy maximální úhel bude na hodnotu 90+). Objekt vložíme pod HyperNURBS s poměrně vysokou hodnotou (3-4)…

11

Co nás nyní trápí, je kanál Svítivost. To je kanál, který by právě měl využívat shader Lumas a také ChanLum. Tedy vzhůru do temných vod. Vytvoříme si ve Svítivosti shader Vrstvy a do tohoto shaderu načteme shader Lumas. Vypneme u něj všechny odlesky a nastavíme bílou barvu s jasem 100 % a kontrastem -30. Poté vytvoříme další shader, který umístíme hierarchicky přímo nad tento shader Lumas. Bude jím Obarvení s přechodem bílá – černá a černá v poloze 93 %. Tím převrátíme působení Lumasu, budeme jím pak vytvářet oblast působení Lumasu – v místě stínění objektu…

Vytvoříme si v rámci shaderu Vrstvy ChanLum, konečně. Umístíme jej nejvýše, co to jde, a necháme jej násobit s níže položenou vrstvou – obarveným Lumasem.

ChanLum není dnešním tématem, takže si jen upravíme jeho nastavení. Zvýšíme množství vzorků a také upravíme počáteční posun na 1 (vlastně se jedná o odsazení začátku mající souvislost – mimo jiné – i s měkkými stíny) a poslední parametr, který můžeme upravit, je poloměr vzorku, který dekuje délku pronikání. Osobně jsem použil délku 30.

13

14

A už jen nastavíme barvu – stačí tím nejjednodušším způsobem. V kanále Svítivost použijeme barvu 255, 155, 115 a režim krytí shaderu Vrstvy zadáme na násobení. Stačí už jediné světlo.

Světlo umístíme mírně zboku a svůj pohled umístíme na druhou protilehlou stranu. Světlo musí mít stín, jeho jas jsem nastavil na 110 %. A to je vše, stačí vyrenderovat…

15

A vida, na co všechno nejde ten Lumas použít… Není to dokonalý efekt, je to jen simulace, ale pravdou je, že jen simulace v základní rovině a také že efekt není zase tak moc pomalý.

Tématické zařazení:

 » 3D grafika  

 

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: