250 likes | 387 Views
Controllare la prospettiva. Daniele Marini. Prospettiva canonica. Camera frame orientato come il world frame Asse ottico coincidente con asse z, entrante nell’obiettivo
E N D
Controllare la prospettiva Daniele Marini
Prospettiva canonica • Camera frame orientato come il world frame • Asse ottico coincidente con asse z, entrante nell’obiettivo • Per portare una scena nella configurazione canonica è necessaria una catena di trasformazioni da applicare conoscendo i parametri principali
I parametri di controllo • PRP Projection Reference Point (COP) • View Plane • VPN View Plane Normal • VUP View UP • DOP Direction of Projection • VRP View Reference Point • CW center of the window
Trasformazioni normalizzate • Dati VPN, VUP si ottiene la view orientation matrix V • La forma della V è: V=TR con T traslazione nel VRP, R rotazione opportuna per orientare la view rispetto alla configurazione canonica
Altri schemi • Lo schema illustrato è tipico delle librerie PHIGS, GKS 3D • OpenGl offre un altro approccio: lookAt • Nei simulatori di volo si adotta lo schema “roll, pitch, yaw”
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 gluLookAt(eyex, eyey, eyez, aty, atx, atz, upx, upy, upz);
Funzioni di OpenGL glFrustum(xmin, xmax, ymin, ymax, near, far); gluPerspective(fovy, aspect, near, far); Aspect = larghezza/altezza della window Fov:
Funzioni di OpenGL - proiezione parallela glOrtho(xmin, xmax, ymin, ymax, near, far); near e far possono essere anche negativi: non c’e’ divisione per 0
Proiezione parallela generica • 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
Trasla origine del view volume nell’origine del view volume canonico • Riscala il view volume • P è la matrice di proiezione • zmax = far • zmin = near • completata la trasformazione si può chiamare la glOrtho
Proiezioni parallele oblique Angoli del fascio di proiettori con la normale al piano di proiezione q, f
Prospettiva generica • Creare la matrice di normalizzazione • Deformare lo spazio • Proiettare in modo ortografico