Ray tracing: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Corretto wikilink
Correggo link
 
(3 versioni intermedie di 3 utenti non mostrate)
Riga 20:
Il ray tracing descrive un metodo per la produzione di immagini costruite in sistemi di [[computer grafica 3D]], con maggior realismo di quello che si potrebbe ottenere con l'uso di [[ray casting]] o [[scanline rendering]]. Lavora tracciando, all'inverso, il percorso che potrebbe aver seguito un raggio di [[luce]] prima di colpire un'immaginaria lente. Mentre la [[scena (computer grafica)|scena]] viene attraversata seguendo il percorso di numerosi raggi, le informazioni sull'aspetto della scena vengono accumulate. La riflessione del raggio, la sua rifrazione o l'assorbimento sono calcolate nel momento in cui colpisce un qualsiasi oggetto.
 
Le scene, nel ray tracing, vengono descritte matematicamente, solitamente da un [[programmatore]], o da un grafico, utilizzando particolari [[Programma (informatica)|programmi]]. Le scene possono anche includere immagini e modelli creati attraverso varie tecnologie, per esempio usando la [[fotografia digitale]]. Seguendo i raggi in senso inverso viene alleggeritoalleggerita di molto la [[Teoria della complessità|complessità]] dell'algoritmo, il che rende possibile una precisa simulazione di tutte le possibili interazioni presenti nella scena. Questo è dovuto al fatto che la maggior parte dei raggi che parte da una sorgente non fornisce dati significativi all'occhio di un osservatore. Potrebbero invece rimbalzare finché si riducono al nulla, andare verso l'infinito o raggiungere qualche altra [[camera (computer grafica)|camera]]. Una simulazione che parta seguendo tutti i raggi emessi da tutte le sorgenti di luce non è fisicamente praticabile.
 
La scorciatoia utilizzata nel raytracing, quindi, presuppone che un dato raggio termini sulla camera, e ne cerca la sorgente. Dopo aver calcolato un numero fisso di interazioni (già deciso in precedenza), l'intensità della luce nel punto di ultima intersezione viene calcolata con un insieme di algoritmi, inclusi il classico algoritmo di rendering ed altre tecniche (come la [[radiosity]]).
Riga 31:
Il primo algoritmo di ray casting (in opposizione a quello di ray tracing) venne presentato da [[Arthur Appel]] nel [[1968]]. L'idea di fondo del ray casting consiste nel far partire i raggi dall'occhio, uno per [[pixel]], e trovare il più vicino oggetto che ne blocca il percorso (occorre pensare ad un'immagine come ad una grata, in cui ogni quadrato corrisponde ad un pixel). L'oggetto colpito è quello che l'occhio vede attraverso quel pixel. Usando le proprietà del materiale e gli effetti della luce nella scena, questo algoritmo è in grado di determinare il colore dell'oggetto. Questa supposizione è fatta pensando che una superficie è visibile se il raggio la raggiunge senza essere bloccato o in ombra. Il colore della superficie viene calcolato usando i tradizionali [[Shader|shading model]] presenti in [[Computer grafica]]. Un importante vantaggio offerto dal ray casting rispetto al più vecchio [[scanline rendering|algoritmo di scanline]], è la sua capacità di gestire con semplicità superfici solide o non-piane, come ad esempio [[Cono (solido)|coni]] e [[sfera|sfere]]. Se una superficie matematica può essere colpita da un raggio, il ray casting è in grado di disegnarla. Oggetti complicati possono essere creati utilizzando tecniche di [[modellazione solida]], e facilmente renderizzati.
 
Il ray casting per la produzione di computer grafica venne usato per la prima volta da alcuni scienziati del [[Mathematical Applications Group, Inc.]], (MAGI) di Elmsford, [[New York (Statostato)|New York]]. Nel [[1966]], il gruppo venne creato per effettuare calcoli di esposizione alle radiazioni da parte del [[United States Department of Defense|Dipartimento della Difesa degli Stati Uniti]]. Il [[software]] creato dal MAGI calcolava non solo i rimbalzi dei [[raggi gamma]] sulle superfici (il ray casting per le radiazioni era utilizzato dagli [[anni 1940|anni quaranta]]), ma anche il modo in cui penetravano negli oggetti e ne venivano rifratti. Questi studi aiutarono il Governo a scegliere alcune applicazioni militari, costruendo veicoli che avrebbero protetto le truppe dalle [[radiazione|radiazioni]] e veicoli di rientro per le [[Esplorazione spaziale|esplorazioni spaziali]]. Sotto la direzione del dr. [[Philip Mittelman]], gli scienziati svilupparono un metodo per la generazione di immagini utilizzando lo stesso software. Nel [[1972]] MAGI divenne un'azienda commerciale di animazione, che utilizzò il ray casting per creare animazioni 3D per la [[televisione]], [[documentario (film)|documentari]], e film (crearono buona parte del film ''[[Tron (film)|Tron]]'' utilizzando esclusivamente il ray casting). La MAGI venne chiusa nel [[1985]].
 
=== Algoritmo di ray tracing ===
Riga 74:
[[File:PathOfRays.svg]]
 
Per prima cosa, un raggio viene creato dal punto di vista delledella telecamera e tracciato attraverso un [[pixel]] verso una scena, dove colpisce una superficie diffusiva. Da questa superficie l'algoritmo genera un raggio riflesso, lanciato, a sua volta, attraverso la scena, fino ad un'altra superficie. Infine, un nuovo raggio parte, fino a raggiungere la sorgente di luce, dove viene assorbito. A questo punto, il colore del pixel dipende da quello delle due superfici colpite e da quello della sorgente di luce. Ad esempio, se la luce emessa è bianca e le due superfici sono blu, il colore risultante sarà blu.
 
== Ray tracing in real time ==
Riga 81:
Il progetto [[OpenRT]] è composto da un nucleo altamente ottimizzato basato sul ray tracing, e ad un [[Application programming interface|API]] in stile [[OpenGL]] per poter offrire un'alternativa all'approccio corrente basato sulla [[rasterizzazione]].
 
L'[[hardware]] specifico per il ray tracing, come il [[Ray Processing Unit]] sviluppato all'[[Università deldella Saarland]], è stato progettato per accelerare alcune operazioni computazionalmente dispendiose.
 
Alcuni software real-time, con motore basato sul ray tracing, sono stati sviluppati da programmatori appassionati fino ai tardi [[anni 1990|anni novanta]]. I ray tracer usati in queste [[Demo#Nelle applicazioni|demo]], comunque, usano spesso approssimazioni inaccurate ed arrivano ad imbrogliare per poter ottenere un buon [[frame per secondo|frame rate]].<ref>[https://www.acm.org/tog/resources/RTNews/demos/overview.htm] Elenco di alcuni demo conosciuti</ref>
 
Dalla generazione [[GeForce 20 series]] di GPU in poi, della casa Nvidia, è stato implementato un sistema di accelerazione hardware che punta a rendere possibile il ray tracing in tempo reale, specie nei videogiochi, il tutto col supporto di dedicati tool per sviluppatori.<br />