Trasformazione di visualizzazione

Una trasformazione di visualizzazione individua il visualizzatore nello spazio globale, trasformando i vertici nello spazio della fotocamera. Nello spazio della fotocamera, la fotocamera o il visualizzatore si trova all'origine, guardando nella direzione z positiva. La matrice di visualizzazione sposta gli oggetti nel mondo intorno alla posizione di una fotocamera, l'origine dello spazio della fotocamera e l'orientamento. Direct3D usa un sistema di coordinate sinistrorso, quindi z è positivo in una scena.

Esistono molti modi per creare una matrice di visualizzazione. In tutti i casi, la fotocamera ha una posizione logica e un orientamento nello spazio globale utilizzato come punto di partenza per creare una matrice di visualizzazione che verrà applicata ai modelli in una scena. La matrice di visualizzazione converte e ruota gli oggetti per posizionarli nello spazio della fotocamera, dove la fotocamera si trova all'origine. Un modo per creare una matrice di visualizzazione consiste nel combinare una matrice di traslazione con matrici di rotazione per ogni asse. In questo approccio si applica l'equazione di matrice generale seguente.

equation of the view transform

In questa formula V è la matrice di visualizzazione creata, T è una matrice di traslazione che riposiziona gli oggetti nel mondo e Rₓ tramite Rz sono matrici di rotazione che ruotano gli oggetti lungo l'asse x, y e z. Le matrici di traslazione e rotazione si basano sulla posizione logica e sull'orientamento della fotocamera nello spazio globale. Quindi, se la posizione logica della fotocamera nel mondo è <10.20.100>, l'obiettivo della matrice di traslazione è spostare gli oggetti -10 unità lungo l'asse x, -20 unità lungo l'asse y e -100 unità lungo l'asse z. Le matrici di rotazione nella formula sono basate sull'orientamento della fotocamera, in termini di quanto gli assi dello spazio della fotocamera vengono ruotati fuori allineamento con lo spazio globale. Ad esempio, se la fotocamera menzionata in precedenza punta verso il basso, l'asse z è di 90 gradi (pi/2 radianti) fuori allineamento con l'asse z dello spazio globale, come illustrato nella figura seguente.

illustration of the view space of the camera in comparison to world space

Le matrici di rotazione applicano rotazioni uguali, ma opposte, alla grandezza dei modelli nella scena. La matrice di visualizzazione per questa fotocamera include una rotazione di -90 gradi intorno all'asse x. La matrice di rotazione viene combinata con la matrice di traslazione per creare una matrice di visualizzazione che regola la posizione e l'orientamento degli oggetti nella scena in modo che la parte superiore si affacci sulla fotocamera, dando l'aspetto che la fotocamera è sopra il modello.

Configurazione di una matrice di visualizzazione

Direct3D utilizza il mondo e visualizza le matrici per configurare diverse strutture dati interne. Ogni volta che si imposta una nuova matrice globale o di visualizzazione, il sistema ricalcola le strutture interne associate. L'impostazione di queste matrici richiede spesso tempo di calcolo. È possibile ridurre al minimo il numero di calcoli necessari concatenando le matrici del mondo e visualizzando le matrici in una matrice di visualizzazione globale impostata come matrice globale e quindi impostando la matrice di visualizzazione sull'identità. Mantenere memorizzate nella cache copie di singoli mondi e matrici di visualizzazione in modo da poter modificare, concatenare e reimpostare la matrice globale in base alle esigenze.

Trasformazioni