• Non ci sono risultati.

Cambi di Sistemi di riferimento

N/A
N/A
Protected

Academic year: 2021

Condividi "Cambi di Sistemi di riferimento"

Copied!
12
0
0

Testo completo

(1)

Costruzione di Interfacce Lezione 5

Trasformazioni Affini

cignoni@iei.pi.cnr.it http://vcg.iei.pi.cnr.it/~cignoni

Costruzione di Interfacce - Paolo Cignoni 2

Cambi di Sistemi di riferimento

™Il primo step della pipeline di rendering è quello di trasformare la scena nel sistema di riferimento della camera

Costruzione di Interfacce - Paolo Cignoni 3

Object Frame

™Perché ogni oggetto ha il suo sistema di riferimento?

™Uso Multiplo di uno stesso oggetto

™Posizione parametrica

Costruzione di Interfacce - Paolo Cignoni 4

Coordinate Omogenee

™Si dice che un punto P è rappresentato dalla matrice colonna p

™E un vettore w è rappresentato dalla matrice colonna a









= 1

3 2 1

α α α p









= 0

3 2 1

δ δ δ a

Trasformazioni Affini

™Notare che se u è un vettore solo 9 elementi di A sono usati nella trasformazione

™La quarta colonna corrisponde alla quarta riga della matrice di cambiamento di frame, che conteneva il nuovo punto di origine del frame (che chiaramente non serve se si parla di

















=

0 1 0 0 0

3 2 1

34 33 32 31

24 23 22 21

14 13 12 11

γ γ γ

α α α α

α α α α

α α α α Au

Traslazione

™modifica i punti di un frame sommando a tutti i punti un vettore di spostamento d P′=P+d

d p p'= +

(2)

Costruzione di Interfacce - Paolo Cignoni 7

Traslazione









=









′=









=

0 1 1

z y x

z d y x

z y x

α α α p

d p p p'= +









=

=

1 0 0 0

1 0 0

0 1 0

0 0 1

z y x

α α α T

Tp p

Costruzione di Interfacce - Paolo Cignoni 8

Traslazione









=

1 0 0 0

1 0 0

0 1 0

0 0 1 ) , , (

z y x

z y

x α

α α α

α α T









=

1 0 0 0

1 0 0

0 1 0

0 0 1 ) , , ( ) , ,

1(

z y x

z y x z y

x α

α α α

α α α α

α T

T

Costruzione di Interfacce - Paolo Cignoni 9

Rotazione

™Di una rotazione si deve specificare

™angolo,

™asse

™punto di applicazione

Costruzione di Interfacce - Paolo Cignoni 10

Rotazione

™Caso semplice asse z, intorno all’origine, di un angolo θ

™Possiamo considerare il problema in 2d

) sin(

) cos(

sin cos

θ φ ρ

θ φ ρ

φ ρ

φ ρ

+

=

+

=

=

=

y x y x

θ ρ

(x’,y’) (x,y)

Rotazione

θ θ θ φ ρ θ φ ρ

θ θ θ φ ρ θ φ ρ

φ ρ

φ ρ

cos sin cos sin sin cos

sin cos sin sin cos cos sin cos

y x y

y x x

y x

+

= +

′=

=

=

=

=



 



 

 −

=

 

y x y

x

θ θ

θ θ

cos sin

sin cos

Rotazione









 −

=

1 0 0 0

0 1 0 0

0 0 cos sin

0 0 sin cos )

( θ θ

θ θ

zθ R









 +

=









=









1 cos sin

sin cos

1 ) ( 1

' ' '

z y x

y x

z y x

z y x

z

θ θ

θ θ θ

R

(3)

Costruzione di Interfacce - Paolo Cignoni 13

Rotazioni









= −

1 0 0 0

0 cos 0 sin

0 0 1 0

0 sin 0 cos )

( θ θ

θ θ

Yθ R









= −

1 0 0 0

0 cos sin 0

0 sin cos 0

0 0 0 1 )

( θ θ

θ θ θ

RX

Costruzione di Interfacce - Paolo Cignoni 14

Rotazione inversa

™Le matrici di rotazione viste finora sono invertibili facilmente.

™Quindi basta trasporre…

) ( ) (

) cos(

) cos(

) sin(

) sin(

) ( ) (

1 1

θ θ

θ θ

θ θ

θ θ

RT

R R R

=

=

=

=

Costruzione di Interfacce - Paolo Cignoni 15

Rotazioni

™Finora abbiamo visto solo rotazioni intorno all’origine e lungo gli assi.

™Una rotazione arbitraria si ottiene componendo piu’ rotazioni e traslazioni

Costruzione di Interfacce - Paolo Cignoni 16

Scalatura

™Non rigida

™Non uniforme lungo gli assi

™Solo centrata all’origine









=

′=

′=

′=

1 0 0 0

0 0 0

0 0 0

0 0 0 ) , , (

z y x z y x

z y x

z z

y y

x x

β β β β β β

β β β

T

Composizione di Trasformazioni

™Le trasformazioni sono matrici

™L’applicazione di trasformazione è la moltiplicazione di una matrice per un vettore.

™L’applicazione di una sequenza di trasformazioni ad un punto corrisponde ad una sequenza di moltiplicazioni di di matrici per vettori

™Associatività

CBAp q=

( )

( )

(CBAp )

q=

(CBA)p

q=

Composizione di trasformazioni

™Conviene se si deve trasformare un solo punto

™Conviene se si deve trasformare molti punti

( )

( )

(CBAp )

q=

(CBA)p q=

(4)

Costruzione di Interfacce - Paolo Cignoni 19

Composizione di Trasformazioni

™La moltiplicazione tra matrici NON è commutativa

™Quindi l’ordine delle trasformazioni È importante

Costruzione di Interfacce - Paolo Cignoni 20

Composizione di Trasformazioni

RTp q=

x y

TRp q=

x y

Costruzione di Interfacce - Paolo Cignoni 21

Rotazione intorno ad un punto

™Si ottiene spostando tutto il sistema di riferimento nel punto, facendo la rotazione e rimettendo tutto a posto

T(-p) T(p)R Rp= 0

x y

Costruzione di Interfacce - Paolo Cignoni 22

Rotazione intorno ad un asse

™L’idea e’ quella di fare :

™due rotazioni che portino l’asse di rotazione specificato a coincidere con l’asse z,

™la rotazione lungo quell’asse di quanto specificato

™rimettere tutto a posto

™trovare non è semplice…

) ( ) ( ) ( ) ( )

( x y y z z y y x x

x θ R θ R θ R θ R θ

R

R= − −

x

y θ

θ

Shearing

™Sarebbe derivabile dalle altre…

™Lo spostamento e’ proporzionale alla coord y;









=

=

′= +

=

1 0 0 0

0 1 0 0

0 0 1 0

0 0 cot 1 ) (

cot

θ θ

θ

Hxy

z z

y y

y x x

OpenGL

™Nello Stato di OpenGL ci sono tre matrici 4x4 di trasformazioni

™ModelView

™Project

™Texture

™Una di queste e’ sempre la matrice corrente

™Tutte i comandi che modificano matrici fanno sempre riferimento alla matrice corrente

(5)

Costruzione di Interfacce - Paolo Cignoni 25

Opengl

™Per cambiare matrice Corrente

™glMatrixMode( *** )

™GL_MODELVIEW

™GL_PROJECTION

™GL_TEXTURE

™Per rimpiazzare la matrice

™glLoadIdentity()

™glLoadMatrix(Pointer to a matrix);

™Tutti gli altri comandi modificano (moltiplicano per un altra matrice) la matrice corrente.

Costruzione di Interfacce - Paolo Cignoni 26

OpenGl

™Leggere una matrice

™glGetDoublev(GL_MODELVIEW_MATRIX,poi nter_to_matrix)

™Nota: nello scambio diretto di matrici OpenGL assume che siano memorizzate in column major order (e.g. per colonne)









15 11 7 3

14 10 6 2

13 9 5 1

12 8 4 0

a a a a

a a a a

a a a a

a a a a

Costruzione di Interfacce - Paolo Cignoni 27

OpenGL

™Rotazioni

™glRotatef(angle, ax,ay,az);

™Traslazioni

™glTranslatef(dx,dy,dz);

™Scalature

™glScalef(sx,sy,sz)

™Generica

™glMultMatrix(matrix_pointer) in gradi!

Costruzione di Interfacce - Paolo Cignoni 28

Composizione di Matrici in Opengl

™I comandi opengl postmoltiplicano la matrice corrente per quella specificata

x y

x y

RTp q=

TRp q=

I glRotate R glTranslate RT

Stato della matrice corrente dopo il comando a sinistra

I glTranslate T glRotate TR

Stack di matrici

™La matrice corrente puo’ essere salvata in uno stack e recuperata

successivamente

™glPushMatrix()

™glPopMatrix()

Stack di Matrici

™Il Matrix Stack e’ particolarmente utile quando si disegnano scene strutturate

// Whole car transformation // eg position of the car on the road glTranslate(CarPos)

glRotate(CarDirection,0,1,0) For(i=0;i<4;++i)

{

glPushMatrix();

// relative single wheel position glTranslate(wheelpos[i]);

DrawWheel(i);

glPopMatrix();

}

(6)

Costruzione di Interfacce - Paolo Cignoni 31

Composizione di Matrici in Opengl

™I comandi opengl postmoltiplicano la matrice corrente per quella specificata

x y

x y

RTp

q= q=TRp

I glScale S glTranslate ST

Stato della matrice corrente dopo il comando a sinistra

I glTranslate T glScale TS

Costruzione di Interfacce - Paolo Cignoni 32

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.

Costruzione di Interfacce - Paolo Cignoni 33

Elementi di base

Costruzione di Interfacce - Paolo Cignoni 34

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)

(7)

Costruzione di Interfacce - Paolo Cignoni 37

Proiezioni Oblique

™Proiettori paralleli ma non

perpendicolari al piano di proiezione

Costruzione di Interfacce - Paolo Cignoni 38

Ortografica

Costruzione di Interfacce - Paolo Cignoni 39

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

Costruzione di Interfacce - Paolo Cignoni 40

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

x y

z

(8)

Costruzione di Interfacce - Paolo Cignoni 43

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

Costruzione di Interfacce - Paolo Cignoni 44

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

Costruzione di Interfacce - Paolo Cignoni 45

Piazzare la camera









= −

1 0 0 0

1 0 0

0 0 1 0

0 0 0 1

T d

?

™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:

Costruzione di Interfacce - Paolo Cignoni 46

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)

z up x= ×

x z y= ×

(9)

Costruzione di Interfacce - Paolo Cignoni 49

Cambio di Frame

™Dati due sistemi di riferimento.

™Esprimiamo uno in termini dell’altro:

™Questo definisce la matrice 4x4 di cambiamento di frame

{v1,v2,v3,P0} {u1,u2,u3,Q0}

0 3 43 2 42 1 41 0

3 33 2 32 1 31 3

3 23 2 22 1 21 2

3 13 2 12 1 11 1

P v v v Q

v v v u

v v v u

v v v u

+ + +

=

+ +

=

+ +

=

+ +

=

γ γ γ

γ γ γ

γ γ γ

γ γ γ









=

1 0 0 0

43 42 41

33 32 31

23 22 21

13 12 11

γ γ γ

γ γ γ

γ γ γ

γ γ γ M

Costruzione di Interfacce - Paolo Cignoni 50

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:









=









0 3 2 1

0 3 2 1

P v v v

Q u u u

M

b M a a

b

bT T T T

P v v v

P v v v M Q

u u u

=









=









=









0 3 2 1

0 3 2 1

0 3 2 1

Costruzione di Interfacce - Paolo Cignoni 51

™Noi abbiamo

™Camera e suoi parametri in coordinate di mondo.

™Vogliamo trovare la trasf M che prenda la rappresentazione di un punto pwin coordinate omogenee spazio di mondo e ne dia la sua rappresentazione in coordinate di camera pe.

w

e Mp

p =

Costruzione di Interfacce - Paolo Cignoni 52

Eye to World

™Esprimo il sistema di riferimento della camera in termini dello spazio di mondo

e

w Mp

p = {u,v,n,P0} {x,y,z,0}









= + + +

= + +

=

+ +

=

+ +

=

1 0 0 0 0

0

z z z z

y y y y

x x x x

z y x

z y x

z y x

z y x

p n v u

p n v u

p n v u

z p y p x p P

z n y n x n n

z v y v x v v

z u y u x u u

M

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

















=

=









= 0

0 0

1 0 0

0 1 0

0 0 1

z z z

y y y

x y x

z y x

z z z z

y y y y

x x x x

n v u

n v u

n v u

p p p

p n v u

p n v u

p n v u

TR M

World to Eye

™Invertire Traslazioni e rotazioni è facile…

( ) =

















=

=

=

1 0 0 0

1 0 0

0 1 0

0 0 1

1 0 0 0

0 0 0

1 1 1 1

z y x

z y x

z y x

z y x

p p p

n n n

v v v

u u u T R TR M









z z y y x x z y x

z z y y x x z y x

n p n p n p n n n

v p v p v p v v v

u p u p u p u u u

(10)

Costruzione di Interfacce - Paolo Cignoni 55

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

Costruzione di Interfacce - Paolo Cignoni 56

Matrici di Proiezione Prospettica

™Assunto che siamo nel sistema di riferimento dellacamera con il centro di proiezione nell’origine, e il piano di proiezione a distanza d lungo l’asse -z

™Vogliamo trovare la proiezione

sul piano di proiezione di un punto (x,y,z) ) , , (xp yp zp

Costruzione di Interfacce - Paolo Cignoni 57

Proiezione Prospettica

™Si ottiene che:

™Nota che questa trasformazione non è lineare, né affine, né reversibile.

d z y y d z x x

d x z x

p p

p

/

/ =

=

=

Costruzione di Interfacce - Paolo Cignoni 58

Coordinate Omogenee

™Estendiamo la nostra def di coordinate omogenee dicendo che un punto p può essere rappresentato come

™Un punto in 3D corrisponde ad una linea in 4d.

™Posso Sempre recuperare la forma con 1 come quarto elemento

™Posso fare matrici che modificano il quarto elemento.

0 con ≠









= w

w wz wy wx p

Coordinate Omogenee

™In particolare possiamo definire la matrice

Che effettua la trasformazione prospettica, purchè si normalizzi dividendo per la quarta componente





















=

=









=









=

1 / /

/ 1

0 / 1 0 0

0 1 0 0

0 0 1 0

0 0 0 1

dd z

yd z

x

d z

z y x

z y x

d

Mp q p

M

Proiezione prospettica in opengl

™Finora abbiamo definito solo l’operazione di proiezione.

™Per definire una camera dobbiamo anche definire il view volume

™Angle of view

™Near and far clipping planes

(11)

Costruzione di Interfacce - Paolo Cignoni 61

Proiezione prospettica in opengl

™glFrustum(xmin,xmax,ymin,ymax,near,far);

™gluPerspective(fov,aspect,near,far)

-far

-near -near

-far

Costruzione di Interfacce - Paolo Cignoni 62

Proiezioni Ortogonali

™Caso particolare di proiezione parallela in cui le linee di proiezione sono perpendicolari al view plane

™La proiezione è semplicemente

=0

=

= p p

p x y y z

x

















=









1 0 0 0 0

0 0 0 0

0 0 1 0

0 0 0 1

1

z y x

z y x

p p p

Costruzione di Interfacce - Paolo Cignoni 63

Proiezioni Ortogonali in OpenGL

™glOrtho(xmin,xmax,ymin,ymax,near,far);

™I clipping planes sono a z= -near e z=-far

-far

-near -near

-far

Costruzione di Interfacce - Paolo Cignoni 64

Hidden Surface Removal

™Si deve disegnare sul frame buffer solo quelle porzioni di primitive che sono davanti a tutte le altre; esistono numerosi algoritmi

™Tecnica Zbuffer, per ogni pixel dello schermo memorizzo la minima distanza dal centro di proiezione disegnata

in quel pixel.

™Quando rasterizzo, disegno (e aggiorno lo zbuffer, solo se davanti.

Window e Device coords

™In Opengl si distingue tra

™Normalized Device (screen) Coords

™Sono 3d e mantengono la depth

™Window Coord

™Sono 2d.

Normalized Device Coord

™In Opengl Perspective Transf + division Convertono a Normalized Device Coord

™La geometria è quindi clippata sul

™Canonical View Volume

1 1 1

±

=

±

=

±

=

z y x

(12)

Costruzione di Interfacce - Paolo Cignoni 67

Mapping the view volume

™Sul Canonical view Volume,

™In questo caso la proiezione ortografica diventa

(1,1,-1)

(-1,-1,1)

+

+

+

0 0 0

0 2 0

2 0 0

0 2 0

min max

min max min

max

min max

min max min

max

near far

near far near far

y y

y y y

y

x x

x x x

x

Costruzione di Interfacce - Paolo Cignoni 68

Esempio tipico

™Un app carica/genera un oggetto in un suo sistema di riferimento e lo vuole far vedere.

™Calcolare il bbox dell’oggetto.

™Spostare l’oggetto nell’origine

™Scalare l’oggetto fino alla dimensione desiderata che sia compatibile con le dim del mio volume di vista

™traslare l’oggetto nel volume di vista

Costruzione di Interfacce - Paolo Cignoni 69

Esempio tipico

™L’ordine delle cose deve essere quello giusto

glMatrixMode (GL_PROJECTION);

glLoadIdentity ();

gluPerspective(ViewAngle,1,.1,10);

glMatrixMode (GL_MODELVIEW);

glLoadIdentity ();

glTranslatef(0,0,-4);

float d = 2.0/m.bbox.Diag();

glScalef(d, d, d);

glTranslate(-m.bbox.Center());

DrawMyObject();

Riferimenti

Documenti correlati

L’equazione (26) indica che la legge di Newton ` e valida in qualunque sistema di riferimento, purch´ e oltre alle forze reali (forze di contatto + forza gravitazionale) si

La somma di due vettori si fa quindi mettendo la coda del secondo vettore sullapunta del primo, e tracciando il vettore dalla coda del primo alla punta del

Il primo step della pipeline di rendering è quello di trasformare la scena nel sistema di riferimento della camera.

Proietta la geometria dal sistema di riferimento della camera sul piano di proiezione... Costruzione di Interfacce - Paolo

™l’applicazione e’ strutturata con un’area centrale dove vengono visualizzati/editati i dati e con una barra di menu, una o piu’ toolbar e una status bar.. ™

™I file che implementano la CIGLWidget devono essere aggiunti al progetto di designer. ™Devono essere nel .pro perche’ il .h va processato

Infatti  tutti  i  punti  di  una  cabina  a  un  dato  istante  hanno  la  stessa  velocità  e  la  stessa 

Si scelga un sistema di riferimento, si determini un’equazione cartesiana di L k in tale sistema, si di- mentichi il sistema di riferimento e si descriva il risultato ottenuto nei