Γραφικά Υπολογιστών: OpenGL



Σχετικά έγγραφα
Εισαγωγή στην OpenGL

OpenGL. Εισαγωγή. Εξάμηνο: 2014Β. Διδάσκουσα: Κανελλοπούλου Χριστίνα_ΠΕ19 Πληροφορικής Ηλεκτρονική Τάξη:

Εισαγωγή στην OpenGL

Προγραμματισμός γραφικών

OpenGL. Εισαγωγή στην OpenGL Βασικά Γεωμετρικά Σχήματα Παράλληλη (ορθογραφική) προβολή. Μάθημα: Γραφικά Υπολογιστών και Εικονική Πραγματικότητα

Εισαγωγή στην OpenGL: μέρος 1ο

Εισαγωγή. Γιατί γραφικά υπολογιστών; Προσέγγιση «από πάνω προς τα κάτω» (top-down). Βαθµίδα διασύνδεσης προγραµµατιστή εφαρµογών (API)

Τεχνολογία Ψυχαγωγικού Λογισμικού και Εικονικοί Κόσμοι Ενότητα 4η - 3Δ γραφικά

Η Βιβλιοθήκη Γραφικών OpenGl Με Χρήση C/C++, JAVA και PYTHON

Γραφικά Υπολογιστών: Μέθοδοι Ανίχνευσης Επιφανειών (Surface Detection Methods)

Γραφικά Υπολογιστών: Αναπαράσταση Αντικείμενων 3D

Γραφικά Υπολογιστών. Τμήμα Μηχανικών Πληροφορικής ΤΕΙ Ανατολικής Μακεδονίας και Θράκης. Γραφικά Υπολογιστών ΣΤ Εξάμηνο. Δρ Κωνσταντίνος Δεμερτζής

Η διαδικασία Παραγωγής Συνθετικής Εικόνας (Rendering)

Εισαγωγή. Γιατί γραφικά υπολογιστών; Προσέγγιση «από πάνω προς τα κάτω»(topdown). Βαθμίδα διασύνδεσης προγραμματιστή εφαρμογών (API)

Βασικές αρχές σχεδίασης (Α)

Γραφικά Υπολογιστών: Αναπαράσταση Αντικείμενων 3D

Κεφάλαιο 1 Βασικές αρχές σχεδίασης

Γραφικά Υπολογιστών: Σχεδίαση γραμμών (Bresenham), Σχεδίασης Κύκλων, Γέμισμα Πολυγώνων

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1

Γραφικά Υπολογιστών: Εμφάνιση σε 2D

Άσκηση 6 η Ανύψωση Σχημάτων. Στόχος της άσκησης

> μεγαλύτερο <= μικρότερο ή ίσο < μικρότερο == ισότητα >= μεγαλύτερο ή ίσο!= διαφορετικό

Γραφικά με Η/Υ / Εισαγωγή

Γραφικά Υπολογιστών: Εισαγωγή

Άσκηση 11 Υλικά. Στόχος της άσκησης

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος

Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1

Γραφικά Υπολογιστών: Ανίχνευση Ακτίνας (φωτός) (ray tracing)

Κεφάλαιο 3ο Μετασχηµατισµοί συντεταγµένων

Εικόνα. Τεχνολογία Πολυμέσων και Πολυμεσικές Επικοινωνίες 05-1

Δημιουργώντας εφέ φωτισμού στο περιβάλλον 3Ds Max χρησιμοποιώντας βασικά εργαλεία

Γραφικά με υπολογιστές. Διδάσκων: Φοίβος Μυλωνάς. Διάλεξη #07

ΦΩΤΟΡΕΑΛΙΣΜΟΣ & ΚΙΝΗΣΗ (ΘΕΩΡΙΑ)

Το λειτουργικό σύστημα. Προγραμματισμός II 1

ΘΕΜΑΤΑ ΥΠΟΛΟΓΙΣΤΙΚΗΣ ΟΡΑΣΗΣ ΚΑΙ ΓΡΑΦΙΚΩΝ ΕΙΣΑΓΩΓΗ RASTERING INTRODUCTION TO OPENGL. Ε. Θεοδωρίδης, Α. Τσακαλίδης

GRAPHICS AND CODE DESIGN

Οπτική Επικοινωνία 4 - Α.Ε Προτεινόμενες ρυθμίσεις V-Ray 3.4 για Rhino. Υλικά

ΦΩΤΟΡΕΑΛΙΣΜΟΣ & ΚΙΝΗΣΗ (ΘΕΩΡΙΑ)

Προγραμματισμός Ι (ΗΥ120)

ΜΑΘΗΜΑ 3 ΛΟΓΙΣΜΙΚΟ (SOFTWARE)

Γραφικά Υπολογιστών: Βασικά Μαθηματικά

ιπλωµατική Εργασία Ανάπτυξη Γραφικού Περιβάλλοντος για την απεικόνιση και διαχείριση τρισδιάστατων πλεγµάτων και επιφανειών

Άσκηση 11 η Υλικά και Χάρτες. Στόχος της άσκησης

ΟΔΗΓΟΣ ΔΗΜΙΟΥΡΓΙΑΣ ΤΡΙΣΔΙΑΣΤΑΤΩΝ ΓΡΑΦΙΚΩΝ ΜΕ ΧΡΗΣΗ ΤΗΣ ΕΦΑΡΜΟΓΗΣ POVRAY MODELER ΣΤΟ LINUX

Πρακτική εφαρμογή στην ειδικότητα: Λογισμικό για τη δημιουργία εργασίας εξαμήνου

ΦΩΤΟΡΕΑΛΙΣΜΟΣ & ΚΙΝΗΣΗ

Απόδοση 3D σκηνών - Κινούµενα γραφικά

Κεφάλαιο 5 Απόδοση τρισδιάστατων σκηνών Κινούµενα γραφικά

Γραφικά Υπολογιστών: Φωτισμός

Ψηφιακή τέχνη DIGITAL ART

Περιεχόμενα ΓΕΩΠΥΛΗ ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΚΕΝΤΡΙΚΟ SITE. ΧΑΡΤΗΣ... 2 Είσοδος στην εφαρμογή «Χάρτης»... 2 Λειτουργίες εφαρμογής «Χάρτης»...

ΣΧΕΔΙΑΣΗ ΜΗΧΑΝΟΛΟΓΙΚΩΝ ΚΑΤΑΣΚΕΥΩΝ ΜΕ Η/Υ (Computer Aided Design)

Μοντελοποίηση τρισδιάστατου κόσμου σε πραγματικό κόσμο: το παράδειγμα του Kinect. ιδάσκων: Φ. Αζαριάδης Φοιτήτρια: Άρτεμις-Αγγελική Σφύρη

Direct XX-γενικά στοιχεία αρχιτεκτονικήςαρχιτεκτονικής-τελευταίες εκδόσεις

Συσκευές εισόδου. Φυσικές συσκευές εισόδου Λογικές συσκευές εισόδου

1 ο Εργαστήριο Συντεταγμένες, Χρώματα, Σχήματα

Τμήμα Μηχανικών Σχεδίασης Προϊόντων & Συστημάτων ΓΡΑΦΙΚΑ (6151) ΕΝΔΕΙΚΤΙΚΕΣ ΠΡΟΑΙΡΕΤΙΚΕΣ ΑΣΚΗΣΕΙΣ

Ειδικά Θέματα Πολυμέσων

Οδηγίες σχεδίασης στο περιβάλλον Blender

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Δημιουργώντας 3D μοντέλα - Εργαλείο Spin

Προγραμματισμός Ι (ΗΥ120)

Απεικόνιση καμπυλών και επιφανειών

Απεικόνιση Υφής. Μέρος B Δημιουργία Συντεταγμένων Υφής

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Εργασία στα Γραφικά Υπολογιστών Ακαδημαϊκό Έτος

7 ο Εργαστήριο Θόρυβος 2Δ, Μετακίνηση, Περιστροφή

Texturing, Animation, Lighting, Rendering

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Ι (ΗΥ120)

Τεχνολογία Πολυμέσων. Ενότητα # 5: Εικόνα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Εισαγωγή στο 3DS Max 2009

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

ISO 9001/9002. Πυρήνες >= 4. >= σύμφωνα με τις μετρήσεις απόδοσης του εργαλείου passmark >= 0 >= 250 GB SATA III. Ταχύτητα

Κεφάλαιο 2 ο Είσοδος/Έξοδος ιαχείριση γεγονότων - Αποκοπή στις δύο διαστάσεις

Άσκηση 13 η Ειδικά Εφέ. Στόχος της άσκησης

ΤΕΙ Ιονίων Νήσων Εργαστηριακές Ασκήσεις στα Γεωγραφικά Συστήματα Πληροφοριών

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

ΔΗΜΟΚΡΙΤΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΡΑΚΗΣ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Εικόνες. ΠΟΛΥΜΕΣΑ Γεώργιος Π. Παυλίδης

Δημιουργώντας γραφικά στο περιβάλλον 3Ds Max χρησιμοποιώντας βασικά εργαλεία

Καλλιτεχνική δηµιουργία στους εικονικούς κόσµους στο διαδίκτυο.

Βασικές αρχές σχεδίασης (β)

ANDROID Προγραμματισμός Εφαρμογών

Εισαγωγή στην OpenGL: μέρος 2ο

Γραφικά Υπολογιστών: Αλγόριθμοι Σχεδίασης Γραμμών

Γραφικά & Οπτικοποίηση. Κεφάλαιο 1. Εισαγωγή. Γραφικά & Οπτικοπίηση: Αρχές & Αλγόριθμοι Κεφάλαιο 1

Δθμιουργία, μελζτθ και βελτιςτοποίθςθ φωτορεαλιςτικϊν απεικονίςεων πραγματικοφ χρόνου με χριςθ προγραμματιηόμενων επεξεργαςτϊν γραφικϊν

Σύντομη παρουσίαση των Γραφικών με Η/Υ

5 ο Εργαστήριο Δομές Επανάληψης (συνέχεια)

Περιεχόµενα. ΕΠΛ 422: Συστήµατα Πολυµέσων. Γραφικά Υπολογιστών. Βιβλιογραφία

6 ο Εργαστήριο Σχεδιάζοντας σχήματα από σημεία κορυφών, Θόρυβος-Τυχαίοι Αριθμοί (συνέχεια)

Δημιουργικό Κινούμενο Σχέδιο Εξάμηνο Σπουδών 4 ο. Υπεύθυνος: Καρβούνης Ευάγγελος

2 ο Εργαστήριο Αλληλεπίδραση και Animation

ΕΡΓΑΛΕΙΑ ΚΑΤΑΣΚΕΥΗΣ ΠΑΙΧΝΙΔΙΩΝ: Εργασία με το λογισμικό Valve Editor

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ. Python & NLTK: Εισαγωγή

Προγραµµατιστικές Τεχνικές

Προγραμματισμός Ι (ΗΥ120)

Κεφάλαιο 3 Λειτουργικά Συστήματα Β ΕΠΑΛ

Γραφικά Υπολογιστών: Spline Αναπαραστάσεις

Computer Graphics. (Introduced by M. Ioannides in 2013 Fall Semester)

Transcript:

1 ΤΕΙ Θεσσαλονίκης Τμήμα Πληροφορικής Γραφικά Υπολογιστών: OpenGL Πασχάλης Ράπτης http://aetos.it.teithe.gr/~praptis praptis@it.teithe.gr

2 Περιεχόμενα Τι είναι η OpenGL; Μοντέλα αντικειμένων (object modeling) Φωτισμός και σκίαση (lighting και shading) Θέαση του Η/Υ (computer viewing) Απόδοση (rendering) Χαρτογράφηση υφής (texture mapping)

3 Τι είναι η OpenGL; Η OpenGL είναι μια βιβλιοθήκη 2D/3D γραφικών ανεξάρτητη συσκευής (desktop, laptop, mobile phone) και ανεξάρτητη Λειτουργικού Συστήματος (Windows, Linux/Unix, Mac OS X) Η OpenGL είναι μια διεπαφή API (application programming interface) -- Συλλογή από σταθερές, τύπους δεδομένων και συναρτήσεις

4 OpenGL Προγραμματιστής βλέπει το σύστημα γραφικών μέσω των βιβλιοθήκων -- OpenGL -- Direct X (Microst) -- Java 3D

5 OpenGL Η Silicon Graphics (SGI), έφερε την επανάσταση στα PCγραφικά με την ανάπτυξη ενός γραφικού συστήματος που επιτρέπει την πρόσβαση στα graphics hardware με την υλοποίηση pipeline αγωγού σε (1982) Για να χρησιμοποιήσουν αυτό το σύστημα οι προγραμματιστές εφαρμογών έκαναν χρήση μιας βιβλιοθήκης με το όνομα GL (Graphics Library) Με την GL, ήταν σχετικά απλός ο προγραμματισμός διαδραστικών τριδιάστατων (3D) εφαρμογών

6 OpenGL Η επιτυχία της GL οδήγησε στην OpenGL το 1992, μια API βιβλιοθήκη ανεξάρτητη πλατφόρμας που ήταν: -- Εύκολη στην χρήση -- Συνεργάζεται στενά με το hardware με πολύ καλά αποτελέσματα απόδοσης (performance) -- Εστιάζει στην απόδοση (rendering) γραφικών -- Δεν προσφέρει «παράθυρα» (windowing) και «είσοδο» (input) για να αποφύγει εξάρτηση από ένα συγκεκριμένο παραθυρικό Λειτουργικό Σύστημα (MS, Unix/Linux, Mac) -- Συνδέεται με C, C++, Java, Python, Processing, Ruby, κ.ά.

7 Η εξέλιξη της OpenGL Ελέγχεται από την Architectural Review Board (ARB) Μέλη SGI, Microst, Nvidia, HP, 3DLabs, IBM, Αρκετά σταθερή μετά την version 1.4 Η εξέλιξη αναπαράγει νέες δυναμικές δυνατότητες (capabilities) στο hardware 3D σχεδίαση (mapping) υφής και αντικείμενα υφής Προγράμματα κορυφών (Vertex programs) Με επεκτάσεις ενσωματώνει συγκεκριμένα χαρακτηριστικά κάθε πλατφόρμας Πληροφορίες και υλικό http://www.opengl.org

8 OpenGL βιβλιοθήκες -- OpenGL Library -- OpenGL Utility Library (GLU) -- OpenGL Utility Toolkit (GLUT) Οι τρείς αυτές βιβλιοθήκες συνήθως αναφέρονται ως OpenGL MS-Windows, Unix/Linux, Mac X OS

9 OpenGL βιβλιοθήκες OpenGL βασική (core) βιβλιοθήκη, έχει σχεδιαστεί ως μια βελτιωμένη διεπαφή ανεξάρτητη από το hardware -- OpenGL32 για Windows -- GL για Unix/Linux συστήματα GLU παρέχει πολλά από τα χαρακτηριστικά μοντέλων, όπως quadric επιφάνειες και NURBS καμπύλες και επιφάνειες. -- Παρέχει λειτουργικότητα στην βασική OpenGL αλλά δεν χρειάζεται να ξαναγράψουμε κώδικα GLUT συνδέει την OpenGL με το παραθυρικό σύστημα -- GLX για X συστήματα -- WGL για Windows -- AGL για Macintosh

10 Οργάνωση Λογισμικού (Stware Organization)

Windowing with OpenGL OpenGL είναι ανεξάρτητη από παραθυρικό σύστημα. Για κάθε παραθυρικό σύστημα υπάρχει μια βιβλιοθήκη που συνδέει την OpenGL (rendering) με το παραθυρικό σύστημα: -- X windows (GLX) για μηχανές Η/Υ που χρησιμοποιούν X Window System, παρέχεται η GLX (επέκταση της OpenGL για το X Window System as an adjunct to OpenGL. Οι GLX συναρτήσεις χρησιμοποιούν το πρόθεμα glx. -- Για τα Microst Windows, οι WGL συναρτήσεις (routines) παρέχουν το interface των Windows με την OpenGL. Οι WGL συναρτήσεις χρησιμοποιούν το πρόθεμα wgl. -- Για το Mac OS υπάρχουν τρείς διεπαφές (interfaces): AGL (με πρόθεμα agl), CGL (cgl), και Cocoa (NSOpenGL classes).

12 GLUT (OpenGL Utility Toolkit) = freeglut GLUT παρέχει ένα portable API για την δημιουργία παραθύρων και την επικοινωνία με τις συσκευές εισόδου/εξόδου (I/O devices) -- GUI για διαφορετικά Λ.Σ. -- Χειρισμός γεγονότων (events), κλικ ποντικιού, keys πληκτρολόγιου, αλλαγές στο μέγεθος παραθύρου, επιλογή μενού, κλπ Η βιβλιοθήκη GLUT είναι ανεξάρτητη από παραθυρικό συστημα (αρχικά γραμμένο από τον Mark Kilgard) που κρύβει την περιπλοκότητα των διαφορετικών APIs των παραθυρικών συστημάτων Η freeglut είναι μια υλοποίηση ανοικτού κώδικα που επεκτείνει την λειτουργικότητα της αρχικής GLUT. Οι GLUT συναρτήσεις χρησιμοποιούν το πρόθεμα glut. glutinit() glutinitwindowposition(int x, int y) glutinitdisplaymode(glut_double GLUT_RGBA GLUT_DEPTH)

13 Τύποι δεδομένων της OpenGL Εσωτερικοί τύποι για μεγαλύτερη μεταφερσιμότητα (portability)

14 Μορφή των συναρτήσεων της OpenGL (function format) Όνομα συνάρτησης Ανήκει στην GL βιβλιοθήκη είναι τύπου float είναι ένας δείκτης σε float πίνακα

15 Ονόματα στην OpenGL Συναρτήσεις έχουν πρόθεμα (prefix) το gl, glbegin, glclear, glclearcolor Σταθερές είναι με κεφαλαία γράμματα και η υπογράμμιση χρησιμοποιείται ως διαχωριστής GL_2D, GL_LINES, GL_TRIANGLES Ενσωματωμένοι τύποι δεδομένων αρχίζουν με GL GLbyte, GLshort, GLint, GLboolean

16 Περιεχόμενα της API Συναρτήσεις που ορίζουν τι χρειαζόμαστε για να σχηματίσουμε (form) μια εικόνα -- Αντικείμενα (objects) κατασκευάζονται από θεμελιώδη γεωμετρικά σημεία, γραμμές που ορίζονται από τις κορυφές (vertices) -- Θεατής (viewer, camera) -- Πηγές φωτός (light sources) -- Υλικά (materials) Άλλες πληροφορίες -- Είσοδο από συσκευές όπως ποντίκι και πληκτρολόγιο -- Δυνατότητες του συστήματος -- framebuffer, η οποία κρατάει όλες τις πληροφορίες που η οθόνη γραφικών χρειάζεται για να ελέγχει το χρώμα και την ένταση όλων των pixel στην οθόνη

17 OpenGL State OpenGL είναι μια μηχανή καταστάσεων OpenGL διαθέτει συναρτήσεις δυο τύπων: -- Δημιουργία βασικών (primitive) Εμφάνιση βασικών εάν είναι ορατά Επεξεργασία κορυφών και εμφάνιση βασικών με έλεγχο της καταστασης -- Αλλαγή καταστάσεων (state changing) Συναρτήσεις μετασχηματισμών Συναρτήσεις χαρακτηριστικών (attribute)

18 OpenGL #defines Οι περισσότερες σταθερές ορίζονται στα αρχεια κεφαλίδων gl.h, glu.h και glut.h Με την #include <glut.h> ή #include <freeglut.h> θα πρέπει αυτόματα να συμπεριλαμβάνονται και τα άλλα Παραδείγματα glbegin(gl_polygon) glclear(gl_color_buffer_bit) Στα αρχεία κεφαλίδων ορίζονται και οι τύποι δεδομένων της OpenGL: Glfloat, Gldouble,...

19 Θεμελιώδη σχήματα της OpenGL (Primitives) v 6 v 7 v 2 v 4 v 5 v 4 v 3 v 5 v 00 v 1 v 3 v 0 v 1 v 2

20 Σχεδίαση σημείων Παράδειγμα: Το πρόγραμμα δεν είναι διαδραστικό. Περιλαμβάνει τρείς συναρτήσεις: main, mydisplay, myinit

21 Συνάρτηση: main int main(int argc, char** argv) Σχεδίαση σημείων Παράδειγμα: { glutinit(&argc, argv); // ενεργοποίηση της glut glutinitdisplaymode(glut_single GLUT_RGB); // set the display mode glutinitwindowsize(640, 480); // set το μέγεθος του παραθύρου glutinitwindowposition(100, 150); // set την θέση του παραθύρου glutcreatewindow("σημεία"); // δημιουργία του παραθύρου glutdisplayfunc(mydisplay); // εγγραφή της συνάρτησης εμφάνισης myinit(); glutmainloop(); // επιπλέον ενεργοποιήσεις // ατέρμονη θηλιά return(0); }

22 Δημιουργία Παραθύρου Οι πέντε πρώτες γραμμές είναι κλήσεις σε συναρτήσεις της GLUT για την δημιουργία παραθύρου οπου θα γίνει η σχεδίαση

23 Σχεδίαση σημείων Παράδειγμα: Σχεδίαση θεμελιωδών σχηματων στην συνάρτηση: mydisplay void mydisplay() { glclear(gl_color_buffer_bit); // καθαρισμός οθόνης glbegin(gl_points); } glvertex2i(100, 50); // σχεδίαση τριών σημείων glvertex2i(100, 130); glvertex2i(150, 130); glend(); glflush(); // αποστολή για εμφάνιση (display)

24 Αρχικοποιήσεις στην: myinit Σχεδίαση σημείων Παράδειγμα: void myinit() { glclearcolor(1.0, 0.0, 0.0, 0.0); // χρώμα υπόβαθρου κόκκινο glcolor3f(0.0, 1.0, 0.0); // χρώμα σχεδίασης (drawing color) glpointsize(10.0); // ένα σημείο (dot) είναι 10 επί 10 pixels // Οι επόμενες γραμμές establish το σύστημα συντεταγμένων // Θα αναλυθούν αργότερα. glmatrixmode(gl_projection); glloadidentity(); gluortho2d(0, 640, 0, 480); }

25 Αρχικοποιήσεις στην: myinit Σχεδίαση Γραμμών Παράδειγμα: gllinewidth(2.0); // set line thickness glbegin(gl_lines); glvertex2i(10, 20); // first horizontal line glvertex2i(40, 20); glvertex2i(20, 10); // first vertical line glvertex2i(20, 40); // four more calls to glvertex here for the other two lines glend();

26 Παράδειγμα: Σχεδίαση ενός τόξου Arc Δίδεται κύκλος με ακτίνα radius r, και κέντρο στο σημείο (x,y). Να σχεδιασθεί ένα τόξο του κύκλου που sweeps out μια γωνία angle θ. για

27 Χρήση της Line Strip void drawarc(float x, float y, float r,float t0, float sweep) { float t, dt; /* angle */ int n = 30; /* # segments */ int i; t = t0 * PI/180.0; /* radians */ dt = sweep * PI/(180*n); /* increment */ glbegin(gl_line_strip); for(i=0; i<=n; i++, t += dt) glvertex2f(x + r*cos(t), y + r*sin(t)); glend(); }

28 Πολύγωνα (Polygon issues) Η OpenGL εμφανίζει τα πολύγωνα σωστά μόνο όταν είναι: -- Απλά δηλ. οι πλευρές δεν τέμνονται -- Κυρτά -- Επίπεδα: όλες οι κορυφές βρίσκονται στο ίδιο επίπεδο Το πρόγραμμα του χρήστη πρέπει να ελέγχει τα παραπάνω. Τα τρίγωνα ικανοποιούν όλες τις συνθήκες Μη-κυρτό πολύγωνο Μη-κυρτό πολύγωνο

29 Χαρακτηριστικά (Attributes) Τα attributes είναι μέρος της OpenGL και ορίζουν την εμφάνιση των αντικειμένων -- Χρώμα-color (σημείων, γραμμών, πολυγώνων) -- Μέγεθος-size και πλάτος-width (σημείων, γραμμων) -- Σχεδιαση με κουκίδες - Stipple pattern (lines, polygons) -- Πολυγωνικός τροπος - Polygon mode - Εμφάνιση όπως γεμίστηκε (solid color or stipple pattern - Εμφάνιση ακμών (display edges)

30 RGB χρώμα Κάθε συστατικό (component) χρώματος αποθηκευεται χωριστά (συνήθως 8 bits ανά component) Στην OpenGL οι τιμές χρώματος κυμαίνονται (range) από 0.0 (none) έως 1.0 (all).

31 Texture Mapping

32 Περιορισμοί της γεωμετρικής μοντελοποίησης (The Limits Geometric Modeling) Παρ όλο που οι κάρτες γραφικών μπορούν να αποδώσουν (render) πανω από 10 (million) εκατομμύρια πολύγωνα ανά δευτερόλεπτο, αυτός ο αριθμός είναι ανεπαρκής για πολλά φαινόμενα όπως: -- Σύννεφα (clouds) -- Γρασίδι (grass) -- Επιφάνεια εδαφους (terrain) -- Δέρμα (skin)

33 Μοντελοποίηση ενός πορτοκαλιού (1) (Modeling an Orange) Θεωρήστε το πρόβλημα της μοντελοποίησης ενός πορτοκαλιού Αρχίστε με μια σφαίρα χρωματισμένη πορτοκαλί -- Δεν «πιάνει» (capture) τα χαρακτηριστικά της επιφάνειας μικρά λακκάκια (dimples) -- Χρειάζονται πάρα πολλά πολύγωνα να μοντελοποιείστε όλα τα λακκάκια

34 Μοντελοποίηση ενός πορτοκαλιού (2) (Modeling an Orange) Πάρτε μια φωτογραφία ενός πραγματικού πορτοκαλιού (εάν είναι αναλογική σαρώστε την scan it) και επικολλήστε την paste στο απλό γεωμετρικό μοντέλο -- Αυτή η διαδικασία ονομάζεται χαρτογράφηση υφής (texture mapping) Πιθανόν αυτό να μη είναι αρκετό επειδή η επεξεργασμένη επιφάνεια να είναι λεία -- Χρειάζεται να αλλάξει το τοπικά σχήμα (local shape) -- Χαρτογράφηση εξογκομάτων-φουσκοματων (bump mapping)

35 Τύποι Χαρτογράφησης (Types Mapping) Χαρτογράφηση υφής (texture mapping) -- Χρήση εικόνων για το εσωτερικό γέμισμα των πολυγώνων Περιβάλλοντος (environmental reflection mapping) -- Χρήση μιας εικόνας του περιβάλλοντος για for texture maps -- Επιτρέπει την προσομοίωση των επιφανειών υψηλής κατοπτρικής αντανακλασης Χαρτογράφηση εξογκομάτων-φουσκοματων (Bump mapping) -- Προσομοιώνει τα εξογκόματα αλλαζοντας τα κανονικά διανυσματα (normal vectors) κατά την διαδικασία της αποδοσης (rendering)

36 Texture Mapping Γεωμετρικό μοντέλο (geometric model) Χαρτογραφηση υφής (texture mapped)

37 Environment Mapping

38 Bump Mapping

39 Χαρτογράφηση (mapping) Που γίνεται η χαρτογράφηση; Οι τεχνικές χαρτογράφησης υλοποιούνται στο τέλος της γραμμής απόδοσης (pipeline rendering) Πολύ αποτελεσματικό επειδή λίγα πολύγωνα περνούν την γραμμή της επεξεργασίας γεωμετρίας κή σωλήνωση pass down the geom etric pipeline

40 Βασική Στρατηγική Τρία βήματα για την εφαρμογή υφής 1. Καθόρισε την υφή διάβασε ή δημιούργησε την εικόνα δώσε την υφή (assign to texture) ενεργοποιησε την υφή (enable texturing) 2. Δώσε τις συντεταγμένες υφής στις κορυφές (vertices) Επιλογή της συνάρτησης αντιστοίχησης επαφίεται στην εφαρμογή 3. Καθόρισε τις παραμέτρους υφής τύλιγμα (wrapping), φιλτραρισμα (filtering)

41 Χαρτογράφηση (Mapping) Παρ όλο που η ιδέα είναι απλή --- αντιστοίχιση (map) μιας εικόνας σε μια επιφάνεια -- υπάρχουν 3 ή 4 συστήματα συντεταγμένων που εμπλέκονται (involved) Εικόνα 2D (image) 3D surface Επιφάνεια 3D (surface)

42 Texture Mapping Συστήματα συντεταγμένων parametric coordinates texture coordinates world coordinates screen coordinates

43 Texture Mapping geometry screen image

44 Τέλος