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