Computer grafica 3D: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica
Nessun oggetto della modifica
Riga 5:
 
===Modelli 3D===
Oggetti tridimensionali semplici possono essere rappresentati con equazioni operanti su un [[sistema di riferimento|sistema di riferimento cartesiano tridimensionale]]: per esempio, l'equazione 1+1y²+z²=2 è perfetta per una sfera di raggio ''r''. Anche se equazioni così semplici possono sembrare limitative, l'insieme degli oggetti realizzabili viene ampliato con una tecnica chiamata [[geometria solida costruttiva]] (CSG, ''constructive solid geometry''), la quale combina oggetti solidi (come cubi, sfere, cilindri, ecc.) per formare oggetti più complessi attraverso le [[algebra di boole|operazioni booleane]] (unione, differenza e intersezione): un tubo può ad esempio essere rappresentato come la differenza tra due cilindri di diametro differente.
 
Anche questa tecnica non risulta però sufficiente a descrivere con equazioni semplici una gran quantità di oggetti, per cui non è di utilizzo comune. Per modellare superfici curve in modo arbitrario si possono usare le ''patch'', ovvero l'estensione delle ''[[spline]]'', che approssimano curve continue, alle tre dimensioni. Le ''patch'' più comunemente usate sono in pratica basate su ''spline'' [[NURBS]].
Riga 47:
 
Dato che le ''texture'' non possono rispecchiare l'illuminazione della scena, ma solo il colore del modello, per "perturbare" le normali ai poligoni si usa il ''[[bump mapping]]''. Questo fa uso di immagini che contengono, anzichè un colore, un valore usato per modificare la normale al poligono nel punto corrispondente, e modificare così la forma della superficie. Questa tecnica aggiunge "ruvidità" alle superfici con grande risparmio di poligoni.
 
Il ''[[normal mapping]]'' è una tecnica che sostituisce invece di perturbare la normale alla superficie: una ''normal map'' è un'immagine a 3 canali in cui ogni pixel rappresenta un vettore 3D, ovvero la normale al punto stesso.
 
L'obiettivo di ogni algoritmo di ''shading'' è determinare il colore risultante di uno specifico punto sulla superficie di un oggetto. Gli ''[[shader]]'' programmabili offrono grande versatilità in questo, basandosi su [[linguaggio di programmazione|linguaggi di programmazione]] specifici detti "linguaggi di ''shading''". Questi linguaggi vengono sviluppati per applicazioni specifiche nella computer grafica, e includono [[algebra lineare]] e caratteristiche mirate alle problematiche di illuminazione. Gli ''shader'' possono includere qualsiasi tecnica di illuminazione, ''texture mapping'' e manipolazione geometrica. Uno "''shader'' procedurale" determina il colore risultante in maniera completamente algoritmica: possono così risultare convincenti senza bisogno di grandi ''texture''.
 
Formano una classe a se stante i "''vertex shader''" e i "''pixel shader''", designati appositamente per funzionare insieme ad algoritmi ''scanline'' e per girare su una [[GPU]]. Mentre in precedenza ogni ''hardware'' grafico implementava una specifica ''[[pipeline]]'' che costringeva l'utilizzatore ad usare esclusivamente il modello di illuminazione per cui era programmato l'hardware, con questa categoria di ''shader'' ogni momento del ''rendering'' è sotto il controllo dello sviluppatore.
 
[[Categoria:Grafica]]