1 ΤΕΙ Θεσσαλονίκης Τμήμα Πληροφορικής Γραφικά Υπολογιστών: Ανίχνευση Ακτίνας (φωτός) (ray tracing) Πασχάλης Ράπτης http://aetos.it.teithe.gr/~praptis praptis@it.teithe.gr
2 Περιεχόμενα Θα εξετάσουμε την ανίχνευση φωτισμού που χρησιμοποιείται για την παραγωγή ρεαλιστικών εικόνων.
3 Forward Ray-Tracing Περιεχόμενα Backward Ray-Tracing
4 Περιεχόμενα First-Order Reflections Secondary Rays: One bounce
5 Περιεχόμενα Second-Order Reflections Tertiary Rays
6 Ανίχνευσης ακτίνας (ray tracing) Ανίχνευση ακτίνας είναι μια τεχνική για τη δημιουργία μιας εικόνας με τον εντοπισμό της διαδρομής του φωτός μέσα από pixels σε μια εικόνα και προσομοιώνει τα αποτελέσματα των τομών-συναντήσεων της ακτίνας με εικονικά αντικείμενα. Η τεχνική αυτή είναι σε θέση να παράγει ένα πολύ υψηλό βαθμό οπτικού ρεαλισμού, συνήθως υψηλότερη από εκείνη των τυπικών μεθόδων απόδοσης σάρωση-γραμμής (scanline rendering), αλλά με μεγαλύτερο υπολογιστικό κόστος.
7 Ανίχνευσης ακτίνας (ray tracing) Αυτό κάνει την ανίχνευση ακτίνας: -- Περισσότερο κατάλληλη για εφαρμογές, όπου η εικόνα μπορεί να αποδοθεί αργά (χωρίς περιορισμό χρόνου), όπως φωτογραφίες, φιλμ και ειδικά τηλεοπτικά εφέ -- Λιγότερο κατάλληλη για εφαρμογές πραγματικού χρόνου, όπως τα βιντεοπαιχνίδια, όπου η ταχύτητα είναι ζωτικής σημασίας. -- Η ανίχνευση ακτίνας είναι κατάλληλη για προσομοίωση διαφορετικών οπτικών εφέ, όπως η αντανάκλαση (reflection) και η διάθλαση (refraction), διάχυση (scattering), και τα φαινόμενα διασποράς (dispersion) (όπως χρωματική εκτροπή-chromatic aberration).
Images taken from Hearn & Baker, Computer Graphics with OpenGL (2004) 8 Δημιουργία Ανίχνευσης Ακτίνας (Ray-tracing setup)
Images from the POVRAY Hall Fame: h.povray.org 9 Παράδειγμα - Ανίχνευσης ακτίνας
Images from the POVRAY Hall Fame: h.povray.org 10 Παράδειγμα Ανίχνευσης ακτίνας (2)
Images from the POVRAY Hall Fame: h.povray.org 11 Παράδειγμα Ανίχνευσης ακτίνας (3)
Images from the POVRAY Hall Fame: h.povray.org 12 Παράδειγμα Ανίχνευσης ακτίνας (4)
Images from the POVRAY Hall Fame: h.povray.org 13 Παράδειγμα Ανίχνευσης ακτίνας (5)
14 Ανίχνευσης ακτίνας: Βασικές αρχές Η ανίχνευση ακτίνας γίνεται ως εξής: Σχεδιάστε μία ακτίνα (γραμμή) από το σημείο αναφοράς προβολής (μάτι ή κάμερα) σε κάθε θέση pixel και προεκτείνετε την στη σκηνή Προσδιορίστε ποιες επιφάνειες τέμνει η ακτίνα και τακτοποιήστε-διατάξτε τις επιφάνειες κατά απόσταση από το pixel Η πλησιέστερη επιφάνεια στο pixel είναι η ορατή επιφάνεια για εκείνο το pixel (εικονοστοιχείο) Αντανακλάστε μια ακτίνα από την ορατή επιφάνεια κατά μήκος της κατοπτρικής γωνία ανάκλασης (specular reflection angle) Για τις διαφανείς επιφάνειες επίσης να στείλετε μια ακτίνα (μέσα) από την επιφάνεια προς την κατεύθυνση διάθλασης Επαναλάβετε την διαδικασία για αυτές τις δευτερεύουσες ακτίνες
15 Τερματισμός Ανίχνευσης ακτίνας Τερματίζουμε την διαδικασία στην ανίχνευση μιας ακτίνας όταν κάποια από τις ακόλουθες προϋποθέσεις ικανοποιείται: Η ακτίνα δεν τέμνει επιφάνειες Η ακτίνα τέμνει μια πηγή φωτός, που δεν είναι ανακλώσα επιφάνεια Ενας μέγιστος επιτρεπτός αριθμός ανακλάσεων έχει πραγματοποιηθεί
Images taken from Hearn & Baker, Computer Graphics with OpenGL (2004) 16 Ανίχνευσης ακτίνας & Μοντέλα φωτισμού (Illumination ) Σε κάθε τομή ακτίνας-επιφάνειας γίνεται επίκληση του μοντέλου φωτισμού για να καθοριστεί η συνεισφορά της έντασης της επιφάνειας
17 Ακτίνα σκιάς (shadow ray) Η διαδρομή από την τομή (intersection) στην πηγή φωτός είναι γνωστή ως ακτίνα σκιάς (shadow ray)
18 Ακτίνα σκιάς (shadow ray) Η διαδρομή από την τομή (intersection) στην πηγή φωτός είναι γνωστή ως ακτίνα σκιάς (shadow ray) Image copyright Jacco Bikker
19 Ακτίνα σκιάς (shadow ray) Η διαδρομή από την τομή (intersection) στην πηγή φωτός είναι γνωστή ως ακτίνα σκιάς (shadow ray) Αν κάποιο αντικείμενο τέμνει την ακτίνα σκιάς μεταξύ της επιφάνειας και της φωτεινής πηγής, τότε η επιφάνεια είναι στη σκιά σε σχέση με αυτή την πηγή Για να μη ανιχνεύσετε όλες τις ακτίνες σε μια σκηνή, χρησιμοποιείστε μια ακτίνα-σκιάς για να ελέγξετε αν μια επιφάνεια είναι ορατή σε φως.
20 Ακτίνα σκιάς (shadow ray) Μια ακτίνα χτυπά μια επιφάνεια σε κάποιο σημείο. Αν η επιφάνεια σε αυτό το σημείο «βλέπει» ένα φως, μια ακτίνα (προς τον υπολογιστή, ένα τμήμα γραμμής) εντοπίζεται μεταξύ αυτού του σημείου τομής και της πηγής του φωτός. Εάν οποιοδήποτε αδιαφανή αντικείμενο βρίσκεται μεταξύ της επιφάνειας και του φωτός, η επιφάνεια είναι σε σκιά και το φως έτσι δεν συμβάλλει στην σκιά του. Αυτό το νέο στρώμα του υπολογισμού ακτίνων προσθέτει περισσότερο ρεαλισμό στις εικόνες με ανίχνευση ακτίνων.
Ανίχνευσης ακτίνας & Διαφανείς Επιφάνειες Images taken from Hearn & Baker, Computer Graphics with OpenGL (2004) 21 (Transparent) Για τις διαφανείς επιφάνειες θα πρέπει να υπολογίσουμε μια ακτίνα που εκπροσωπεύει το φως που διαθλάται μέσα στο υλικό Η κατεύθυνση της διαθλώμενης ακτίνας καθορίζεται από τον δείκτη διάθλασης του υλικού Διαθλώμενη διαδρομή ακτίνας Εισερχόμενη Ακτίνα
22 Δένδρο Ανίχνευσης ακτίνας (Ray-Tracing Tree) Για κάθε επιφάνεια στην σκηνή που η ακτίνα εξοστρακίζεται (ricochet) προστίθεται ένας κόμβος σε ένα δυαδικό δένδρο ανίχνευσης (ray-tracing tree) Τα αριστερά κλαδιά στο δέντρο χρησιμοποιούνται για την αναπαράσταση των διαδρομών ανάκλασης Τα δεξιά κλαδιά στο δέντρο χρησιμοποιούνται για την αναπαράσταση των διαδρομών (paths) εκπομπήςμετάδοσης Στους κόμβους των δένδρων αποθηκεύεται η ένταση (φωτός) σε εκείνη την επιφάνεια Το δέντρο χρησιμοποιείται για την παρακολούθηση όλων των (συν)εισφορών σε φως για ένα δεδομένο pixel
23 Δένδρο Ανίχνευσης ακτίνας - Παράδειγμα S3 S4 S1 Projection Reference Point S2
Images taken from Hearn & Baker, Computer Graphics with OpenGL (2004) 24 Δένδρο Ανίχνευσης ακτίνας - Παράδειγμα (2)
25 Δένδρο Ανίχνευσης ακτίνας (3) Με την ολοκλήρωση του δένδρου ανίχνευσης ακτινών για ένα pixel ακολουθεί η άθροιση των εισφορών έντασης. Ξεκινάμε από τους τερματικούς κόμβους (κάτω μέρος) του δέντρου. Η ένταση της επιφάνειας σε κάθε κόμβο είναι εξασθενημένη εξαρτώμενη από την απόσταση από την επιφάνεια του γονέα και προστίθεται στην ένταση της επιφάνειας του γονέα. Το άθροισμα των εξασθενημένων εντάσεων στο κόμβο-ρίζα ανατίθεται στο pixel.
26 Δένδρο Ανίχνευσης ακτίνας - Demo Στην παρακάτω διεύθυνση υπάρχει ένα Java demo που μας επιτρέπει να δούμε τα βήματα της διαδικασίας ανίχνευσης ακτίνας: http://www.siggraph.org/education/materials/hypergraph/raytrace/rt_java/raytrace.html
27 Σύνοψη Ray tracing is capable simulating a wide variety optical effects, such as reflection and refraction, scattering, and chromatic aberration.