Spazio (sistema di riferimento) Vista Spazio Vista • Uno spazio

Transcript

Spazio (sistema di riferimento) Vista Spazio Vista • Uno spazio
Marco Tarini - Università dell'Insubria
Transform 3
Spazio (sistema di riferimento) Vista
ye
xe
y
-ze
Oe
sistema di riferimento
Vista (View Space)
x
0
sistema di riferimento
del mondo
(World Space)
z
Marco Tarini ‧ Computer Graphics ‧
2016/17 ‧ Università dell’Insubria
Spazio Vista
• Uno spazio (sistema di riferimento) …
–
–
–
–
–
Comune a tutta la scena (come già lo spazio mondo)
La camera (macchina fotografica) è nell’origine
Il piano immagine è parallelo agli assi X e Y
Il piano immagine è ortogonale all’asse Z
Specificatamente:
• La X è l’asse orizzontale dell’immagine, verso destra.
• La Y è l’asse verticale dell’immagine, verso l’alto.
• La Z va verso l’osservatore
(questo, nella convenzione OpenGL;
in DirectX: va verso la scena, si allontana dall’osserv.)
Marco Tarini ‧ Computer Graphics ‧
Computer Graphics 2016/2017
2016/17 ‧ Università dell’Insubria
1
Marco Tarini - Università dell'Insubria
Transform 3
La trasformazione di vista
nella sequenza di trasformazioni
y
v0
M: transformazione di modellazione
V: transformazione di vista
P: transformazione di proiezione
S: transformazione di viewport
v1
z
v2
x
Object Space
v2
Screen Space
M
S
y
z
y
v1
v0
v1
v0
v2
x
V
v1
-z
x
World Space
1
v2
v0
View Space
Marco Tarini ‧ Computer Graphics ‧
P
v0 -1
v1
1
y
v1
-x
-z
v2
-1
v2
v0
2 0 1 6 / 1 7 ‧ U n i v e r “CLIP”
s i t à dSpace
ell’Insubria
Trasformazione di “Vista”
• Da: World Frame
A: View Frame
• Dipende interamente dai «parametri estrinseci» della
macchina fotografica (virtuale)
– Cioè da dove è, e come è orientata (nel mondo)
– (per es: un tipico task di Computer Vision:
«registrare una foto» = evincere i parametri estrinseci della
camera al momento del suo scatto )
• E’ un cambio di sistema di riferimento,
cioè una trasformazione affine…
– Matrice di Vista = la Matrice che fa questa trasformazione
Marco Tarini ‧ Computer Graphics ‧
Computer Graphics 2016/2017
2016/17 ‧ Università dell’Insubria
2
Marco Tarini - Università dell'Insubria
Transform 3
Esempio tipico di
costruzione transformazione di vista
Input:
1) camera position: peye
2) target position: ptarget
3) vettore di alto: vup
nb: punti e vettori
espressi in spazio
mondo!
un esempio di
descrizione
esaustiva dei
parametri
estrinseci della
camera
y
vup
peye
0
z
sistema di riferimento
globale (world frame)
x
ptarget
Marco Tarini ‧ Computer Graphics ‧
2016/17 ‧ Università dell’Insubria
Esempio tipico di
costruzione transformazione di vista
Input:
1) camera position: peye
2) target position: ptarget
3) vettore di alto: vup
Output:
Matrice di Trasformazione
world frame → eye frame
ye
xe
y
-ze
vup
z
sistema di riferimento
della camera
(eye frame)
0
sistema di riferimento
globale (world frame)
x
Marco Tarini ‧ Computer Graphics ‧
Computer Graphics 2016/2017
oe
2016/17 ‧ Università dell’Insubria
3
Marco Tarini - Università dell'Insubria
Transform 3
Esempio tipico di
costruzione transformazione di vista
Input:
1) camera position: peye
2) target position: ptarget
3) vettore di alto: vup
vec3 oe;
vec3 xe, ye, ze;
ze = p_target - p_eye;
ze = -ze;
ze = normlize( ze );
ye
xe
y
-ze
vup
z
xe = cross( vup , ze );
xe = normalize( xe );
oe
ye = cross(ze, xa);
xe ye ze o e
0
x
Marco Tarini ‧ Computer Graphics ‧
0
0
0
1
matrice che va da
spazio vista a
spazio mondo.
E’ l’inversa di quella
che voelevo!
Ergo, va invertita!
2016/17 ‧ Università dell’Insubria
Esempio tipico di
costruzione transformazione di vista
Origine e assi del
sistema vista
espressi nelle coord
del sistema mondo
vec3 oe;
vec3 xe, ye, ze;
ze = p_target - p_eye;
ze = -ze;
ze = normlize( ze );
Inverto z_e, per come e’
definito
lo spazio vista
(z verso osservatore)
“completamento di base”
xe = cross( vup , ze );
xe = normalize( xe );
normalizzaz non necessaria (perché?)
ye = cross(ze, xa);
nb: quando si
fallisce? le due
normalizz possono
essere div by 0?
quando?
Marco Tarini ‧ Computer Graphics ‧
Computer Graphics 2016/2017
xe ye ze o e
0
0
0
1
matrice che va da
spazio vista a
spazio mondo.
E’ l’inversa di quella
che volevo!
Ergo, va invertita!
2016/17 ‧ Università dell’Insubria
4
Marco Tarini - Università dell'Insubria
Transform 3
Esempio tipico di
costruzione transformazione di vista
mat4 view_matrix( vec3 p_eye, vec3 p_target, vec3 v_up )
{
vec3 xe, ye, ze; // gli assi del sist. di rif. vista
ze = p_eye - p_target;
ze = normlize( ze );
xe = cross( vup, ze );
xe = normalize( xe );
ye = cross( ze, xa );
mat4
m[0]
m[1]
m[2]
m[3]
m; // l’inversa della mat di vista
= vec4( xe, 0 ); // setta la 1ma colonna di m
= vec4( ye, 0 );
= vec4( ze, 0 );
= vec4( p_pov, 1 );
return invese(m); // inversione generica? (spreco!)
}
Marco Tarini ‧ Computer Graphics ‧
2016/17 ‧ Università dell’Insubria
Inversione di una rotazione (ripetiamoci)
-1
R
0
0
1
=
T
R
0
0
1
rotazione 4x4 generica
(asse passante per origine)
dove:
R rotazione 3x3,
cioè ortonormale a det 1,
cioè v0 v1 v2 :
- unit sized
- ortogonali a due a due
Marco Tarini ‧ Computer Graphics ‧
Computer Graphics 2016/2017
R
= v0 v1 v2
2016/17 ‧ Università dell’Insubria
5
Marco Tarini - Università dell'Insubria
Transform 3
Inversione di una rotazione (ripetiamoci)
-1
R
0
0
1
T
=
R
0
0
1
rotazione 4x4 generica
(asse passante per origine)
proof (traccia):
T
R
*
R
v0
v1
v2
=
Marco Tarini ‧ Computer Graphics ‧
* v0 v1 v2 =
I
2016/17 ‧ Università dell’Insubria
Inversione di una traslazione (ripetiamoci)
-1
I
t
0
1
=
I
-t
0
1
matrice 4x4 di
traslazione
Marco Tarini ‧ Computer Graphics ‧
Computer Graphics 2016/2017
2016/17 ‧ Università dell’Insubria
6
Marco Tarini - Università dell'Insubria
Transform 3
Rototraslazione (isometria)
(tutte e sole le trasformazioni rigide)
R
0
t =
I
t *
1
0
1
roto-traslazione (4x4)
( o isometria )
traslazione
Marco Tarini ‧ Computer Graphics ‧
=
nb:
(A B)-1 = B-1 A-1
I
t *
1
0
1
R
0
1
*
I
-t =
0
1
Marco Tarini ‧ Computer Graphics ‧
Computer Graphics 2016/2017
1
2016/17 ‧ Università dell’Insubria
t =
0
T
0
rotazione
-1
0
0
(asse passante per origine)
Inversione di
una roto-traslazione
R
R
-1
R
0
0
1
=
R
T
0
1
R
T
* -t
2016/17 ‧ Università dell’Insubria
7