Lavorare con le matrici in OGL

Slides:



Advertisements
Presentazioni simili
Moti Circolari e oscillatori
Advertisements

Meccanica 6 21 marzo 2011 Cambiamento di sistema di riferimento
Sistema di riferimento sulla retta
Capitolo 4 Trasformazioni Geometriche
COORDINATE POLARI Sia P ha coordinate cartesiane
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
a’ = f(a) Definizione e proprietà
angoli orientati negativamente se la rotazione avviene in verso orario
R. Soncini Sessa, MODSS, L 24b Analisi a molti obiettivi-esempi Rodolfo Soncini Sessa MODSS Copyright 2004 © Rodolfo Soncini Sessa.
Gerarchie di Oggetti Tutti i sistemi avanzati di grafica (PHIGS, OpenGL, DirectDraw, …) permettono di definire un modello come una gerarchia di oggetti.
Macchina Fotografica Virtuale
TRASFORMAZIONI GEOMETRICHE
Costruzione di Interfacce Lezione 6 Esercitazione Trasformazioni
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 prove.
Costruzione di Interfacce Lezione 4 Sistemi di riferimento e trasformazioni
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 prove generali.
Costruzione di Interfacce Lezione 5 Trasformazioni Affini
Costruzione di Interfacce Lezione 4 Nozioni di geometria per la grafica
Costruzione di Interfacce Lezione 4 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 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.
1 Modelli di Illuminazione Daniele Marini. 2 Obiettivo Visualizzare scene cercando di simulare al meglio la realtà Interazione luce-materiali –Modellare.
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.
Smoothing Daniele Marini.
1 Modelli Globali Radiosity Daniele Marini. 2 Radiosity Bilancio radiativo in un ambiente chiuso (senza scambio di energia con lesterno) Indipendente.
Elementi di Informatica di base
LE FUNZIONI SENO, COSENO E TANGENTE
TRASFORMAZIONI GEOMETRICHE
Le proiezioni e la prospettiva
Daniele Marini, Maurizio Rossi
Dal modello alla visualizzazione: Verso il foto realismo Daniele Marini.
Display list e scene graph Daniele Marini Dipartimento di Informatica e Comunicazione.
Architettura di OGL e pipe-line Daniele Marini Corso Di Programmazione Grafica.
Le trasformazioni Daniele Marini.
Trasformazioni in OGL Daniele Marini.
Un modello per interpretare, interagire e descrivere la realtà
Le proiezioni e la prospettiva
Le proiezioni e la prospettiva
Superfici nascoste Daniele Marini.
Percezione visiva e percezione del colore
Capitolo 2 I concetti di base della cinematica
Pippo.
Modelli di Illuminazione
Controllare le proiezioni
Corso Di Programmazione Grafica aa 2007/2008
Corso di Programmazione Grafica e Laboratorio Daniele Marini
Corso di Programmazione Grafica e Laboratorio Daniele Marini
Trasformazioni Daniele Marini.
Trasformazioni in OGL Daniele Marini Davide Gadia Marco Ronchetti Davide Selmo Corso Di Programmazione Grafica aa2005/2006.
Corso Di Programmazione Grafica
Rotazioni e quaternioni
Sistemi di riferimento
Picking - OpenGL Disegno della scena (display) Impostazione parametri selezione Ripristino parametri Loop Selezione.
Display list e scene graph Daniele Marini Dipartimento di Informatica e Comunicazione.
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.
Controllare le proiezioni Daniele Marini Corso Di Programmazione Grafica aa 2007/2008.
Ottimizzazione della scena: culling (decimazione) Daniele Marini Corso di Programmazione Grafica per il Tempo Reale.
Controllare le proiezioni
Le isometrie.
La traslazione.
Daniele Marini Con contributi di Maurizio Rossi
a’ = f(a) Definizione e proprietà
Transcript della presentazione:

Lavorare con le matrici in OGL Daniele Marini

Frames Il frame è un contesto di sistema di riferimento e di trasformazioni geometriche associate Usualmente si distinguono due frame principali: 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

Camera frame OpenGL adotta 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 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 nella macchina fotografica

questo e’ l’ordine con cui vanno specificate le trasformazioni nel programma le trasformazioni nella fase di rendering sono eseguite con un’altro ordine

Gli oggetti sono creati rispetto a questo sistema di riferimento Nella figura sinistra i due frame coincidono, con questa configurazione la trasformazione prospettica risulta semplificata, “canonica” - gli oggetti sono fuori campo! Gli oggetti sono definiti nello stesso frame, per vederli occorre traslare o la camera o gli oggetti Equivalentemente si trasla il camera frame rispetto al world frame o viceversa

La model-view matrix nel caso canonico diventa: Trasla un punto nel world frame di -d rispetto al camera frame (figura destra) La funzione è glLoadMatrix

Trasformazioni affini nello spazio di coordinate omogenee Matrici 4x4: 16 gradi di libertà apparenti 12 gradi di libertà effettivi

Trasformare vettori o punti Vettore come differenza di due punti Trasformazione affine di vettori: 9 gradi di libertà

La trasformazione affine conserva le rette Possiamo descrivere un poliedro con i suoi vertici, facce e spigoli, ma possiamo trasformare soltanto i vertici!

Concatenazione di trasformazioni Trasformiamo il punto p con una sequenza di rasformazioni A,B,C (associatività):

Se applichiamo a ogni punto separatamente le matrici: Se prima calcoliamo la matrice M: A B C q p C(B(A)) M q p

Rotazione attorno a punto generico

La matrice M

Trasformazioni per modellare: instance transformation Da oggetti prototipo a loro “istanze” Tre trasformazioni nell’ordine: Scala Rotazione Traslazione Minst=T(R(S)) Un oggetto può essere istanziato più volte ma nella display list ha un’unica occorrenza

Rotazione attorno a un asse qualsiasi

vettore unitario, d lunghezza proiezione, ai coseni direttori, qi angoli di rotazione

OpenGl Current Transformation Matrix CTM: è la matrice che viene applicata a ogni vertice di una scena - successivo alla sua definizione Se si cambia CTM si cambia lo stato del sistema Inizialmente posta a identità: CTM := I Viene modificata o per assegnamento o per pre - post -moltiplicazione glLoadMatrixf(pointer_to_matrix) glLoadIdentity() glRotatef(angle, vx, vy, vz) glTranslatef(dx, dy, dz) glScale(sx, sy, sz)

Rotazione attorno a un punto glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(4.0, 5.0, 6.0); glRotatef(45.0, 1.0, 2.0, 3.0); /* esegue la rotazione attorno a un asse generico */ glTranslatef(-4.0, -5.0, -6.0); Ogni vertice specificato dopo queste dichiarazioni viene trasformato con questa matrice

Stack di matrici Si può modificare una CTM con la: glMultMatrixf(myarray) Durante la modellazione si creano matrici di istanza, applicata a un solo oggetto e non all’intera scena, in tal caso la CTM della scena viene posta nello stack

glPushMatrix(); /* crea trasformazione di istanza */ glTranslateF(…); glRotatef(…); glScalef(…); /* disegna l’oggetto */ … glPopMatrix(); /* ricrea la CTM */