Τμήμα Εικονικής Πραγματικότητας

Μαγικό Βεστιάριο - Κλασική Εποχή

Προγραμματισμός

Ο κώδικας
To XP-Engine χρησιμοποιήθηκε ως ο βασικός σκελετός για την κατασκευή των 3D γραφικών και τη διαδραστικότητα της εφαρμογής. Το XP-Engine είναι μια εξειδικευμένη βιβλιοθήκη που έχουμε αναπτύξει για 3D εφαρμογές σε συστήματα Εικονικής Πραγματικότητας. Προσφέρει μια σειρά "κλάσεων" (classes) και μια γλώσσα προγραμματισμού (scripting language) για γρήγορη και αποτελεσματική ανάπτυξη. Είναι βασισμένο στη βιβλιοθήκη γραφικών OpenGL Performer για τη δημιουργία 3D γραφικών και τη βιβλιοθήκη CAVELib για τον προγραμματισμό του επιμέρους εξοπλισμού εικονικής πραγματικότητας (της "Κιβωτού" και της "Μαγικής Οθόνης", στην περίπτωση μας). Παρόλο που στον βασικό αυτό σκελετό υπήρχαν ήδη αρκετά από τα εργαλεία που χρειάστηκαν για τον σκοπό μας, ειδικές λειτουργίες όπως η κίνηση του χαρακτήρα, τα ειδικά εφέ, τα particle systems και ο χειρισμός της "κάμερας" έλειπαν κι έπρεπε να αναπτυχθούν. Επειδή το σενάριο περιορίζει τον εικονικό κόσμο σε ένα δωμάτιο, τα ειδικά εφέ, ο εύκολος χειρισμός, η ενδιαφέρουσα δράση και η κίνηση έπρεπε να ενσωματωθούν ώστε να κρατηθεί το ενδιαφέρον του χρήστη. Τα στοιχεία που αναπτύχθηκαν και προστέθηκαν στον κώδικα βάσης Εικονικής Πραγματικότητας που χρησιμοποιούμε (το XP-Engine) περιγράφονται παρακάτω.
 

Aντανακλάσεις Φωτός (specular highlights)
Η δημιουργία των αντανακλάσεων του φωτός στα διάφορα λαμπερά αντικείμενα, όπως στα κοσμήματα ή στην υδρία, ήταν το πρώτο ζήτημα που έπρεπε να λυθεί. Εξαιτίας της διαμόρφωσης του υλικού (material) και της υφής (texture) στα 3D αντικείμενα που ζωγραφίζονται σε πραγματικό χρόνο, οι αντανακλάσεις του φωτός δεν φαίνονται ρεαλιστικές ή δεν φαίνονται καθόλου, παρότι κατά τη δημιουργία των μοντέλων σε κάποιο πακέτο γραφικών, όπως το Softimage, ορίζονται αυτές οι ιδιότητες για κάθε μοντέλο και ορίζεται το φωτεινό υλικό. 
Για τη σωστή αναπαράσταση των αντανακλάσεων του φωτός αναπτύχθηκε μια ειδική τεχνική "διπλού περάσματος", όπως φαίνεται από τις παρακάτω εικόνες. Η αριστερή εικόνα δείχνει το αρχικό αντικείμενο όπως παράγεται από το πακέτο μοντελοποίησης χωρίς να έχει δεχτεί περαιτέρω επεξεργασία. Παρόλο που το υλικό έχει οριστεί στο πακέτο για να αντανακλά το φως, οι αντανακλάσεις δεν φαίνονται κατά την προβολή στην "Κιβωτό". Η μεσαία εικόνα δείχνει ένα ενδιάμεσο βήμα επεξεργασίας στο οποίο έχουν υπολογιστεί οι αντανακλάσεις προγραμματιστικά. Το αποτέλεσμα του συνδυασμού του αρχικού μοντέλου με το μοντέλο των αντανακλάσεων φαίνεται στη δεξιά εικόνα που δείχνει το τελικό αντικείμενο όπως φαίνεται στο πρόγραμμα. 
 
 

+
=

 

Κινούμενα Τextures (υφή) και ο συνδυασμός τους (Blending)
Κατά τη διάρκεια του προγράμματος, ο χρήστης έχει τη δυνατότητα να επιλέξει τα κοσμήματα από την πυξίδα για να τα "τοποθετήσει" στην κόρη. Επειδή τα κοσμήματα είναι μικρά αντικείμενα που δεν προβάλλουν καλά στην "Κιβωτό" αν παραμείνουν στο φυσικό τους μέγεθος, αποφασίσαμε να χρησιμοποιήσουμε ένα ειδικό εφέ που μεγενθύνει οπτικά τα κοσμήματα όταν βρίσκονται μπροστά και κοντά μας. Για να επιτευχθεί η συγκέντρωση της προσοχής του επισκέπτη πάνω στα αντικείμενα αυτά ενόσω βρίσκονται στη σκηνή και να ενισχυθεί η οπτική κατανόηση και η θέση των κοσμημάτων στη σκηνή, τοποθετήθηκε ένα εφέ δυναμικού πεδίου γύρω από αυτά, για όση ώρα βρίσκονται μπροστά μας. Για την υλοποίηση του εφέ αναπτύχθηκε ένα κινούμενο texture class το οποίο φορτώνει μια σειρά απο εικόνες και τις τοποθετεί με διαφάνεια πάνω σε οποιοδήποτε αντικείμενο. Στην περίπτωση μας, ντύσαμε μια σφαίρα με κινούμενες ημιδιαφανείς υφές και τη χρησιμοποιήσαμε για να περιβάλλει κάθε μικρό αντικείμενο.
 
 

+
=

Ειδικός χειρισμός της κάμερας (Spline interpolated Camera paths)
Παρόλο που στο βασικό σκελετό υπήρχε κλάση για το χειρισμό της κάμερας, δηλαδή της οπτικής γωνίας με την οποία θα βλέπει ο χρήστης τον εικονικό κόσμο, δεν είχαν αναπτυχθεί συγκεκριμένες ιδιότητες που προέκυψαν λόγω της κίνησης του μοντέλου στον εικονικό χώρο. Στον αρχικό σκελετό του κώδικα υπήρχε μόνο η δυνατότητα για την κάμερα να ακολουθήσει ένα μονοπάτι όπου η φορά της κάμερας ήταν  πάντα παράλληλη με την εφαπτομένη στο μονοπάτι αυτό. Αυτή η λειτουργικότητα επεκτάθηκε ώστε να επιτρέπει να ορίζεται από ξεχωριστό μονοπάτι η φορά της κάμερας και τα σημεία όπου θα εστιάζει, προσθέτοντας ευελιξία στο χειρισμό και εύκολη χρήση. Η παρακάτω εικόνα δείχνει ένα από τα μονοπάτια της κάμερας στο δωμάτιο, καθ' όλη τη διάρκεια της κίνησης (το μονοπάτι φαίνεται με κίτρινο) η κάμερα είναι εστιασμένη στη κοπέλα.





Προσομοίωση υφάσματος
Από το ξεκίνημα του έργου άρχισε να αναπτύσσεται κώδικας για την προσομοίωση υφάσματος με προγραμματιστικό τρόπο. Ο κώδικας αυτός χρησιμοποιήθηκε κατα τη διάρκεια της έρευνας και δημιουργίας του προγράμματος αλλά λόγω προσαρμογής του σεναρίου η τελική έκδοση δεν περιέχει προσομοίωση υφάσματος που να παραάγεται από τον κώδικα που αναπτύχθηκε. Η υλοποίηση της προσομοίωσης οργανικών μορφών και κυρίως υφάσματος βρίσκεται ακόμα σε πειραματικό στάδιο στο πεδίο των 3D γραφικών πραγματικού χρόνου και παρουσιάζει ιδιαίτερες δυσκολίες. Ο κώδικας προσομοίωσής που αναπτύχθηκε από το τμήμα αποτελεί σημαντικό κομμάτι της έρευνας που έγινε με αφορμή τη δημιουργία αυτού του προγράμματος και σημαντική προσθήκη στα εργαλεία Εικονικής Πραγματικότητας. Μπορεί να χρησιμοποιηθεί αποτελεσματικά σε διαδραστικές εφαρμογές και πρόκειται να χρησιμοποιηθεί σε μελλοντικά προγράμματα.

Morphing
H δημιουργία κώδικα για Μοrphing (για την επίτευξη της ομαλού συνδυασμού πολλών μοντέλων για να δίνουν την ψευδαίσθηση της κίνησης) ήταν ένα από τα βασικά τεχνολογικά εργαλεία που αναπτύχθηκαν στα πλαίσια αυτού του προγράμματος. Η κύριος στόχος του είναι να επιτρέπει τη δυνατότητα κίνησης στους διάφορους χαρακτήρες (morph to target animation). Το mοrphing ως τρόπος κίνησης ψηφιακών χαρακτήρων έχει χρησιμοποιηθεί με επιτυχία σε διάφορα εμπορικά πακέτα. H υλοποίηση που αναπτύχθηκε από το τμήμα στοχεύει στο να επιτρέπει πιο γενική χρήση του εργαλείου. Ο προγραμματισμός έγινε έτσι ώστε το morphing να μπορεί να εκτελείται σε περισσότερους από έναν επεξεργαστές παράλληλα, αξιοποιώντας έτσι τις δυνατότητες Η/Υ με πολλαπλούς επεξεργαστές όπως είναι ο Onyx. 
Η τεχνική του morphing λειτουργεί παίρνοντας διάφορα χαρακτηριστικά στιγμιότυπα-κλειδιά (μοντέλα) της κίνησης του χαρακτήρα και υπολογίζοντας τα ενδιάμεσα σημεία ώστε να υπάρξει ομαλή κίνηση. Δεν υπολογίζονται μόνο οι νέες θέσεις των σημείων (vertices) από τα οποία αποτελείται ο χαρακτήρας αλλά και οι νέες τιμές για χρώματα, υφές και υλικά, επιτρέποντας έτσι στα μοντέλα όχι μόνο να μετακινούνται αλλά και να αλλάζουν ταυτόχρονα εμφάνιση. Παρακάτω φαίνονται μερικά καρέ από τη κίνηση της κόρης στο πρόγραμμα. Στο τελευταίο καρέ φαίνεται έχει διαφορετική υφή και χρώμα στο φόρεμα.
 
 

 
   
 

 
Movie

Συμπερασματικά, ο προγραμματιστικός σχεδιασμός της εφαρμογής βοήθησε στην ανάπτυξη νέας και τη βελτίωση υπάρχουσας τεχνολογίας. Αυτό έγινε σε τρείς άξονες: τη βελτίωση της ποιότητας των γραφικών στα μοντέλα, την καλή χρήση των εφέ ώστε να διατηρείται το ενδιαφέρον του χρήστη, και την κίνηση του χαρακτήρα. Ειδικά στην τελευταία περίπτωση, η δημιουργία κίνησης σε περιβάλλοντα όπως η "Κιβωτός" είναι μια πρόκληση διότι το παραμικρό λάθος στη κίνηση, όσο αμελητέο κι αν φαίνεται στη κοινή οθόνη, είναι έντονο στην "Κιβωτό" λόγω της προβολής σε πραγματικό μέγεθος. Επιπλέον, πρόκληση αποτελεί και ο προγραμματισμός της κίνησης. 

Γενικά στη δημιουργία 3Δ γραφικών και κίνησης με τη χρήση πακέτων και εργαλείων, η χρήση morphing για την κίνηση χαρακτήρων έχει εγκαταλειφθεί σήμερα για χάρη του skeleton based animation. Όμως στην περίπτωση της κίνησης για προγράμματα πραγματικού χρόνου σε συστήματα Εικονικής Πραγματικότητας είτε  δεν έχουν αναπτυχθεί τα απαραίτητα εργαλεία για κάτι τέτοιο ή είναι σε πειραματικό στάδιο. Για αυτό το λόγο (και για λόγους ταχύτητας κι ευκολίας) αναπτύξαμε εργαλεία για κίνηση με τη χρήση morphing.  Αν και λειτουργεί καλά και επιφέρει το επιθυμητό αποτέλεσμα, είναι μια επίπονη και χειροκίνητη διαδικασία που δεν παρέχει ευελιξία στην επεξεργασία των μοντέλων. Τα μοντέλα πρέπει να διαμορφωθούν με ειδικό τρόπο ώστε να επιτυγχάνεται τελικά καλύτερη απόδοση ενώ η παραμικρή απόκλιση του ενός μοντέλου από το άλλο δημιουργεί προβλήματα. Αυτοί οι περιορισμοί ήταν σημαντικοί και χρονοβόροι παράγοντες στη δημιουργία των κινήσεων του χαρακτήρα.

Από την άλλη, η ανάπτυξη ενός ολοκληρωμένου συστήματος για skeleton based animation στο οποίο δεν θα υπάρχουν τα παραπάνω προβλήματα και οι περιορισμοί είναι σαφώς η καλύτερη λύση για αυξημένη ποιότητα στην κίνηση. Αν σε μελλοντικά προγράμματα χρειαστεί η μαζική παραγωγή κίνησης θα πρέπει ή να αναπτυχθεί ο αντίστοιχος κώδικας (που είναι ένα δύσκολο και χρονοβόρο εγχείρημα) ή να αποκτηθεί μια ειδική βιβλιοθήκη character animation (που θα πρέπει όμως να προσαρμοστεί στα υπόλοιπα συστήματα δημιουργίας μοντέλων και προγραμματισμού που χρησιμοποιεί το τμήμα).

Όλα τα παραπάνω τμήματα κώδικα που αναπτύχθηκαν στα πλαίσια του προγράμματος έχουν προστεθεί στη "βιβλιοθήκη" των εργαλείων Εικονικής Πραγματικότητας που χρησιμοποιείται για τη δημιουργία των τωρινών και μελλοντικών προγραμμάτων.

 


Αρχή    Σενάριο    Παραγωγή    Μοντελοποίηση    Κίνηση    Προγραμματισμός    Έρευνα    Δημιουργοί