Stínování - Shading

Ploché stínování popisuje řadu jednoduchých technik osvětlení. V tomto případě je hodnota osvětlení určena pro každou tvář jednou. Hodnotu barvy lze také určit pro každý objekt nebo vrchol.
Gouraudovo stínování (1971) zlepšilo vzhled zakřivených objektů.
Interpolace stínování Phong , realističtější stínovací technika vyvinutá Bui Tuong Phongem v roce 1973

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

Stínování Gouraud , vyvinuté Henri Gouraudem v roce 1971, bylo jednou z prvních stínovacích technik vyvinutých pro 3D počítačovou grafiku .

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á.

Vykreslený obrázek krabice. Tento obrázek nemá na svých plochách žádné stínování, ale místo toho používá hranové čáry (známé také jako drátový model ) k oddělení ploch a odvážnější obrys k oddělení objektu od pozadí.
Toto je stejný obrázek s odstraněnými řádky; jedinou indikací vnitřní geometrie jsou body siluety objektu .
Jedná se o stejný objekt vykreslený s plochým stínováním . Barva 3 viditelných čelních ploch byla nastavena na základě jejich úhlu (určeného normálním vektorem ) ke světelným zdrojům.

Druhy osvětlení

Stínovací efekty ze světlometu pomocí paprskového stopovače

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

Dvě pole vykreslená pomocí OpenGL . (Všimněte si, že barva obou předních ploch je stejná, i když je jedna dále.)
Stejný model vykreslený pomocí nástroje ARRIS CAD , který implementuje pokles vzdálenosti, aby byly povrchy blíže k oku jasnější.

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í

Ploché stínování texturovaného kvádru

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í
  1. Určete normálu pro každý vrchol mnohoúhelníku.
  2. Aplikujte osvětlovací model na každý vrchol a vypočítejte intenzitu světla z normálu vrcholu.
  3. 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.

  1. Vypočítejte normální N pro každý vrchol mnohoúhelníku.
  2. Pomocí bilineární interpolace vypočítáme normální, N i pro každý pixel. (Normální musí být pokaždé renormalizováno.)
  3. 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í

Rekonstrukce „ Tvar ze stínová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é

Reference

Další čtení