Απεικόνιση Γραφικά ΥφήςΥπολογιστών Απεικόνιση Υφής Μέρος Α Υφή σε Πολύγωνα Γ. Γ. Παπαϊωάννου, - 2008
Τι Είναι η Υφή; Η υφή είναι η χωρική διαμόρφωση των ποιοτικών χαρακτηριστικών της επιφάνειας ενός αντικειμένου, όπως το χρώμα, η διαφάνεια, το ανάγλυφο ή η ομαλότητα Η διαδικασία με την οποία αποδίδεται υφή με κάποιο κανόνα σε κάθε σημείο της επιφάνειας, αποκαλείται απεικόνιση υφής (texturing) Απλουστευτικά, μπορούμε να θεωρήσουμε την απεικόνιση υφής σαν μια επικάλυψη του αντικειμένου με μια εικόνα
Γιατί Χρειαζόμαστε την Απόδοση Υφής; Οι επιφάνειες, όπως είχαμε μέχρι τώρα, ήταν ομαλές και ομοιόμορφα χρωματισμένες και φωτοσκιασμένες Αν θέλαμε να αποτυπώσουμε ένα σχέδιο σε μια επιφάνεια έπρεπε να υποδιαιρέσουμε την επιφάνεια σε περισσότερα πολύγωνα (b): Για πιο πολύπλοκα σχήματα και εικόνες, κάτι τέτοιο είναι πρακτικά αδύνατο (c)!
Χρησιμότητα της Υφής Χρειαζόμαστε έναν τρόπο να αποτυπώνουμε πάνω σε αντικείμενα προκαθορισμένα σχέδια που προέρχονται είτε από κάποια ψηφιακή εικόνα (bitmap) ή που έχουν υπολογιστεί αλγοριθμικά
Τα Δύο Είδη Υφής Image mapping: Τα σχέδια που αποτυπώνονται πάνω στα αντικείμενα είναι προϋπολογισμένα και αποθηκευμένα στη μνήμη (εικόνες 1Δ/2Δ/3Δ) Procedural mapping: v v u H υφή παράγεται με αναλυτικό τρόπο απευθείας από τις καρτεσιανές συντεταγμένες, μέσω κάποιου αλγορίθμου u w
Παραμετρική Απεικόνιση Υφής Όταν το πρότυπο που απεικονίζουμε πάνω στην επιφάνεια είναι προ-υπολογισμένο και αποθηκευμένο ως εικόνα (texture image), τότε έχουμε παραμετρική απεικόνιση υφής Οχώρος(επίπεδο) πάνω στο οποίο είναι ορισμένη η εικόνα της υφής λέγεται παραμετρικός χώρος της υφής Για εικόνες δύο διαστάσεων (bitmaps) αυτός ο χώρος είναι δύο διαστάσεων, δηλαδή ένα σημείο στην εικόνα υφής χαρακτηρίζεται από δύο παραμέτρους (u,v)
Παραμετρική Απεικόνιση Υφής Οι καρτεσιανές συντεταγμένες των σημείων αντιστοιχίζονται σε συντεταγμένες στον παραμετρικό χώρο της υφής Τα χαρακτηριστικά του υλικού (π.χ. χρώμα) υπολογίζονται από τα pixels (texels) της εικόνας με βάση τις παραμέτρους υφής
Το Texel Τα διακριτά στοιχεία του αποθηκευμένου προτύπου στη γενική περίπτωση αποκαλούνται texels Ηδιάκρισησεσχέσημεταpixels γίνεται διότι η αποθηκευμένη πληροφορία μπορεί να είναι μια 1Δ-, 2Δ- ή 3Δ εικόνα(γραμμή, bitmap, όγκος)
Παραμετροποίηση της Υφής Οπαραμετρικόςχώροςτηςυφήςείναιτυπικά κανονικοποιημένος v h 1 j (0.6,0.7) Χώρος Εικόνας i w 0 0 1 Παραμετρικός Χώρος Υφής u
Απεικόνιση Χάρτη Υφής σε Πολύγωνα Σε κάθε κορυφή του πολυγώνου, αποθηκεύεται και ένα ζεύγος συντεταγμένων υφής (u,v), το οποίο έχει προϋπολογιστεί κατά τη δημιουργία του μοντέλου: με μία συνάρτηση απεικόνισης (x,y,z) (u,v) Έχει ανατεθεί ρητά κατά τη μοντελοποίηση (x 1,y 1,z 1 ) (u 1,v 1 ) (u 1,v 1 ) (u 2,v 2 ) (u 3,v 3 ) (x 2,y 2,z 2 ) (u 2,v 2 ) (x 3,y 3,z 3 ) (u 3,v 3 )
Υπολογισμός Συντεταγμένων Υφής ανά Fragment Οι προϋπολογισμένες συντεταγμένες uφής παρεμβάλλονται από τον scan-conversion αλγόριθμο για να μας δώσουν τις συντεταγμένες υφής για το τρέχον fragment u ( xy, ) a a s γραμμή σάρωσης (scanline) u u x, y ( ) s s s xy, ( ) 1 1 1 u u = ( uv, ) x, y ( ) b b s y s v u xy, ( ) 3 3 3 u u x, y ( ) 2 2 2
Προοπτική Παραμόρφωση Συντεταγμένων Υφής Η παρεμβολή κατά τη σάρωση του πολυγώνου συμβαίνει μετά την προβολή Οι καρτεσιανές συντεταγμένες των κορυφών υπόκεινται διαίρεση με το βάθος ενώ οι συντεταγμένες υφής δε μετασχηματίζονται Δημιουργείται ασυμφωνία απεικόνισης (προβολική γραμμική, μόνο γραμμική) Παραμορφώσεις, «σκίσιμο» υφής, τράβηγμα προς μια άκρη Διόρθωση: Διαίρεση των συντεταγμένων υφής με το z πριν την παρεμβολή και πολλ/μός με το παρεμβλημένο z μετά (perspective correction)
Επαναληπτικότητα Σχεδίου Η απεικόνιση από τον καρτεσιανό χώρο προς το χώρο της υφής δεν είναι αμφιμονοσήμαντη στη γενική περίπτωση Αυτό διευκολύνει την επανάληψη ενός σχεδίου
Επαναληπτική Παραμετροποίηση Παρότι τελικά οι παράμετροι της υφής πρέπει να έχουν τιμές στο διάστημα [0,1], για να επαναλάβουμε ένα σχέδιο κατά κάποια διεύθυνση, δεν αναθέτουμε συντεταγμένες σε κορυφές σε αλλεπάλληλα διαστήματα 0 1, 0 1 διότι δημιουργείται αναδίπλωση Αφήνουμε τις παραμέτρους να πάρουν τιμές μεγαλύτερες της μονάδας (και μικρότερες του μηδέν) Χρησιμοποιούμε το ακέραιο υπόλοιπο ως τελική παράμετρο πριν αναζητήσουμε την τιμή χρώματος στην εικόνα
Επαναληπτική Παραμετροποίηση
Υπολογισμός Χρώματος από την Εικόνα Υφής Με βάση τις τρέχουσες συντεταγμένες υφής ανατρέχουμε στην εικόνα και διαβάζουμε το αντίστοιχο χρώμα Οπιοαπλόςτρόπος: Πλησιέστερο texel Για μια εικόνα N x N y texels, το χρώμα δίνεται από το κοντινότερο texel (i,j) με βάση την απλή σχέση: i j = unx + = vny + 0.5 0.5
Aliasing στην Απεικόνιση Υφής Εμφανίζεται στη: Μεγέθυνση της υφής (οδόντωση) Σμίκρυνση της υφής (υποδειγματοληψία της εικόνας) Αντιμετωπίζεται με πολύ κοινές τεχνικές που υλοποιούνται στις κάρτες γραφικών: Bilinear interpolation MIP-mapping (LOD trilinear interpolation)
Πρόβλημα Αντιστοίχησης Πλησιέστερου Γείτονα Δημιουργείται οδόντωση (pixelization) κατά τη μεγέθυνση των σχημάτων: Πολλά fragments πέφτουν πάνω στο ίδιο texel της εικόνας υφής 64 pixels 64 pixels
Διγραμμική Παρεμβολή στο Χώρο Υφής Παρεμβάλουμε το χρώμα από τα τέσσερα πλησιέστερα texels αντί να επιλέξουμε το κοντινότερο
Διγραμμική Παρεμβολή στο Χώρο Υφής x = u Dim, y = v Dim x u = x x, v = y y y Ibot = I( x, y ) (1 u ) + I( x, y ) u Itop = I( x, y ) (1 u ) + I( x, y ) u I( uv, ) = I (1 v ) + I v bot top
Αποτέλεσμα Bilinear Texture Filtering Χωρίς Με
Πρόβλημα Υποδειγματοληψίας Υφής Εμφανίζεται όταν το ίχνος του κάθε texel στην οθόνη γίνει μικρότερο του pixel. Αντίστοιχα η συχνότητα μετάβασης από texel σε texel γίνεται μεγαλύτερη από την ανάλυση της εικόνας
Υπερδειγματοληψία Υφής (Post-filtering) Όπως και στο antialiasing στην εικόνα, έτσι και στην υφή, μπορούμε να εφαρμόσουμε υπερδειγματοληψία Λόγω της προοπτικής, δε λύνει το πρόβλημα, καθώς απλά το μεταφέρει σε ένα βαθύτερο σημείο στον ορίζοντα
Υπερδειγματοληψία Υφής (Post-filtering)
Texture Pre-Filtering Για να ανακατασκευαστεί σωστά η υφή, πρέπει για κάθε fragment, να μετράμε πόσα και ποια texels καλύπτει στο χώρο της υφής και να εφαρμόζουμε ένα βεβαρημένο μέσο όρο στην αντίστοιχη περιοχή Φίλτρο μεταβλητού πυρήνα (διαφορετικές διαστάσεις και διαφορετικός προσανατολισμός)
Texture Pre-Filtering Δύσκολη υλοποίηση: Μεταβλητός και ασύμμετρος πυρήνας Η περιοχή φιλτραρίσματος ενδέχεται να γίνει πολύ μεγάλη στο χώρο της υφής πολλά δείγματα Μη γραμμικό ίχνος του fragment στοχώρουφής δύσκολος προσδιορισμός ορίων δειγματοληψίας
MIP-Mapping Μπορούμε να προ-φιλτράρουμε με διαφορετικά μεγέθη φίλτρου την εικόνα της υφής Σε πραγματικό χρόνο, απλά επιλέγουμε για κάθε fragment πια προφιλτραρισμένη έκδοχή της εικόνας (και άρα πιο μέγεθος φίλτρου) θα εφαρμόσουμε MIP-Mapping: Multum In Parvo (πολλά πράγματα σε ένα μικρό μέρος) Παράγουμε διαδοχικά υποδιπλάσιου μεγέθους εικόνες με μέσο όρο 2Χ2 texels της προηγούμενης Αποθηκεύουμε την εικόνα σε μια συνεκτική περιοχή μνήμης με τρόπο που να διευκολύνει το indexing
MIP-Mapping MIP-Mapping: Multum In Parvo (πολλά πράγματα σε ένα μικρό μέρος) Παράγουμε διαδοχικά υποδιπλάσιου μεγέθους εικόνες με μέσο όρο 2Χ2 texels της προηγούμενης Αποθηκεύουμε την εικόνα σε μια συνεκτική περιοχή μνήμης με τρόπο που να διευκολύνει το indexing
MIP-Mapping: Πυραμίδα Επιπέδων Λεπτομέρειας
MIP-Mapping: Τρι-γραμμική παρεμβολή Είδαμε ότι για κάθε επίπεδο λεπτομέρειας εφαρμόζουμε διγραμμική παρεμβολή για να εξάγουμε το χρώμα Στο MIP-Mapping χρησιμοποιούμε πολλαπλά επίπεδα λεπτομέρειας Για να μη φαίνεται πότε αλλάζουμε επίπεδο (μέγεθος φίλτρου), χρησιμοποιούμε και μια τρίτη παράμετρο παρεμβολής ανάμεσα στα επίπεδα d [0, level ] level max = log ( max( N, M )) + 1 max 2 Το i-στο επίπεδο έχει μέγεθος
Υπολογισμός του Συντελεστή Σμίκρυνσης d Θα επιλέξουμε εκείνο το επίπεδο λεπτομέρειας που το ίχνος του texel είναι παρόμοιου μεγέθους με το pixel:
Υπολογισμός του Συντελεστή Σμίκρυνσης d Η μέγιστη διάσταση του ίχνους του pixel στην εικόνα της υφής σε μονάδες texels θα είναι: Επιλέγουμε το d ως: