Computer grafica 3D: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
fix
m Corretti wikilink
Riga 9:
[[File:Wasp11.jpg|thumb|Modello 3D di una vespa]]
 
Oggetti tridimensionali semplici possono essere rappresentati con equazioni operanti su un [[sistema di riferimento cartesiano]] [[Sistema di riferimento tridimensionale|tridimensionale]]: per esempio, l'equazione <math>x^2+y^2+z^2=r^2</math> è 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]].
Riga 20:
Una scena si può comporre a partire da "primitive", ossia modelli tridimensionali rappresentanti primitive geometriche, scomponibili in singole facce o combinabili per formare oggetti più complessi. Il modo più semplice per organizzarla è quello di creare un [[array]] di primitive, ma questo metodo non permette una descrizione più dettagliata della scena, semplicemente "spiega" al ''renderer'' come disegnare la stessa. Una tecnica più avanzata organizza gli oggetti in una [[Albero (grafo)|struttura dati ad albero]] (''scene graph''), che permette di raggruppare logicamente gli oggetti (ad esempio, si può quindi replicare più volte un oggetto, avendolo modellato attraverso più ''patch'' NURBS raggruppate, all'interno della stessa scena).
 
Le primitive sono generalmente descritte all'interno del proprio sistema di riferimento locale, e vengono posizionate sulla scena attraverso opportune [[trasformazione geometrica piana|trasformazioni]]. Le trasformazioni affini più impiegate, come [[omotetia]], [[rotazione]] e [[Traslazione (geometria)|traslazione]], possono essere descritte in uno [[spazio proiettivo]] con una [[matrice]] 4x4: esse si applicano moltiplicando la matrice per il [[array|vettore]] a quattro componenti che rappresenta ogni punto di controllo delle curva. La quarta dimensione è denominata [[Coordinate omogenee|coordinata omogenea]].
 
Ad ogni nodo dello ''scene graph'' è associata una trasformazione, che si applica anche ad ogni nodo sottoposto, ricreando l'interazione fisica tra oggetti raggruppati (come quella tra un uomo e il suo vestito). Anche in sistemi di modellazione e ''rendering'' che non fanno uso di ''scene graph'' è comunque generalmente presente il concetto di trasformazione applicata "in verticale".
Riga 33:
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 ''[[Flare (ottica)|lens flare]]'' (il riflesso sulla lente), la limitatezza della profondità di campo e l'effetto [[Mosso (fotografia)|mosso]] presenti nelle fotografie e nei film.
 
=== Illuminazione e ''shading'' ===
Riga 86:
* [[FreeCAD]] (modellatore parametrico 3D open source e multipiattaforma)
* [[FreeForm Modelling]]
* [[Houdini (software)|Houdini 3D]]
* [[LightWave 3D]]
* [[Modo (software)|Luxology Modo]]
* [[MakeHuman]] (modellatore parametrico open source di figure umane)
* [[Maxon Cinema 4D|Cinema 4D]]