Úvod do “PBR” #2 – Metalness nebo Specular

2 months ago by in VFX články Tagged: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

V minulém díle jsem se rozpovídal o základních fyzikálních pojmech, které přímo ovlivňují práci v 3D programech využívajících PBR postupy. Mluvil jsem o pojmech jako Reflectivity, Roughness, Albedo, Energy Conservation atd. Věřím, že jste díky těmto popisům lépe pochopili, jak se v reálném světě šíří světlo skrz materiály a jakým způsobem ovlivňují povrchové vlastnosti odraz světelných paprsků. Anebo to, že barva objektu ve skutečnosti není nějakou inherentní vlastností materiálu, nýbrž kombinací dopadajícího světla a spousty chaoticky odražených paprsků, bloudících v jeho vnitřku a odrážejících do našeho oka určitou část světelného spektra (něco co mě asi nikdy nepřestane udivovat).

Znát fyzikální pozadí všech těchto jevů je sice hezké, ale jak to vlastně zapadá do práce tvůrce textur? Jak vlastně vypadá PBR workflow a s čím v něm pracujete? Uklidním vás rovnou – není třeba žádných výpočtů. Ve skutečnosti za vás většinu času odvedou všechnu práci texture mapy. Ostatně, proto je PBR workflow tak populární.

První část článku čtěte zde.


Ano, texture mapy, takové ty barevné či černobílé obrázky (závisí na funkci), které na 2D ploše udávají různé vlastnosti 3D povrchu. Tedy dobrá zpráva, váš postup se pravděpodobně nebude lišit od toho, na který už jste zvyklí, pouze budete muset znát nové názvy jednotlivých map. Pokud jste v oblasti texture map noví, určitě vás opět odkážu na e-book Jak začít s vizuálními efekty, který si zadarmo můžete stáhnout zde.

Pokud nehodláte rovnou zacházet do tvorby vlastních PBR textur (ať už jejich generováním v programech jako Substance Designer nebo jejich fotoskenováním), vaším hlavním problémem bude jako správně zapojit texture mapy stažené z některé z mnoha internetových databází. Když například zavítate na můj oblíbený Poliigon, zjistíte, že vám jsou zde nabízeny dvě varianty materiálů na stažení – Metalness a Specular. Toto jsou zároveň dva základní workflow postupy, z nichž každý prezentuje jiný způsob, jak vypočítavat PBR hodnoty renderovaných materiálů.

Na některých PBR databázích dokonce dostanete na výběr, jaký workflow chcete zvolit. Zdroj: Poliigon.com

Metalness Workflow

První mapa, se kterou se při stažení textur pro Metalness workflow setkáte, bude pravděpodobně Color či Diffuse (někdy i Base) mapa. Jedná se o barevnou mapu, která udává diffúzní barvu předmětu, bez reflektivity. V tomto postupu si PBR systém bere z Color mapy informaci o Specular barevnosti. Zcela klíčová je černobílá Metalness mapa, která udává stupeň Reflectivity povrchu, kdy černá (0) ukazuje na dielektrickou (= opak kovového) a bílá (1) na kovovou část povrchu.

Pokud jste četli minulý článek, jistě vám bude povědomá i Roughness mapa, která udává intenzitu mikroskopických nerovností povrchu, kdy černá rovná se zcela rovný, perfektně odrazný povrch a bílá rovná se hrubý povrch. Od obou takových ploch se sice světlo odráží stejným způsobem (v závislosti na Metalness mapě), v prvním případě se nám však do oka odrazí více paprsků, čímž se odražené světlo zdá jasnější, v druhém více paprsků zamíří do prostoru, což znamená matnější odrazy.

A to je víceméně vše, co potřebujete pro správné zapojení Metalness textur. Systému stačí tyto tři mapy, aby z něj vypočítal vše potřebné, od barvy Specularu, přes Fresnel až po simulaci hrubosti a odraznosti povrchu. Je to přímočarý postup, kde pokud víte, do jaké kolonky zapojit jakou mapu, máte vyhráno a nemusíte bádat nad žádným dalším nastavováním. Metalness postup vám nicméně nedává velkou svobodu nad ručním laděním Fresnel a Specular hodnot.

Specular Workflow

Specular shader workflow v Unity

Druhý workflow, který dnes zmíníme, využívá poněkud jiné mapy a výpočty. Jedná se o Diffuse (často v tomto případě nazývaná Albedo), Specular a Glossiness. Narozdíl od Metalness workflow, vzhled kovových / dielektrických částí v tomto případě není vypočítáván z Diffuse, Metalness a Roughness map, hlavní část informace se ukrývá ve Specular mapě. Z ní je přímo odvozena Reflectivita i Fresnel.

Právě proto, že se tak neděje výpočtem z individuálních map, nýbrž přímým zapojením jedné mapy, máte při Specular workflow větší kreativní kontrolu nad odlesky a matnými částmi. Zároveň je však větší šance, že při tvorbě uděláte chybu a porušíte fyzikální pravidla Energy Conservation (více v prvním díle). V případě, že své textury stahujete, je nejlepší stahovat ze spolehlivých zdrojů (odkazy na konci článku).

Pro určení mikroskopických nerovností povrchu je tu v případě Specular Workflow tzv. Glossiness mapa. Jedná se o černobílou texturu, kde černá místa (hodnota 0) udávají nejhrubší části povrchu, bílá místa (hodnota 1) naopak ty nejhladší, od kterých se budou paprsky odrážet pravidelně. Jedná se vpodstatě o obrácenou Roughness mapu, takže ocitnete-li se v situaci, kdy musíte použít Glossiness mapu v Metalness workflow, stačí ji invertovat.

Další důležité texture mapy

Nejen těmito zmíněnými mapami je PBR systém živ. Do shaderů budete zapojovat i další textury, které již asi znáte ze svých předchozích non-PBR postupů. Jedná se o různé pomocné mapy, které pomáhají s dodatečnými výpočty chování světla, odraznosti a zakřivení konkrétního povrchu.

První z nich je Height / Displacement mapa, která pomocí černobílé textury udává povrchové nerovnosti objektu. V místě, kde je mapa černá, povrch je zatlačen dovnitř objektu o určitou vzdálenost, kde je bílá, je povrch naopak vyzvednut. Jelikož 3D programy, v nichž budete Height mapu zapojovat, budou pomocí ní přímo deformovat geometrii – a zatěžovat tak výpočetní výkon – tato mapa se využívá především pro větší povrchové nerovnosti jako zřetelné výstupky, prohlubně atd.

Vlevo složený render, vpravo Ambient Occlusion render:

Pro odlehčení výkonu se na drobnější povrchové nerovnosti (oděrky, zrno, škrábance, rez atd.) většinou využívá Normal mapa, kterou už na dálku poznáte podle jejích fialovo-tyrkysových barev. Každý z odstínů této RGB mapy udává úpravu světelného ohybu v X, Y nebo Z ose. Mění-li se směr dopadajícího světa, vidíte díky Normal mapě realistickou změnu nasvícení výstupků a prohlubní. Narozdíl od Height mapy však Normal mapa nijak nemění geometrii.

 

Další z nich map je dobře známá Ambient Occlusion mapa. Jedná se o černobílou texturu, která udává, kde přesně k sobě plochy konkrétního objektu nejblíže doléhají. Tam se – stejně jako ve skutečnosti – tvoří temnější, zastíněná místa. Výpočetně přesné renderery počítají AO pro každý frame zvlášť, v případě realtime enginů je však stále zvykem tuto mapu „zapéct“ (vygenerovat statickou texture mapu), čímž se ušetří výkon, za cenu toho, že zatemněné oblasti budou stejné za jakýchkoliv světelných podmínek. Některé programy pro své výpočty používají také velmi podobnou Cavity mapu, která nicméně zatemňuje pouze drobné prohlubně pod povrchem předmětů.

Další texture mapy už mají co do činění spíše s celkovými vlastnostmi materiálu spíš než s PBR postupem. Například Transparent a Translucent mapy udávají to, kde jsou které části předmětu průhledné / průsvitné (mluvil jsem o nich minule). Pro simulování průsvitnosti v realtime se často používá Thickness mapa, která obsahuje zapečenou informaci o tom, jak je v kterém místě daný objekt tlustý. Krom toho se často setkáte i s Emission (Radiance) mapou, která simuluje to, kde samotný povrch objektu vyzařuje světlo (často lze vidět na neonech, baterkách, lampách atd).


Databáze obsahující spolehlivé texture mapy: Megascans, Textures.com, Substance Source, Poliigon, TextureHaven (zdarma, ale ne tak spolehlivé)

Pro více informací o tomto tématu zavítejte na stránku Allegorithmic, kde je obsáhlá PBR Guide (v angličtině), ze které jsem čerpal informace pro tento článek.

Quixel nedávno vypustil Quixel Mixer, jednoduchý nástroj na rychlé skládání jejich PBR textur z Megascans knihovny:

Užitečné PBR tipy naleznete v těchto Unity tabulkách:

Podobné články

Freelance filmař, trikař a grafik. Bývalý Cinematic Director ve Warhorse Studios. Milovník Pána prstenů a Jurského parku. Tvůrce VFXcz.