Professional Documents
Culture Documents
Ray Casting
Ray Casting
Μακρής Αντώνης
Μαθητής Γ Γυμνασίου, Ελληνικό Κολλέγιο Θεσσαλονίκης
Παρασκευόπουλος Κωνσταντίνος
Καθηγητής Πληροφορικής (ΠΕ86)
Ελληνικό Κολλέγιο Θεσσαλονίκης
diparaske@gmail.com
Περίληψη
Χάρη στην ταχεία αύξηση της υπολογιστικής ισχύος και την πρόοδο των οπτικών συστημάτων, στις μέρες
μας όλο και περισσότερο χρησιμοποιούνται τεχνολογίες ρεαλιστικής, τρισδιάστατης αναπαράστασης
εικόνων και σκηνών, σε διάφορες πτυχές της ζωής μας (ψυχαγωγία, εκπαίδευση, επιστήμες κλπ). Σε αυτή
την εργασία θελήσαμε να εμβαθύνουμε στις τεχνολογίες και στους αλγορίθμους τρισδιάστατης
απεικόνισης. Συγκεκριμένα, μελετήσαμε τον αλγόριθμο Ray Casting και τον χρησιμοποιήσαμε για να
δημιουργήσουμε ένα πρωτότυπο σύστημα τρισδιάστατων κόσμων στο Scratch.
Λέξεις κλειδιά: Ray Casting, τρισδιάστατοι κόσμοι, Scratch.
1. Εισαγωγή
Σε παλαιότερες εποχές, όταν οι υπολογιστές ήταν αργοί, δεν υπήρχε η δυνατότητα δημιουργίας
τρισδιάστατων γραφικών σε πραγματικό χρόνο. Το πρόβλημα αυτό αντιμετωπίστηκε με την τεχνική
Raycasting. Το Raycasting λοιπόν είναι μία τεχνική δημιουργίας τρισδιάστατων γραφικών πάνω σε έναν
δισδιάστατο χάρτη και το βασικό της πλεονέκτημα είναι η ταχύτητα αφού απαιτούνται ελάχιστοι
υπολογισμοί. Πολλά από τα πρώτα παιχνίδια με τρισδιάστατα γραφικά, όπως το Wolfenstein, το Doom και
το Duke, χρησιμοποίησαν αυτή την τεχνική.
Η ιδέα πίσω από την τεχνική Raycasting είναι απλή. Ας υποθέσουμε ότι έχουμε έναν δισδιάστατο χάρτη
ενός φανταστικού κόσμου, όπως αυτός που φαίνεται στην επόμενη εικόνα. Για να μετατρέψουμε τον χάρτη
σε τρισδιάστατο, στέλνουμε ακτίνες (κόκκινες γραμμές) από το αντικείμενό μας (πράσινη κουκίδα) προς
την μεριά των τοίχων μπλε ορθογώνια. Κάθε φορά που η ακτίνα χτυπάει επάνω σε ένα αντικείμενο του
φανταστικού μας κόσμου, θα πρέπει να υπολογίσουμε την απόσταση που διένυσε. Χρησιμοποιώντας την
τιμή της απόστασης κατάλληλα, μπορούμε να υπολογίσουμε το ύψος που θα έχει ο τοίχος σε μία
τρισδιάστατη απεικόνιση.
2. Ο προγραμματισμός της εφαρμογής
2.1. Δημιουργία του δισδιάστατου χάρτη
Ξεκινήσαμε δημιουργώντας ένα νέο έργο στο Scratch. Αρχικά έπρεπε να κατασκευάσουμε τον δισδιάστατο
χάρτη του φανταστικού μας κόσμου. Γεμίσαμε λοιπόν με μαύρο χρώμα το υπόβαθρο και δημιουργήσαμε
ένα νέο αντικείμενο το οποίο το ονομάσαμε Level. Επεξεργαστήκαμε την ενδυμασία του αντικειμένου στον
1
14ο Μαθητικό Συνέδριο Πληροφορικής – Απρίλιος 2022
επεξεργαστή γραφικών του Scratch ώστε να αναπαριστά έναν χώρο με πολλά δωμάτια και διαδρόμους,
όπως μπορείτε να δείτε στην Εικόνα 1.
2
14ο Μαθητικό Συνέδριο Πληροφορικής – Απρίλιος 2022
3
14ο Μαθητικό Συνέδριο Πληροφορικής – Απρίλιος 2022
4
14ο Μαθητικό Συνέδριο Πληροφορικής – Απρίλιος 2022
να έχει αυτός ο τοίχος. Όσο πιο μικρή είναι η απόσταση που διανύει μία ακτίνα τόσο ψηλότερος θα πρέπει
να είναι ο τοίχος. Αντίθετα, όσο πιο μεγάλη είναι η απόσταση που διανύει η ακτίνα τόσο πιο κοντός θα
πρέπει να είναι ο τοίχος. Αυτό ονομάζεται προοπτική και ο μαθηματικός τύπος που χρησιμοποιήσαμε για
τον υπολογισμό του ύψους ενός τοίχου είναι:
4 5
1 2
Εικόνα 7: Χρήση ακτινών για τον προσδιορισμό του οπτικού πεδίου του παίκτη
1 2
4 5
5
14ο Μαθητικό Συνέδριο Πληροφορικής – Απρίλιος 2022
και μερικές επιπλέον εντολές ώστε να αλλάζει ελαφρώς η απόχρωση των τοίχων ανάλογα με την απόσταση
που έχουν από τον παίκτη. Στην Εικόνα 9 μπορείτε να δείτε πως διαμορφώθηκαν οι εντολές του
αντικειμένου Raycaster μετά από τις παραπάνω προσθήκες και μετατροπές.
6
14ο Μαθητικό Συνέδριο Πληροφορικής – Απρίλιος 2022
Ο περιορισμένος χώρος της παρούσας εργασίας δεν μας επιτρέπει να παρουσιάσουμε πλήρως τον κώδικα
της εφαρμογής. Μπορείτε να βρείτε την εφαρμογή στο αποθετήριο έργων του Scratch στη διεύθυνση
https://scratch.mit.edu/projects/662875882/ .
7
14ο Μαθητικό Συνέδριο Πληροφορικής – Απρίλιος 2022
8
14ο Μαθητικό Συνέδριο Πληροφορικής – Απρίλιος 2022
Ευχαριστίες
Θα θέλαμε να εκφράσουμε τις ευχαριστίες μας στον καθηγητή πληροφορικής του Ελληνικού Κολλεγίου
Θεσσαλονίκης κ. Κωνσταντίνο Παρασκευόπουλο για τις υποδείξεις και την καθοδήγηση που προσέφερε για
να ολοκληρωθεί με επιτυχία αυτή η εργασία.
Βιβλιογραφία
1. Παρασκευόπουλος Κ. (2021), Εισαγωγή στον προγραμματισμό Η/Υ με το Scratch, Θεσσαλονίκη,
Ελληνικό Κολλέγιο Θεσσαλονίκης.
2. https://scratch.mit.edu/