- Learn
- XNA – Guida alla creazione di videogiochi
- View e Projection: posizione, target e frustum della camera
View e Projection: posizione, target e frustum della camera
Cominciamo ad occuparci di uno dei componenti principali della nostra scena 3D: la telecamera. Disegnare una scena in tre dimensioni è un pò come realizzare un film con una telecamera a mano: possiamo ruotare o inclinare lateralmente la telecamera, avvicinarci o allontanarci rispetto ad un certo oggetto, allargare o restringere l’inquadratura, e così via. Nel mondo XNA, queste proprietà sono contenute in due oggetti di tipo Matrix
: View e Projection.
La matrice View
La prima contiene le informazioni relative alla posizione della telecamera nello spazio tridimensionale, alla direzione in cui l’obiettivo è puntato, nonché all’orientamento della telecamera stessa (Figura 1, immagine di destra).

Per creare una matrice View, si può utilizzare l’apposito metodo CreateLookAt, il quale accetta tre parametri:
public static Matrix CreateLookAt (
Vector3 cameraPosition,
Vector3 cameraTarget,
Vector3 cameraUpVector
);
Parametro | Descrizione |
---|---|
cameraPosition | indica la posizione della telecamera rispetto all’origine degli assi (0, 0, 0) . Valori positivi per uno dei tre assi corrispondono a spostamenti, rispettivamente, verso destra, verso l’alto e verso l’esterno dello schermo (ossia verso lo spettatore). Al contrario, per valori negativi avremo spostamenti verso sinistra, verso il basso o verso l’interno dello schermo (Figura 2) |
cameraTarget | indica il punto dello spazio verso il quale la telecamera è puntata. Ad esempio, se assegnamo alla variabile il valore (0, 0, 0) , la telecamera punterà verso il punto di origine dei tre assi, e continuerà a farlo anche se la muoveremo o la ruoteremo |
cameraUpVector | rappresenta l’asse verticale della telecamera, che non necessariamente coincide con l’asse verticale della scena. Se infatti incliniamo la telecamera in una qualsiasi direzione, anche l’inclinazione del suo asse verticale si modificherà di conseguenza |
Imparare a gestire la matrice View
manualmente è fondamentale per realizzare telecamere in prima o terza persona e per spostarle in base all’input dell’utente.

La matrice Projection
La matrice Projection, invece, contiene una serie di informazioni relative al “campo visivo” della telecamera, detto anche “frustum” per la sua forma a tronco di piramide ( Figura 3). In buona sostanza, il frustum (espresso in radianti) definisce un’area tridimensionale che è visibile dalla telecamera e che verrà dunque disegnato a schermo (un pò come scegliere, per il proprio obiettivo, una lente piuttosto che un’altra). Tutto ciò che risulta invece collocato al di fuori del campo visivo non verrà renderizzato. Sempre la matrice projection è destinata inoltre a contenere una serie di informazioni relative al cosiddetto “aspect ratio”, ossia al rapporto tra larghezza e altezza del campo visivo (che è pari a 800:480, nel caso di un gioco per Windows Phone 7 con il device disposto orizzontalmente), nonché informazioni sui valori minimi e massimi di distanza dalla telecamera (potremmo definirle, un pò impropriamente, informazioni sulla sua “profondità di campo”), superati i quali gli oggetti non verrano più renderizzati sulla scena (si parla, rispettivamente, di near clipping plane, indicato dalla lettera a nella Figura 3, e di far clipping plane, indicato dalla lettera b).

Se vuoi aggiornamenti su View e Projection: posizione, target e frustum della camera inserisci la tua email nel box qui sotto:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
La tua iscrizione è andata a buon fine. Se vuoi ricevere informazioni personalizzate compila anche i seguenti campi opzionali:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
I Video di HTML.it
Matteo Collina, MQTT, IoT e i programmatori
Una chiacchierata con Matteo Collina sul protocollo MQTT e alcuni consigli su come svolgere il mestiere dello sviluppatore.