Trasarea razelor

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Scena produsă prin urmărirea razelor

Trasarea razelor este o tehnică generală de geometrie optică care se bazează pe calculul traseului realizat de lumină, urmărindu-i razele prin interacțiunea cu suprafețele. Este utilizat în modelarea sistemelor optice, cum ar fi lentilele camerei, microscopele , telescoapele și binoclul . Termenul este, de asemenea, utilizat pentru un algoritm de redare precis în domeniul graficii computerizate 3D , în care vederile scenelor, modelate matematic, sunt produse folosind o tehnică care urmărește razele pornind din punctul de vedere al camerei sau din surse de lumină . Produce rezultate similare cu turnarea prin raze și randarea liniei de scanare , dar simplifică unele efecte optice avansate, cum ar fi o simulare precisă a reflexiei și refracției , rămânând în același timp suficient de eficient pentru a fi utilizat în cazul în care doriți să obțineți un rezultat de înaltă calitate.

Descrierea generală a algoritmului computerului

Trei sfere care arată reflectarea unii altora și a podelei

Urmărirea razelor descrie o metodă de producere a imaginilor încorporate în sisteme de grafică computerizată 3D , cu un realism mai mare decât ceea ce s-ar putea obține cu utilizarea turnării cu raze sau a randării liniei de scanare . Funcționează urmărind, în sens invers, calea pe care o poate urma o rază de lumină înainte de a lovi un obiectiv imaginar. Pe măsură ce scena este parcursă pe calea numeroaselor raze, se acumulează informații despre aspectul scenei. Reflecția razei, refracția sau absorbția acesteia sunt calculate pe măsură ce lovește orice obiect.

Scenele, în ray tracing, sunt descrise matematic, de obicei de un programator sau de un designer grafic, folosind anumite programe . Scenele pot include, de asemenea, imagini și modele create prin diverse tehnologii, de exemplu folosind fotografia digitală . Urmărind razele în direcția opusă, complexitatea algoritmului este foarte ușurată, ceea ce face posibilă simularea cu acuratețe a tuturor interacțiunilor posibile prezente în scenă. Acest lucru se datorează faptului că majoritatea razelor emanate dintr-o sursă nu oferă date semnificative ochiului unui observator. În schimb, pot sări până când sunt reduși la nimic, pot merge la infinit sau pot ajunge în altă cameră . O simulare care începe să urmeze toate razele emise de toate sursele de lumină nu este practic fizic.

Prin urmare, comanda rapidă utilizată în raytracing presupune că o anumită rază se termină pe cameră și își caută sursa. După calcularea unui număr fix de interacțiuni (deja decis anterior), intensitatea luminii la punctul de la ultima intersecție este calculată cu un set de algoritmi, inclusiv algoritmul de redare clasic și alte tehnici (cum ar fi radiositatea ).

Descriere detaliată a algoritmului și a nașterii acestuia

Ce se întâmplă în natură

În natură, o sursă de lumină emite o rază care se deplasează până ajunge la o suprafață care îi întrerupe călătoria. Raza poate fi gândită ca un fascicul de fotoni care călătoresc pe aceeași linie. În vid absolut această rază ar urma o linie dreaptă. De fapt, poate apărea orice combinație a acestor trei rezultate: absorbție , reflexie și refracție . O suprafață poate reflecta total sau parțial fasciculul de lumină, într-una sau mai multe direcții. De asemenea, poate absorbi o parte a fasciculului, provocând o pierdere a intensității luminii reflectate / refractate. Dacă suprafața are proprietăți de transparență sau transluciditate , va transmite o porțiune de lumină în sine, într-o direcție diferită de cea cauzată de absorbția unei părți (sau a întregului) din spectrul optic (și, eventual, modificarea culorii sale). Prin adăugarea valorilor de absorbție, reflexie și refracție, obținem exact puterea razei de intrare. O suprafață nu poate, de exemplu, să absoarbă 66% din raza de intrare și să reflecte 50% din aceasta, deoarece suma ar da 116%. [1] Începând de aici, razele reflectate și / sau refractate pot lovi alte suprafețe, unde vor fi absorbite, reflectate și refractate (din nou). Unele dintre aceste raze, la sfârșitul călătoriei, ne-au lovit ochiul, permițându-ne să vedem scena și contribuind la proiectarea imaginii finale.

Algoritm de turnare cu raze

Primul algoritm de turnare a razelor (spre deosebire de trasarea razelor) a fost introdus de Arthur Appel în 1968 . Ideea de bază a turnării cu raze este de a porni razele din ochi, câte unul pe pixel , și de a găsi cel mai apropiat obiect care le blochează calea (este necesar să ne gândim la o imagine ca la o rețea, în care fiecare pătrat corespunde unuia pixel). Obiectul lovit este ceea ce ochiul vede prin acel pixel. Folosind proprietățile materialului și efectele luminii în scenă, acest algoritm este capabil să determine culoarea obiectului. Această presupunere este făcută cu gândul că o suprafață este vizibilă dacă raza ajunge la ea fără a fi blocată sau în umbră. Culoarea suprafeței este calculată utilizând modelele tradiționale de umbrire prezente în grafica computerizată . Un avantaj important oferit de turnarea razelor față de algoritmul de scanare mai vechi este capacitatea sa de a manipula cu ușurință suprafețe solide sau non-plane, cum ar fi conuri și sfere . Dacă o suprafață matematică poate fi lovită de o rază, turnarea cu raze o poate atrage. Obiectele complicate pot fi create folosind tehnici de modelare solide și redate cu ușurință.

Turnarea cu raze pentru producția de grafică pe computer a fost folosită pentru prima dată de oamenii de știință de la Mathematical Applications Group, Inc. , (MAGI) din Elmsford, New York . În 1966 , grupul a fost creat pentru a face calculele expunerii la radiații de către Departamentul Apărării al Statelor Unite . Software-ul creat de MAGI a calculat nu numai revenirile razelor gamma pe suprafețe (turnarea razelor pentru radiații a fost utilizată încă din anii 1940 ), ci și modul în care acestea au pătruns în obiecte și au fost refractate de acestea. Aceste studii au ajutat guvernul să selecteze unele aplicații militare, construind vehicule care să protejeze trupele de radiații și vehicule de reintrare pentru explorarea spațiului . Sub direcția dr. Philip Mittelman , oamenii de știință au dezvoltat o metodă de generare a imaginilor folosind același software. În 1972 MAGI a devenit o companie comercială de animație, care a folosit ray casting pentru a crea animații 3D pentru televiziune , documentare și filme (au creat o mare parte din filmul Tron folosind exclusiv ray casting). MAGI a fost închis în 1985 .

Algoritm de urmărire a razelor

Următoarea descoperire inovatoare a fost făcută de Turner Whitted în 1979 . Algoritmii anteriori au aruncat fasciculul din ochi spre scenă, dar razele nu au mai fost urmărite. Whitted a continuat procesul. Când o rază lovește o suprafață, poate genera până la trei noi tipuri de raze: reflexie, refracție și umbră. O rază reflectată continuă în direcția reflectării oglinzii pe o suprafață strălucitoare. În acest moment interacționează cu alte obiecte din scenă; primul obiect care lovește va fi cel văzut în reflexia prezentă asupra obiectului original. Raza refractată călătorește prin materialul transparent într-un mod similar, cu adăugarea că poate intra sau ieși dintr-un material. Pentru a evita urmărirea tuturor razelor prezente într-o scenă, se utilizează o rază de umbră pentru a testa dacă suprafața este vizibilă pentru o lumină. O rază lovește o suprafață la un moment dat. Dacă acest punct „vede” lumina, se urmărește o rază (din punctul de vedere al computerului un segment ) până la sursă. Dacă un obiect opac este întâlnit pe drum, suprafața este în umbră și sursa respectivă nu contribuie la calculul culorii. Acest nou nivel de calcul adaugă mai mult realism imaginilor create prin urmărirea razelor.

Avantajele trasării razelor

Popularitatea câștigată prin urmărirea razelor pune bazele simulării realiste a luminii în comparație cu alte modele de redare (cum ar fi redarea liniei de scanare sau turnarea razelor). Efectele precum reflexia și umbra , dificil de simulat cu alte metode, sunt rezultatul natural al algoritmului. O implementare relativ simplă duce la rezultate impresionante, trasarea razelor reprezintă adesea punctul de intrare în studiul programării grafice .

Dezavantaje ale trasării razelor

Un dezavantaj serios este performanța. Algoritmi precum scanline folosesc consistența datelor pentru a gestiona calculul între pixeli, în timp ce raytracing repornește întregul proces la fiecare nou pixel, tratând fiecare rază separat. Această separare oferă avantaje, cum ar fi posibilitatea de a trimite mai multe raze decât este necesar pentru a obține anti - aliasing și pentru a îmbunătăți calitatea imaginii. În ciuda manipulării corecte a inter-reflecțiilor și refracțiilor, trasarea tradițională a razelor nu este neapărat fotorealistă . Adevăratul fotorealism se realizează atunci când ecuația de redare este bine aproximată sau complet implementată. Calculul său oferă un adevărat fotorealism, deoarece descrie fiecare efect fizic al fluxului de lumină. Calculul complet este în mod normal imposibil, având în vedere resursele de calcul necesare. Prin urmare, realismul tuturor metodelor de redare trebuie evaluat în raport cu aproximarea ecuației și, în cazul trasării razelor, nu este neapărat cea mai realistă. Alte metode, inclusiv maparea fotonilor , se bazează pe trasarea razelor în unele părți ale algoritmului și dau rezultate mai bune.

Trecerea inversă a scenei

Procesul de a arunca raze de la ochi spre sursa de lumină pentru a desena o imagine este uneori numit traseul de raze înapoi (sau „raza de urmărire inversă”), deoarece fotonii se deplasează în direcția opusă celei obișnuite. Această terminologie creează confuzie. La început, urmărirea razelor se făcea din ochi, iar primii cercetători (cum ar fi James Arvo) foloseau termenul de urmărire a razelor înapoi pentru a se referi la traseul sursă-ochi. Din acest motiv, este mai ușor să distingem cele două cazuri în funcție de ochi (bazat pe ochi) și de lumină (bazat pe sursă). Cercetările din ultimele decenii au explorat combinații de calcule efectuate în ambele direcții, precum și scheme capabile să genereze mai multe sau mai puține raze în direcții diferite, începând de la o suprafață afectată. De exemplu, algoritmii de radiositate funcționează de obicei calculând modul în care fotonii, emiși de o sursă, modifică suprafețele, înregistrând rezultatele. Aceste date pot fi utilizate de un trasor de raze recursive standard pentru a crea o imagine mai corectă. În contextul algoritmilor de iluminare globală , precum maparea fotonilor și transportul luminii Metropolis , trasarea razelor este doar unul dintre instrumentele utilizate pentru a calcula transferul de lumină între suprafețe.

Algoritm: trasarea clasică a razelor recursive

 Pentru fiecare pixel al imaginii {
  Creați o rază care, din ochi, trece prin acest pixel
  Inițializați „Cel mai apropiatT” la „INFINIT” și „Cel mai apropiat obiect” la „NUL”
Pentru fiecare obiect al scenei {
     Dacă fasciculul lovește acest obiect {
        Dacă distanța „t” este mai mică decât „Cele mai apropiateT” {
           Setați „Cel mai apropiatT” la „t”
           Setați „obiectul cel mai apropiat” la acest obiect
        }
     }
  }
Dacă „obiectul cel mai apropiat” este „NUL” {
     Colorează acest pixel cu culoarea de fundal
  } In caz contrar {
     Trimiteți un fascicul către fiecare sursă de lumină pentru a testa dacă este în umbră
     Dacă suprafața este reflexivă, generează raza reflectată: (recursivitate)
     Dacă suprafața este transparentă, generează raza refractată: (recursivitate)
     Utilizați „obiectul cel mai apropiat” și „cel mai apropiatT” pentru a calcula culoarea
     Colorează acest pixel cu culoarea rezultată
  }
}

Mai jos este o imagine care ilustrează traseul unor raze recursive, calculată utilizând pseudocodul scris mai sus. O suprafață difuzivă reflectă lumina în toate direcțiile.

PathOfRays.jpg

În primul rând, un fascicul este creat din punctul de vedere al camerei și urmărit printr-un pixel până la o scenă, unde lovește o suprafață difuzivă. Din această suprafață algoritmul generează o rază reflectată, lansată, la rândul său, prin scenă, către o altă suprafață. În cele din urmă, o nouă rază pleacă, până ajunge la sursa de lumină, unde este absorbită. În acest moment, culoarea pixelului depinde de cea a celor două suprafețe afectate și de cea a sursei de lumină. De exemplu, dacă lumina emisă este albă și cele două suprafețe sunt albastre, culoarea rezultată va fi albastră.

Trasarea razelor în timp real

De-a lungul timpului, s-au depus eforturi pentru a implementa un sistem de urmărire a razelor în timp real pentru aplicații grafice, cum ar fi jocurile video .

Proiectul OpenRT este compus dintr-un nucleu extrem de optimizat bazat pe ray tracing și un API în stil OpenGL pentru a oferi o alternativă la abordarea actuală bazată pe rasterizare .

Hardware - ul specific Ray-tracing, cum ar fi Ray Processing Unit dezvoltat la Universitatea din Saarland , a fost conceput pentru a accelera unele operațiuni costisitoare din punct de vedere al calculului.

Unele programe software în timp real, cu un motor de urmărire a razelor, au fost dezvoltate de programatori pasionați până la sfârșitul anilor nouăzeci . Cu toate acestea, dispozitivele de urmărire a razelor folosite în aceste demonstrații folosesc adesea aproximări inexacte și merg până la înșelăciune pentru a obține o rată de cadre bună. [2]

De la generația GPU din seria GeForce 20 și mai departe, de la casa Nvidia, a fost implementat un sistem de accelerare hardware care urmărește să facă posibilă urmărirea razelor în timp real, în special în jocurile video, totul cu sprijinul instrumentelor dedicate dezvoltatorilor.

Din punct de vedere geometric

Trasarea razelor, în grafica computerizată , își derivă numele și principiile dintr-o tehnică anterioară utilizată pentru proiectarea obiectivelor. În optică , raytracing-ul este o tehnică utilizată pentru producerea de lentile și instrumente optice - camere , binoclu , telescoape și microscopuri - de la începutul secolului al XX-lea . Acest tip de trasare a razelor descrie propagarea razelor de lumină prin sisteme de lentile sau un instrument optic, permițând modelarea proprietăților de creare a imaginii. Următoarele efecte pot fi integrate în software-ul de urmărire a razelor:

Două cazuri particulare devin importante în proiectarea lentilelor. În primul caz, razele dintr-o sursă de lumină se întâlnesc într-un punct focal unde pot interfera constructiv și distructiv unul cu celălalt. În regiunea focală proximală, razele pot fi apropiate în mod convenabil de unde plane care își moștenesc direcția. Lungimea căii optice (OPL) de la sursă este utilizată pentru a determina faza undei. Derivația poziției fasciculului în regiunea focală față de poziția sursei este utilizată pentru a obține lățimea fasciculului și, din aceasta, amplitudinea undei plane. Rezultatul este funcția de difuzie a punctului luminos (funcția de răspândire a punctelor sau PSF), a cărei transformată Fourier corespunde funcției de transfer de modulație (MTF), din care se poate calcula și raportul Strehl .

Al doilea caz are în vedere interferența fronturilor de undă (setul de puncte care au aceeași fază) care poate fi aproximată, așa cum am menționat anterior, la suprafețele plane. Când razele se apropie una de alta sau se intersectează, această aproximare eșuează.

Interferența undelor sferice nu are de obicei nimic de-a face cu trasarea razelor, deoarece difracția nu poate fi calculată la o deschidere dată.

Aceste tehnici sunt utilizate pentru a minimiza aberațiile optice în câmpul fotografic, pentru aplicații cu lungime de undă ridicată, cum ar fi modelarea de microunde sau sisteme radio, și lungimi de undă scurte, cum ar fi ultraviolete și optice cu raze X.

Înainte de apariția computerelor , calculele de urmărire a razelor se făceau manual prin tabele trigonometrice și logaritmice . Formulele optice utilizate de multe obiective fotografice clasice au fost optimizate de numeroase grupuri de lucru, fiecare dintre ele fiind responsabil pentru o mică parte a calculului complicat. În era computerelor, aceste operațiuni sunt încredințate calculatoarelor electronice și software-ului dedicat (cum ar fi, de exemplu, OSLO sau TracePro de Lambda Research, CODE V sau Zemax). O versiune simplificată a trasării razelor, cunoscută sub numele de "analiză a matricei de transfer de raze", este frecvent utilizată în proiectarea rezonatoarelor optice utilizate în lasere .

Exemplu

O demonstrație a principiilor implicate în trasarea razelor ne va permite să analizăm modul în care poate fi găsită intersecția dintre o rază și o sferă. Ecuația generală a unei sfere poate fi exprimată în notație vectorială , unde I este un punct de pe suprafața sferei, C este centrul acesteia și r raza sa, cu această formulă: .

În mod similar, dacă o rază este definită prin punctul de origine S (originea razei) și direcția sa d , fiecare punct de pe linie îndeplinește următoarea ecuație:

unde t este o constantă care definește distanța măsurată pe rază începând de la origine (deci, pentru simplitate, d este în general un vector unitar). Acum, în scenă știm S , d , C și r . Avem nevoie să găsim t pentru a-l înlocui pentru I :

să presupunem că pentru simplitate, atunci

Această ecuație pătratică are soluții:

Dacă radicandul este negativ, raza nu intersectează sfera. Aceasta este matematica de bază a calculului intersecției rază-sferă. Există, evident, procese mult mai generale pentru raytracing, dar acest lucru a fost menit să fie doar un exemplu de utilizare a algoritmului.

Notă

  1. ^ Vezi Legea Conservării Energiei
  2. ^ [1] Lista unor demonstrații cunoscute

Bibliografie

  • Ray Tracing - Introducere Duty ( JPG ), în MCmicrocomputer , n. 114, Roma, Technimedia, ianuarie 1992, pp. 245-249, ISSN 1123-2714 ( WC ACNP ) . Coloana privind urmărirea razelor continuă în edițiile ulterioare până la 128.
  • ( EN ) Andrew Glassner (ed.), An Introduction to Ray Tracing , Academic Press, 1989. ISBN 0-12-286160-4 .
  • ( EN ) Peter Shirley și R. Morley Keith, Realistic Ray Tracing, ediția a II-a , AK Peters, 2001. ISBN 1-56881-198-5 .
  • ( EN ) Henrik Wann Jensen, Sinteza realistă a imaginilor folosind maparea fotonilor , AK Peters, 2001. ISBN 1-56881-147-0 .
  • ( EN ) Matt Pharr și Greg Humphreys, Redarea bazată fizic: de la teorie la implementare , Morgan Kaufmann, 2004. ISBN 0-12-553180-X .

Elemente conexe

Exemple de software

Alte proiecte

linkuri externe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT