Grafică computerizată 3D

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Imagine generată cu grafică computerizată 3D

Grafica computerizată 3D este o ramură a graficii computerizate care se bazează pe elaborarea unui set de modele tridimensionale prin algoritmi care vizează producerea probabilității fotografice și optice în imaginea finală. Este utilizat în crearea și postproducerea de opere sau părți de lucrări pentru cinema sau televiziune , în jocuri video , în arhitectură , inginerie ( CAD ), în artă și în diverse domenii științifice, unde producția de conținut cu alții înseamnă nu este posibil sau nu este convenabil.

Aspecte teoretice

Schematic, metoda de producție a graficii computerizate 3D este compusă din două elemente: o descriere a ceea ce se intenționează vizualizarea (scena), compusă din reprezentări matematice ale obiectelor tridimensionale, numite „modele” și un mecanism pentru producerea unei imagini 2D din scenă, numit „motorul de redare” care are grijă de toate calculele necesare pentru crearea sa, prin utilizarea algoritmilor care simulează comportamentul luminii și proprietățile optice și fizice ale obiectelor și materialelor.

Modele 3D

Model 3D de viespe

Obiectele tridimensionale simple pot fi reprezentate cu ecuații care funcționează pe un sistem de referință cartezian tridimensional : de exemplu, ecuația x² + y² + z² = r² este perfectă pentru o sferă de rază r . Deși ecuațiile atât de simple pot părea restrictive, setul de obiecte realizabile este extins cu o tehnică numită geometrie solidă constructivă (CSG, geometrie solidă constructivă), care combină obiecte solide (cum ar fi cuburi, sfere, cilindri etc.) pentru a forma mai complexe obiecte prin operații booleene (unire, scădere și intersecție): un tub poate fi de exemplu reprezentat ca diferența dintre doi cilindri cu diametre diferite.

Cu toate acestea, aceste ecuații nu sunt suficiente pentru a descrie cu exactitate formele complexe care alcătuiesc cea mai mare parte a lumii reale, deci nu este frecvent utilizată. Pentru a modela suprafețele curbate într-un mod arbitrar, puteți utiliza patch-uri , adică extensia splinei , care aproximează curbe continue, la cele trei dimensiuni. Cele mai utilizate patch-uri sunt în principal bazate pe spline NURBS .

Utilizarea unor ecuații matematice pure, cum ar fi acestea, necesită utilizarea unei cantități mari de putere de calcul și, prin urmare, sunt impracticabile pentru aplicații în timp real, cum ar fi jocurile video și simulările. O tehnică mai eficientă, și încă cea mai răspândită și flexibilă, este modelarea poligonală sau modelarea poligonală. Acest lucru permite un nivel mai mare de detaliu, dar în detrimentul cantității mai mari de informații necesare pentru a stoca obiectul rezultat, numit model poligonal .

Un model poligonal și „fațetat”, cum ar fi o sculptură brută, poate fi totuși rafinat cu algoritmi pentru a reprezenta suprafețe curbate: această tehnică se numește „ suprafețe de subdiviziune ”. Modelul este rafinat cu un proces de interpolare iterativ, făcându-l din ce în ce mai dens cu poligoane, care vor aproxima mai bine curbele ideale, derivate matematic din diferiții vârfuri ale modelului.

Crearea scenei

O scenă poate fi compusă pornind de la „primitive”, adică modele tridimensionale reprezentând primitive geometrice, care pot fi împărțite în fețe simple sau pot fi combinate pentru a forma obiecte mai complexe. Cea mai simplă modalitate de organizare este crearea unei matrice de primitive, dar această metodă nu permite o descriere mai detaliată a scenei, pur și simplu „explică” redării cum să o deseneze. O tehnică mai avansată organizează obiectele într-o structură de date de copac ( grafic de scenă ), care permite gruparea obiectelor în mod logic (de exemplu, este posibil deci să replicăm un obiect de mai multe ori, după ce l-am modelat prin intermediul mai multor patch-uri NURBS grupate, în aceeași scenă).

Primitivele sunt în general descrise în propriul lor sistem de referință local și sunt poziționate pe scenă prin transformări adecvate. Cele mai multe transformări afine folosite, cum ar fi homothy , rotație și translație , poate fi descrisă într - un spațiu proiectiv cu un 4x4 matrice : ele sunt aplicate prin înmulțirea matricei cu patru componente vectorului care reprezintă fiecare punct de control al curbei. A patra dimensiune se numește coordonată omogenă .

O transformare este asociată cu fiecare nod al graficului de scenă , care se aplică și fiecărui nod transmis, recreând interacțiunea fizică dintre obiectele grupate (cum ar fi cea dintre un bărbat și costumul său). Chiar și în sistemele de modelare și redare care nu utilizează grafice de scenă, conceptul de transformare aplicat „vertical” este în general prezent.

Redare

Pictogramă lupă mgx2.svg Același subiect în detaliu: Redarea .

Redarea este procesul de producere a imaginii finale pornind de la modelul matematic al subiectului (scenei). Există mulți algoritmi de redare , dar toate implică proiectarea modelelor 3D pe o suprafață 2D.

Algoritmii de redare se împart în două categorii: redare scanline și ray tracer . Primele operează obiect cu obiect, desenând fiecare poligon alcătuind modelul 3d direct pe ecran; prin urmare, necesită ca toate obiectele (chiar și cele modelate cu curbe continue) să fie construite împărțite în poligoane. Acestea din urmă operează pixel cu pixel, trasând o rază vizuală imaginară din punctul de vedere al scenei și determinând culoarea pixelului din intersecțiile cu obiectele.

Una dintre funcțiile principale ale unui randator este determinarea suprafeței ascunse . Trasarea razelor îndeplinește implicit această funcție, determinând culoarea unui pixel pe baza intersecției razei vizuale cu primul obiect, dar pentru celălalt tip de algoritmi sunt necesare tehnici mai avansate pentru a determina care poligon este cel mai aproape de punctul de vedere. . Cea mai simplă metodă este de a desena poligoanele începând de la cele mai îndepărtate, astfel încât cele mai apropiate să le suprascrie; dar această tehnică, numită algoritmul pictorului,algoritmul pictorului ”, este ineficientă cu poligoane suprapuse. Pentru a rezolva această problemă, a fost dezvoltat tamponarea z , care utilizează un tampon pentru a menține coordonata z relativă la fiecare pixel procesat: dacă adâncimea poligonului care urmează să fie procesată pentru pixel este mai mică decât cea din memorie, pixelul este rescris.; altfel algoritmul merge la următorul pixel.

O imagine perfect clară cu o adâncime de câmp infinită nu este deloc fotorealistă. Ochiul uman este obișnuit cu imperfecțiuni precum flacără a obiectivului (reflecție asupra obiectivului), adâncimea de câmp limitată și estomparea mișcării („ estomparea mișcării ”) întâlnită în fotografii și filme.

Iluminare și umbrire

Imagine originală
Iluminat 1000
Iluminat 2000
Iluminat 6000

Umbrirea (lit. „umbrire”) este procesul de determinare a culorii unui pixel dat din imagine. De obicei, include procesul de iluminare (iluminare), care reconstituie interacțiunea dintre obiecte și surse de lumină: în acest scop sunt necesare pentru un model de iluminare proprietățile luminii, proprietățile de reflexie și normalul la suprafața unde se află ecuația de iluminare. calculat.

Pentru a produce o reprezentare vizuală eficientă a imaginii, trebuie simulată fizica luminii. Cel mai abstract model matematic al comportamentului luminii este ecuația de redare , bazată pe legea conservării energiei . Este o ecuație integrală , care calculează lumina într-o anumită poziție ca lumina emisă în acea poziție plus integrala luminii reflectate de toate obiectele din scenă care atinge acel punct. Această ecuație infinită nu poate fi rezolvată cu algoritmi finiți, deci are nevoie de aproximare.

Cele mai simple modele de iluminare iau în considerare doar lumina care călătorește direct de la o sursă de lumină la un obiect: aceasta se numește „iluminare directă”. Cum se reflectă lumina din obiect poate fi descris de o funcție matematică, numită funcția de distribuție a reflectanței bidirecționale (BRDF), care ia în considerare materialul iluminat. Majoritatea sistemelor de redare simplifică și calculează în continuare iluminarea directă ca suma a două componente: difuză și speculară. Componenta difuză , sau lambertiană, corespunde luminii care este respinsă de obiect în toate direcțiile, cea speculară luminii care se reflectă pe suprafața obiectului ca pe o oglindă. Modelul de reflecție al lui Phong adaugă o a treia componentă de mediu care oferă o simulare de bază a iluminării indirecte.

Obiectele sunt de fapt bombardate de multe surse de lumină indirecte: lumina „sare” de la un obiect la altul până când pierde energie. „ Iluminarea globală ” investighează acest comportament al radiației luminii. La fel ca iluminatul direct, include o componentă difuză și o componentă speculară. Reflecția reciprocă difuză se referă la lumina care lovește un obiect după ce a lovit deja altul. Deoarece aceasta a absorbit o anumită lungime de undă a spectrului luminii care a lovit-o, lumina pe care o respinge are o culoare diferită de cea de la care este iluminată. Reflecția speculară reciprocă se manifestă în general cu substanțe caustice (adică cu concentrația radiației luminii într-un punct de o suprafață speculară, cum ar fi cea obținută din lumina soarelui cu un obiectiv).

Întrucât algoritmii de iluminare globală cuprinzătoare, precum Radiosity și maparea fotonilor , necesită o putere de calcul mare, au fost dezvoltate tehnici pentru a aproxima iluminarea globală. Algoritmul de ocluzie ambientală , de exemplu, calculează câtă lumină ambientală poate atinge fiecare punct al unui model.

Modelele poligonale utilizate în aplicații în timp real nu pot avea un nivel ridicat de detaliu; cel mai simplu mod de a le lumina este să calculați o valoare a intensității luminii pentru fiecare poligon, pe baza normalului său. Această metodă se numește umbrire plană , deoarece relevă forma „plană” a fiecărui poligon. Pentru a evita această „fațetă”, valorile corespunzătoare vârfurilor trebuie interpolate. Umbrirea Gouraud calculează intensitatea luminii la fiecare vârf al modelului pe baza normalului corespunzător, apoi efectuează o interpolare liniară pe întreaga suprafață a poligonului. Cel mai evident defect al acestei tehnici este că „pierde” reflexiile speculare în apropierea centrului unui poligon. Soluția dată de umbrirea Phong este interpolarea normelor vertexului pe întreaga suprafață a poligonului și, ulterior, calcularea iluminării pixel cu pixel.

Aceste ecuații se aplică obiectelor care au propria lor culoare, dar modelarea fiecărui detaliu de pe suprafața unui obiect ar fi extrem de costisitoare. Cu maparea texturii puteți descrie suprafața unui obiect fără a adăuga complexitate scenei: o imagine ( textură ) este „răspândită” pe suprafața unui obiect, ca un planisfer pe o sferă pentru a crea un glob; în timpul umbririi , culoarea modelului este identificată în cea a texturii, în pixelul corespunzător ("texel").

Întrucât texturile nu pot reflecta iluminarea scenei, ci doar culoarea modelului, cartografierea bump este utilizată pentru a „perturba” normele poligonului. Aceasta folosește imagini care conțin, mai degrabă decât o culoare, o valoare utilizată pentru a schimba normalul la poligon în punctul corespunzător și, astfel, a schimba forma suprafeței. Această tehnică adaugă „rugozitate” suprafețelor cu economii mari în poligoane.

Cartarea normală este o tehnică care înlocuiește în loc să perturbe normalul la suprafață: o hartă normală este o imagine cu 3 canale în care fiecare pixel reprezintă un vector 3D, adică normalul către punctul în sine.

Scopul oricărui algoritm de umbrire este de a determina culoarea rezultată a unui punct specific de pe suprafața unui obiect. Umbrele programabile oferă o mare versatilitate în acest sens, bazându-se pe limbaje de programare specifice numite „limbaje de umbrire ”. Aceste limbaje sunt dezvoltate pentru aplicații specifice în grafica computerizată și includ algebră liniară și caracteristici care vizează probleme de iluminare. Umbrele pot include orice tehnică de iluminare, mapare a texturii și manipulare geometrică. Un „ shader procedural” determină culoarea rezultată într-un mod complet algoritmic: acestea pot fi astfel convingătoare fără a fi nevoie de texturi mari.

Vertex shaders ” și „ pixel shaders ” formează o clasă proprie, special concepută pentru a funcționa împreună cu algoritmi de scanare și pentru a rula pe un GPU . În timp ce anterior fiecare hardware grafic a implementat o conductă specifică care a forțat utilizatorul să utilizeze exclusiv modelul de iluminare pentru care a fost programat hardware-ul, cu această categorie de umbrere fiecare moment al redării este sub controlul dezvoltatorului.

Simulare 3D

Exemplu 3D simulat. Același rezultat (vizual) poate fi obținut cu Adobe Photoshop sau Gimp sau Adobe Illustrator sau Inkscape sau Blender sau Maya
Exemplu 3D simulat. Același rezultat (vizual) poate fi obținut cu software de procesare a imaginilor precum Adobe Photoshop sau Gimp sau cu aplicații de grafică vectorială precum Adobe Illustrator sau Inkscape.

Cu software-ul grafic precum Adobe Illustrator , Adobe Photoshop , Inkscape sau Gimp este posibil să simulați efectul 3D fără redare, lucrând cu straturi, gradiente și umbre. Punctul slab al acestei tehnici în comparație cu software-ul specializat în 3D este acela că pentru a modifica chiar ușor o redare cu, de exemplu, Blender , trebuie doar să modificați fișierul original ".blend" și să repetați comanda de redare, fără a reface întregul proiect. Zero. Pe de altă parte, cu un 3D simulat cu programe grafice, întregul proiect va trebui repetat chiar și pentru a muta, de exemplu, perspectiva cu câteva grade [1] [2] [3] .

Web 3D

Pictogramă lupă mgx2.svg Același subiect în detaliu: Web 3D .

Web 3D este un termen folosit pentru a indica conținut 3D interactiv inserat într-o pagină HTML, care poate fi vizualizat de un browser comun printr-un anumit vizualizator Web 3D. Conceptul de Web 3D este, de asemenea, utilizat pentru a indica o posibilă evoluție a Web-ului în care ideea unei pagini este abandonată și scufundată într-un spațiu interactiv tridimensional.

Programe grafice 3D

Motoare de randare

Notă

  1. ^ Neon Light 3D Text Effect (PSD) , pe Unblast , 28 iunie 2018. Adus pe 5 februarie 2021 .
  2. ^ Lion vector 3D | Ilustrator, Ilustrasi, Gambar hewan , pe Pinterest . Adus de 05 februarie 2021.
  3. ^ (RO) Când se folosește Photoshop, Când Blender?! , pe Blender Artists Community , 19 aprilie 2013. Adus pe 5 februarie 2021 .

Elemente conexe

Alte proiecte

linkuri externe

  • Jocuri 3D , pe focgames.com . Adus la 13 noiembrie 2013 (arhivat din original la 3 noiembrie 2013) .
  • Portal grafic 3D italian [ link rupt ] , pe 3dblogging.net .
  • Low Poly , pe low-poly.it . Adus la 1 august 2015 (arhivat din original la 27 septembrie 2015) .
  • Blog 3D Graphics Blog 3D Graphics