Η ρεαλιστική παράσταση του φωτισμού στα γραφικά υπολογιστών επιτυγχάνεται μέσω της θεωρίας της οπτικής. Μπορούμε να πάρουμε ρεαλιστικές απεικονίσεις μίας σκηνής με την εφαρμογή εφέ φυσικού φωτισμού στις ορατές επιφάνειες. Ένα μοντέλο φωτισμού χρησιμοποιείται για τον υπολογισμό του χρώματος των αντικειμένων τα οποία φωτίζονται. Ένα μοντέλο φωτισμού πρέπει να λαμβάνει υπόψη του διάφορες παραμέτρους που μπορεί να επηρεάζουν αυτό το αποτέλεσμα όπως η κατεύθυνση του προσπίπτοντος φωτός, η κατεύθυνση παρατήρησης, ο προσανατολισμός της επιφάνειας του αντικειμένου, η ανακλαστικότητα του υλικού ακόμα και η υφή του. Παρακάτω παρουσιάζονται μερικοί από τους βασικούς τύπους φωτισμού, τα βασικά μοντέλα φωτισμού και μερικοί αλγόριθμοι φωτισμού που βασίζονται στο μοντέλο του Phong.

Τύποι Φωτισμού
--------------

Οποιοδήποτε αντικείμενο που εκπέμπει φωτεινή ενέργεια είναι μία πηγή φωτός, που με την βοήθεια της δημιουργούνται τα εφέ φωτισμού για τα άλλα αντικείμενα σε μία σκηνή. Μία πηγή φωτός μπορεί να μοντελοποιηθεί με πολλούς τρόπους. Η επιλογή του τύπου φωτός είναι υποκειμενική και επηρεάζεται από τον χρήστη και της προτιμήσεις του. Οι βασικοί τύποι φωτισμού είναι ίδιοι σε όλα τα πακέτα λογισμικού. Παρακάτω παρουσιάζονται μερικοί από τους πιο βασικούς τύπους φωτισμού:

### Σημειακός Φωτισμός

Το απλούστερο μοντέλο μίας πηγής φωτισμού είναι η σημειακή πηγή φωτός, ενός μόνο χρώματος που ορίζεται με τα τρία στοιχεία της μεθόδου RGB. Η πιο γνωστή πηγή φωτός είναι ο ήλιος. Ωστόσο ποτέ δεν προσομοιώνεται ως ένα φωτεινό σημείο. Αυτό συμβαίνει γιατί, το μοντέλο του σημειακού φωτισμού αποτελεί μια καλή προσέγγιση όταν η πηγή είναι πολύ μικρότερη από τα αντικείμενα της σκηνής. Ο σημειακός τύπος φωτισμού δεν ενδείκνυται για τον φωτισμό μίας σκηνής καθώς η διαδικασίες σκίασης απαιτούν μεγάλη μνήμη και υπολογιστική ισχύ. Για τον λόγο αυτό, συνίσταται η χρήση σημειακών προβολέων.

### Σημειακοί Προβολείς

Στους σημειακούς προβολείς, οι ακτίνες εξαπλώνονται με κωνικό τρόπο, το οποίο καθιστά τους σημειακούς προβολείς κατάλληλους για την προσομοίωση του διάχυτου φωτός. Το βασικό πλεονέκτημα αυτού του τύπου φωτισμού, σε αντίθεση με τις πηγές σημειακού φωτισμού, είναι η δυνατότητα φωτισμού συγκεκριμένων αντικειμένων σε μία σκηνή.

### Άμεσος ή Παράλληλος Φωτισμός

Μια μεγάλη πηγή φωτός, όπως ο ήλιος, η οποία βρίσκεται σε πολύ μεγάλη απόσταση από την σκηνή μπορεί να προσομοιωθεί ως μία σημειακή πηγή φωτός. Η διαφορά σε σχέση με μία πηγή η οποία βρίσκεται πιο κοντά στην σκηνή είναι ότι τα διανύσματα διεύθυνσης εκπομπής είναι παράλληλα μεταξύ τους, με αποτέλεσμα οι σκιές των αντικειμένων της σκηνής να έχουν την ίδια κατεύθυνση.

Βασικά Μοντέλα Φωτισμού
-----------------------

Τα μοντέλα φωτισμού δημιουργούν το αποτέλεσμα της αλληλεπίδρασης ανάμεσα στην προσπίπτουσα εκπεμπόμενη ενέργεια και στη σύνθεση του υλικού ενός αντικειμένου. Για την απλοποίηση των υπολογισμών φωτισμού των επιφανειών χρησιμοποιούνται προσεγγιστικές μέθοδοι. Εμπειρικά μοντέλα παράγουνε αρκετά καλά αποτελέσματα χωρίς ιδιαίτερα μεγάλες υπολογιστικές απαιτήσεις. Από την άλλη, μέθοδοι που προσομοιώνουν μοντέλα φυσικής οπτικής παράγουν πολύ φυσικότερα αποτελέσματα αλλά με κόστος πολύ μεγάλη πολυπλοκότητα. Μερικά από τα σημαντικότερα μοντέλα φωτισμού παρουσιάζονται παρακάτω:

### Φως Περιβάλλοντος

Σε αυτό το μοντέλο φωτισμού μπορούμε να συμπεριλάβουμε τον φωτισμό του φόντου, έτσι ορίζεται ένας ομοιόμορφος φωτισμός περιβάλλοντος ίδιος για όλα τα αντικείμενα. Υποθέτοντας ότι το φως του φόντου είναι μονοχρωματικό ορίζεται μία παράμετρος έντασης Ια, η οποία είναι η ένταση του διάχυτου φωτισμού που επικρατεί στον χώρο. Οι αντανακλάσεις των αντικειμένων είναι μία μορφή διάχυτης ανάκλασης. Το προσλαμβανόμενο διάχυτο φως δεν εξαρτάται από τον προσανατολισμό της επιφάνειας των αντικειμένων ούτε από την διεύθυνση θέασης. Ωστόσο κάθε αντικείμενο χαρακτηρίζεται από μία παράμετρο Κα που αναφέρεται στα φυσικά χαρακτηριστικά του. Η ποσότητα του προσπίπτοντος φωτός που ανακλάται εξαρτάται από τα χαρακτηριστικά της επιφάνειας, δηλαδή από την παράμετρο Κα.

### Διάχυτη Αντανάκλαση(Lambertian reflection)

Σε αυτό το μοντέλο φωτισμού οι αντανακλάσεις που προέρχονται από την επιφάνεια ενός αντικειμένου μπορούν να μοντελοποιηθούν υποθέτοντας ότι η ενέργεια πρόσπτωσης διαχέεται προς όλες τις κατευθύνσεις με την ίδια ένταση, ανεξάρτητα από την γωνία θέασης. Το ίδιο ακριβώς συμβαίνει στους ανακλαστήρες Lambert όπου η ενέργεια που αντανακλάται από την επιφάνεια υπολογίζεται από τον νόμο συνημιτόνου του Lambert. Ειδικότερα σύμφωνα με αυτό το μοντέλο μία στοιχειώδης περιοχή dA, ανακλά προς μία συγκεκριμένη κατεύθυνση φως έντασης:

Ορίζεται μια παράμετρος Kd η οποία καθορίζει το ποσό του φωτός που διασκορπίζεται ως διάχυτη αντανάκλαση. Η παράμετρος αυτή ονομάζεται συντελεστής διάχυτης αντανάκλασης (diffuse – reflection coefficient). Η παράμετρος Κd παίρνει τιμές ανάμεσα στο μηδέν και το ένα. Μία ιδιαίτερα κατοπτρική επιφάνεια έχει τιμή κοντά στο ένα, ενώ μία επιφάνεια που απορροφά το περισσότερο από το προσπίπτον φως έχει τιμή κοντά στο μηδέν. Επομένως εάν Ια είναι η ένταση του φωτός του περιβάλλοντος η διάχυτη αντανάκλαση δίνεται από τον τύπο:

{\displaystyle I\_{\text{αντανάκλασης}}=K\_{d}I\_{\alpha }}

Όταν μία επιφάνεια φωτίζεται από μία φωτεινή πηγή με ένταση Ιl η ποσότητα του προσπίπτοντος φωτός εξαρτάται από τον προσανατολισμό της επιφάνειας σε σχέση με την διεύθυνση της πηγής φωτός. 

Η ποσότητα του προσπίπτοντος φωτός σε μία επιφάνεια δίνεται από τον τύπο:

{\displaystyle I\_{\text{1,επιφάνειας}}=I\_{1}\cos \theta }

  

όπου θ η γωνία μεταξύ του μοναδιαίου διανύσματος Ν που είναι κάθετο στην επιφάνεια και του μοναδιαίου διανύσματος L που έχει κατεύθυνση παράλληλη προς τις προσπίπτουσες φωτεινές ακτίνες. 

Από τους δύο προηγούμενους τύπους προκύπτει ότι:

{\displaystyle I\_{\text{1,αντανάκλασης}}=K\_{d}I\_{\text{1,επιφάνειας}}=K\_{d}I\_{1}\cos \theta =K\_{d}I\_{1}({\widehat {N}}{\widehat {L}})}

### Μοντέλο Ανάκλασης του Phong

Η κατοπτρική αντανάκλαση πάνω σε μία γυαλιστερή επιφάνεια είναι αποτέλεσμα συνολικής, ή σχεδόν συνολικής αντανάκλαση του προσπίπτοντος φωτός. Η γωνία κατοπτρικής αντανάκλασης ισούται με την γωνία του προσπίπτοντος φωτός σε σχέση με το κάθετο διάνυσμα Ν στην επιφάνεια του αντικειμένου. Στο παρακάτω σχήμα το διάνυσμα L έχει κατεύθυνση προς την πηγή φωτός και το διάνυσμα R την διεύθυνση της τέλειας κατοπτρικής αντανάκλασης. Το διάνυσμα V έχει διεύθυνση προς τον παρατηρητή και η γωνία φ που σχηματίζεται ανάμεσα στο R και στο V ονομάζεται γωνία θέασης. 

Στην περίπτωση ενός τέλειου ανακλαστήρα το ανακλώμενο φως θα ήταν ορατό μόνο αν η φ ισούταν με το μηδέν καθώς θα υπήρχε αντανάκλαση φωτός μόνο προς την διεύθυνση της κατοπτρικής αντανάκλασης. Συνήθως όμως τα αντικείμενα που έχουμε να κάνουμε παρουσιάζουν κατοπτρικές αντανάκλασης ορατές για διάφορες τιμές φ. Όσο πιο θαμπή είναι μία επιφάνεια τόσο μεγαλύτερη μπορεί να γίνει η γωνία φ. Σύμφωνα με το μοντέλο κατοπτρικής αντανάκλασης Phong, η ένταση της αντανάκλασης είναι ανάλογη του 
{\displaystyle \cos ^{n\_{s}}\phi }. Η γωνία φ μπορεί να πάρει τιμές από 0ο έως 90ο. Ο όρος ns ονομάζεται εκθέτης κατοπτρικής αντανάκλασης και ποικίλει ανάλογα με τον τύπο της επιφάνειας. Μία γυαλιστερή επιφάνεια παίρνει μεγάλες τιμές (π.χ. 100) ενώ για μία επιφάνεια αρκετά θαμπή η τιμή του ns πλησιάζει το 1. Η ένταση της κατοπτρικής αντανάκλασης εξαρτάται από διάφορους παράγοντες, ένας από αυτούς είναι και το χρώμα του προσπίπτοντος φωτός. Η μονοχρωματική κατοπτρική ένταση μπορεί να μοντελοποιηθεί χρησιμοποιώντας ένα συντελεστή κατοπτρικής αντανάκλασης W(θ). To W(θ) αυξάνει καθώς αυξάνεται η γωνία πρόσπτωσης. Χρησιμοποιώντας το νόμους αντανάκλασης του Fresnel και την συνάρτηση φασματικής αντανάκλασης W(θ) του μοντέλο του Phong γράφεται ως εξής:

{\displaystyle I\_{\text{1, spec}}=W(\theta )I\_{1}\cos ^{n\_{s}}\phi }

Αλγόριθμοι φωτισμού με βάση το μοντέλο του Phong
------------------------------------------------

Στην ενότητα αυτή θα εξεταστούν αλγόριθμοι φωτισμού που βασίζονται στον μοντέλο του Phong. Το μοντέλο φωτισμού του Phong είναι ένα εμπειρικό μοντέλο φωτισμού, το οποίο δεν λαμβάνει υπόψη την αλληλεπίδραση του φωτός μεταξύ αντικειμένων και χρησιμοποιεί όρους που δεν συνδέονται άμεσα με τους φυσικούς νόμους. 

Γενικά οι αλγόριθμοι φωτισμού χωρίζονται στις παρακάτω κατηγορείς:

* Προσθετικούς αλγορίθμους
* Αλγορίθμους παρακολούθησης ακτίνας
* Αλγορίθμους τύπου radiosity

Η πρώτη ομάδα αλγορίθμων χρησιμοποιεί εμπειρικά μοντέλα φωτισμού. Οι αλγόριθμοι αυτοί έχουν την εξής βασική λειτουργία. Ξεκινούν με ένα σταθερό φωτισμό, στην συνέχεια προχωρούν με μία φθίνουσα φωτεινότητα ανάλογα με την απόσταση από την φωτεινή πηγή και τέλος παρατηρείται μια παρεμβολή στην ένταση της φωτεινότητας εντός της πολυγωνικής επιφάνειας.

Η δεύτερη ομάδα χρησιμοποιεί αναλυτικά μοντέλα φωτισμού και για την καλυτέρευση των εμπειρικών μοντέλων φωτισμού ενσωματώνει αποτελέσματα της οπτικής και της φυσικής. Οι αλγόριθμοι λαμβάνουν υπόψη τους τις δομές των επιφανειών και τους αντικατοπτρισμούς. Με την χρήση των αλγορίθμων αυτών διορθώνεται η γεωμετρία της σκηνής και αυτό έχει ως αποτέλεσμα τον καλύτερο υπολογισμό των ανακλάσεων , διαθλάσεων και σκιών.

Η τρίτη ομάδα αλγορίθμων χρησιμοποιεί ακριβή μοντέλα για τον υπολογισμό των ιδιοτήτων λαμβάνοντας υπόψη τις ιδιότητες των φωτεινών πηγών και υλικών και χρησιμοποιούν μεθόδους που εξαρτώνται από το μήκος κύματος λ.

Όπως αναφέρθηκε προηγουμένως θα αναλυθούν μερικοί από τους βασικότερους προσθετικούς αλγορίθμους οι οποίοι βασίζονται στο μοντέλο του Phong.

### Αλγόριθμος σταθερού φωτισμού

Ο απλούστερος αλγόριθμος φωτισμού για πολυγωνικά αντικείμενα χρησιμοποιεί σταθερή τιμή φωτεινότητας για κάθε πολύγωνο. Εφαρμόζει μία σταθερή τιμή φωτισμού και διάχυτη ανάκλαση και δεν χρησιμοποιεί κατοπτρική ανάκλαση ούτε ελάττωση φωτισμού με βάση την απόσταση από την φωτεινή πηγή. Αν τα σημεία της παρατήρησης και της φωτεινής πηγής βρίσκονται σε άπειρη απόσταση δεν δημιουργούνται σκιές και ο όρος είναι σταθερός για κάθε επιφάνεια του πολυγώνου. Αν τα σημειά φωτισμού και παρατήρησης βρίσκονται στον θετικό άξονα Ζ τότε η εξίσωση φωτισμού είναι:

{\displaystyle I=I\_{e}+I\_{a}K\_{a}+I\_{\iota }\ K\_{d}n\_{z}}

Η τιμή της έντασης Ι υπολογίζεται μία φορά και χρησιμοποιείται για κάθε pixel του πολυγώνου. 

Το βασικό μειονέκτημα του αλγορίθμου αυτού είναι πως το ανθρώπινο μάτι είναι ευαίσθητο σε ασυνέχειες φωτισμού με αποτέλεσμα να γίνονται εμφανή τα πολυγωνικά όρια. Αυτό έχει ως αποτέλεσμα να τονίζεται η πολυγωνική δομή του αντικειμένου. Μια απλή λύση για το πρόβλημα αυτό είναι η χρήση κάποιου είδους παρεμβολής του φωτισμού.

### Αλγόριθμος του Gouraud

Ο αλγόριθμος του Gouraud είναι ένας απλός αλγόριθμος παρεμβολής φωτισμού. Ο αλγόριθμος αυτός διορθώνει το μειονέκτημα του αλγορίθμου σταθερού φωτισμού καθώς υπολογίζει τιμές έντασης για εσωτερικά pixel πολυγώνων παρεμβάλλοντας τις τιμές έντασης των κορυφών. Οι τιμές έντασης στις κορυφές υπολογίζονται με βάση κάποιο μοντέλο φωτισμού (π.χ. Phong). Αφού υπολογιστούν οι τιμές έντασης των κορυφών, παρεμβάλλονται γραμμικά κατά μήκος των ακμών του πολυγώνου και μεταξύ των ακμών. Τα αποτελέσματα που παίρνουμε από την εφαρμογή του αλγορίθμου του Gouraud είναι πολύ καλύτερα από τον αλγόριθμο σταθερού φωτισμού.

### Αλγόριθμος του Phong

Αν και ο αλγόριθμος Gouraud επιλύει σε μεγάλο βαθμό το πρόβλημα ασυνέχειας, υπάρχουν ακόμα αρκετά θέματα προς επίλυση. Ένα από τα πιο σημαντικά προβλήματα είναι πως η γραμμική παρεμβολή διατηρεί ασυνέχειες δευτέρου βαθμού, οι οποίες είναι ορατές. Ο αλγόριθμος του Phong λύνει το παραπάνω πρόβλημα εφαρμόζοντας το μοντέλου του Phong σε κάθε pixel. Με αυτόν τον αλγόριθμο η φωτεινότητα κάθε pixel υπολογίζεται ξεχωριστά. Τα απαιτούμενα κανονικά διανύσματα υπολογίζονται με παρεμβολή των κανονικών διανυσμάτων των κορυφών. Το αποτέλεσμα του Phong είναι σαφώς καλύτερο από το αποτέλεσμα του Gouraud. Το μοναδικό πρόβλημα είναι ότι απαιτείται μεγάλο υπολογιστικό κόστος καθώς έχουμε υπολογισμό της εξίσωσης φωτισμού για κάθε pixel. Στις μέρες μας αυτό το πρόβλημα παύει να είναι σημαντικό λόγω της μεγάλης αύξησης της επεξεργαστικής ισχύος των επεξεργαστών γραφικών.

Πηγές
-----

Βιβλία:  

Γραφικά και Οπτικοποίηση. Αρχές και Αλγόριθμοι. Θ.θεοχάρης, Γ.Παπαϊωάννου, Ν.Πλατής, Ν.Μ.Πατρικαλάκης   

Γραφικά Υπολογιστών με OpenGL. Hearn Baker