Blog

CG educational blog focused on look development.

Ghidul începătorului în shading ( Noțiuni de bază )

 Salutare tuturor! Astăzi voi începe o serie de articole despre shading, plecand de la elementele de bază (în mare parte noțiuni teoretice) și continuând cu articole din ce în ce mai specializate în materie de look development. Noțiunile prezentate aici sunt aplicabile în orice arie a CG-ului (Film, Games, Motion Graphics etc.).  

Disclaimer:  Acest articol va fi unul relativ lung, așa că înarmează-te cu cafea, așază-te confortabil și pregătește-te de o discuție despre teorie de lumină, shadere și randare plauzibilă din punct de vedere fizic. Da, știu, e o traducere ce sună puțin ambiguu, însă o să capete sens în câteva minute!  
  
Deși am decis să scriu acest articol în română (sau mai bine zis, să-l traduc pe acesta), vă recomand ca în cazul în care aveti o înțelegere de bază a limbii engleze să-i faceți o vizită și celuilalt. Motivul este destul de simplu: terminologia utilizată acolo este cea cu care vă veți întâlni în render engine-urile pe care le veți folosiți in viitor.  
  
Ceea ce urmează să citești este bazat pe înțelegerea mea despre acest subiect și pe o serie de resurse pe care le vei putea găsi la finalul articolului. În cazul în care ai vreo corecție / sugestie în legătură cu conținutul prezentat, te rog să mă contactezi aici.   
 

Și acum să trecem la subiectul propriu-zis: 

Voi incepe prin a discuta despre modul în care lumina interacționează cu obiectele din jurul nostru. Acesta este un concept pe care trebuie să-l înțelegem întrucât atunci când ne vom apuca de lucru și va trebui să reproducem materiale din realitate, vom fi nevoiți să anticipăm modul în care lumină va interacționa cu aceste materiale.

În consecință, vom putea să ne bazăm pe cunoștințe atunci când modificăm parametrii din shaderele noastre, și nu vom trage stânga-dreapta de slidere fără să avem nici cea mai mica idee ce facem! 

Teorie de lumină:

În natură, obiectele pe care le vedem reflectă lumină. Deși fizica luminii este un subiect destul de tehnic, ca artiști va trebui să înțelegem măcar noțiunile de bază:

O rază de lumină care întâlnește o suprafața ( numită rază incidentă ) este reflectată la un unghi egal cu unghiul de incidență dintre rază și suprafața respectivă (unghiul format de raza incidentă și normala pe suprafața). Raza reflectată nu va putea fi mai luminoasă decât cea care a lovit suprafața. Această regulă se numește "regula conservării de energie" și este un concept important atunci când vrem să obținem fotorealism. 

Când o rază de lumină trece dintr-un mediu in alt mediu omogen, aceasta își păstrează o traiectorie similară cu cea inițială. În cazul în care mediul în care raza de lumină trece este unul non-omogen, această rază se va lovi de particulele prezente în mediul non-omogent această se va "împrăștia" sau va fi absorbită.  
  

Ca rezultat, diferite materiale produc diferite efecte: 

  • În cazul în care o rază de lumină intră din aer în apa curată, direcția acesteia va fi similară cu direcția inițială (și spun similară deoarece această va fi schimbată de refracție, fenomen ce va fi discutat imediat). Acest lucru se întâmplă deoarece un astfel de mediu nu absoarbe prea multă lumină și nici nu o împrăștie, iar lumina trece cu ușurință. În cazul în care apa conține impurități, lumina se va izbi de particulele din apa (praf, spre exemplu) și va fi absorbită / își va schimbă traiectoria inițială. 
  • Când vine vorba de materiale precum caramelul, vopseaua sau pielea, putem observa cum culoarea acestora este mult mai deschisă în zonele mai subțiri. Motivul pentru care întâlnim acest comportament este faptul că lumina este absorbită cu atât mai mult cu cât călătorește într-un mediu.

În concluzie, de fiecare dată când o rază de lumină atinge un obiect, câteva lucruri se pot întâmpla: raza este reflectată, refractată, împrăștiată, absorbită sau o combinație dintre acestea. 

Deși sunt niște reguli de bază, simpla înțelegerea a acestora ne va oferi o bună idee despre modul în care vom creea materiale în CG! 

Shadere:

Pentru a recreea aspectul unor materiale, folosim ceva ce se cheamă shader. Un shader sau "material" în CG reprezintă (pe scurt si  pe întelesul tuturor) un set de parametri pe care îi putem modifica pentru a explică modul în care lumina interacționează cu o anumită suprafață. Aceste shadere sunt produse și disponibile în programe numite motoare de randare. Deși denumirile parametrilor din shadere pot varia, ar trebui să fie destul de ușor să identificăm cine-ce controlează, odată ce avem o bună înțelegere a comportamentului parametrilor. 
  
Să începem prin a discută despre reflexii!  
  
În natură cunoaștem două tipuri diferite de reflexie: reflexie difuză și reflexie speculară. Nu am putut găsi locul în care tragem linie între cele două, unde reflexia speculară devine reflexie difuză, însă ochiometric, putem să le diferențiem după anumite proprietăți. 

Reflexia Difuză:

Reflexia difuză, cunoscută și sub numele de reflexie Lambertiana ( după fizicianul Johann H. Lambert care a descris comportamentul acesteia) este un tip de reflexie în care o rază de lumina incidentă este împrăștiată în mod egal ( sau aproximativ egal, în funcție de modelul shaderului pe care îl folosim ) în toate direcțiile. Razele se comportă în acest mod în contact cu suprafețele ce au o structură microscopică neuniformă (despre care vom discuta imediat). 

Putem observa o reprezentare a acestui tip de reflexie în cazul materialelor precum hârtia sau creta. Reflexia difuză nu își schimbă poziția în cazul în care observatorul se miscă în jurul acesteia, un aspect ce ne poate ajuta să le identificăm cu ușurință. 

Materialele precum hârtia, roca si unele textile produc reflexie difuză.

Reflexia Speculară:

Reflexia speculară poate fi observată în cazul suprafețelor lucioase. În situații ideale, dacă mai multe raze incidente sunt paralele atunci când lovesc de o suprafață ce produce reflexie speculară, ele vor rămâne paralele și după ce au fost reflectate. Dacă reflexia difuză nu își schimbă poziția în funcție de observator, reflexia speculară o face. 

Lumea reală nu este perfectă și după cum am discutat anterior, suprafețele au o structură non-uniformă. La nivel microscopic, acestea sunt construite dintr-o mulțime de micro-fațete. În funcție de distribuția acestora, specularul (zona reflexiei cu cea mai mare intensitate ) va fi împrăștiat sau focusat, ceea ce-i va oferi suprafetei un aspect mai mult sau mai puțin lucios. 

Așadar, atunci când un material este mat, aspectul specularului este blurat si împrăstiat, iar atunci când materialul este lucios, specularul căpătă un aspect ascuțit și "focusat". Deși cantitatea de lumină reflectată este aceeași, suprafețele lucioase par a fi mai luminoase în comparație cu suprafețele mate. 

Un alt lucru care schimbă aspectul specularului este tipul de material: izotrop sau anizotrop. Nu am putut găsi prea multe informații despre anizotropie, cu excepția faptului că unele materiale precum metalul șlefuit, sunt construite din mici structuri repetitive. Datorită acestora, reflexiile și specularul produs de material au un aspect întins și direcțional. Materialele izotrope au un specular cu formă rotundă, pe când cele anizotrope au formă de elipsă. 

Exemple de anizotropie.

Fresnel este un efect ce poate fi observat cu ușurință la materialele foarte lucioase (însă toate materialele produc acest efect. O sa auzi foarte des structura "Everything has Fresnel!" :) ). Efectul Fresnel constă în faptul că materialele par a reflecta mai multă lumină pe margini decât în zonele perpendiculare privirii noastre. Există multe resurse care prezintă modul în care reflectivitatea obiectelor se schimbă în funcție de unghiul din care sunt privite, dar cea mai cunoscută este refractiveindex.info.  

După cum puteți vedea, cele două grafice compară un material plastic cu unul metalic. Reflectivitatea plasticului crește considerabil la 50 de grade, pe când metalul scade în reflectivitate la același unghi. Ambele însă ating reflectivitate maximă la 90 de grade ( reflectivitate asemănătoare cu o oglindă). Diferențele dintre conductori și non-conductori alături de efectul Fresnel vor fi discutate în mai mare detaliu într-un articol practic pe care îl voi publica în viitor. 

Acum că am discutat despre ambele tipuri de reflexie putem continua prin a vorbi despre refracție și subsurface scattering (nu am găsit o traducere exactă a acestui efect, insă se referă la imprăștierea razelor de lumina sub o suprafață), fenomene des întâlnite în CG.  

Refracția luminii:

Refracția este un fenomen care se observă atunci când lumina trece dintr-un mediu în altul. În acel moment, razele de lumina își schimbă direcția și viteza. Refracția este motivul pentru care sunt produse efecte precum dispersia luminii și deformarea imaginilor privite printr-un mediu intermediar (de exemplu sticla). 
  
Știm cât de mult razele de lumina "se îndoaie" folosind ceva ce se numește indice de refracție. Indicele de refracție al unui mediu precum sticlă, apa etc. reprezintă raportul dintre viteza luminii în vid și viteză luminii în mediul respectiv. Dacă vorbim, de exemplu, despre un material cu un indice de refracție egal cu 2, putem spune că lumina circulă în acel mediu cu o viteză de două ori mai mica decât în vid.  
  
Din fericire, cele mai multe materiale au un indice de refracție ce poate fi găsit on-line.De fiecare dată când reproducem materiale refractive trebuie să ținem cont de acest indice de refracție. 

Dispersia luminii este un fenomen în care o rază de lumina albă este refractată în raze de lumină de diferite culori. Acest fenomen produce bine-cunoscutul efect de curcubeu și este foarte util atunci când dorim să reproducem materiale precum sticlă sau bijuterii. Dispersia se întâmplă pentru că nu toate lungimile de undă ale luminii au același indice de refracție. De fapt, cu cât lungimea de undă este mai mică cu atât mai mare va fi indicele de refracție. Asta înseamnă că razele de lumina roșie, de exemplu se vor "îndoi" mai puțin decât razele de lumina verde, deoarece cele din urmă au un indice de refracție mai mare.  

Subsurface Scattering:

Subsurface scattering, de asemenea cunoscut ca SSS este un efect produs atunci când lumina trece dintr-un mediu în altul și se împrăștie în cel din urmă. În funcție de materialul în care lumina este împrăștiată, o parte a luminii va fi absorbită și cealaltă se va întoarce în mediul din care a venit. Acest efect depinde de grosimea suprafeței în care lumina este împrăștiată si de compoziția acesteia. După cum am menționat la începutul articolului, cu cât se deplasează mai mult într-un mediu, cu atât lumina este absorbită în cantitate mai mare. Acesta este motivul pentru care efectul este mult mai vizibil în părțile subțiri ale unei suprafețe. 

Acest comportament poate fi observat la materiale precum ceara, laptele, pielea etc. Atunci când este utilizat corect, efectul de SSS îmbunătățește considerabil realismul scenelor create. 

Efectul de Subsurface Scattering

Acum că știi toate aceste lucruri vei fi în stare "să supraviețuiești" indiferent de motorul de randare pe care ai decis să-l folosești. Există multe lucruri care încă mai pot fi discutate despre lumină, însă pentru moment, fenomenele prezentate ar trebui să reprezinte un bun început. 
  
Sper că ați putut învață ceva din acest articol și că acum, când vom începe să aplicăm aceste cunoștințe în CG, vom avea o fundație comună. 
  
Asta este tot! Îți mulțumesc că ai citit acest articol! Dacă ai vreo întrebare nu ezită să o adaugi în secțiunea de comentarii sau să mă contactezi utilizând secțiunea de Contact ! De asemenea, dacă ți-a plăcut acest articol și ai dori să-l împarți cu ceilalți, go for it ;)! 

Acestea sunt o parte din resursele pe care le-am folosit pentru a creea acest articol! Dacă ești interesat(ă) să înveți mai multe despre acest subiect îți recomand le "investighezi"! 

The PBR Guide. Arnold Documentation. Vray Documentation. Redshift Documentation. Neil Blevin's Article about Anisotropy. Khan Academy's Geometric opticsMathematical and Computer Programming Techniques for Computer Graphics by Peter Comninos.  RefractiveIndex.info. Images from Pixabay.