Απεικόνιση Γραφικά ΥφήςΥπολογιστών Απεικόνιση Υφής Μέρος B Δημιουργία Συντεταγμένων Υφής Γ. Γ. Παπαϊωάννου, - 2008
Γενικά Είδαμε ότι μπορούμε να αποθηκεύσουμε συντεταγμένες υφής στις κορυφές των τριγώνων ώστε να παρεμβληθούν στο εσωτερικό κατά το rasterization Οι συντεταγμένες αυτές μπορούν να παραχθούν: Στατικά: Προϋπολογισμός και ανάθεση με κάποια συνάρτηση παραμετρικής απεικόνισης Χειροκίνητα (συνήθως μεταβάλλοντας το παραπάνω αποτέλεσμα) Δυναμικά: Ειδικές περιπτώσεις συναρτήσεων παραμετρικής απεικόνισης
Συναρτήσεις Παραμετρικής Απεικόνισης Χρησιμεύουν στην αυτόματη ανάθεση παραμέτρων υφής σε καρτεσιανές συντεταγμένες (κορυφών) Βασίζονται κυρίως σε διαδεδομένες σχέσεις μετατροπής συντεταγμένων που απεικονίζουν καρτεσιανές συντεταγμένες σε συνεχείς παραμετρικές επιφάνειες Έχουν τη μορφή: u = f(p) p τοσημείοστοχώροκαιu το διάνυσμα παραμέτρων
Απεικόνιση σε Επίπεδο Όλα τα σημεία προβάλλονται σε κάποιο κύριο επίπεδο (έστω το (x,y) ) Οι προβεβλημένες συντεταγμένες χρησιμοποιούνται ως παράμετροι υφής: (u,v) = (x,y)
Κυλινδρική Απεικόνιση Οι συντεταγμένες υφής προκύπτουν από τις κυλινδρικές συντεταγμένες ενός σημείου:
Σφαιρική Απεικόνιση Οι συντεταγμένες υφής προκύπτουν από τις σφαιρικές συντεταγμένες ενός σημείου:
Σφαιρική Απεικόνιση Παραμορφώσεις Εμβαδόν texels
Απεικόνιση σε Παραλληλεπίπεδο Δύο διαφορετικά είδη διαφορετική χρήση: Box Mapping (τρι-επίπεδη προβολή) Cube Mapping (διανυσματική απεικόνιση σε κύβο) Και στις δύο περιπτώσεις, χρησιμοποιούμε ένα από τα 6 κύρια επίπεδα ως παραμετρικό χώρο υφής επιλέγοντας ανάλογα με την κύρια κατεύθυνση ενός διανύσματος (π.χ. το normal) Θεωρούμε ένα διάνυσμα ανάλογα με την εφαρμογή r v = p o ή v r = n r
Τρι-επίπεδη Προβολή Εφαρμόζουμε επίπεδη προβολή πάνω στα xy, xz, yz επίπεδα, ανάλογα με την κλίση του : Αν v z v x και v z v y τότε επίπεδη προβολή στο (x,y) Αλλιώς αν v x v y και v x v z τότε επίπεδη προβολή στο (y,z) Αλλιώς αν v y v x και v y v z τότε επίπεδη προβολή στο (x,z) v r
Διανυσματική Απεικόνιση σε Κύβο Προβάλουμε το διάνυσμα v πάνω σε ένα από τα έξι επίπεδα ανάλογα με το ποια προσημασμένη συνιστώσα του είναι μεγαλύτερη: ( c, c, a) ( z, y, x) ( c, c, a) ( z, y, x) ( c, c, a) ( x, z, y) ( c, c, a) ( x, z, y) ( c, c, a) ( x, y, z) ( c, c, a) ( x, y, z) u v m = v v v + x u v m = v v v x u v m = v v v + y u v m = v v v y u v m = v v v + z u v m = v v v z
Διανυσματική Απεικόνιση σε Κύβο Παράδειγμα απεικόνισης προκατασκευασμένου φωτισμού με χρήση cube maps πάνω στοκανονικόδιάνυσμα
Επιλογή Κατάλληλης Συνάρτησης Planar Cylindrical Box
Μετασχηματισμοί στο Χώρο της Υφής Γιατί χρειάζονται; Οι συντεταγμένες απεικόνισης της υφής υπολογίζονται με βάση την αρχή των αξόνων Πρέπει να μετασχηματίσουμε την υφή ώστε να ελέγχουμε το μέγεθος, τη θέση και τον προσανατολισμό της απεικόνισης Δημιουργούμε παραλλαγές των βασικών τύπων απεικόνισης χωρίς να χρειάζεται να επινοήσουμε ειδικές συναρτήσεις
Μετασχηματισμοί στο Χώρο της Υφής
Διαδικασία Μετασχηματισμού Υφής Είναι πιο πρακτικό να σκεφτόμαστε τους μετασχηματισμούς σαν να εφαρμόζονται πάνω στην ενδιάμεση παραμετρική επιφάνεια που χρησιμοποιούμε Στην πράξη, εφαρμόζουμε τον δυϊκό μετασχηματισμό (αντίστροφο) στις συντεταγμένες του αντικειμένου πριν υπολογίσουμε τις συντεταγμένες υφής: M p p 1 tex (Φ tex ( )) Φ tex ( M tex ( ))
Παράδειγμα Μετασχηματισμού Υφής Αν θέλουμε να μεγαλώσουμε Χ 2 την εικόνα που αποτυπώνουμε πάνω σε μια επιφάνεια, θα μικρύνουμε τις συντεταγμένες υφής δύο φορές πριν δειγματοληπτήσουμε το bitmap S (Φ ( p)) = Φ ( S ( p)) 2,2 planar, XY planar, XY 1 1, 22 y y x x
Απεικόνιση Περιβάλλοντος Χώρου Κάνοντας χρήση κάποιας από τις πανκατευθυντικές συναρτήσεις παραμετρικής απεικόνισης μπορούμε να προϋπολογίσουμε και να αποδώσουμε στην επιφάνεια φωτισμό από το περιβάλλον Συνήθως χρησιμοποιούμε (βολεύουν στην κατασκευή και εφαρμογή): Σφαιρική Απεικόνιση Cube Maps Χρησιμοποιούνται για απόδοση δυναμικής υφής, όπως diffuse / specular φωτισμού και ανακλάσεων
Δυναμική Υφή Δυναμική Υφή είναι η απεικόνιση υφής που χρησιμοποιεί συντεταγμένες υφής οι οποίες παράγονται για κάθε καρέ ξεχωριστά με βάση: Τις καρτεσιανές συντεταγμένες των σημείων Τα κανονικά διανύσματα των σημείων Δεν προαποθηκεύονται τιμές παραμέτρων στα σημεία Ο υπολογισμός των συντεταγμένων υφής μπορεί να χρησιμοποιήσει τα μετασχηματισμένα σημεία/διανύσματα Στο ECS Στο WCS Στο CSS
Δυναμική Υφή Object-Linear Mapping Χρησιμοποιούνται οι τρέχουσες (και ενδεχομένως τοπικά μετασχηματισμένες) καρτεσιανές συντεταγμένες σε χώρο αντικειμένων (WCS) ως συντεταγμένες υφής Έχουν τη μορφή: Στην απλούστερη περίπτωση: r u r v = (1,0,0) u = = (0,1,0) v = (δυναμική επίπεδη απεικόνιση) u v x y r r = up r r = vp
Δυναμική Υφή Eye-Linear Mapping Χρησιμοποιούνται οι τρέχουσες καρτεσιανές συντεταγμένες σε χώρο παρατηρητή (ECS) ως συντεταγμένες υφής Έχουν τη μορφή: Στην απλούστερη περίπτωση: r u r v = (1,0,0) u = = (0,1,0) v = u v x y r r = up r r = vp (υφή παράλληλη με το επίπεδο της οθόνης)
Δυναμική Υφή Projective Mapping Εφαρμόζει πάνω στις συντεταγμένες υφής ένα μετασχηματισμό προοπτικής προβολής με βάση ένα τυχαίο σημείο στο χώρο: u = P M u Persp WCS COP Object Linear Επιλέγονται συνήθως ως συντεταγμένες εισόδου στο μετασχηματισμό οι Object-linear συντεταγμένες υφής To αποτέλεσμα είναι σαν να προβάλλουμε μια εικόνα από μηχάνημα προβολής πάνω στα αντικείμενα του χώρου
Δυναμική Υφή Reflection (Environment) Mapping Το χρησιμοποιούμε για να αποδώσουμε χρώμα στην επιφάνεια από ανάκλαση του περιβάλλοντος χώρου πάνω σε αυτή Έχουμε καταγράψει το τι φαίνεται προς κάθε κατεύθυνση γύρω από το αντικείμενο σε ένα bitmap (ή σε6, αν χρησιμοποιούμε cube maps) Υπολογίζεται το διάνυσμα ολικής ανάκλασης απότοκανονικό διάνυσμα και την κατεύθυνση παρατήρησης Εφαρμόζεται spherical mapping (ή cube mapping για την απεικόνιση της υφής)
Reflection Mapping: Προϋποθέσεις Θεωρούμε ότι το περιβάλλον βρίσκεται αρκετά μακριά από το αντικείμενό μας Μπορούμε να υποθέσουμε ότι όλες οι συντεταγμένες του είναι κοντά στο κέντρο του αντικειμένου σε σχέση με την απόστασή τους από το περιβάλλον Για κάθε σημείο του αντικειμένου με ίδιο υπολογισμένο διάνυσμα ανάκλασης θα «δούμε» το ίδιο σημείο του περιβάλλοντος Ανακριβές για κοντινά αντικείμενα
Υπολογισμός Διανύσματος Ανάκλασης r = 2 r r v = 2n r nv r r r v 1 ( ) r r n r θ r 1 θ v r
Reflection Mapping με Spherical Map Χρησιμοποιούμε τις πολικές συντεταγμένες του διανύσματος ανάκλασης ως παραμέτρους υφής Δεικτοδοτούμε με αυτές 1 εικόνα υφής που «καλύπτει» το πεδίο γύρω από το αντικείμενό μας θ = 1 tan ( rx / rz) ( r ) y rx rz ϕ = + 1 2 2 tan /( ) r r n r v r v u
Reflection Mapping με Cube Maps Χρησιμοποιούμε το διάνυσμα ανάκλασης για επιλογή και δεικτοδότηση του cube map (6 εικόνες)
Reflection Mapping με Cube Maps
Ιεραρχίες Υφής Μπορούμε να χρησιμοποιήσουμε πολλαπλές εικόνες υφής με ενδεχομένως διαφορετικές παραματροποιήσεις για την κάθε μια για να χρωματίσουμε μια επιφάνεια: Πολλαπλές υφές χρώματος Μία υφή τοπικού χρώματος (λεπτομέρεια) Μία υφή συνολικής διαμόρφωσης χρώματος υλικού (χαμηλή συχνότητα, αργή μεταβολή) Μίξη χρώματος ή υπέρθεση Ξεχωριστές ανακλάσεις ή υφή φωτισμού Μίξη υφής φωτισμού με την υφή χρώματος Παραμετρική (σταθερή) υφή για το χρώμα και δυναμική για το φωτισμό/ανακλάσεις
Ιεραρχίες Υφής - Παράδειγμα
Multi-texturing Για την υποστήριξη απλής μίξης/υπέρθεσης υφής ή την υλοποίηση ιεραρχιών υφής (με fragment shaders), οι κάρτες γραφικών διαθέτουν πολλαπλές μονάδες φόρτωσης και δειγματοληψίας υφής (texture units) Τυπικός αριθμός: 4
Multi-texturing Κάθε texture unit φορτώνει και χρησιμοποιεί ταυτόχρονα με τις άλλες: Διαφορετική εικόνα υφής Διαφορετικές παραμέτρους υφής Διαφορετικό πίνακα μετασχηματισμών στο χώρο της υφής Η εφαρμογή δηλώνει πολλαπλές παραμέτρους ανά κορυφή (προαιρετικά)