Indice degli articoli su WPF e il 3D
Una delle grandi novità del .NET Framework 3.0 è Windows Presentation Foundation (WPF).
Inizialmente usato da pochi coraggiosi programmatori, con l'avvento del .NET Framework 3.5 e del successivo SP1 è diventato un ambiente più maturo ed imparare ad utilizzarlo sta diventando un must se non si vuole perdere il “treno della tecnologia”.
Vedremo in questa serie di articoli come e quando utilizzare le sue capacità grafiche 3D sviluppando passo passo un cubo di Rubiks programmabile in 3D.
Halo 4 in WPF?
Il supporto grafico 3D di WPF non è pensato per videogiochi all’ultimo grido o per altri programmi che fanno pesantemente uso di grafica tridimensionale, sebbene sia basato su DirectX e si avantaggi dell’accelerazione grafica delle recenti schede video.
Per creare videogiochi con codice gestito (come C#) è possibile utilizzare XNA, un buon punto di partenza per impararlo è il sito XnaLearners, negli articoli saranno comunque evidenziate le differenze tra WPF e XNA per facilitare la “transizione” da un framework all’altro.
Con WPF è possibile creare visualizzazioni tridimensionali come grafici e modelli di oggetti/prodotti per rendere più usabile e accattivante il proprio programma.
In principio furono… i triangoli!
Alla base di tutti i modelli tridimensionali (anche i più complessi) ci sono solamente triangoli. Una sfera ad esempio è formata solamente da triangoli, più triangoli ci sono e più la sfera è definita.
|
|
Sfera con pochi triangoli |
Sfera con molti triangoli |
NB: Esistono diverse tecniche per “far sembrare” più definito un modello composto da pochi triangoli (Texture Mapping, Bump mapping, etc..).
Sistema di coordinate 3D di WPF
Per poter definire i triangoli occorrono dei punti che hanno determinate coordinate, il sistema di riferimento per i punti nello spazio tridimensionale (a differenza del sistema di riferimento bidimensionale) è mostrato dalla seguente figura:
I punti sono formalmente oggetti di tipo Point3D che contengono le coordinate X,Y e Z, in XNA i punti sono chiamati Vertici (Vertex) e possono essere rappresentati dal tipo Vector3.