Controllare le proiezioni Daniele Marini Corso Di Programmazione Grafica aa 2007/2008.

Slides:



Advertisements
Presentazioni simili
LA CERTIFICAZIONE ENERGETICA IN LIGURIA
Advertisements

Introduzione al Disegno Tecnico
Momento di un vettore rispetto ad un polo fisso
Unificazione nel disegno: Metodi di rappresentazione
Capitolo 4 Trasformazioni Geometriche
Geometria analitica dello spazio
Analisi e progettazione dei processi interfunzionali
Cinematica diretta Un manipolatore è costituito da un insieme di corpi rigidi (bracci) connessi in cascata tramite coppie cinematiche (giunti). Si assume.
Cinematica del braccio di un robot
Claudio Girelli Università degli studi di Verona Roma 29 ottobre 2008
Macchina Fotografica Virtuale
Esperimentazioni di Fisica 2 a.a. 2008/09
Costruzione di Interfacce Lezione 4 Sistemi di riferimento e trasformazioni
Costruzione di Interfacce Lezione 5 Trasformazioni Affini
Costruzione di Interfacce Lezione 4 Nozioni di geometria per la grafica
Matrici di Proiezione Prospettica
Costruzione di Interfacce Lezione 5 Trasformazioni Affini
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 Lezione.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Applicazioni progettuali di grafica computerizzata a.a. 2008/2009 Rendering grafico.
Applicazioni progettuali di grafica computerizzata a.a. 2008/2009 Trasformazioni affini.
BPR: BUSINESS PROCESS REENGINEERING
il laboratorio del gioco ☺animazione ☺ ricerca/azione ☺ apprendimento
architettura dei sistemi informatici
Trasformazioni 2D e 3D Daniele Marini.
1 Superfici nascoste Daniele Marini. 2 Ray casting adatto a CSG o superfici parametriche dipende dal punto di vista è una sorta di campionamento spaziale.
Lavorare con le matrici in OGL
Moodle International Conference Roma -21/22 ottobre Moodle come strumento per il Combat Teaching Tommasi Marco Università degli Studi di Udine.
DINAMICA DEMOGRAFICA 2007 Popolazione residente al : abitanti (popolazione legale validata da parte ISTAT)
Scienza Industria Tecnologia S.I.T. srl Novembre 2008
Il metodo fotogrammetrico
Le proiezioni e la prospettiva
Architettura di OGL e pipe-line Daniele Marini Corso Di Programmazione Grafica.
Le trasformazioni Daniele Marini.
Prospettiva e prospettività: IL METODO DELLE PROIEZIONI CENTRALI
Presentazione best practices Tribunale Ordinario di Campobasso Potenziamento dei sistemi di comunicazione finalizzati a far crescere la customer satisfaction.
Le proiezioni e la prospettiva
Le proiezioni e la prospettiva
Superfici nascoste Daniele Marini.
1 Ottimizzazione della scena: culling (decimazione) Daniele Marini.
Controllare le proiezioni
Corso Di Programmazione Grafica aa 2007/2008
Corso di Programmazione Grafica e Laboratorio Daniele Marini
Texturing Daniele Marini Corso Di Programmazione Grafica aa2007/2008.
Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2007/2008.
Corso di Programmazione Grafica e Laboratorio Daniele Marini
Trasformazioni Daniele Marini.
Architettura di OGL e pipe-line Daniele Marini Corso Di Programmazione Grafica.
Corso Di Programmazione Grafica
Rotazioni e quaternioni
Corso Di Programmazione Grafica aa2006/2007
Display list e picking Daniele Marini Corso Di Programmazione Grafica e Laboratorio.
Controllare la prospettiva
Controllare la prospettiva
Architettura di OGL e pipe-line Daniele Marini Davide Gadia Davide Selmo Corso Di Programmazione Grafica aa2005/2006.
Le trasformazioni Daniele Marini Corso Di Programmazione Grafica aa 2005/2006.
Le proiezioni e la prospettiva
Corso di Programmazione Grafica e Laboratorio Prof. Daniele Marini.
Ottimizzazione della scena: culling (decimazione) Daniele Marini.
Ottimizzazione della scena: culling (decimazione) Daniele Marini Corso di Programmazione Grafica per il Tempo Reale.
Controllare le proiezioni
Vettori dello spazio bidimensionale (R 2)
a cura di maurizio tiriticco
LABORATORIO DI DISEGNO – CORSO A
La retta Equazione (rette parallele agli assi, passanti per l’origine e generiche) Forma esplicita e implicita Condizione di parallelismo e perpendicolarità.
La traslazione.
Daniele Marini Con contributi di Maurizio Rossi
Docente: Antonio Zanutta FOTOGRAMMETRIA L FINALITA’ Fornire la conoscenza del rilievo fotogrammetrico di strutture ed oggetti di interesse storico-artistico,
Transcript della presentazione:

Controllare le proiezioni Daniele Marini Corso Di Programmazione Grafica aa 2007/2008

Programmazione Grafica aa2007/ tipi principali Proiezioni parallele: –Centro di proiezione all’infinito Proiettori ortogonali oppure Proiettori obliqui Proiezioni multiple (più viste) Proiezioni a una sola vista –Assonometrie –Cavaliera o Cabinet Proiezioni prospettiche –Centro di proiezionie a distanza finita Un solo punto di fuga: prospettiva centrale 2 o 3 punti di fuga: prospettiva accidentale

Programmazione Grafica aa2007/20083 Frames Il frame è un contesto di: – sistema di riferimento –e trasformazioni geometriche associate Consideriamo questi due frame: –World frame, nel quale si descrivono e rappresentano gli oggetti modellati –Camera frame, nel quale si definisce il sistema di riferimento necessario alla creazione della proiezione

Programmazione Grafica aa2007/20084 Sistemi di riferimento World frame Camera frame

Programmazione Grafica aa2007/20085 Camera frame Quasi tutti gli ambienti e le librerie adottano la metafora della macchina fotografica: la formazione dell’immagine piana a partire dal modello 3D avviene con un principio di proiezione simile a quello della fotografia L’obiettivo non è modellato (foro stenopeico) Il sistema di riferimento del camera frame si assume fisso: –Origine in basso a sinistra del fotogramma –X crescente a destra –Y crescente in verticale –Z entrante o uscente dalla macchina fotografica

Programmazione Grafica aa2007/20086

7 Prospettiva canonica Camera frame orientato come il world frame Asse ottico coincidente con asse z, entrante nell’obiettivo Piano di proiezione coincidente con il piano x,y Per portare una scena nella configurazione canonica è necessaria una catena di trasformazioni da applicare conoscendo i parametri principali

Programmazione Grafica aa2007/20088 Proiezione generica - I parametri di controllo PRP Projection Reference Point o COP Center of Projection View Plane VPN View Plane Normal VUP View UP DOP Direction of Projection (per le proiezioni parallele) VRP View Reference Point CW center of the window

Programmazione Grafica aa2007/20089 Orientare il piano di proiezione

Programmazione Grafica aa2007/ Definire la viewport e la window

Programmazione Grafica aa2007/ Definire il centro di proiezione (COP)

Programmazione Grafica aa2007/ Se la proiezione è parallela

Programmazione Grafica aa2007/ Proiezioni parallele Si azzera la componente z Tutta la difficoltà della proiezione parallela consiste nell’orientare correttamente il modello rispetto al piano di proiezione

Programmazione Grafica aa2007/ view orientation matrixDati VPN, VUP si ottiene la view orientation matrix V La forma della V è: V=TR T è la traslazione nel VRP, R è una rotazione opportuna per orientare la view rispetto alla configurazione canonica Con queste trasformazioni ci si porta nella configurazione canonica Trasformazioni normalizzate

Programmazione Grafica aa2007/ Costruzione della matrice di orientamento di vista V Definiamo posizione e orientamento della proiezione nel riferimento world Supponiamo di avere (in 4d): VRP(x,y,z,1) VPN (nx,ny,nz,1) VUP (vup_x, vup_y, vup_z,0) punto all’infinito

Programmazione Grafica aa2007/ Costruzione della matrice V Poniamo l’origine in VRP, VPN sarà la direzione dell’asse z, da VUP ricaviamo la direzione y, la direzione x si ricava per prodotto vettore tra z e y Traslazione in VRP con T(-x,-y-z) Per la rotazione R: per trovare la direzione y il vettore relativo v deve essere ortogonale a n : n.v =0

Programmazione Grafica aa2007/ Costruzione della matrice V v è la proiezione di v up sul piano identificato da n, quindi è combinazione lienare di n e v up : v =a n +b v up Ponendo b=1 (vettori normalizzati) si ricava a=-( v up.n/n.n ) da cui: v = v up - ( v up.n/n.n ) Il terzo asse z si ottiene per prodotto: u = v x n

Programmazione Grafica aa2007/ Costruzione della matrice V Normalizzando tutti i vettori u’,v’,n’, la matrice di rotazione seguente Orienta un vettore in u’,v’,n’ rispetto al riferimento originale, quindi trasponiamo per compiere la rotazione desiderata

Programmazione Grafica aa2007/ Costruzione della matrice V Finalmente la matrice V si ottiene moltiplicando la R per la traslazione T

Programmazione Grafica aa2007/ Matrice canonica di proiezione parallela ortogonale

Programmazione Grafica aa2007/ Funzioni di OpenGL - proiezione parallela ortogonale glOrtho(xmin, xmax, ymin, ymax, near, far); Definisce un view volume, rispetto al quale si fa il clipping, near e far possono essere anche negativi: non c’e’ divisione per 0

Programmazione Grafica aa2007/ La configurazione prevede di essere in condizioni canoniche per l’orientamento, inoltre: Traslare l’origine del view volume nell’origine del view volume canonico Riscalare il view volume per normalizzarlo in -1,1 zmax = far zmin = near completata la trasformazione si può chiamare la glOrtho Le coordinate trasformate sono nel riferimento NDC normalized devices coordinates Parallela ortogonale -2

Programmazione Grafica aa2007/ glOrtho(xmin, xmax, ymin, ymax, near, far); traslazione al centro del view volume scalatura Parallela ortogonale - 3

Programmazione Grafica aa2007/ Proiezioni parallele oblique  Angoli del fascio di proiettori con la normale al piano di proiezione DOP y x z normale

Programmazione Grafica aa2007/ Proiezioni parallele oblique - 2 orientare la direzione di proiezione in modo che sia parallela a z, con trasformazione di shear controllata dagli angoli  rinormalizzare il view volume con scala e traslazione (come sopra) proiettare con la matrice ortografica

Programmazione Grafica aa2007/ Trasformazione di shear e proiezione parallela obliqua

Programmazione Grafica aa2007/ Proiezione parallela generica Deformare il volume con shear per condursi a ortogonale Ricondursi alla configurazione canonica; normalizzazione –Convertire il volume di vista in una configurazione standard: costruzione della matrice di proiezione: opera in “window coordinates” (comprendono z) –Proiettare il volume deformato Il volume canonico per la proiezione parallela è normalizzato in -1,+1

Programmazione Grafica aa2007/ z x y P (x,y,z) P(x v,y v ) Piano di proiezione Proiezione prospettica centrale - Calcolo analitico Centro di proiezione

Programmazione Grafica aa2007/ z y Piano di proiezione d P (x,y,z) yvyv y/y v = z/d y v = y/(z/d) x/x v = z/d x v = x/(z/d)... in sezione... Centro di proiezione

Programmazione Grafica aa2007/ Matrice canonica di trasformazione prospettica

Programmazione Grafica aa2007/ Dalle coordinate omogenee allo spazio 3D

Programmazione Grafica aa2007/ Prospettiva: Angolo di visione e frustum

Programmazione Grafica aa2007/ Prospettiva: Funzioni di OpenGL glFrustum(xmin, xmax, ymin, ymax, near, far); gluPerspective(fovy, aspect, near, far); Aspect = larghezza/altezza della window Fovy : angolo di apertura verticale

Programmazione Grafica aa2007/ Prospettiva generica Metodo della projection normalization –Creare la matrice di normalizzazione –Deformare lo spazio –Proiettare in modo ortografico

Programmazione Grafica aa2007/ Prospettiva generica (cont) Si suppone di proiettare in modo canonico con la distanza del centro di proiezione d=-1 lungo l’asse z –Se non siamo in queste condizioni si rototrasla il sistema e si applica una trasformazione di shear la matrice M persp canonica è:

Programmazione Grafica aa2007/ Prospettiva generica (cont) Siano l,r,t,b,n,f i 6 parametri che definiscono il frustum di visione OGL per operare la proiezione costruisce la matrice: –In questo schema 0<n<f, quindi il frustum di visione viene traslato nelle z positive

Programmazione Grafica aa2007/ Altri schemi Lo schema illustrato è tipico delle librerie PHIGS, GKS 3D OpenGl offre anche un altro approccio: lookAt Nei simulatori di volo si adotta lo schema “roll, pitch, yaw” - “rollio, beccheggio, imbardata”

Programmazione Grafica aa2007/200838

Programmazione Grafica aa2007/ LookAt E’ un metodo più diretto e più naturale: –la camera è localizzata in un punto e (eypoint - o punto di vista) specificato nel world frame –La camera è orientata nella direzione individuata dal vettore congiungente e con il punto a (at point - punto osservato) I punti e ed a individuano il VRP e la VPN Gli ultimi tre parametri identificano il VUP gluLookAt(eyex, eyey, eyez, aty, atx, atz, upx, upy, upz);

Programmazione Grafica aa2007/ Trasformazione di vista - LookAt e=(e x,e y,e z ) a=(a x,a y,a z ) up=up x,up y,up z ) f temp =(a-e) f=f temp /||f temp ||)

Stereo e profondità percepita La stereovisualizzazione rafforza gli indizi di profondità Nella immagini 2D: Prospettiva Dimensioni relative Dettagli Occlusioni Luci e ombre Velocità relativa Programmazione Grafica aa2007/200841

Profondità 3D Disparità binoculare Accomodazione Convergenza Questi tre indizi devono essere coerenti tra loro Programmazione Grafica aa2007/200842

Stereo coppie Proiettando stereo coppie si produce disparità interoculare Questo indizio è in conflitto con l’accomodamento perché la messa a fuoco avviene su un medesimo piano Il conflitto di accomodamento si è verificato essere tollerabile se la distanza di separazione massima sul piano immagine resta entro un intervallo di 1/30 della distanza dal piano immagine Programmazione Grafica aa2007/200843

Visione “al di là dello schermo” Nello schema l’oggetto appare dietro lo schermo; i punti generati dalle due proiezioni sono sul lato relativo all’occhio corrispondente Parallasse positiva; massima parallasse per il punto all’infinito; è pari alla distanza interoculare Programmazione Grafica aa2007/200844

Visione “al di qua dello schermo” Parallasse negativa Parallasse pari alla distanza interoculare quando il punto si trova a metà della distanza dal piano di proiezione Programmazione Grafica aa2007/200845

Visione “sul piano schermo” Si ha parallasse nulla e il punto viene proiettato senza disparità sul piano immagine Programmazione Grafica aa2007/200846

Tecniche di calcolo della stereo proiezione: toe-in scorretta Toe in: due proiezioni prospettiche da due punti separati dalla distanza interoculare (circa 65 mm) Introduce anche una parallasse verticale fastidiosa Programmazione Grafica aa2007/200847

Tecniche di calcolo della stereo proiezione: off-axis corretta Due proiezioni con assi tra loro paralleli; richiede un trimming dell’immagine per considerare solo la parte comune Programmazione Grafica aa2007/200848

Confronto Il metodo toe-in introduce una parallasse verticale; si implementa facilmente e tutte le librerie grafiche lo supportano Il metodo off-axis non produce parallasse verticale; non tutte le librerie lo supportano. OpenGl sì! Programmazione Grafica aa2007/200849

Parametri Il grado di effetto stereo dipende dalla distanza del centro di proiezione dal piano e dalla separazione In generale un buon effetto non faticoso richiede separazione pari a 1/20 della distanza dal piano Inoltre occorre evitare che la parallasse superi la distanza interoculare Programmazione Grafica aa2007/200850

Angolo di parallasse  = 2 atan(DX / 2d) Programmazione Grafica aa2007/200851

Programmazione Grafica aa2007/200852

Trimming Per calcolare il trimming nel metodo off-axis  = e.w / [2f 0 tan(  /2)] dove:e distanza interoculare wlarghezza immagine f o lunghezza focale (a parallasse 0)  angolo apertura desiderato Programmazione Grafica aa2007/200853

Trimming Dopo il trimming l’angolo di apertura effettivo è:  ’  atan([(w+  ) tan(  w  Notare che OpenGL usa un angol di apertura verticale non orizzontale, occorre calcolarselo! Programmazione Grafica aa2007/200854

Programmazione Grafica aa2007/200855

Stereo e OpenGL Con OGL per creare una coppia stereo si usano le funzioni glFrustum. Se si usasse gluLookAt si applicherebbe il metodo toe-in Programmazione Grafica aa2007/200856