Dal sistema di riferimento del mondo (World Space), costruire un nuovo sistema di riferimento centrato e orientato come la camera (View Space)
OVVERO: costruire la matrice di trasformazione che dato qs input da spazio mondo me lo mappa in spazio vista
ALGORITMO
calcolo un output intermedio
INPUT
Per fare ciò, ti servono 3 vettori ortogonali:
p_eye→ posizione della camera (da cui la vista parte)
p_target→ dove sta guardando la camera (il punto verso cui punta)
v_up→ un vettore che indica la direzione "in alto" nel mondo (es. [0,1,0] = NORD nel mondo)
li trasformo per costruire gli assi locali della camera.
Â
OUTPUT INTERMEDIO
Nuovo asse della camera | Come lo calcoli | Significato |
ze | normalize(p_eye - p_target) | ATTENZIONE: dal target alla camera |
xe | normalize(cross(v_up, ze)) | Verso destra della camera (perpendicolare al piano v_up e ze) |
ye | cross(ze, xe) | Verso alto della camera, ricostruito perpendicolare agli altri due - già unitario pk scalare di 2 vettori unitari a 90° di ampieza (sen90°=1) |
Una volta costruito i vettori che mi servono, posso progettare la matrice che mi converte i punti/vettori da spazio mondo a spazio vista:
uso i nuovi dati per costruire una matrice che va da spazio vista a spazio mondo
la matrice spazio mondo è una roto-traslazione, quindi per definire l’inversa, eseguo le operazioni inverse alla roto traslazione
passaggi in dettaglio (ripasso del cap sulle trasformazioni di bse)
ALTERNATIVA
Una trackball (interfaccia grafica) che modella posizione e orientamento di un oggetto.
Se questo oggetto è la cameta, allora modello la matrice di vista muovendo una trackball
Mi sorvono 3 parametri: 2 angoli ed una distanza
- ha fatto corrispondere spazi camera con lo spazio mondo, spostando la camera all’origine dello spazio mondo
- secondo step
- terzo step
- quarto step
- conclusione
Â