La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1 Lavorare con le matrici in OGL Daniele Marini. 2 Frames Il frame è un contesto di sistema di riferimento e di trasformazioni geometriche associate Usualmente.

Presentazioni simili


Presentazione sul tema: "1 Lavorare con le matrici in OGL Daniele Marini. 2 Frames Il frame è un contesto di sistema di riferimento e di trasformazioni geometriche associate Usualmente."— Transcript della presentazione:

1 1 Lavorare con le matrici in OGL Daniele Marini

2 2 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

3 3 Camera frame OpenGL adotta la metafora della macchina fotografica: la formazione dellimmagine 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

4 4

5 5

6 6 questo e lordine con cui vanno specificate le trasformazioni nel programma le trasformazioni nella fase di rendering sono eseguite con unaltro ordine

7 7

8 8 Gli oggetti sono creati rispetto a questo sistema di riferimento gli oggetti sono fuori campo!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

9 9 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

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

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

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

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

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

15 15 Rotazione attorno a punto generico

16 16 La matrice M

17 17 Trasformazioni per modellare: instance transformation Da oggetti prototipo a loro istanze Tre trasformazioni nellordine: –Scala –Rotazione –Traslazione M inst =T(R(S)) Un oggetto può essere istanziato più volte ma nella display list ha ununica occorrenza

18 18 Rotazione attorno a un asse qualsiasi

19 19 vettore unitario, d lunghezza proiezione, a i coseni direttori, i angoli di rotazione

20 20

21 21 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)

22 22 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

23 23 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 allintera scena, in tal caso la CTM della scena viene posta nello stack

24 24 glPushMatrix(); /* crea trasformazione di istanza */ glTranslateF(…); glRotatef(…); glScalef(…); /* disegna loggetto */ … glPopMatrix(); /* ricrea la CTM */


Scaricare ppt "1 Lavorare con le matrici in OGL Daniele Marini. 2 Frames Il frame è un contesto di sistema di riferimento e di trasformazioni geometriche associate Usualmente."

Presentazioni simili


Annunci Google