Γεωμετρικές Σκιές Θ. Θεοχάρης Ι. Κακαδιάρης - Γ. Πασσαλής
Περιεχόμενα Σ1 Χαρακτηριστικά Σκιών στα Γραφικά Σ2 Απλές Σκιές Σ3 Σύγχρονοι Αλγόριθμοι Σκιών 2
Εισαγωγή (1) Οι σκιές είναι σημαντικές στην κατανόηση 3Δ. Μια σκηνή χωρίς σκιές μοιάζει συνθετική. Βοηθούν στην κατανόηση των 3Δ σχέσεων των αντικειμένων καθώς και της θέσης των φωτεινών πηγών. Για τον σωστό υπολογισμό σκιών χρειάζεται να υπολογίσουμε τόσο τη γεωμετρία (σχήμα) τους όσο και τη φωτεινή ένταση εντός τους. 3
Εισαγωγή (2) Οι σκιές είναι συνάρτηση του περιβάλλοντος φωτισμού. Μπορούν να έχουν μαλακές ή σκληρές ακμές ενώ μπορεί να περιέχουν τόσο σκιά (umbra) όσο και παρασκιά (penumbra). Η σκιά είναι το τμήμα της σκιάς που δεν λαμβάνει καθόλου φως από την φωτεινή πηγή, ενώ η παρασκιά είναι το τμήμα που φωτίζεται μερικώς. Ηπαρασκιάπερικλείει την σκιά και η μετάβαση του φωτισμού από τη μία στην άλλη γίνεται σταδιακά. 4
Σ1 Χαρακτηριστικά Σκιών στα Γραφικά (1) Ιδιότητες που εκμεταλλεύονται οι αλγόριθμοι σκιών: o Η σκιά που δημιουργείται από ένα πολύγωνο A πάνω σε ένα πολύγωνο B από μια σημειακή φωτεινή πηγή, μπορεί να υπολογισθεί προβάλλοντας το A στο επίπεδο του B με κέντρο προβολής τη θέση της σημειακής φωτεινής πηγής. 5
Σ1 Χαρακτηριστικά Σκιών στα Γραφικά (2) o Δεν παρατηρούνται σκιές αν το σημείο παρατήρησης συμπίπτει με τη θέση της (μοναδικής) φωτεινής πηγής. o Εάν η φωτεινή(ες) πηγή(ες) είναι σημειακή(ες), τότε δεν υπάρχει penumbra και η σκιά έχει σκληρές ακμές. o Για στατικές σκηνές, οι σκιές είναι σταθερές και δεν εξαρτώνται από το σημείο παρατήρησης. Εξαρτώνται όμως από τη θέση της φωτεινής πηγής. 6
Αλγόριθμοι Σκιών Βασική ιδέα: εύρεση των επιφανειών που φαίνονται από φωτεινή πηγή o Επιφάνειες που δεν φαίνονται είναι στη σκιά Σκιές στο μοντέλο φωτισμού: I Ρ = έμμεσος φωτισμός + Σ S i (διάχυτη + κατ/μενη) S i = 0, αν σημείο Ρ είναι στη σκιά φ.πηγής i S i = 1, αν σημείο Ρ φωτίζεται απο φ.πηγή i 7
Αλγόριθμοι Σκιών Βασική ιδέα, πρακτικά: o Σημείο P βρίσκεται στη σκιά P δεν είναι ορατό από θέση φωτεινής πηγής 4 αλγόριθμοι περιγράφονται: o Απλοί: Σκιές σε Επίπεδο Scan-line o Ρεαλιστικοί και αποδοτικοί: Στερεό Σκιάς (Shadow volume) Χάρτης Σκιάς (Shadow map) 8
Σ2.1 Απλές Σκιές σε Επίπεδο-Blinn (1) Πολύ απλός αλγόριθμος σκιών, Blinn (1988) Κατάλληλος για εύρεση πολυγώνου σκιάς σε επίπεδο: o Για μοναδικό αντικείμενο o Για μη αλληλοσκιαζόμενα αντικείμενα 9
Σ2.1 Απλές Σκιές σε Επίπεδο-Blinn (2) Ένα σημείο P = (x p, y p, z p ) του αντικειμένου ρίχνει τη σκιά του στο σημείο S = (x sw, y sw, 0) του επιπέδου Έχουμε: S = P - αl αλλά z sw =0, οπότε: 0 = z p - αz 1 α = z p /z 1 συνεπώς x sw = x p -(z p /z 1 )x 1 y sw = y p (z p /z 1 )y 1 10
Σ2.1 Απλές Σκιές σε Επίπεδο-Blinn (3) Σε μορφή πίνακα: 11
Σ2.2 Γραμμή Σάρωσης ( Γραμμή Σάρωσης (Scan line) (1) Φάση προ-επεξεργασίας: o Προβολή όλων των πολυγώνων σε σφαίρα με κέντρο το σημείο φωτισμού o Μη επικαλυπτώμενα πολύγωνα αγνοούνται o Επικαλυπτώμενα σημειώνονται ως ζεύγη σκιάς Έξοδος: για κάθε πολύγωνο, μια λίστα από άλλα πολύγωνα που το σκιάζουν 12
Σ2.2 Γραμμή Σάρωσης ( Γραμμή Σάρωσης (Scan Scan line) (2) Φάση επεξεργασίας: χρησιμοποιεί τροποποιημένο αλγόριθμο γραμμής σάρωσης Για κάθε πολύγωνο με κενή λίστα σκιαζόντων πολυγώνων ακολουθείται ο κανονικός αλγόριθμος Διαφορετικά, προβάλλονται τα σκιάζοντα πολύγωνα στο επίπεδο του τρέχοντος πολυγώνου Π.χ. το Α σκιάζει (Α ) το Β 13
Σ2.2 Γραμμή Σάρωσης (Scan( line) (3) Απαιτούνται επιπλέον δομές δεδομένων Όχι κατάλληλη για διαδραστικές εφαρμογές Δεν εκμεταλλεύεται τις σύγχρονες κάρτες γραφικών αφού χρησιμοποιεί τροποποιημένο αλγόριθμο παράστασης πολυγώνων 14
Σ3.1 Στερεό Σκιάς (Shadow Volume) (1) Στερεό σκιάς είναι ο χώρος που καταλαμβάνεται από τη σκιά ενός αντικειμένου o Ο χώρος αυτός έχει άπειρο όγκο o Το στερεό σκιάς καθορίζεται από τις ημιευθείες που ξεκινούν από σημειακή φωτεινή πηγή και διέρχονται από τις κορυφές του περιγράμματος του αντικειμένου Το στερεό σκιάς υπολογίζεται βρίσκοντας το περίγραμμα του αντικειμένου, όπως αυτό φαίνεται από τη φωτεινή πηγή o Το περίγραμμα αποτελείται από ακμές που είναι κοινές σε πολύγωνα έμπροσθεν και όπισθεν προσανατολισμού ως προς τη φωτεινή πηγή (front and back facing polygons) 15
Σ3.1 Στερεό Σκιάς (2) Πολύγωνα σκιάς: ορίζονται από το σημείο φωτεινής πηγής και τις πλευρές περιγράμματος και καθορίζουν στερεό σκιάς αντικειμένου (π.χ. A, B, C) 16
Σ3.1 Στερεό Σκιάς (3) Πως βρίσκουμε αν ένα σημείο αντικειμένου σκιάζεται; o Σχετικά με το σημείο παρατήρησης ένα σημείο σκιάζεται εάν βρίσκεται πίσω από ένα έμπροσθεν πολύγωνο σκιάς και μπροστά από ένα όπισθεν πολύγωνο σκιάς o Για πολλαπλά σκιάζοντα αντικείμενα, μετράμε τα πλήθη των έμπροσθεν και των όπισθεν πολυγώνων σκιάς μεταξύ του σημείου παρατήρησης και του υποψήφιου σημείου: αν είναι ίσα τότε το σημείο δεν σκιάζεται 17
Σ3.1 Στερεό Σκιάς (4) Υλοποίηση με χρήση stencil buffer: o Παράσταση σκηνής (δημιουργία frame buffer με έμμεσο φωτισμό μόνο & z buffer) o Παράσταση έμπροσθεν πολυγώνων σκιάς αυξάνοντας τον stencil buffer (με χρήση z buffer σκηνής) o Παράσταση όπισθεν πολυγώνων σκιάς μειώνοντας τον stencil buffer (με χρήση z buffer σκηνής) o Παράσταση αντικειμένου υπό σκιά σε pixels όπου stencil <> 0 o Παράσταση αντικειμένου κανονικά φωτισμένου σε pixels όπου stencil = 0 18
Σ3.1 Στερεό Σκιάς (5) Αριστερά: Αντικείμενο με σκιά Δεξιά: Το ίδιο αντικείμενο με το στερεό σκιάς και την προβολή των ακμών του περιγράμματος (Εικόνες από ιστοσελίδα NVIDIA) 19
Σ3.1 Στερεό Σκιάς (6) a) Σημείο παρατήρησης εκτός σκιών: χρήση κανονικού αλγορίθμου b) Σημείο παρατήρησης εντός σκιών: χρήση αντίστροφου αλγορίθμου Carmack 20
Σ3.1 Στερεό Σκιάς (7) Πλεονεκτήματα o Ακρίβεια χώρου αντικειμένων o Κατάλληλος για σκηνές με απεριόριστο βάθος Μειονεκτήματα o Πλήθος πολυγώνων σκιάς (~ πολυπλοκότητας σκηνικού) o Πολύγωνα σκιάς καταλαμβάνουν μεγάλο τμήμα οθόνης αυξάνοντας σημαντικά τον χρόνο δημιουργίας καρέ o Υπολογισμός περιγράμματος γίνεται στην CPU 21
Σ3.2 Χάρτης Σκιάς (Shadow( Map) (1) Ητεχνική αυτή χρησιμοποιεί έναν Z-buffer σκιάς για κάθε φωτεινή πηγή o Στη βασική της μορφή είναι κατάλληλη για 1 μόνο φωτεινή πηγή 22
Σ3.2 Χάρτης Σκιάς (2)( Αποτελείται από 2 φάσεις: Φάση 1: Δημιουργείται ο χάρτης σκιάς (ΧΣ), πού είναι ένας χάρτης βάθους (Z-buffer) χρησιμοποιώντας το σημείο φωτισμού σαν σημείο παρατήρησης. o Βρίσκονται έτσι τα πολύγωνα που είναι ορατά από την φωτεινή πηγή και ενδεχομένως να σκιάζουν άλλα. o Δεν υπολογίζονται τιμές φωτισμού. 23
Σ3.2 Χάρτης Σκιάς (3)( Φάση 2: Παράσταση σκηνικού από το σημείο παρατήρησης με τροποποιημένο αλγόριθμο Z-buffer. o Κάθε ορατό σημείο (x, y, z) του χώρου με κέντρο τον παρατηρητή μετασχηματίζεται στο σημείο (x, y, z ) του χώρου με κέντρο τη φωτεινή πηγή. o Αν ΧΣ(x, y ) < z τότε κάποια επιφάνεια κρύβει το σημείο (x, y, z) από τη φωτεινή πηγή και συνεπώς το σημείο βρίσκεται σε σκιά. 24
Σ3.2 Χάρτης Σκιάς (4)( Σκηνικό δημιουργημένο με Χάρτη Σκιάς (Από παρουσίαση της NVIDIA στο GDC 00) 25
Σ3.2 Χάρτης Σκιάς (5)( Το ίδιο σκηνικό με κέντρο παρατήρησης τη φωτεινή πηγή Αριστερά:Παράσταση Δεξιά: z-buffer (χάρτης σκιάς) 26
Σ3.2 Χάρτης Σκιάς (6)( Το ίδιο σκηνικό με το χάρτη σκιάς προβεβλημένο στο χώρο παρατηρητή 27
Πλεονεκτήματα o Μπορεί να υλοποιηθεί εξ ολοκλήρου σε κάρτες γραφικών o Κόστος ανάλογο πολυπλοκότητας σκηνικού Μειονεκτήματα Σ3.2 Χάρτης Σκιάς (7)( o Εξάρτηση από ακρίβεια z-buffer: απομακρυσμένα σημεία από θέση φωτεινής πηγής δεν σκιάζονται με ακρίβεια o Σημειακή φωτεινή πηγή απαιτεί 6 χάρτες σκιάς 28