Stínování - Shading
tento článek potřebuje další citace pro ověření.Květen 2007) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Stínování odkazuje na vyobrazení vnímání hloubky v 3D modely (v oboru 3D počítačová grafika ) nebo ilustrace (v vizuální umění ) změnou úrovně tma.[1] 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 stínové mapování nebo stínové objemy, které spadají pod globální chování světla.
Ve výkresu
Stínování se tradičně používá v výkres 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. Světelné vzory, například objekty se světlými a stínovanými oblastmi, pomáhají při vytváření iluze hloubky na papíře.[2][3]
Existují různé techniky stínování, včetně šrafování, kde jsou ve vzoru mřížky zakresleny kolmé čáry s různou blízkostí k zastínění oblasti. Čím blíže jsou čáry 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 kreslení stínování metoda. V tomto stylu je pařezový prášek a papír pařezy slouží k nakreslení obrázku. (Může to být barva.) 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á grafika, stínování odkazuje na proces změny barvy objektu / povrchu / polygonu ve 3D scéně, založený na věcech jako (mimo jiné) úhel povrchu ke světlům, jeho vzdálenost od světel, jeho úhel ke kameře a materiálu vlastnosti (např funkce distribuce obousměrné odrazivosti ) k vytvoření a fotorealistické účinek.
Stínování se provádí během vykreslování proces programem zvaným a 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 a 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 vypočítat osvětlení pouze v určitých bodech a použití interpolace vyplnit zbytek. Shader 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í. Toto je nejjednodušší typ osvětlení, který lze implementovat, a modeluje, jak lze světlo rozptýlit nebo odráží mnohokrát, čímž vytváří jednotný efekt.
Okolní osvětlení lze kombinovat s ambient occlusion reprezentovat, jak exponovaný je každý bod scény, ovlivňující 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 jediného směřovat a šíří se všemi směry.
Bodové osvětlení
Modely a reflektor: světlo pochází z jednoho bodu a šíří se ven v a kužel.
Osvětlení plochy
Světlo pochází z malé oblasti na jedné letadlo. (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ěr, 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. To je jako slunce.
Vzdálenost spadu
Teoreticky dva povrchy, které jsou paralelní jsou osvětleny prakticky stejným množstvím z a vzdálený neblokovaný světelný zdroj, 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 je mírný rozdíl, když se obě tváře přímo překrývají, ale toto je optická iluze 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 na dálku X ze zdroje světla je přijatá intenzita světla úměrná 1/Xn.
- Žá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 na dálku X ze 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. Ne mlha nebo cokoli jiného ve vzduchu, co může absorbovat nebo rozptyl světlo). Pro daný bod na dálku X ze zdroje světla je přijatá intenzita světla úměrná 1/X2.
- Libovolný počet dalších matematické funkce lze také použít.
Stínovací techniky
Během stínování a povrch normální je často potřebný pro výpočet osvětlení. Normály lze předpočítat a uložit pro každý vrchol modelu.
Ploché stínování
Zde se osvětlení vyhodnocuje pouze jednou pro každý polygon (obvykle pro první vrchol v polygonu, ale někdy pro těžiště pro trojúhelníkové sítě) na základě normálu povrchu mnohoúhelníku 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ý zvýraznění jsou špatně vykreslena 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 přechodu barev 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ů. Mezi typy plynulého stínování patří Gouraudovo stínování[4] a Phong stínování.[5]
Gouraudovo stínování
- Určete normálu pro každý vrchol mnohoúhelníku.
- Použít model osvětlení do každého vrcholu pro výpočet intenzity světla z normálu vrcholu.
- Interpolujte intenzity vrcholů pomocí bilineární interpolace přes povrchový mnohoúhelník.
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.
- Použitím bilineární interpolace vypočítat normální, Ni pro každý pixel. (Normální musí být pokaždé renormalizováno.)
- Použít model osvětlení ke každému pixelu pro výpočet intenzity světla z Ni.
Další přístupy
Oba Gouraudovo stínování a Phong stínování lze implementovat pomocí bilineární interpolace. Bishop a Weimer [6] navrhuje použít a Taylor série rozšíření výsledného výrazu z aplikace model osvětlení a bilineární interpolace normálů. Proto druhého stupně polynomiální interpolace byl použit. Tento typ bikvadratické interpolace dále rozpracovali Barrera et al.,[7] kde jeden polynom druhého řádu byl použit k interpolaci rozptýleného světla Phongův reflexní model a pro zrcadlové světlo byl použit další polynom druhého řádu.
Sférická lineární interpolace (Slerp ) používali Kuij a Blake[8] pro výpočet jak normálu přes mnohoúhelník, tak i vektoru ve směru ke zdroji světla. Podobný přístup navrhl Hast,[9] který používá čtveřice interpolace normálů s výhodou, že normál bude mít vždy délku jednotky a bude zabráněno výpočetně těžké normalizaci.
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 byly na reálném 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é vidění, některé metody pro 3D rekonstrukce jsou založeny na stínování, nebo tvar od stínování. Na základě stínování obrazu lze z jedné fotografie rekonstruovat trojrozměrný model.[10]
Viz také
- Shader
- Seznam běžných stínovacích algoritmů
- Seznam výtvarných technik
- Zebra pruhování vizualizace zakřivení
Reference
- ^ „Graphics: Shading“. hexianghu.com. Citováno 2019-09-10.
- ^ "Techniky kreslení". Kreslení s důvěrou. Archivovány od originál 24. listopadu 2012. Citováno 19. září 2012.
- ^ "Výukový program stínování, Jak stínovat při kreslení". Dueysdrawings.com. 21. 06. 2007. Citováno 2012-02-11.
- ^ Gouraud, Henri (1971). Msgstr "Kontinuální stínování zakřivených ploch". Transakce IEEE na počítačích. C-20 (6): 623–629. doi:10.1109 / T-C.1971.223313.
- ^ B. T. Phong, Osvětlení pro počítačem generované obrázky, Komunikace ACM 18 (1975), č. 1 6, 311–317. (PDF )
- ^ Gary Bishop a David M. Weimer. 1986. Rychlé stínování Phong. Výpočet SIGGRAPH. Graf. 20, 4 (srpen 1986), 103–106.
- ^ T. Barrera, A. Hast, E. Bengtsson. Rychlé stínování softwaru v kvalitě Phong. WSCG'06, s. 109–116. 2006
- ^ Kuijk, A. A. M. a E. H. Blake, Rychlejší Phong stínování pomocí úhlové interpolace. Fórum počítačové grafiky 8(4):315–324. 1989 (PDF )
- ^ A. Hast. Stínování pomocí kvartérní interpolace. WSCG'05. str. 53–56. 2005.
- ^ Horn, Berthold K.P. "Tvar ze stínování: Metoda pro získání tvaru hladkého neprůhledného objektu z jednoho pohledu." (1970). (PDF )