Note
Struttura
Costruzione di Interfacce
Lezione 6
 Proiezioni Prospettiche e ortogonali
cignoni@iei.pi.cnr.it
http://vcg.iei.pi.cnr.it/~cignoni
Trasformazioni
Due trasformazioni vengono applicate ai vertici della geometria che voglio disegnare
Trasformazione di Modellazione
Porta la geometria nel sistema di riferimento standard della camera
Proiezione di vista
Proietta la geometria dal sistema di riferimento della camera sul piano di proiezione.
Elementi di base
Prospettiva Classica
Il problema è quello classico, da sempre affrontato, nell’arte, in architettura e della progettazione, di riuscire a riportare su di un piano, in maniera rigorosa un oggetto tridimensionale.
Proiezioni ortografiche classiche
L’oggetto ha una struttura regolare, ben assimilabile ad un parallelepipedo;
Proietto sui lati del box.
Centro di proiezione, all’infinito,
proiettori paralleli e perpendicolari al piano di proiezione
Piano di proiezione perpendicolare agli assi del sistema di riferimento
Proiezioni Assonometriche
Piani di proiezione in posizione non vincolata:
Centro di proiezione, all’infinito,
proiettori paralleli e perpendicolari al piano di proiezione
Piano di proiezione:
Simmetrico ai 3 assi (isometrica)
Simmetrico rispetto a 2 assi (dimetrico)
Posizione qualsiasi (trimetrica)
Proiezioni Oblique
Proiettori paralleli ma non perpendicolari al piano di proiezione
 Ortografica
Proiezioni prospettiche
Caratteristica principale:
diminuzione della dimensione apparente degli oggetti all’aumentare della distanza dall COP.
I proiettori passano tutti per il COP
Caso Classico
Il centro di proiezione simmetrico rispetto alla finestra nel piano di proiezione
Caso generico,
COP svincolato dal piano di proiezione
Prospettiva classica
Al solito nella visione tradizionale del disegno tecnico si è soliti distinguere vari tipi di proiezione prospettica, indicando il numero di punti all’infinito (vanishing points);
a) three vanishing points
b) two vanishing points
c) one vanishing points
Prospettiva Classica
In realtà questi, come nel caso ortogonali sono solo vincoli sul piazzamento del piano di proiezione
One point Persp: Piano di proiezione parallelo ad uno dei piani del sistema di riferimento
Two point Persp: Piano di proiezione perpendicolare ad uno dei piani del sistema di riferimento
Three Point Persp: Piano di proiezione Libero
Camera Frame
Si assume che la camera sia piazzata con il centro di proiezione sull’origine e diretta verso l’asse z negativo.
È compito della matrice di Modellazione portare gli oggetti in questo frame.
Questo sistema di riferimento è detto camera frame, o eye frame
Sistemi di coordinate in OpenGL
Object:
la ruota con l’origine nel centro.
World:
la ruota piazzata nel sistema di riferimento del mondo (e.g. quello classico con y = alto del mondo, ecc,).
Cambia quando si muove la macchina
Eye:
Il sistema di riferimento in cui l’origine e’ il centro di proiezione, la z è la direzione di vista ecc.
Cambia quando muovo l’osservatore.
Clip
Normalized device
Window
Sistema di riferimento della Camera
Come si specifica il sistema di riferimento della camera?
Matrice di trasformazione che fa parte delle matrici di modellazione
Passa dalle coordinate di mondo alle coordinate di occhio
Piazzare la camera
Caso semplice,
Voglio piazzare la camera in modo che inquadri oggetti centrati sull’origine (del sistema di riferimento mondo), guardando lungo la z negativa (come di default)
E` solo una traslazione sull’asse z:
Piazzare la camera
Caso Generale
Definire una camera significa definire una proiezione (prospettica)
La camera (il centro di proiezione) è centrata in un punto detto VRP (view Reference Point)
Il Piano di proiezione è perpendicolare ad un vettore VPN (view plane normal)
Del piano e’ necessario specificare anche l’orientamento, quindi
Si specifica VUP (view up vector)
Piazzare la camera
La trasformazione non e’ altro che un cambio di sistemi di riferimento.
Basta definire gli assi e l’origine del un sistema di riferimento in termini dell’altro.
Noi abbiamo la posizione della camera nel sistema di riferimento world
Dobbiamo ancora esprimere gli assi del sistema di riferimento camera in sr World.
Camera axis in world space
Uno alla volta.
L’asse z della camera e’ semplicemnte la direzione di proiezione, cioe’ la normale al piano di proiezione
L’asse x della camera deve essere perpendicolare al vettore up e all’asse z appena trovato
L’asse y e’ semplicemente il prodotto vettore tra gli altri due assi che ho trovato (attenti al segno)
Cambio di Frame
Dati due sistemi di riferimento.
Esprimiamo uno in termini dell’altro:
Questo definisce la matrice 4x4 di cambiamento di frame
Cambio di Frame
La matrice di
cambiamento
di frame
Date le due rappresentazioni a,b in coordinate omogenee in differenti frame (sia di un vettore che di un punto), vale:
"Noi abbiamo"
Noi abbiamo
Camera e suoi parametri in coordinate di mondo.
Vogliamo trovare la trasf M che prenda la rappresentazione di un punto pw in coordinate omogenee spazio di mondo e ne dia la sua rappresentazione in coordinate di camera pe.
Eye to World
Esprimo il sistema di riferimento della camera in termini dello spazio di mondo
World to eye
A noi serve la matrice inversa:
da world a eye
Per invertirla si nota che la possiamo scrivere come un prodotto tra Rot e Tras
World to Eye
Invertire Traslazioni e rotazioni è facile…
In opengl
Grazie al cielo in opengl tutto ciò  è ben semplice
gluLookAt( eyex, eyex, eyex,
atx,aty,atz,
upx,upy,upz);
Definisce la trasformazione che porta dallo spazio di mondo allo spazio di eye;
NOTA bene la gluLookAt va nella ModelView Matrix