• Non ci sono risultati.

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
17
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

Next: trasformazione di proiezione

z

y

x v

0

v

1

v

2 world Coordinates

1

1) transformazione di vista 2) transformazione di proiezione 3) transformazione di viewport

y

-z v

0

v

1

v

2

view Coordinates (a.k.a. eye Coordinates)

y -x -z v

0

v

1

v

2

v

0

v

2

v

1

v

0

v

1

v

2 screen Space

3

ClipCoordinates

1

1 -1

-1 x

z

y

x v

0

v

1

v

2 object Coordinates

0

0) transformazione di modellazione

2

Trasformazione di proiezione

• Prima o poi dovremo farlo: da 3D a 2D !

y 2

-z v

0

v

1

v

2

view Coordinates (a.k.a. eye Coordinates)

y x -z v

0

v

1

v

2

v

0

v

2

v

1

Clipcoordinates

1

1 -1

-1 x

Nota:

solo per i punti! (es. i vertici dei triangoli) non per i vettori (es. le normali dei triangoli) Le normali si possono “fermare” allo spazio vista (o anche solo mondo)

( cmq lo spazio in cui che saranno utilizzate, vedi lighting dopo)

(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

Trasformazione di proiezione

• Vecchio problema:

– (in arte, architettura progettazione)

• come riportare – oggetti 3D – su un

piano 2D Prospetto Frontale Assonometria cavaliera

Assonometira

Isometrica Prospettiva a

punto di fuga singolo Prospettiva a punto di fuga triplo Pianta Obliqua Alcune soluzioni classiche:

Spazio “clip”

• X e Y: da -1 a +1

– indipendentemente da dimensioni / proporzioni del viewport – X = -1 bordo sx X = +1 bordo dx

– Y = -1 bordo inf Y = +1 bordo sup – origine: centro del’immagine renderizzata I – se un punto ha una coord X o Y al di fuori

di [-1, +1] => non è nel quadro

• (vedremo, vale anche per la Z)

• Oggetto (o primitiva) solo parzialmente nel viewport:

«clip» it !

– andrà spezzata in una

parte da mostrare, e una no

– da cui il nome dello spazio

(3)

• Modo 1:

– da 3D a 2D? facile: ignoriamo la z (per ora) – per la x e y uno zoom factor k

= 1/raggio della scena che vogliamo inquadrare – matrice corrisponente:

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

Trasformazione di proiezione



 



 

1 0 0 0

0 1 0 0

0 0 0

0 0 0 k k P Z

Trasformazione di proiezione

• E' una proiezione ortogonale

– non c'è prospettiva – simula:

• il punto di vista all'infinito

• con un cannocchiale mooolto potente

• lunghezza focale infinita

– direzioni di vista costanti su tutta la scena

(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

Trovare le differenze...

Come si svolge fisicamente il processo:

• Occhio o macchina fotografica il concetto è lo stesso:

lenti

CCD o pellicola

(2D screen buffer)

lenti

retina

(2D screen buffer)

distanza

focale distanza

focale

(5)

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

Nostro modello semplificato:

• pin-hole camera

distanza focale

-x y

-z image

plane

Parametri intrinseci della camera:

(quelli principali)

• dim image plane ( w , h ) (in spazio vista)

• distanza focale ( d ) (in spazio vista) oppure Field of View (FoV)

– (come ottenere uno dall’altro?)

– d si usa nei conti, ma FoV è intuitivo da settare, :

• FoV grande >60° (dist foc. piccola): «grandangolo»

• FoV piccolo <45° (dist foc. grande): «teleobiettivo»

distanza focale d

w

h Field of View (verticale)

(angolo)

(6)

Da Field of View a Distanza focale

distanza focale

= Field of View verticale (angolo)

Vista di fianco:

= ℎ tan 2

distanza focale

= Field of View orizzontale (angolo)

Vista dall’alto:

= tan 2 y

z

x z

Pin Hole camera per semplicità, immaginiamoci il piano immagine davanti alla camera (e nn ribaltato), piuttosto che·· dietro (e ribaltato).

(cioe’ sul piano z = - d )

(in spazio vista!)

(7)

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

Matematicamente

y

-z

distanza focale d

image plane

centro di proiezione (origine)

x

) , , ( x y z

) , , ( x

p

y

p

z

p

 

 

 

 

 

z y x k z y x

p p p

Nota:

non è affine;

non mantiene: rapporto fra distanze colineari (ma mantiene: colinearità)

con k t.c. z

p

  d

z d k   /

quindi…

 

 

 

 

 

d z y d

z x d

z y x

p p p

/ /

e

Estendiamo la rappresentazione di punti e vettori in coordinate omogenee

 

 

 

 

 1 z y x p

 

 

 

 

 0 z y x v 

Punti: Vettori:

1 0

(8)

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

Estendiamo la rappresentazione di punti e vettori in coordinate omogenee

 

 

 

 

* z y x p

 

 

 

 

 0 z y x v 

Punti: Vettori:

≠0 0

Estendiamo la notazione

• Esprimo i punti anche con la notazione

0

con 

 

 

 

 

 w

w wz wy wx p

 

 

 

 

w wz wy wx

 

 

 

 

1 z y x

divisione per 4ta comp

anche detta

normalizzazione affine

(9)

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

Estendiamo la notazione

• Per es:

 

 

 

 

10 30 10 20

 

 

 

 

1 3 1 2

 

 

 

 

1 . 0

3 . 0

1 . 0

2 . 0

 

 

 

 

2 6 2

4 sono alcune delle coordinate omogenee

del punto che ha le seguenti

coordinate cartesiane   

 

3 1 2

 

 

 

 

0 3 1

2 sono le uniche

coordinate omogenee del vettore che ha le

seguenti

coordinate cartesiane   

 

3 1 2

punto

vettore queste

sono in

“forma normale”

( w = 1 )

Coordinate omogenee di punti

• Il punto P di coordinate cartesiane (x,y,z) è rappresentato in coordinate omogenee

come (xw,yw,zw , w), con w qualunque (ma non 0)

• Set di coordinate omogenee diversi (x, y, z, w) e (x′, y′, z′, w′) possono rappresentare lo stesso punto;

– [quando?]

• Quando w = 1 (forma canonica ) le coord cartesiane del punto coincidono con le prime tre coord omogenee.

• Con (x, y, z, w ≠ 0) si rappresentano punti , con (x, y, z, 0) si rappresentano vettori.

• Nota: tutte le matrici di trasformazione viste fin’ora funzionanto

anche con questa notazione generalizzata! Es: VERIFICA.

(10)

Coordinate omogenee

• Tutte le matrici di trasformazione che abbiamo visto fin’ora continuano a funzionare anche con i punti espressi in coordinate omogenee non canoniche (w!=1)

• Es, traslazione:

• Ma possiamo esprimere anche la proiezione prospettica…

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



 



 



 



 

 

 

 

 

10 80 35 70

10 50 15 20

1 0 0 0

3 1 0 0

2 0 1 0

5 0 0 1

Matrice di traslazione del vett ( 5 , 2 , 3 )

Punto di coord cartesiane (2 , 1.5 , 5)

Punto di coord cartesiane (7 , 3.5 , 8)

Proiezione prospettica

 

 

 

 

0 / 1 0 0

0 1 0 0

0 0 1 0

0 0 0 1

d P



 



 



 



 

d z

z y x

z y x

/ 1

P

 

 

 

 

 

 

d d z

y d z

x

/

Esprime il punto /

di coordinate cartesiane

matrice di trasformazione per la

proiezione prospettica

(nota: non è affine)

(11)

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

In realtà non si scarta la terza dimensione:

ci servirà

y P

-z v

0

v

1

v

2

view Coordinates (a.k.a. eye Coordinates)

x no rm al iz za zi on e af fin e

y

z

x

clip space [ancora 3D!]

un bel CUBO!

Moltiplicazione per la matrice di

proiezione

La parte visibile casca in [-1,1] x [-1,1] x [-1,1]

quindi dette anche

"Normalized Device Coordinates"

Dettaglio tecnico

• Il rasterizzatore: (comportamento fisso)

– prende vertici in clip coordinates

– produce frammenti a una data screen coordinates

• cioè le «in pixel», e.s. in [0..639] x [0..479]

– applica cioè la trasf di viewport automaticamente (e, prima, anche la div per w )

quindi:

• Il vertex processor (programmabile!)

– deve produrre clip coordiantes del vert. processato

(anche non in forma normale, w !=1)

(12)

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

Next: trasformazione di proiezione

x

y

z v

0

v

1

v

2 world Coordinates

1

1) transformazione di vista 2) transformazione di proiezione 3) transformazione di viewport

y

-z v

0

v

1

v

2

view Coordinates (a.k.a. eye Coordinates)

y x -z v

0

v

1

v

2

v

0

v

2

v

1

v

0

v

1

v

2 screen Space

ClipCoordinates

1

1 -1

-1 x

x

y

z v

0

v

1

v

2 object Coordinates

0

0) transformazione di modellazione

2

3

Dettaglio tecnico

fra m m en ti (c ia sc un o co n sc re en c oo rd .)

Ve rti ci de lla m es h pixel

finali

(nello screen-buffer)

Ve rti ci pr oi et ta ti (c lip c oo rd s! )

Z

rasterizer triangoli

co m pu ta zi on i pe r f ra m m en to

z

y

x v

0

v

1

v

2

v

0

v

1

v

2

rasterizer segmenti rasterizer

punti

co m pu ta zi on i pe r v er tic e

OBJECT

COORDS CLIP

COORDS SCREEN

COORDS

(13)

Trasformazione di viewport

• Spazio Clip: (-1 , +1) x (-1 , +1)

– è quadrato!

• Spazio Viewport: [ 0..resX ] x [ 0..resY ]

– è rettangolare!

• Trasf. Viewport

– scaling NON uniforme – (e traslazione)

quindi:

• per mantenere l’ aspect ratio bisogna includere nel passaggio precedente (la proiezione!) uno scaling NON uniforme (in verso opposto)

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

Trasformazione di viewport

 

 

 

 

 

Y X VIEWPORT

RES y

RES x

y f x

2 / ) 1 (

2 / ) 1 (

[0,1]x[0,1] in

[-1,+1]x[-0,+1] in

(14)

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

Correzione dell’aspect ratio

• Matrice di proiezione prospettica con

correzione dell’aspect ratio a = RESX / RESY oppure



 



 

0 /

1 0 0

0 1 0 0

0 0 0

0 0 0 1

d P a



 



 

0 /

1 0 0

0 1 0 0

0 0 1 0

0 0 0 / 1

d a

P

a

Nota: la trasformazione di proiezione dipende dai parametri estrinseci della macchina fotografica… compreso l’aspect ratio del suo frame

Una matrice di Proiezione Prospettica più utile

• Il realtà, sarà utile considerare lo spazio CLIP

e quello viewport come dotati di estensione non solo in X e Y, ma anche in Z

– X e Y sono usate per rasterizzare i triangoli in 2D – la Z sarà usata per altri algoritmi

• Spazio clip: vale stessa regola anche in Z:

– se Z compreso fra -1 e +1: oggetto nel quadro

– se Z > +1, oggetto troppo vicino alla camera: scartato!

– se Z < -1, oggetto troppo lontano dalla camera: scartato!

• La matrice che abbiamo visto produce Z = -d sempre.

– Vogliamo invece mappare un l’intervallo in spazio vista -Znear, -Zfar su l’intervallo in spazio Clip -1 +1. Come?

Znear e Zfar (due numeri positivi, scelta arbitaria):

la distanza minima e massima dalla vista di un oggetto che

vogliamo far comparire nel quadro

(15)

Una matrice di Proiezione Prospettica più utile

• Il realtà, sarà utile considerare lo spazio CLIP

e quello viewport come dotati di estensione non solo in X e Y, ma anche in Z

– X e Y sono usate per rasterizzare i triangoli in 2D – la Z sarà usata per altri algoritmi

• Spazio clip: vale stessa regola anche in Z:

– se Z compreso fra -1 e +1: oggetto nel quadro

– se Z > +1, oggetto troppo vicino alla camera: scartato!

– se Z < -1, oggetto troppo lontano dalla camera: scartato!

• La matrice che abbiamo visto produce Z = -d sempre.

– Vogliamo invece mappare un l’intervallo in spazio vista [-Znear, -Zfar]

su l’intervallo in spazio Clip Z in [-1 +1].

– Quale matrice lo fa?

Znear e Zfar (due numeri positivi, scelta arbitaria):

la distanza minima e massima dalla vista di un oggetto che vogliamo che appaia nel quadro

• Vogliamo quindi che:

• Soluzione:

Una matrice di Proiezione Prospettica più utile

 

 

 

 

 

 

 

 

 

 

 

 

 

) (

2 / /

F N

F N F

N F N

z z z

z z z

z z z

z y a d

z x d

z y x

f

 

 

 

 

 

 1

/ /

F F

F

z y a d

z x d

z y x f

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z

z z

z z z

z

z z z

a d y

d x

z y x

P

N F

N F N

F N F

) (

2 ) (

) (

1

a aspect ratio d lunghezza focale

 

 

 

 

 

 1

/ /

N N

N

z y a d

z x d

z

y

x

f

(16)

• Quindi

Una matrice di Proiezione Prospettica più utile

 

 

 

 

 

 

0 1

0 0

) (

2 ) (

) 0 (

0

0 0

0

0 0

0

N F

N F N

F N F

z z

z z z

z z a z

d d P

a aspect ratio d lunghezza focale

Matrice di Proiezione

per Assonometria Cavaliera

• Idea intuitiva: ogni metro in direzione Z comporta uno spostamento in X e Y di mezzo metro indietro (nel disegno)

Assonometria cavaliera

 

 

 

 

1 0 0 0

?

?

?

?

0 2 / 0

0 2 / 1 0 1

a P a

 

 

 

 

 

? ) 2 / (

2 /

a z y

z x

z y x f

z

x y

Questa trasf di proiez è affine

Il solito aspect ratio dell’immagine finale che è compito della trasf di proiez correggere

Cosa fare della Z?

(17)

Matrice di Proiezione

per Assonometria Cavaliera

• Idea intuitiva: sulla Z, un dato intervallo [ zmin , zmax ] deve essere rimappato in [-1 , +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

Assonometria cavaliera z

x y

 

 

 

 

 

 

 

 

 

MIN MAX

MIN MAX

z z

z z z

a z y

z x

z y x f

2

) 2 / (

2 /

 

 

 

 

 

1 0

0 0

0 2 0

0 2

/ 0

0 2

/ 1 0

1

MIN MAX

MIN MAX MIN

MAX

z z

z z z

z

a

P a

Riferimenti

Documenti correlati

much cheaper than sampled sound to store, but requires instrument liberary at runtime not much used anymore (in games) still most convenient for procedural music. Specialized

3D data models textures materials shaders animations collision objects scenes etc audio. music sound fxs ambient sounds voice

3D models meshes textures materials shaders animations collision objects scenes.

ogni voxel un colore RGB solid RGB textures. Come tutte

animazione di trasformaz di modellazione (anche con giunti: robot, macchine…).. di oggetti

Il metodo più appropriato di calcolo dei valori normali dipende dalla finalità: quando i normali climatici vengono utilizzati come riferimento, devono essere calcolati

La misura di una qualunque grandezza fisica (temperatura, concentrazione di una farmaco,..) pu` o essere vista come la somma del valore esatto della grandezza e

La sua adolescenza pian piano si delinea come un viaggio iniziatico dove si mescolano l’odore del sesso con quello della marijuana; le tenui convenzioni e convinzioni si infrangono