ΘΕΜΑΤΑ ΥΠΟΛΟΓΙΣΤΙΚΗΣ ΟΡΑΣΗΣ ΚΑΙ ΓΡΑΦΙΚΩΝ ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΙ ΑΠΟΚΟΠΗ 2013-2014 Ε. Θεοδωρίδης, Α. Τσακαλίδης
Μετασχηματισμοί (1) Position, reshape, animate Objects, lights, cameras Linear transforms f(x)+f(y)=f(x+y) K*f(x)=f(k*x) Scaling Transform (3x3) Rotation Transform (3x3) Translation-not linear (1x3) Affine (4x4) - linear transform + translation Parallelism of lines, not length and angles
Μετασχηματισμοί (2)
Βασικοί Μετασχηματισμοί (1) Translation t=(tx,ty,tz) P=(px,py,pz,1) P =T(P)=T(t)*P=(px+tx,py+ty+pz+tz,1) T -1 (t)=t(-t)
Βασικοί Μετασχηματισμοί (2) Rotation Rx(φ), Ry(φ), Rz(φ) Preserve distances, handeness Translate to (0,0,0) Rotate and de-traslate Rx -1 (φ)=rx(-φ) Rx =1,orthogonal X=T(p)Rz(φ)T(-p)
Βασικοί Μετασχηματισμοί (3) Scaling (along the axes) S(s)=S(sx,sy,sz) Uniform sx=sy=sz Anisotropic isotropic scaling S -1 (s)=s(1/sx,1/sy,1/sz) sx<0, sy<0,sz<0 reflection, mirror matrix 2 of 3 rotation by π!!!affects lighting And back face culling Determinants<0 Other axes X=FS(s)F T
Βασικοί Μετασχηματισμοί (4) Shearing Distort scene Fuzzy reflections Jittering Hxy(s), Hxz(s), Hyx(s), Hxz(s), Hzx(s), Hzy(s) P=(px,py,pz) (px+spz, py,pz) T Hxz -1 (s)=hxz(-s) Hxz =1 Volume preserving
Σύνθεση Μετασχηματισμών Concatenation of transforms is order-dependent S(2,0.5,1) Rz(π/6) C=TRS efficiency
Μετασχηματισμοί (1) Rigid-Body transform Objects geometry stays the same Location - orientation changes Preserve lengths, angles, handedness X- Translate - rotation matrix X -1 =(T(t)R) -1 =R -1 T(t) -1
Μετασχηματισμοί (2) Normal transform Transforms can not be applied on surface normal, vertex lighting normal Euler Transform
Μετασχηματισμοί (3) Quaternion transforms 3d transform Vertex blending Morphing 3d model A t0 ->3d model B tx
Προβολές Objects are projected onto a plane or simple volume and then clipping and rendering... 4 th row unaffected Objects retained their types Assume we look down to - z axis
Orthographic Projection (1) Orthographic Projection Parallel lines remain parallel P0 x, y the shame z=0
Orthographic Projection (2) Restrict x, y, z to a certain interval with bottom, up, left, right, near far planes (l,r,b,t,n,f) - axis aligned bounded box Canonical view volume (-1,-1,-1) (1,1,1)
Orthographic Projection (3) Translate Scale Mirror t=(-(r+l)/2, -(b+t)/2, -(n+f)/2) s=(2/(r-l), 2/(t-b), 2/(f-n))
Perspective Projection (1) Plane =-d d>0 Camera on (0,0,0) p=(px,py,pz) q=(qx,qy,-d) qx=-dpx/pz qy=-dpy/pz qz=-d
Perspective Projection (2) p=(px,py,pz) View frustum unit cube Frustum (l,r,b,t,n,f) Near: (l,b,n) m (r,t,n) Horizontal field of view Vertical field of view φ=2arctan(w/ (2d)), w screen width, d distance
Perspective Projection (3) Φ narrow μικρότερη προοπτική Φ wide distort objects S(1,1,-1) Selecting n, f affects Z-buffer!
Οι σκηνές είναι συνήθως πιο μεγάλες από το ορατό μέρος της οθόνης ή του παραθύρου Αποκοπή (clipping) για την εμφάνιση μόνο των στοιχείων εκείνων που βρίσκονται στο οπτικό πεδίο Το οπτικό πεδίο ορίζεται από ένα παράθυρο αποκοπής (clipping window) το οποίο θα θεωρηθεί ορθογώνιο παραλληλόγραμμο Για να υπάρχει σύνδεση, η αποκοπή ενός πολυγώνου πρέπει να οδηγεί σε ένα πολύγωνο, όχι μια ακολουθία μη συνδεδεμένων τμημάτων Θα εξετάσουμε αρχικά 2Δ προβλήματα και έπειτα θα την επεκτείνουμε σε 3Δ yw max παράθυρο yw min yv min xwmin xw max Συντεταγμένες πραγματικού κόσμου xv min xvmax Συντεταγμένες οθόνης
Σημειακή αποκοπή Έλεγξε αν οι συντεταγμένες κάθε σημείου βρίσκονται μέσα στα όρια του παραθύρου Αλγόριθμος μέσου Εύρεση σημείων τομής ευθύγραμμου τμήματος με τις πλευρές του παραθύρου Όρισε τα τελικά σημεία της γραμμής Επαναληπτικά διαίρεσε τη γραμμή όσο τα άκρα των διαδοχικών τμημάτων βρίσκονται εκατέρωθεν πλευράς παραθύρου περιέχονται (μέσα και έξω από το παράθυρο) Τερματισμός όταν το μήκος γίνει μικρότερο της ακρίβειας (pixel) F Παράθυρο αποκοπής H Α C Β E G
Αποκοπή στις Δύο Διαστάσεις (1) Αλγόριθμος μέσου
Αποκοπή στις Δύο Διαστάσεις (2)
Με τη διενέργεια κάποιων πράξεων σε επίπεδο bit, μπορούν κάποια ευθύγραμμα τμήματα να αποκλειστούν από περαιτέρω ελέγχους. Όσα τμήματα απομένουν, ελέγχονται για την τομή τους με το παράθυρο και αποκόπτονται μέχρι να απομονωθεί το τμήμα που ανήκει εξ ολοκλήρου στο παράθυρο. πάνω b 3 b 2 b 1 b 0 κάτω δεξιά αριστερά bit=1 if (x<xmin or x>xmax, ) τα bit τα οποία είναι ίσα με 1, υποδεικνύουν ποιες ευθείες τέμνονται με το ευθύγραμμο τμήμα 1001 Α 1000 1010 F Β 0001 H 0000 D 0010 C E 0101 0100 0110 G Πράξη μεταξύ των κωδικών των άκρων: λογικό KAI!= 0 ολοκληρωτικά εκτός παραθύρου => απορρίπτεται (π.χ. GH) λογικό Η ==0 ολοκληρωτικά ορατό Για τα υπόλοιπα ευθύγραμμα τμήματα εύρεση τομών με παράθυρο
y = ymax 1010 0010 0000 x = xmax y = ymin 0000 0000 0100
Αποκοπή στις Δύο Διαστάσεις (1) Αλγόριθμος Cohen - Sutherland
Αποκοπή στις Δύο Διαστάσεις (2)
Αποκοπή στις Δύο Διαστάσεις (3)
Αποκοπή στις Δύο Διαστάσεις (4)
Αποκοπή στις Δύο Διαστάσεις (5) Αλγόριθμος Liang-Barsky
Αποκοπή στις Δύο Διαστάσεις (6)
Αποκοπή στις Δύο Διαστάσεις (7)
Εφαρμόζεται σε κυρτά πολύγωνα ή μη κυρτά πολύγωνα με κυρτό παράθυρο αποκοπής αποκοπή του πολυγώνου ως προς την κάθε πλευρά του παράθυρου αποκοπής με την σειρά
Αποκοπή στις Δύο Διαστάσεις Αλγόριθμος Sutherland - Hodgman
Για κάθε πλευρά αποκοπής: Οι κορυφές του πολυγώνου εξετάζονται με θετική φορά. Για κάθε πλευρά του πολυγώνου (από κορυφή S σε κορυφή P), διακρίνουμε 4 περιπτώσεις. Η πλευρά μπορεί να: 1: είναι εσωτερική αποθήκευσε το Ρ 2: εξέρχεται από το παράθυρο αποκοπής αποθήκευσε το σημείο τομής 3: είναι εξωτερική καμία αποθήκευση 4: εισέρχεται στο παράθυρο αποκοπής αποθήκευσε το σημείο τομής και το Ρ P 3 P 2 P a P b P 0 εσωτερικό εξωτερικό P 1 P 0 P 1
Πότε μια κορυφή Ρ(x,y) είναι εσωτερική σε σχέση με μια πλευρά του παραθύρου αποκοπής; Οι πλευρές του παραθύρου αποκοπής λαμβάνονται με αρνητική φορά (φορά δεικτών ρολογιού) Αν η πλευρά του παραθύρου αποκοπής ορίζεται από τα σημεία (x1, y1) και (x2, y2) και έστω a=(y2-y1)/(x2-x1) και b=(y1x2-y2x1)/(x2-x1), τότε y-ax-b = 0 κορυφή ανήκει στην ευθεία y-ax-b < 0 κορυφή εσωτερική y-ax-b > 0 κορυφή εξωτερική
Αποκοπή στις Δύο Διαστάσεις (1)
Αποκοπή στις Δύο Διαστάσεις (2) Αλγόριθμος Sutherland - Hodgman
Αποκοπή στις Δύο Διαστάσεις (3) Αλγόριθμος Greiner - Hormann
Αποκοπή στις Δύο Διαστάσεις (4)
Αποκοπή στις Δύο Διαστάσεις (5)
Αποκοπή στις Δύο Διαστάσεις (6) Το αποτέλεσμα της αποκοπής όταν αποτελείται από περισσότερα του ενός πολύγωνα, αυτά ονομάζονται μησυνεκτικά O(n m): πολυπλοκότητα
Το ορατό πεδίο στις 3 διαστάσεις (χώρος αποκοπής) μπορεί να είναι είτε σε μορφή κύβου (παράλληλη προβολή) είτε πυραμίδας (προοπτική προβολή). Προς το παρόν θεωρούμε ότι ορίζεται από 6 επίπεδα αποκοπής Στον αλγόριθμο Cohen - Sutherland χρησιμοποιούμε κωδικούς 6-bit για την κωδικοποίηση της θέσης σημείου ως προς το χώρο αποκοπής Στον αλγόριθμο Sutherland - Hodgman τα όρια αποκοπής είναι 6 επίπεδα αντί 4 γραμμές Η εύρεση τομής γίνεται συγκρίνοντας ακμή ως προς επίπεδο αντί συγκρίνοντας ακμή ως προς ακμή
Αποκοπή στις Τρεις Διαστάσεις (2) Οι αλγόριθμοι της αποκοπής στις τρεις διαστάσεις είναι γενίκευση των αντίστοιχων στις δύο διαστάσεις.
Αποκοπή στις Τρεις Διαστάσεις (3) Αλγόριθμος Cohen - Sutherland
Αποκοπή στις Τρεις Διαστάσεις (4)
Αποκοπή στις Τρεις Διαστάσεις (5)
Αποκοπή στις Τρεις Διαστάσεις (6) Αλγόριθμος Sutherland - Hodgman
OpenGL Transformations (1) Viewing: specifies the location of viewer Modeling: moves object around scene Modelview: Viewing and Modeling Projection: Sizes and reshapes the viewing volume Vieport: scale final output to window
OpenGL Transformations (2) Viewing Transformations Perspective projection (0,0,0) Default looking down the z Orthographic prograction (0,0,max +z) Default looking down the z Viewing transformations first Modeling transformations Translation Scaling Rotation Modelview duality
OpenGL Transformations (3) Projection Transformations Orthographic Perspective Viewport Transformation
OpenGL Transformations (4) Modelview Matrix
OpenGL Transformations (5) Translations Rotations Scaling Adding Transformations
OpenGL Transformations (6)
OpenGL Transformations (7) Projection Matrix Orthographic Perspective
OpenGL Transformations (8)
OpenGL Transformations (9) Matrix Stack Max depth 64 Initially