Computer grafica 3D: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Davi.trip (discussione | contributi)
Nessun oggetto della modifica
Davi.trip (discussione | contributi)
Aggiunti collegamenti mancanti ad altre voci
Riga 9:
Oggetti tridimensionali semplici possono essere rappresentati con equazioni operanti su un [[sistema di riferimento cartesiano]] [[Sistema di riferimento tridimensionale|tridimensionale]]: per esempio, l'equazione x²+y²+z²=r² è 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 [[CSG (grafica)|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, sottrazione e intersezione): un tubo può ad esempio essere rappresentato come la differenza tra due cilindri aventi diametro differente.
 
Queste equazioni non sono tuttavia sufficienti a descrivere con accuratezza le forme complesse che costituiscono la gran parte del mondo reale, per cui non è di utilizzo comune. Per modellare [[Superficie di Bézier|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]].
 
L'impiego di equazioni matematiche pure come queste richiede l'utilizzo di una gran quantità di potenza di calcolo, e non sono quindi pratiche per le applicazioni in tempo reale come videogiochi e simulazioni. Una tecnica più efficiente, e tuttora la più diffusa e flessibile è il poly-modelling o modellazione poligonale. Questa permette un maggiore livello di dettaglio a spese però della maggiore quantità di informazioni necessaria a memorizzare l'oggetto risultante, chiamato [[Mesh poligonale|modello poligonale]].
 
Un modello poligonale e "sfaccettato" come una scultura grezza può essere comunque raffinato con [[algoritmo|algoritmi]] per rappresentare superfici curve: questa tecnica è chiamata "[[superfici di suddivisione]]". Il modello viene raffinato con un processo di [[interpolazione]] iterativa rendendolo sempre più denso di poligoni, che approssimeranno meglio curve ideali, derivate matematicamente dai vari vertici del modello.
Riga 30:
Gli algoritmi di ''rendering'' si dividono in due categorie: ''[[scanline rendering|scanline renderers]]'' e ''[[ray tracing|ray tracers]]''. I primi operano oggetto per oggetto, disegnando direttamente su schermo ogni poligono costituente il modello 3d; essi richiedono quindi che tutti gli oggetti (anche quelli modellati con curve continue) siano costruiti come suddivisi in poligoni. I secondi operano pixel per pixel, tracciando un raggio visuale immaginario dal punto di vista all'interno della scena, e determinando il colore del pixel dalle intersezioni con gli oggetti.
 
Una delle funzioni principali di un ''renderer'' è la [[determinazione della [[superficie nascosta]]. Il ''ray tracing'' svolge implicitamente questa funzione, determinando il colore di un [[pixel]] in base all'intersezione del raggio visuale col primo oggetto, ma per l'altro tipo di algoritmi servono tecniche più avanzate per determinare quale poligono sia il più vicino al punto di vista. Il metodo più semplice è quello di disegnare i poligoni a partire da quelli più lontani, in modo che quelli più vicini li sovrascrivano; ma questa tecnica, detta ''painter's algorithm'', "[[algoritmo del pittore]]", si rivela inefficace con poligoni sovrapposti. Per risolvere questo problema fu sviluppato lo [[z-buffer]]ing, che impiega un [[buffer]] per conservare la coordinata ''z'' relativa ad ogni pixel elaborato: se la profondità del poligono che sta per essere elaborato per il pixel è minore di quello in memoria, il pixel viene riscritto; altrimenti l'algoritmo passa al pixel successivo.
 
Un'immagine perfettamente nitida, con [[profondità di campo]] infinita non è affatto fotorealistica. L'occhio umano è abituato alle imperfezioni come il ''[[lens flare]]'' (il riflesso sulla lente), la limitatezza della profondità di campo e il ''[[motion blur]]'' ("effetto movimento") presenti nelle fotografie e nei film.