Stínování

Stínování v počítačové grafice je obraz pro vnímání hloubky v trojrozměrných modelech nebo ilustracích využívajících různé úrovně temnoty [1] .

Kreslení

Stínování se používá v malbě k zobrazení úrovní tmavosti na papíře nanesením inkoustu nebo tužky hustěji nebo s tmavším odstínem pro tmavé oblasti a méně hustým nebo světlejším odstínem pro světlé oblasti. Existují různé metody stínování, včetně šrafování, kdy jsou do mřížky nakresleny kolmé čáry s různou blízkostí, které zastíní oblast. Čím blíže jsou čáry, tím je oblast tmavší. Stejně tak čím dále jsou čáry od sebe, tím je oblast světlejší.

Světelné vzory, jako jsou objekty, které mají světla a stíny, pomáhají vytvářet iluzi hloubky na papíře. [2]

Počítačová grafika

V počítačové grafice se stínováním rozumí proces změny barvy objektu/povrchu/polygonu ve 3D scéně na základě faktorů, jako je (ale nejen) úhel povrchu ke světlům, vzdálenost od světel, úhel ke kameře a materiál (např. distribuční funkce obousměrný odraz) pro vytvoření fotorealistického efektu. Stínování se provádí během procesu vykreslování programem zvaným shader.

Úhel ke zdroji světla

Stínování mění barvy tváří ve 3D modelu na základě úhlu povrchu světelného zdroje nebo světelných zdrojů.

První obrázek níže ukazuje okraje rámu, ale všechny mají stejnou barvu. Také zde byly nakresleny okrajové linie, díky nimž je obraz lépe vidět.

Druhý obrázek je stejný model, zobrazený bez okrajových čar. Je těžké říct, kde jedna tvář postavy končí a kde začíná druhá.

Třetí obrázek má zapnuté stínování, díky čemuž je obrázek realističtější a lépe vidět postavu.

Osvětlení

Zastínění závisí také na použitém osvětlení. Obvykle se při vykreslování scény používá několik různých metod osvětlení, aby bylo vykreslení realističtější. Pro dosažení různých efektů se používají různé typy světelných zdrojů.

Ambientní osvětlení

Okolní zdroj světla je všesměrový zdroj světla s pevnou intenzitou a pevnou barvou, který působí na všechny objekty ve scéně stejně. Při vykreslování se všechny objekty ve scéně rozjasní se 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 se světlo může mnohokrát rozptylovat nebo odrážet a vytvářet jednotný efekt.

Okolní osvětlení lze zkombinovat s okolní okluzí a ukázat, jak je každý bod ve scéně exponován, což ovlivňuje množství okolního světla, které může odrážet. To vytváří rozptýlené, nesměrové osvětlení v celé scéně, které nevrhá tvrdé stíny, ale vytváří stínované, uzavřené a chráněné oblasti. Výsledek je obvykle vizuálně podobný zataženému dni.

Směrové osvětlení

Směrový zdroj světla osvětluje všechny předměty rovnoměrně z daného směru jako světlo oblasti nekonečné velikosti a nekonečné vzdálenosti od scény.

Bodové osvětlení

Světlo vychází z jednoho bodu a šíří se všemi směry.

Osvětlení projektoru

Modely světlometů . Světlo vychází z jednoho bodu a šíří se směrem ven v kuželu.

Osvětlení v letadle

Světlo pochází z malé oblasti v jedné rovině. Realističtější model než bodový zdroj světla.

Objemové osvětlení

Světlo vycházející z malého objemu, uzavřeného prostoru, osvětlující předměty v tomto prostoru.

Stínování je interpolováno na základě toho, jak úhel těchto světel dosáhne k objektům ve scéně. Samozřejmě tato světla mohou být a často jsou ve scéně kombinována. Renderer poté interpoluje, jak by se tato světla měla kombinovat, a vytvoří 2D obraz, který se podle toho zobrazí na obrazovce.

Snižování vzdálenosti

Teoreticky jsou dva rovnoběžné povrchy osvětleny stejným množstvím ze vzdáleného zdroje světla, jako je slunce. I když je jedna plocha dále, vaše oko vidí více na stejném místě, takže osvětlení vypadá stejně.

Levý obrázek nepoužívá redukci vzdálenosti. Všimněte si, že barvy na předních stranách obou polí jsou stejné. Zdá se, že existuje nepatrný rozdíl v tom, kde se tyto dvě tváře setkávají, ale jedná se o optický klam způsobený vertikálním okrajem pod místem, kde se tyto dvě tváře setkávají.

Správný obraz využívá zmenšení vzdálenosti. Všimněte si, jak je přední strana předního boxu jasnější než přední strana zadního boxu. Také povrch podlahy tmavne, když se vzdaluje.

Tento efekt zmenšení vzdálenosti vytváří obrazy, které vypadají realističtěji.

Zkrácení vzdálenosti lze vypočítat několika způsoby:

  • Distanční stupeň. Pro daný bod ve vzdálenosti od zdroje světla je intenzita přijímaného světla úměrná .
    • Ne (n=0). Výsledná 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 intenzita přijímaného světla úměrná 1/x.
    • Kvadratický (n = 2) je způsob, jakým se intenzita světla ve skutečnosti snižuje, pokud má světlo volnou dráhu (tj. ve vzduchu není žádná mlha ani žádná jiná látka, která může světlo absorbovat nebo rozptylovat). Pro daný bod ve vzdálenosti x od zdroje světla je intenzita přijímaného světla úměrná .
  • Můžete také použít libovolný počet dalších matematických funkcí.

Interpolační metody

Při výpočtu jasu povrchu v době vykreslování náš model osvětlení vyžaduje, abychom znali normálu povrchu. 3D model je však obvykle popsán pomocí polygonové sítě, která může uložit normálu povrchu pouze v omezeném počtu bodů, obvykle buď ve vrcholech nebo plochách polygonu, nebo obojí. Chcete-li tento problém vyřešit, můžete použít jednu z několika metod interpolace.

Rovinné stínování

Zde se barva vypočítá pro jeden bod na každém mnohoúhelníku (obvykle první vrchol v mnohoúhelníku, ale někdy se pro trojúhelníkové sítě používá těžiště) na základě normálního povrchu mnohoúhelníku a předpokladu, že všechny polygony jsou rovinné. Poté se na libovolném místě barva interpoluje obarvením všech bodů na mnohoúhelníku stejně jako bod, pro který byla barva vypočtena, čímž se každému mnohoúhelníku získá jednotná barva (podobná interpolaci nejbližšího souseda ). Obvykle se tato technika používá pro vysokorychlostní vykreslování, kde jsou pokročilejší techniky stínování příliš výpočetně nákladné. V důsledku plošného stínování jsou všechny vrcholy polygonu vybarveny stejnou barvou, což umožňuje rozlišit sousední polygony. Zrcadlová světla se s rovinným stínováním nevykreslují dobře: pokud má reprezentativní vrchol velkou zrcadlovou složku, je tento jas vykreslen rovnoměrně po celé ploše. Pokud zrcadlová oblast nespadá do reprezentativního bodu, je zcela přeskočena. Zrcadlová složka proto obvykle není zahrnuta do výpočtu rovinného stínování.

Hladké stínování

Na rozdíl od rovinného stínování, kde se barvy mění na okrajích mnohoúhelníku, plynulé stínování mění barvu z pixelu na pixel, což má za následek hladký barevný přechod mezi dvěma sousedními polygony. Obvykle se hodnoty nejprve vypočítají ve vrcholech a poté se k výpočtu hodnot pixelů mezi vrcholy polygonů použije bilineární interpolace.

Mezi typy hladkého stínování patří:

Guro stínování
  1. Určete normálu v každém vrcholu mnohoúhelníku.
  2. Aplikujte model osvětlení na každý vrchol, abyste vypočítali intenzitu světla z normály vrcholu.
  3. Interpolujte intenzitu vrcholu pomocí bilineární interpolace přes povrch polygonu.
Struktura dat
  • Někdy lze normály vrcholů vypočítat přímo (např. pole výšky s jednotnou mřížkou)
  • Obecně pro mřížku potřebujete datovou strukturu
  • Klíč: které polygony se vyskytují v každém vrcholu.
Výhody

Mnohoúhelníky, složitější než trojúhelníky, mohou mít také různé barvy specifikované pro každý vrchol. V těchto případech může být základní logika stínování složitější.

Problémy
  • Ani hladkost poskytovaná gouraudovým stínováním nemůže zabránit rozdílům mezi sousedními polygony.
  • Guro stínování je náročnější na CPU a může být problémem při vykreslování prostředí v reálném čase s mnoha polygony.
  • T-křižovatky se sousedními polygony mohou někdy vést k vizuálním anomáliím. Obecně je třeba se vyhnout T-spojům.

Odkazy

  1. Grafika:  Stínování . hexianghu . Získáno 27. května 2021. Archivováno z originálu dne 28. dubna 2021.
  2. Návod na stínování, Jak stínovat v kresbě (downlink) . Dueysdrawings.com (2007-06-21. Staženo 2012-02-11.). Získáno 18. června 2019. Archivováno z originálu dne 24. dubna 2017. 
  3. Gouraud, Henry. Kontinuální stínování zakřivených povrchů // IEEE Transactions on Computers .. - 1971. - No. C-20 (6) . — S. 623–629 . - doi : 10.1109/TC.1971.223313. .
  4. B.T. Phong,. Osvětlení pro počítačem generované obrázky, Communications of ACM 18 (1975), no. 6. - S. 311-317 .