Umbrire

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Umbrirea (în engleză shading ), în grafica computerizată , este modul în care lumina interacționează cu plasa poligonului , bazată pe absorbția sau reflexia luminii, unghiul de incidență și unghiul de vizualizare [1] și alte caracteristici.

Aspecte teoretice

În realitate, vedem de ce ochii noștri detectează lumina care sări de pe obiecte. Aspectul unei suprafețe este astfel determinat de modul precis în care interacționează cu lumina, care este deci determinată de structura și compoziția materialului.

Specular And Diffuse Reflection.svg

În lumea reală, suprafețele opace, cum ar fi roca și cauciucul, au o textură aspră la scară microscopică. Lumina sare de pe ele în toate direcțiile și, ca rezultat, lumina reflectată pe care o vedeți nu are nimic de-a face cu direcția din care priviți la suprafață. Aceasta se numește reflecție difuză (reflexie difuză, în engleză). În schimb, suprafețele lucioase sunt relativ netede, chiar și la scară microscopică. Aceasta înseamnă că veți vedea o reflexie perfectă atunci când priviți spre suprafață și, pe măsură ce punctul de vedere se schimbă, ceea ce se reflectă schimbă direcția. Aceasta se numește specular reflex (specular sau mirror mirror, în engleză).

Cu toate acestea, în lumea graficelor pe computer, sunt folosite scurtături pentru a obține aspectul materialelor reale. De exemplu, luând în considerare reflexia speculară: deși este posibilă redarea reflexiilor speculare, aceasta este o operație mai lentă decât redarea reflexiilor difuze, deoarece există algoritmi mai simpli care aproximează efectul reflexiilor difuze. Deci, redarea reflexiilor difuze poate fi extrem de rapidă, dar redarea reflexiilor speculare necesită o prelucrare intensivă a urmăririi razelor . [2] Pentru a rezolva această problemă, considerăm uneori doar cele mai evidente lucruri pe care o suprafață le poate reflecta, cum ar fi luminile strălucitoare.

Majoritatea modelelor de umbrire , într-un fel sau altul, sunt concepute pentru a surprinde procesul de reflecție al luminii. [3]

Modele de umbrire

Umbre plate

Umbrire plată

Numită și umbrire constantă , aceasta este umbrirea „numărului zero”. Fiecare vârf al fiecărui triunghi al plasei poligonale este ales ca vârf cheie pentru acel triunghi. Ecuația de iluminare este executată pentru a calcula valoarea de iluminare pentru acel vârf și întregul triunghi este investit cu o copie a acelei valori. [4]

Umbrirea plană poate fi potrivită pentru piramide, dar atunci când o plasă de triunghiuri aproximează o suprafață curbată, cum ar fi delfinul, atunci este necesar un model de umbrire mai sofisticat. Oricât de mare ar putea fi numărul de vârfuri ale rețelei, aproximarea rămâne întotdeauna evidentă și este, de asemenea, evident contraproductivă în ceea ce privește performanța de calcul. [4]

Umbrire Lambertiană

Geometria umbririi Lambert

Cel mai simplu model de umbrire se bazează pe o observație făcută de Johann Heinrich Lambert în secolul al XVIII-lea: cantitatea de energie dintr-o sursă de lumină care cade pe zona unei suprafețe depinde de unghiul de incidență al luminii față de suprafață. O suprafață care privește direct la o sursă de lumină primește iluminare maximă; o suprafață tangentă la direcția luminii (sau privirea departe de sursă) nu primește nicio iluminare; iar la mijloc iluminarea este proporțională cu cosinusul unghiului între suprafața normală și sursa de lumină. Acest lucru duce la modelul de umbrire al lui Lambert: [3]

unde este este culoarea pixelului; este coeficientul de difuzie sau culoarea suprafeței; Și este intensitatea sursei de lumină. Atâta timp cât Și sunt vectori unitari, putem folosi ca formă scurtă convenabilă (atât pe hârtie, cât și în cod) pentru .

Această ecuație se aplică separat celor trei canale de culoare, astfel încât componenta roșie a valorii pixelilor este produsul componentei difuze de roșu, intensitatea sursei de lumină roșie și produsul vectorilor; la fel pentru verde și albastru. [3]

Vectorul se calculează scăzând punctul de intersecție dintre rază și suprafață din poziția sursei de lumină. Nu uita asta , Și trebuie să fie toți vectori unitari; eșecul de a normaliza acești vectori este o eroare foarte frecventă în calculele de umbrire.

Umbrire Blinn-Phong

Geometria de umbrire Blinn-Phong

Umbrirea lambertiană este independentă de vedere: culoarea unei suprafețe nu depinde de direcția din care priviți. Multe suprafețe reale prezintă unele grade de strălucire, producând puncte de lumină sau reflexii speculare, care par să se miște în jurul suprafeței pe măsură ce punctul de vedere se schimbă. Nuanțarea lambertiană nu produce lumină și are ca rezultat un aspect foarte plictisitor și palid. Multe modele de umbrire adaugă o componentă oglindă umbririi lambertiene; partea lambertiană este astfel componenta difuză. [3]

Un model foarte simplu și utilizat pe scară largă pentru punctele de lumină speculare a fost propus de Bui Tuong Phong în 1975 și ulterior actualizat - în forma cea mai frecvent utilizată astăzi - de Jim Blinn în 1976. [3] În loc să interpoleze valorile de iluminare calculate. fiecare vârf (ca în umbrarea Gouraud), umbrirea Blinn-Phong interpolează vârful normal, direcția sursei de lumină și direcția punctului de vedere de-a lungul unui triunghi și calculează formula de iluminare pentru fiecare pixel. [5] Ideea este de a produce o reflecție care este cea mai strălucitoare când Și acestea sunt poziționate simetric de-a lungul suprafeței normale și atunci ar avea loc reflexia speculară; prin urmare, reflexia scade ușor pe măsură ce vectorii se îndepărtează de o configurație speculară.

Blinn phong comparison.png

Putem spune cât de aproape suntem de o configurație oglindă comparând vectorul (împărțind unghiul dintre Și ) la suprafața normală . Dacă vectorul este aproape de suprafața normală, componenta speculară ar trebui să fie luminoasă; dacă este departe, ar trebui să fie slabă. Acest rezultat se obține prin calcularea produsului scalar între Și (trebuie să ne amintim că sunt vectori unitari, prin urmare este egal cu maximum 1, când vectorii sunt egali), iar apoi aducând rezultatul la o putere pentru a o face să scadă rapid. Puterea, sau exponentul lui Phong , controlează strălucirea aparentă a suprafeței. Vectorul în sine este ușor de calculat: de vreme ce Și au aceeași lungime, suma lor este un vector care împarte unghiul dintre ele, care trebuie doar normalizat pentru a produce .

Colectând toate aceste informații, modelul de umbrire al lui Blinn-Phong este: [3]

unde este este coeficientul specular , culoarea speculară a suprafeței.

Ecuația standard de umbrire

Culoarea reflectată calculat la punct pe o suprafață luminată de luminile sunt date de [5] :

unde produsele scalare Și sunt setate la zero, iar cantitățile implicate sunt definite după cum urmează:

  • = culoarea reflexiei difuze
  • = culoarea reflexiei speculare
  • = exponent specular
  • = culoarea luminii ambientale
  • = culoarea problemei
  • = culoarea hărții texturii
  • = culoarea hărții lucioase
  • = culoarea hărții de emisii
  • = culoarea luminii a-a aprinsă
  • = vectorul de direcție spre lumina a i-a
  • = vector pe jumătate pentru lumina a-a
  • = vector normal

Gouraud Shading

Umbrirea Gouraud, numită după Henri Gouraud , este o metodă utilizată în grafica computerizată pentru a simula diferitele efecte ale luminii și culorii asupra unui obiect. În practică, se folosește pentru a obține o schimbare gradată a culorii pe suprafețe cu poligon redus , fără a fi nevoie să recurgă la greutatea de calcul a calculului pixel cu pixel. Gouraud a publicat această cercetare pentru prima dată în 1971.

Gouraud Shading
Sferă tratată cu umbrire Gouraud - rețineți inexactitățile de-a lungul laturilor poligoanelor.
Aceeași sferă s-a reprodus cu un număr mare de poligoane.

Principiul pe care se bazează tehnica Gouraud este următorul:

  1. Se determină normalul fiecărui vârf al fiecărui poligon
  2. Un model de iluminare este aplicat fiecărui vârf pentru a calcula intensitatea vârfului
  3. Intensitățile vârfurilor sunt interpolate utilizând interpolare biliniară pe suprafața poligoanelor

Înainte de apariția hardware-ului grafic capabil să efectueze calcule de iluminare pixel cu pixel, culorile difuze și speculare erau calculate doar la fiecare vârf al unei rețele triunghiulare. Această metodă calculează culorile [5] :

unde este:

  • = culoarea reflexiei difuze
  • = culoarea reflexiei speculare
  • = exponent specular
  • = culoarea luminii ambientale
  • = culoarea problemei
  • = culoarea luminii a-a aprinsă
  • = vectorul de direcție spre lumina a i-a
  • = vector pe jumătate pentru lumina a-a
  • = vector normal

la fiecare vârf și le interpolează de-a lungul feței triunghiului. Culoare unui pixel este apoi calculat folosind ecuația

unde fiecare reprezintă o culoare eșantionată dintr-una din harta texturii și operațiunea este una dintre mai multe operații de combinație disponibile care includ modularea și adăugarea.

Punctele tari și punctele slabe ale umbririi Gouraud se află atât în ​​utilizarea interpolării sale.

Interpolarea culorilor diferiților pixeli (știind doar câțiva cu precizie) ușurează calculul în comparație cu modelele mai sofisticate (cum ar fi umbrirea Phong, care nu trebuie confundată cu modelul de reflecție omonim ). Cu toate acestea, efectele de lumină localizate (cum ar fi punctele reflectorizante, cum ar fi reflexia unei surse de lumină pe un măr) nu vor fi redate corect: dacă efectul este poziționat în centrul poligonului, fără a atinge vârfurile, acesta nu va apărea ca un rezultat. Redarea lui Gouraud; dacă același efect este plasat pe un vârf, acesta va fi afișat corect, dar va fi reprodus nefiresc pe poligoanele adiacente. Problema este ușor de recunoscut dacă redați o scenă în care sursa de lumină se mișcă, mișcând reflexia prezentă pe obiectul în cauză, cu umbrirea Gouraud veți vedea reflexia lărgindu-se și strângându-se continuu, atingând vârfurile de intensitate din vârfuri. Și dispărând în centrul poligoanelor.

În ciuda problemelor descrise, umbrirea concepută de Gouraud este mult mai bună decât umbrirea plană, care necesită mult mai puține calcule, dar produce un rezultat cu mai multe fațete.

Umbrire ambientală

Fundal: În lumea reală, suprafețele care nu sunt iluminate de surse de lumină sunt iluminate de reflecții indirecte de la alte suprafețe.

Suprafețele care nu primesc nicio iluminare vor deveni complet negre, ceea ce deseori nu este de dorit. O metodă euristică brută, dar utilă pentru evitarea umbrelor negre este aceea de a adăuga o componentă constantă la modelul de umbrire, a cărui contribuție la culoarea pixelilor depinde doar de incidența asupra obiectului, fără nicio dependență de geometria suprafeței. [3] Aceasta este cunoscută sub numele de umbrire ambientală - unde suprafețele sunt iluminate de lumina „ambientală” care ajunge în mod egal din toate părțile. Pentru comoditate în ajustarea parametrilor, umbrirea ambientală este de obicei exprimată ca produsul unei culori de suprafață cu o culoare de lumină ambientală, astfel încât umbrirea ambientală poate fi ajustată atât pentru suprafețe individuale, cât și pentru toate suprafețele. Împreună cu modelul Blinn-Phong, umbrirea ambientală completează un model de umbrire simplu și util:

unde este este coeficientul de mediu al suprafețelor sau „culoarea ambiantă”, e este intensitatea luminii ambientale.

Notă

  1. ^ Roland Hess, The Essential Guide to Learning Blender .
  2. ^ Ben Simonds, Blender Master Class .
  3. ^ a b c d e f g Marschner, Shirley, Fundamentals of Computer Graphics .
  4. ^ a b John F. Hughes, Andries Van Dam, Morgan Mcguire, David F. Sklar, James D. Foley, Steven K. Feiner, Kurt Akeley, Computer Graphics: Principles and Practice , ed. a 3-a ..
  5. ^ a b c Eric Lengyel, Matematică pentru programarea jocurilor 3D și grafică pe computer , ediția a 3-a ..

Bibliografie

Elemente conexe

linkuri externe

Controlul autorității GND ( DE ) 4266674-0
Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT