Μάθημα : OPENGL
Κωδικός : 0652010228
Μάθημα 3ο - 3D Σχήματα
Γίνεται εκτενής αναφορά στις παρακάτω συναρτήσεις και έννοιες:
- glutDisplayFunc
- glutInitDisplayMode
- glClearColor
- glutMainLoop()
- glClearDepth
- glClear
- glEnable(GL_DEPTH_TEST) και glDepthFunc
- glBegin(GL_QUADS)
- local space ή model space
- world space
- view space
- viewport transform
- projection transform
Πράγματα να δοκιμάσετε
Α) Αλλάξτε το χρώμα των ουράνιων αντικειμένων αλλάζοντας τις παραμέτρους της εντολής
glColor3f( GLfloat red, GLfloat green, GLfloat blue)
Θυμίζουμε ότι οι παράμετροι red, green, blue παίρνουν τιμές από 0 μέχρι 1 και ορίζουν το ποσοστό του κάθε χρώματος στο τελικό χρώμα (δηλαδή πόσο κόκκινο, πράσινο και μπλε θα περιέχει το χρώμα);
Πχ η εντολή glColor3f(1,1,0) θα θέσει το χρώμα σε κίτρινο, ενώ η εντολή glColor3f(0.5,0.5,0.5) σε γκρι.
Β) Μεγαλώστε τον ήλιο σε μέγεθος κλιμακώνοντας τον κατά 2 σε κάθε διάσταση
Γ) Μετακινήστε το φεγγάρι σε διπλάσια απόσταση από τη γη από ότι είναι τώρα
Δ) Κάντε την γη να γυρίζει 2 φορές πιο γρήγορα γύρω από τον ήλιο
Ε) Δοκιμάστε να μετακινήσετε την κάμερα, αλλάζοντας τις παραμέτρους της εντολής
gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez,
GLdouble centerx, GLdouble centery, GLdouble centerz,
GLdouble upx, GLdouble upy, GLdouble upz);
Υπενθυμίζουμε ότι η τριάδα [eyex, eyey, eyez] ορίζει την θέση της κάμερας στην σκηνή, το [centerx, centery, centery] καθορίζει την κατεύθυνση της κάμερας (το σημείο στο οποίο δείχνει δηλαδή) και το διάνυσμα [upx, upy, upz] καθορίζει ποια είναι η «πάνω» κατεύθυνση της κάμερας.
Ζ) Προσθέστε ακόμα ένα πλανήτη στο ηλιακό μας σύστημα. Αυτό γίνεται ακριβώς όπως προσθέσαμε την γη με μια διαφορά: πριν από το τμήμα που προσθέτει την γη στη σκηνή πρέπει να αποθηκεύσουμε τον ModelView στην στοίβα και να τον ανακτήσουμε αμέσως μόλις ζωγραφίσουμε και το φεγγάρι. Ο λόγος που πρέπει να γίνει αυτό είναι γιατί όταν έρθει η ώρα να προσθέσουμε τον νέο πλανήτη δεν θέλουμε o ModelView να περιέχει τους μετασχηματισμούς (μετακινήσεις, περιστροφές και κλίμακες) που προσθέσαμε για τη γη και το φεγγάρι.
- Τραβήξτε την κάμερα πιο πίσω ώστε να έχετε μεγαλύτερο οπτικό πεδίο πχ gluLookAt(5,8,20, 0,0,0, 0,1,0);
- βάψτε τον πλανήτη ότι χρώμα θέλετε,
- μετακινήστε το νέο πλανήτη κατά -9 στον άξονα Ζ,
- κλιμακώστε τον κατά 0.8,
- κάντε τον να περιστρέφετε γύρω από τον άξονα Υ κατά αντίθετη φορά από ότι η Γη.