Σχεδίαση, Ανάπτυξη και Υλοποίηση Εφαρμογής Επαυξημένης Πραγματικότητας (Augmented Reality)

Η επαυξημένη πραγματικότητα (AR) είναι μια τεχνολογία που προσομοιώνει ψηφιακές πληροφορίες στον πραγματικό κόσμο, δημιουργώντας μια μικτή εμπειρία που ενισχύει την αντίληψη της πραγματικότητας από τον χρήστη. Οι εφαρμογές AR έχουν γίνει όλο και πιο δημοφιλείς τα τελευταία χρόνια, καθώς προσφέρουν νέους και συναρπαστικούς τρόπους ενασχόλησης με την τεχνολογία.

Σχεδίαση Εφαρμογής Επαυξημένης Πραγματικότητας

Ο Σχεδιασμός ενός συστήματος είναι η διαδικασία καθορισμού της αρχιτεκτονικής, των βασικών στοιχείων, των μονάδων, των διεπαφών και των δεδομένων για ένα σύστημα ώστε να ικανοποιεί συγκεκριμένες απαιτήσεις. Είναι ένα κρίσιμο βήμα στην ανάπτυξη οποιουδήποτε συστήματος λογισμικού ή υλικού και περιλαμβάνει τη σχεδίαση της απόδοσης, της επεκτασιμότητας, της δυνατότητας συντήρησης κ.λπ. Για την αποτελεσματική επικοινωνία και τεκμηρίωση του σχεδιασμού ενός συστήματος, χρησιμοποιούνται συχνά διαγράμματα Unified Modeling Language (UML).

Τα διαγράμματα UML είναι ένας τυποποιημένος τρόπος αναπαράστασης της δομής και της συμπεριφοράς ενός συστήματος χρησιμοποιώντας ένα σύνολο γραφικών σημειώσεων. Αυτά τα διαγράμματα μπορούν να χρησιμοποιηθούν για την αναπαράσταση διαφορετικών πτυχών ενός συστήματος, όπως διαγράμματα κλάσεων (Class Diagrams) για τη στατική δομή, διαγράμματα ακολουθίας (Sequence Diagrams) για τη δυναμική συμπεριφορά και διαγράμματα περίπτωσης χρήσης (Use-Case Diagrams) για τις λειτουργικές απαιτήσεις. Είναι χρήσιμα στο σχεδιασμό του συστήματος επειδή παρέχουν μια σαφή οπτική αναπαράσταση του συστήματος, καθιστώντας ευκολότερη την κατανόηση, την επικοινωνία και την επικύρωση του σχεδιασμού με τα ενδιαφερόμενα μέλη. Στο κάθε σύστημα, χρησιμοποιούνται μόνο τα κατάλληλα και απαραίτητα UML διαγράμματα, με στόχο να διευκολύνουν την μετέπειτα διαδικασία. Η βασική αρχιτεκτονική λοιπόν του συστήματος Επαυξημένης Πραγματικότητας παρουσιάζεται στην εικόνα που ακολουθεί.

p11

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

Η βασική ιδέα λοιπόν της γενικής δομής της προσομοίωσης, είναι η οργάνωση μίας ψηφιακής σκηνής η οποία θα περιλαμβάνει δύο τμήματα. Θα χωρίζεται στον χώρο όπου θα απεικονίζεται το ψηφιακό αντικείμενο και στον χώρο όπου θα απεικονίζονται όλες οι πληροφορίες του. Στο πρώτο τμήμα, θα εμφανίζεται το σκάφος ‘Ελένη Π.’ με επισημασμένα τα κομμάτια που θα αντιστοιχούν στην εικόνα-στόχο, ώστε να μπορεί ο χρήστης να παρατηρήσει και εύκολα να κατανοήσει το ακριβές σημείο που ήταν τοποθετημένα τα κομμάτια. Το δεύτερο τμήμα, θα περιλαμβάνει ένα μενού μέσα από το οποίο ο χρήστης θα μπορεί, με το πάτημα ενός ψηφιακού κουμπιού, να επιλέξει το είδος της πληροφορίας που θα ήθελε να εμφανιστεί για το επισημασμένο κομμάτι ή τα κομμάτια του σκάφους. Τα είδη πληροφοριών που θα προσφέρονται από το σύστημα θα είναι εικόνες, βίντεο και περιγραφή.

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

Ανάπτυξη Εφαρμογής Επαυξημένης Πραγματικότητας

Η ανάπτυξη μιας εφαρμογής AR περιλαμβάνει την επιλογή της κατάλληλης τεχνολογίας για τη δημιουργία της επιθυμητής εμπειρίας. Υπάρχουν πολλές διαφορετικές πλατφόρμες AR διαθέσιμες, καθεμία με το δικό της σύνολο χαρακτηριστικών και δυνατοτήτων. Μερικές από τις πιο δημοφιλείς πλατφόρμες περιλαμβάνουν τις ARKit, ARCore και Vuforia. Αυτές οι πλατφόρμες παρέχουν στους προγραμματιστές εργαλεία για τη δημιουργία εφαρμογών AR που μπορούν να εκτελεστούν σε μια ποικιλία συσκευών, από smartphone έως αποκλειστικά AR headsets.

Για την ανάπτυξη της εφαρμογής AR του έργου ‘SaveWoodenBoats’ χρησιμοποιήθηκε η πλατφόρμα Vuforia, η οποία διαθέτει ένα πλήθος εργαλείων καθώς και την υποστήριξη διάφορων τεχνικών για την υλοποίηση εφαρμογών επαυξημένης πραγματικότητας.

Υλοποίηση Εφαρμογής Επαυξημένης Πραγματικότητας

Η ανάπτυξη μιας εφαρμογής AR απαιτεί συνδυασμό δεξιοτήτων προγραμματισμού και δημιουργικής σκέψης. Η εφαρμογή πρέπει να μπορεί να ανιχνεύει τη θέση του χρήστη στον πραγματικό κόσμο και να παρουσιάζει ψηφιακά αντικείμενα στη συσκευή του χρήστη. Αυτό απαιτεί βαθιά κατανόηση της υπολογιστικής όρασης (computer vision), εξοικείωση με κάποια μηχανή παιχνιδιών όπως Unity ή Unreal, καθώς και εξειδίκευση σε γλώσσες προγραμματισμού.

Συγκεκριμένα, η παρούσα AR εφαρμογή υλοποιήθηκε στη μηχανή παιχνιδιών Unity καθώς και στη γλώσσα προγραμματισμού C#.

Μηχανή Παιχνιδιών Unity

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

Ένα από τα βασικά χαρακτηριστικά της μηχανής Unity είναι η ικανότητά της να δημιουργεί παιχνίδια για ένα ευρύ φάσμα πλατφορμών. Υποστηρίζει την ανάπτυξη παιχνιδιών για PC, Mac, Linux, iOS, Android και μια ποικιλία πλατφορμών κονσόλας, όπως το Xbox, το PlayStation και το Nintendo Switch. Αυτό επιτρέπει στους προγραμματιστές να προσεγγίσουν ένα ευρύ κοινό χωρίς να χρειάζεται να ανησυχούν για την ανάπτυξη της συγκεκριμένης πλατφόρμας.

Η Unity προσφέρει επίσης ένα ευρύ φάσμα εργαλείων και δυνατοτήτων για να βοηθήσει τους προγραμματιστές στη δημιουργία παιχνιδιών και διαδραστικού περιεχομένου. Αυτά περιλαμβάνουν έναν visual editor που επιτρέπει στους προγραμματιστές να δημιουργήσουν και να επεξεργαστούν τα επίπεδα και τα περιβάλλοντα του παιχνιδιού τους χρησιμοποιώντας μία διεπαφή drag-and-drop, ένα scripting σύστημα που υποστηρίζει τόσο προγραμματισμό στη γλώσσα προγραμματισμού C# όσο και UnityScript και μια σειρά εργαλείων για τη δημιουργία και εισαγωγή στοιχείων όπως 3D μοντέλα, υφές (textures) και αρχεία ήχου.

Εκτός από τα βασικά εργαλεία ανάπτυξης του, προσφέρονται επίσης και μια σειρά υπηρεσιών για να βοηθήσει τους προγραμματιστές στη δημιουργία και τη δημοσίευση των εφαρμογών τους. Οι υπηρεσίες αυτές περιλαμβάνουν το Unity Asset Store το οποίο είναι μια αγορά για αντικείμενα και εργαλεία παιχνιδιών, καθώς και το Unity Cloud Build, το οποίο επιτρέπει στους προγραμματιστές να αυτοματοποιούν τη διαδικασία κατασκευής (build process) για τα παιχνίδια τους.

Μια άλλη βασική πτυχή της Unity είναι ότι υποστηρίζει την ανάπτυξη Εικονικής Πραγματικότητας (Virtual Reality) και Επαυξημένης Πραγματικότητας (Augmented Reality). Προσφέρει μια σειρά εργαλείων και λειτουργιών που έχουν σχεδιαστεί ειδικά για τη δημιουργία εμπειριών VR και AR, συμπεριλαμβανομένης της υποστήριξης δημοφιλών συσκευών VR και AR όπως το Oculus Rift και το HoloLens.

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

Γλώσσα Προγραμματισμού C#

Οι περισσότεροι μηχανισμοί και αλληλεπιδράσεις με τα ψηφιακά αντικείμενα της προσομοίωσης του συστήματος AR, θα αναπτυχθούν με την υλοποίηση προγραμμάτων στη γλώσσα προγραμματισμού C# που ονομάζονται scripts.

Η C# (προφέρεται “C-sharp”) είναι μια αντικειμενοστραφής γλώσσα προγραμματισμού υψηλού επιπέδου που χρησιμοποιείται ευρέως στην ανάπτυξη σύγχρονων εφαρμογών, συμπεριλαμβανομένων των παιχνιδιών. Στο πλαίσιο της μηχανής παιχνιδιών Unity, η C# είναι η κύρια γλώσσα προγραμματισμού που χρησιμοποιείται για τη δημιουργία σεναρίων και τον έλεγχο της συμπεριφοράς των αντικειμένων του παιχνιδιού.

Ένα από τα βασικά πλεονεκτήματα της C# στο πλαίσιο της Unity είναι η ευελιξία της. Η C# μπορεί να χρησιμοποιηθεί για τη δημιουργία ενός ευρέος φάσματος μηχανισμών και χαρακτηριστικών των παιχνιδιών, όπως η κίνηση των παικτών, δημιουργία εχθρών τεχνητής νοημοσύνης, νόμοι φυσικής, κινούμενα σχέδια και πολλά άλλα. Είναι επίσης κατάλληλο για τη δημιουργία προσαρμοσμένων εργαλείων και βοηθητικών προγραμμάτων για τον Unity editor, όπως προσαρμοσμένοι inspectors και editors για διάφορα game assets.

Στη Unity, τα προγράμματα σε C# συνήθως συνδέονται με αντικείμενα παιχνιδιού (game objects) ως στοιχεία (components). Αυτά τα προγράμματα μπορούν στη συνέχεια να χρησιμοποιηθούν για τον έλεγχο της συμπεριφοράς του game object, όπως η μετακίνηση του, η περιστροφή του ή η αλλαγή της εμφάνισής του. Τα προγράμματα μπορούν επίσης να αλληλεπιδράσουν με άλλα αντικείμενα και στοιχεία παιχνιδιού, επιτρέποντας στους προγραμματιστές να δημιουργήσουν πολύπλοκα συστήματα και συμπεριφορές στα παιχνίδια τους.

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