Εισαγωγή Γιατί γραφικά υπολογιστών; Προσέγγιση «από πάνω προς τα κάτω»(topdown). Βαθμίδα διασύνδεσης προγραμματιστή εφαρμογών (API) Γιατί OpenGL; Portable, παιδαγωγική, καλά τεκμηριωμένη, open standard, ευρέως διαδεδομένη Άλλα APIs: PHIGS (ANSI), GKS, Direct3D (DirectX), VRML, JAVA-3D
Ορισμός Γραφικά υπολογιστών: παραγωγή (σύνθεση) εικόνων & σκηνών με τη χρήση υπολογιστή Μηχανική όραση-ανάλυση εικόνας Επεξεργασία εικόνας
Σύντομο Ιστορικό 1950 s: πρώτα συστήματα (GM, Boeing, IBM) 1960 s: Ivan Sutherland, MIT, Sketchpad. 1960 s: πρώτα animations, flight simulator GE. 1970 s: ILM (Industrial Light& Magic) 1980 s: Silicon Graphics (1982), Geometry Engine
Σύντομο Ιστορικό 1980 s: Pixar, Alias, Wavefront 1990 s: Playstation, Nintendo, Toy Story (1995) 2000 s: X-Box (125m triangles per sec), alldigital film productions ACM SIGGRAPH, IEEE
Εφαρμογές Γραφικών Επίδειξη πληροφορίας Αρχιτεκτονικά σχέδια Χάρτες-GIS Οπτικοποίηση επιστημονικών δεδομένων (scientific visualization) Ιατρικές 3-D εικόνες
Εφαρμογές Γραφικών Σχεδίαση (Design) CAD/CAM Αρχιτεκτονική Ολοκληρωμένα κυκλώματα VLSI Μηχανικά μέρη
Εφαρμογές Γραφικών Εξομοίωση-Animation Εξομοιωτές πτήσης Παραγωγή ταινιών/ συνθετικών εικόνων Παιχνίδια Εικονική πραγματικότητα (virtual reality) Βελτιωμένη πραγματικότητα (augmented reality)
Εφαρμογές Γραφικών Βαθμίδες διασύνδεσης χρήστη (user interface) X Windows, MS Windows, Mac OS Ευκολότερες από αυτές που βασίζονται σε εντολές.
Σύστημα γραφικών Επεξεργαστής Μνήμη Συσκευές εισόδου Συσκευές εξόδου Frame buffer
Frame Buffer & Επεξεργαστής Frame buffer Raster-based συστήματα Σκηνή ως πίνακας εικονοστοιχείων VRAM, DRAM Βάθος frame buffer Ανάλυση Επεξεργαστής Γενικού σκοπού Επεξεργαστής γραφικών Γεωμ. Μετασχηματισμοί, Scan Conversion, κλπ
Συσκευές Εξόδου Οθόνες καθοδικού σωλήνα (CRT) Αρχές λειτουργίας Ρυθμός ανανέωσης Interlaced & non-interlaced Έγχρωμες CRT Οθόνες LCD, plasma Εκτυπωτές
Διατάξεις εισόδου Πληκτρολόγιο Συσκευές σημειακού εντοπισμού (pointing devices) Ποντίκι Light pen Data tablet Joystick Haptic devices
Φυσικές & συνθετικές εικόνες Γραφικά: συνθετικές εικόνες Κατανόηση διαδικασίας σχηματισμού «φυσικής» εικόνας σε ένα οπτικό σύστημα Χρήση του μοντέλου για τη δημιουργία συνθετικών εικόνων
Αντικείμενο & παρατηρητής Αντικείμενο Υπάρχει στο χώρο ανεξάρτητα του παρατηρητή Παράσταση αντικειμένου με θέση & διαστάσεις γεωμετρικών αρχετύπων (geometric primitives) Προσδιορισμός αντικειμένων με σημεία (κορυφές) 2 σημεία: ευθεία ή σφαίρα Λίστα σημείων: πολύγωνο ή πολυγωνική γραμμή
Αντικείμενο & παρατηρητής Παρατηρητής Μάτι, φωτογραφική μηχανή Σχηματίζει την εικόνα του αντικειμένου Εικόνα αντικειμένου του 3D χώρου σε 2D (φίλμ, αμφιβληστροειδής) Θέση & ιδιότητες παρατηρητή + Θέση & ιδιότητες αντικειμένου: Σχηματισμός εικόνας
Αντικείμενο & παρατηρητής
Φως Χωρίς φως δεν υπάρχει εικόνα Φως: ηλεκτρομαγνητική ακτινοβολία Χρώμα φωτεινής πηγής: εκπεμπόμενη ενέργεια στα διάφορα μήκη κύματος Laser: μοναδικό μήκος κύματος Λαμπτήρας πυράκτωσης
Γεωμετρική οπτική Αγνοούμε την κυματική φύση του φωτός Το φως ταξιδεύει σε ευθεία Χαρακτηριστικά φωτεινών πηγών Ένταση φωτός σε κάθε συχνότητα Κατεύθυνση φωτός Είδη πηγών: Ιδανική σημειακή πηγή Κατευθυντικές πηγές Προσέγγιση σύνθετων πηγών με σημειακές
Ιχνογράφηση ακτινών (ray tracing) Αλληλεπίδραση φωτός επιφανειών Μορφές επιφανειών Ανακλαστικές Διαχυτικές (diffuse) Διαθλαστικές (refractive) Σχηματισμόςσυνθετικήςεικόναςμε παρακολούθηση της πορείας των ακτινών και της αλληλεπίδρασης με τα αντικείμενα. Μεγάλη υπολογιστική πολυπλοκότητα
Ιχνογράφηση ακτινών (ray tracing)
Ανθρώπινο οπτικό σύστημα Κερατοειδής Φακός Ίριδα Αμφιβληστροειδής Κωνία - όραση ημέρας Ραβδία - όραση νύχτας Οπτικό νεύρο
Ανθρώπινο οπτικό σύστημα Φωτεινή ένταση Φωτεινότητα (intensity vs brightness) Διαφορετική ευαισθησία του ματιού στις διάφορες συχνότητες/χρώματα
Ανθρώπινο οπτικό σύστημα 3 είδη κωνίων: χρώμα με σύνθεση βασικών χρωμάτων Οπτικό νεύρο, οπτικός φλοιός, υψηλού επιπέδου όραση.
Φωτογραφική μηχανή οπής Προβολή σημείου: y p =-y/(z/d) Γωνία (πεδίο) παρατήρησης Βάθος πεδίου (άπειρο) Μειονεκτήματα Περιορισμένο φως Σταθερή γωνία παρατήρησης Χρήση φακών
Φωτογραφική μηχανή οπής
Το μοντέλο συνθετικής κάμερας Σχηματισμός εικόνων με τη χρήση εικονικής (συνθετικής) κάμερας Προδιαγραφές αντικειμένου (π.χ. θέση) ανεξάρτητες από προδιαγραφές κάμερας Διαφορετικές συναρτήσεις γραφικών
Το μοντέλο συνθετικής κάμερας Υπολογισμός της εικόνας (ειδώλου) με χρήση τριγωνομετρίας Κέντρο προβολής Επίπεδο προβολής Ευθεία προβολής Περιορισμένο μέγεθος της εικόνας Παράθυρο ψαλιδίσματος (clipping window)
Το μοντέλο συνθετικής κάμερας
Βαθμίδα διασύνδεσης προγραμματιστή εφαρμογών (API) Σύνολο συναρτήσεων που διασυνδέει την εφαρμογή με το σύστημα γραφικών Χρήση του μοντέλου συνθετικής κάμερας Η εφαρμογή βλέπει μόνο το API και όχι την υλοποίηση σε υλικό/λογισμικό (device/os independent)
Βαθμίδα διασύνδεσης προγραμματιστή εφαρμογών (API) Συναρτήσεις για: Αντικείμενα glbegin(gl_polygon); glvertex3f(0,0,0); glvertex3f(0,1,0); glvertex3f(0,0,1); glend();
Βαθμίδα διασύνδεσης προγραμματιστή εφαρμογών (API) Συναρτήσεις για: Συνθετική κάμερα Με τη χρήση μετασχηματισμών αλλαγής συστήματος συντεταγμένων glulookat(), glperspective() φωτεινές πηγές, ιδιότητες υλικών
Το μοντέλο σχεδιαστή-γραφίδας (pen-plotter) Εντολές moveto, lineto Επαρκές για εφαρμογές όπως η στοιχειοθεσία (page layout): το πρότυπο postscript Όχι επαρκές για τρισδιάστατα γραφικά: υπολογισμός των προβολών στο πρόγραμμα του χρήστη OpenGL: 3D γραφικά
Διαχωρισμόςμοντελοποίησηςσκηνήςκαι απεικόνισης Τοποθέτηση αντικειμένων, φωτεινών πηγών, κάμερας στο χώρο, απόδοση ιδιοτήτων υλικών (Modeler) Απεικόνιση της σκηνής (rendered)
Αρχιτεκτονικές Γραφικών Με επεξεργαστή οθόνης (γραφικών) Υπεύθυνος για την ανανέωση της οθόνης Σετ εντολών για επίδειξη/μετασχηματισμούς αρχετύπων Κατάλογος επίδειξης (display list)
Αρχιτεκτονική αλυσίδας (Pipeline) Αύξηση του ρυθμού επεξεργασίας των δεδομένων (throughput) Η ίδια επεξεργασία σε πολλά δεδομένα (π.χ. κορυφές)
Τυπική αλυσίδα επεξεργασίας γεωμετρίας αντικειμένων Μετασχηματιστής Μετασχηματισμός αλλαγής συστήματος συντεταγμένων Συντεταγμένες «κόσμου» αντικειμένων σε συντεταγμένες συνθετικής κάμερας Ισοδύναμο με πολλαπλασιασμό με πίνακα
Τυπική αλυσίδα επεξεργασίας γεωμετρίας αντικειμένων Ψαλιδιστής (clipper) Υλοποίηση του παραθύρου ψαλιδίσματος Προβολέας (projector) 3D σε 2D (αντικείμενα που έχουν μείνει) Ψηφιοποιητης (rasterizer) Float σε integer (θέσεις pixel) Επιπλέον επεξεργασίες σε επίπεδο pixels
Χρήσιμα links και βιβλία OpenGL Website: http://www.opengl.org http://www.xmission.com/~nate/tutors.html http://nehe.gamedev.net/ OpenGL Programming Guide (red book) OpenGL Reference Manual (blue book)