|
|
|
cignoni@iei.pi.cnr.it |
|
http://vcg.iei.pi.cnr.it/~cignoni |
|
|
|
|
|
|
|
|
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. |
|
|
|
|
|
|
|
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. |
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
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) |
|
|
|
|
|
|
Proiettori paralleli ma non perpendicolari al
piano di proiezione |
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
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 |
|
|
|
|
|
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 |
|
|
|
|
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: |
|
|
|
|
|
|
|
|
|
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) |
|
|
|
|
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. |
|
|
|
|
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) |
|
|
|
|
|
|
Dati due sistemi di riferimento. |
|
|
|
Esprimiamo uno in termini dell’altro: |
|
|
|
Questo definisce la matrice 4x4 di cambiamento
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 |
|
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. |
|
|
|
|
|
|
Esprimo il sistema di riferimento della camera
in termini dello spazio di mondo |
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
Invertire Traslazioni e rotazioni è facile… |
|
|
|
|
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 |
|