• Non ci sono risultati.

Marco Tarini -Università dell'InsubriaTransform 3Computer Graphics 2016/20171

N/A
N/A
Protected

Academic year: 2021

Condividi "Marco Tarini -Università dell'InsubriaTransform 3Computer Graphics 2016/20171"

Copied!
7
0
0

Testo completo

(1)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Spazio (sistema di riferimento) Vista

sistema di riferimento Vista ( View Space )

y

e

x

e

-z

e

O

e

y

x z

0

sistema di riferimento del mondo

( World Space )

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.)

(2)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

z

y

x v

0

v

1

v

2 World Space

V: transformazione di vista P: transformazione di proiezione S: transformazione di viewport

y

-z v

0

v

1

v

2

View Space

y -x -z v

0

v

1

v

2

v

0

v

2

v

1

v

0

v

1

v

2 Screen Space

S

“CLIP” Space

1

1 -1

-1 x

z

y

x v

0

v

1

v

2 Object Space

M: transformazione di modellazione

P M

V

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

(3)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Input:

1) camera position: p eye 2) target position: p target 3) vettore di alto: v up

Esempio tipico di

costruzione transformazione di vista

y

z 0 x

sistema di riferimento globale (world frame)

v up

nb: punti e vettori espressi in spazio mondo!

p target

p eye

un esempio di descrizione esaustiva dei parametri estrinseci della camera

Input:

1) camera position: p eye 2) target position: p target 3) vettore di alto: v up

Esempio tipico di

costruzione transformazione di vista

sistema di riferimento della camera

(eye frame)

y

e

x

e

-z

e

o

e

y

z 0 x

sistema di riferimento globale (world frame)

Output:

Matrice di Trasformazione world frame → eye frame

v up

(4)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Input:

1) camera position: p eye 2) target position: p target 3) vettore di alto: v up

y

e

x

e

-z

e

o

e

y

z 0 x

v up

vec3 oe;

vec3 xe, ye, ze;

ze = p_target - p_eye;

ze = -ze;

ze = normlize( ze );

xe = cross( vup , ze );

xe = normalize( xe );

ye = cross(ze, xa);

y

e

x

e

z

e

o

e

0 0 0 1

matrice che va da spazio vista a spazio mondo.

E’ l’inversa di quella che voelevo!

Ergo, va invertita!

Esempio tipico di

costruzione transformazione di vista

vec3 oe;

vec3 xe, ye, ze;

ze = p_target - p_eye;

ze = -ze;

ze = normlize( ze );

xe = cross( vup , ze );

xe = normalize( xe );

ye = cross(ze, xa);

y

e

x

e

z

e

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!

Origine e assi del sistema vista espressi nelle coord del sistema mondo

Inverto z_e, per come e’

definito lo spazio vista (z verso osservatore)

“completamento di base”

nb: quando si fallisce? le due normalizz possono essere div by 0?

quando?

normalizzaz non necessaria (perché?)

(5)

Esempio tipico di

costruzione transformazione di vista

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

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; // l’inversa della mat di vista

m[0] = vec4( xe, 0 ); // setta la 1ma colonna di m m[1] = vec4( ye, 0 );

m[2] = vec4( ze, 0 );

m[3] = vec4( p_pov, 1 );

return invese(m); // inversione generica? (spreco!) }

Inversione di una rotazione (ripetiamoci)

R 0

00 11

rotazione 4x4 generica

(asse passante per origine)

R = v 0 v 1 v 2

R rotazione 3x3,

cioè ortonormale a det 1, cioè v

0

v

1

v

2

:

- unit sized

- ortogonali a due a due

-1

dove:

= R 0

00 11

T

(6)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

R v v v v 0 0 1 1

v 2

v 2 =

proof (traccia):

* R =

T * v 0 v 1 v 2 I

R 0

00 11

rotazione 4x4 generica

(asse passante per origine)

-1

= R 0

00 11

T

Inversione di una traslazione (ripetiamoci)

I t

00 11

I

00 11

matrice 4x4 di traslazione

-1

= -t

(7)

Rototraslazione (isometria)

(tutte e sole le trasformazioni rigide)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

R t

00 11

= I t

00 11

R 0

00 11

*

roto-traslazione (4x4)

( o isometria ) traslazione rotazione

(asse passante per origine)

Inversione di

una roto-traslazione

R t

00 11

= I t

00 11

*

-1 -1

=

= =

nb: (A B)

-1

= B

-1

A

-1

R 0

00 11

I -t

00 11

R 0

00 11

* R

00 11 T

R T * -t

T

Riferimenti

Documenti correlati

A simple rendering method is presented to avoid vertex seams in cylindrical and toroidal uv-mappings used for texture mapping (a vertex seam is a vertex dupli- cation of a

Marco Tarini - Università dell'Insubria A.A... Marco Tarini - Università

volumetric data, polygonal meshes, NURBS, splines, subdivision surfaces, LODs, multiresolution structures…. • 3D acquisition (catturare modelli 3D

quanto è oneroso applicare ad uno (o ventimila) punti /

Mathematics for 3D Game Progr. (3za ed)

Non tutti i puffi si conoscono fra loro: ogni puffo conosce tutti i propri amici, naturalmente, e anche tutti quelli che i propri amici e i propri conoscenti conoscono (i puffi

Per fare questo, ogni volta che emerge un nuovo pesce dominante, si vuole sapere la sua posizione (cio` e quella della sua tana) e il suo peso, al momento del “sorpasso”... Nota:

Bisogna scrivere un programma che legga da un file una sequenza di eventi, come l’introduzione di una nuova persona nel gruppo delle cene, l’estromissione dallo stesso gruppo