Stínování - Shading
Stínování označuje zobrazení vnímání hloubky ve 3D modelech (v oblasti 3D počítačové grafiky ) nebo v ilustracích (ve vizuálním umění ) změnou úrovně temnoty . Stínování se snaží aproximovat místní chování světla na povrchu objektu a nesmí být zaměňováno s technikami přidávání stínů, jako je mapování stínů nebo svazky stínů , které spadají pod globální chování světla.
Ve výkresu
Stínování se tradičně používá při kreslení pro zobrazení řady temnoty aplikací médií hustěji nebo s tmavším odstínem pro tmavší oblasti a méně hustě nebo světlejším odstínem pro světlejší oblasti. Při vytváření iluze hloubky na papíře pomáhají světelné vzory, například objekty se světlými a stínovanými oblastmi.
Existují různé techniky stínování, včetně šrafování , kdy jsou ve mřížkovém vzoru zakresleny kolmé čáry různé blízkosti, aby se oblast zastínila. Čím blíže jsou řádky k sobě, tím tmavší je oblast. Podobně, čím dále od sebe jsou čáry, tím světlejší je oblast.
Práškové stínování je metoda skicování stínování . V tomto stylu se pařezový prášek a pařezy používají k nakreslení obrázku. (Může to být barevné.) Pařezový prášek je hladký a neobsahuje žádné lesklé částice. Použitý papír by měl mít na sobě malá zrna, aby na něm zůstal prášek.
V počítačové grafice
V počítačové grafice se stínováním rozumí proces změny barvy objektu / povrchu / polygonu ve 3D scéně, založený na věcech, jako je (mimo jiné) úhel povrchu ke světlům, jeho vzdálenost od světel, jeho úhel k vlastnosti kamery a materiálu (např. funkce rozložení obousměrné odrazivosti ) k vytvoření fotorealistického efektu.
Stínování provádí během procesu vykreslování program zvaný shader .
Úhel povrchu ke zdroji světla
Stínování mění barvy tváří v 3D modelu na základě úhlu povrchu ke světelnému zdroji nebo světelným zdrojům.
První obrázek níže má vykreslené plochy rámečku, ale všechny ve stejné barvě. Rovněž zde byly vykresleny okrajové čáry, což usnadňuje viditelnost obrazu.
Druhý obrázek je stejný model vykreslený bez okrajových čar. Je těžké říct, kde končí jedna tvář krabice a další začíná.
Třetí obrázek má povoleno stínování, což činí obrázek realističtějším a usnadňuje vidění, která tvář je která.
Druhy osvětlení
Když shader vypočítá výslednou barvu, použije model osvětlení k určení množství světla odraženého v konkrétních bodech na povrchu. Různé modely osvětlení lze kombinovat s různými technikami stínování - zatímco osvětlení říká, kolik světla se odráží, stínování určuje, jak se tato informace použije k výpočtu konečného výsledku. Může například počítat osvětlení pouze v konkrétních bodech a k vyplnění zbytku použít interpolaci . Stínovač může také rozhodnout o tom, kolik světelných zdrojů vzít v úvahu atd.
Okolní osvětlení
Zdroj okolního světla představuje všesměrový světelný zdroj s pevnou intenzitou a pevnou barvou, který rovnoměrně ovlivňuje všechny objekty ve scéně (je všudypřítomný). Během vykreslování jsou všechny objekty ve scéně rozjasněny zadanou intenzitou a barvou. Tento typ světelného zdroje se používá hlavně k tomu, aby scéně poskytl základní pohled na různé objekty v ní. Jedná se o nejjednodušší typ osvětlení, který lze implementovat, a modeluje, jak může být světlo mnohokrát rozptýleno nebo odraženo , což vytváří jednotný efekt.
Okolní osvětlení lze kombinovat s okolní okluzí, aby představovalo, jak exponovaný je každý bod scény, což ovlivňuje množství okolního světla, které může odrážet. To produkuje rozptýlené nesměrové osvětlení v celé scéně a nevrhá žádné jasné stíny, ale se zatemněnými uzavřenými a chráněnými oblastmi. Výsledek je obvykle vizuálně podobný zataženému dni.
Bodové osvětlení
Světlo pochází z jednoho bodu a šíří se všemi směry.
Bodové osvětlení
Modeluje reflektor : světlo pochází od jednoho bodu a pomazánek směrem ven v kuželu .
Osvětlení plochy
Světlo pochází z malé oblasti v jedné rovině . (Realističtější model než bodový zdroj světla.)
Směrové osvětlení
Směrový světelný zdroj osvětluje všechny objekty rovnoměrně z daného směru , jako plošné světlo nekonečné velikosti a nekonečné vzdálenosti od scény; tam je stínování, ale nemůže to být žádný pokles vzdálenosti. Je to jako slunce .
Vzdálenost spadu
Teoreticky jsou dva povrchy, které jsou rovnoběžné, osvětleny prakticky stejným množstvím ze vzdáleného neblokovaného zdroje světla, jako je slunce. Účinek poklesu vzdálenosti produkuje obrazy, které mají větší stínování, a tak by byly realistické pro blízké zdroje světla.
Levý obrázek nepoužívá pokles vzdálenosti. Všimněte si, že barvy na předních stranách obou polí jsou přesně stejné. Může se zdát, že existuje mírný rozdíl, když se obě tváře přímo překrývají, ale jedná se o optický klam způsobený svislou hranou pod místem, kde se obě tváře setkávají.
Správný obrázek využívá pokles vzdálenosti. Všimněte si, že přední strana bližšího boxu je jasnější než přední strana zadního boxu. Jak se podlaha vzdaluje, podlaha také přechází ze světla do tmy.
Výpočet
Pokles vzdálenosti lze vypočítat několika způsoby:
-
Síla vzdálenosti - Pro daný bod ve vzdálenosti x od zdroje světla je přijatá intenzita světla úměrná 1 / x n .
- Žádné ( n = 0 ) - Přijatá intenzita světla je stejná bez ohledu na vzdálenost mezi bodem a zdrojem světla.
- Lineární ( n = 1 ) - Pro daný bod ve vzdálenosti x od zdroje světla je přijatá intenzita světla úměrná 1 / x .
- Kvadratický ( n = 2 ) - Takto se ve skutečnosti snižuje intenzita světla, pokud má světlo volnou cestu (tj. Ve vzduchu není žádná mlha nebo jiná věc, která může absorbovat nebo rozptýlit světlo). Pro daný bod ve vzdálenosti x od zdroje světla je přijímaná intenzita světla úměrná 1 / x 2 .
- Lze také použít libovolný počet dalších matematických funkcí .
Stínovací techniky
Během stínování je pro výpočet osvětlení často potřebná normální plocha . Normály lze předpočítat a uložit pro každý vrchol modelu.
Ploché stínování
Zde je osvětlení vyhodnoceno pouze jednou pro každý polygon (obvykle pro první vrchol v polygonu, ale někdy pro těžiště pro trojúhelníková oka), na základě normálu povrchu polygonu a předpokladu, že všechny polygony jsou ploché. Vypočítaná barva se používá pro celý mnohoúhelník, takže rohy vypadají ostře. To se obvykle používá, když jsou pokročilejší techniky stínování příliš výpočetně nákladné. Zrcadlová světla jsou vykreslena špatně s plochým stínováním: Pokud se v reprezentativním vrcholu stane velká zrcadlová složka, je tento jas rovnoměrně vykreslen po celé ploše. Pokud zrcadlové zvýraznění nespadne na reprezentativní bod, je zcela vynecháno. V důsledku toho komponenta zrcadlového odrazu obvykle není zahrnuta do výpočtu plochého stínování.
Hladké stínování
Na rozdíl od plochého stínování, kde se barvy mění diskontinuálně na hranicích polygonů, s plynulým stínováním se barva mění od pixelu k pixelu, což vede k plynulému barevnému přechodu mezi dvěma sousedními polygony. Obvykle se hodnoty nejprve počítají ve vrcholech a bilineární interpolace se používá k výpočtu hodnot pixelů mezi vrcholy polygonů. Typy hladkého stínování zahrnují stínování Gouraud a stínování Phong .
Gouraudovo stínování
- Určete normálu pro každý vrchol mnohoúhelníku.
- Aplikujte osvětlovací model na každý vrchol a vypočítejte intenzitu světla z normálu vrcholu.
- Interpolujte intenzity vrcholů pomocí bilineární interpolace přes povrchový polygon.
Problémy:
- Vzhledem k tomu, že osvětlení se počítá pouze na vrcholech, mohou být nepřesnosti (zejména zrcadlové zvýraznění velkých trojúhelníků) příliš patrné.
- T-křižovatky s přilehlými polygony mohou někdy vést k vizuálním anomáliím. Obecně je třeba se vyhnout T-spojům.
Phong stínování
Stínování Phong je podobné stínování Gouraud, až na to, že místo interpolace intenzit světla jsou normály interpolovány mezi vrcholy a osvětlení je vyhodnocováno podle jednotlivých pixelů. Zrnitá zvýraznění jsou tedy počítána mnohem přesněji než v modelu stínování Gouraud.
- Vypočítejte normální N pro každý vrchol mnohoúhelníku.
- Pomocí bilineární interpolace vypočítáme normální, N i pro každý pixel. (Normální musí být pokaždé renormalizováno.)
- Aplikujte osvětlovací model na každý pixel a vypočítejte intenzitu světla z N i .
Odložené stínování
Odložené stínování je stínovací technika, při které je výpočet stínování odložen na pozdější fázi vykreslením ve dvou průchodech, což potenciálně zvyšuje výkon tím, že se nezruší nákladně stínované pixely. První průchod zachycuje pouze povrchové parametry (například hloubku, normály a parametry materiálu), druhý provádí skutečné stínování a vypočítává konečné barvy.
Další přístupy
Oba Gouraud stínování a Phong stínování může být implementován pomocí bilineární interpolace . Bishop a Weimer navrhli použít Taylorovo rozšíření výsledného výrazu z aplikace modelu osvětlení a bilineární interpolace normálů. Proto byla použita polynomiální interpolace druhého stupně . Tento typ bikvadratické interpolace dále rozpracovali Barrera et al., Kde byl k interpolaci rozptýleného světla Phongova reflexního modelu použit jeden polynom druhého řádu a pro zrcadlové světlo byl použit další polynom druhého řádu.
Sférickou lineární interpolaci ( Slerp ) použili Kuij a Blake k výpočtu normály přes polygon i vektoru ve směru ke zdroji světla. Podobný přístup navrhl Hast, který využívá čtvercovou interpolaci normálů s výhodou, že normální bude mít vždy délku jednotky a výpočetně těžké normalizaci se zabrání.
Ploché vs. hladké stínování
Byt | Hladký |
---|---|
Používá stejnou barvu pro každý pixel v obličeji - obvykle barvu prvního vrcholu | Hladké stínování používá lineární interpolaci barev nebo normálů mezi vrcholy |
Hrany se zdají být výraznější, než by tomu bylo u skutečného objektu, protože ve skutečnosti jsou téměř všechny hrany poněkud zaoblené | Okraje touto technikou zmizí |
Stejná barva pro jakýkoli bod obličeje | Každý bod obličeje má svou vlastní barvu |
Jednotlivé tváře jsou vizualizovány | Vizualizujte podkladovou plochu |
Nevhodné pro hladké předměty | Vhodné pro všechny předměty |
Méně výpočetně nákladné | Výpočtově nákladnější |
Počítačové vidění
V počítačovém vidění jsou některé metody pro 3D rekonstrukci založeny na stínování nebo tvarování od stínování . Na základě stínování obrazu lze z jedné fotografie rekonstruovat trojrozměrný model.
Viz také
- Shader
- Seznam běžných stínovacích algoritmů
- Seznam výtvarných technik
- Zebra prokládání pro vizualizaci zakřivení
- Lambertova odrazivost