ΜΟΝΤΕΛΟ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΓΛΩΣΣΑ ΠΕΡΙΓΡΑΦΗΣ ΕΦΑΡΜΟΓΩΝ ΕΙΚΟΝΙΚΗΣ ΠΡΑΓΜΑΤΙΚΟΤΗΤΑΣ

Σχετικά έγγραφα
ΙΑ ΡΑΣΤΙΚΟΤΗΤΑ Σε ΤΡΙΣ ΙΑΣΤΑΤΟΥΣ ΕΙΚΟΝΙΚΟΥΣ ΚΟΣΜΟΥΣ ΕΠΕΚΤΑΣΕΙΣ ΓΛΩΣΣΑΣ STEDEL

Γραφικά με Υπολογιστές. Κίνηση - Αλληλεπίδραση

Γραφικά με Υπολογιστές. Εισαγωγή στη VRML

Points, Lines, Polygons

Γραφικά µε Υπολογιστές. Μετασχηµατισµοί Σύνθετη Γεωµετρία

User Interactivity Nodes

Συστήματα συντεταγμένων

ΠΕΡΙΕΧΟΜΕΝΑ ΕΝΟΤΗΤΑ 1 Η : ΕΙΣΑΓΩΓΗ ΣΤΗ VRML...6 ΕΝΟΤΗΤΑ 2 Η : ΑΠΛΗ ΓΕΩΜΕΤΡΙΑ Εγχειρίδιο της VRML

Event Utilities & Scripting

ισδιάστατοι μετασχηματισμοί ΚΕΦΑΛΑΙΟ 4: ισδιάστατοι γεωμετρικοί μετασχηματισμοί

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

ΕΡΓΑΣΤΗΡΙΟ ΠΟΛΥΜΕΣΩΝ ΚΑΙ ΓΡΑΦΙΚΩΝ

Recommended Resources

Αρχιτεκτονική σχεδίαση με ηλεκτρονικό υπολογιστή

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

ΔΙΔΑΣΚΑΛΙΑ ΤΗΣ ΕΝΝΟΙΑΣ ΤΟΥ ΟΡΙΟΥ ΣΥΝΑΡΤΗΣΗΣ

Browsers. Λειτουργικότητα και Παραμετροποίηση

TEC410 Ανάπτυξη Δικτυακών Τόπων (Δ εξάμηνο)

3 ο Εργαστήριο Μεταβλητές, Τελεστές

Διάλεξη #10. Διδάσκων: Φοίβος Μυλωνάς. Γραφικά με υπολογιστές. Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Χειμερινό εξάμηνο.

Τεχνολογία Λογισμικού. Ενότητα 1: Εισαγωγή στην UML Καθηγητής Εφαρμογών Ηλίας Γουνόπουλος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΟ ΔΙΑΔΙΚΤΥΟ

kg(χιλιόγραμμο) s(δευτερόλεπτο) Ένταση ηλεκτρικού πεδίου Α(Αμπέρ) Ένταση φωτεινής πηγής cd (καντέλα) Ποσότητα χημικής ουσίας mole(μόλ)

Σχεδιαστικά Προγράμματα Επίπλου

ALERTS ή EDA (Event Driven Actions)

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

ηµιουργία µετάδοση και ανακατασκευή τρισδιάστατων γραφικών στο διαδίκτυο µε χρήση JAVA και

αντίστοιχο γεγονός. Όταν όντως το κουμπί

3. Προσομοίωση ενός Συστήματος Αναμονής.

ΦΥΣΙΚΗ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ

Θέση και Προσανατολισμός

Κεφάλαιο 7. Τρισδιάστατα Μοντέλα

1. Ανοίξτε το 3D Studio MAX ή επιλέξτε File Reset. ηµιουργήστε µια σφαίρα µε κέντρο την αρχή των αξόνων και ακτίνα 20 µονάδων.

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές

Κεφάλαιο 8. Οπτικοποίηση Απαλοιφή

Σχεδιασµός βασισµένος σε συνιστώσες

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο

Γλώσσες Σήµανσης (Markup Languages) Τεχνολογία ιαδικτύου και Ηλεκτρονικό Εµπόριο

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

1. Τι είναι η Κινηματική; Ποια κίνηση ονομάζεται ευθύγραμμη;

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Η ΚΙΝΗΣΗ ΣΩΜΑΤΙΟ Ή ΥΛΙΚΟ ΣΗΜΕΙΟ Ή ΣΗΜΕΙΑΚΟ ΑΝΤΙΚΕΙΜΕΝΟ

Ε Ι Α Γ Ω Γ Η Σ Ο Ν Π Ρ Ο Γ Ρ Α Μ Μ Α Σ Ι Μ Ο Κ Ε Υ Α Λ Α Ι Ο 6. Σο πρόγραμμα γράφεται σε κάποια γλώσσα προγραμματισμού.

Singular Report Generator. Σχ 1 ηµιουργία Καταστάσεων SRG

5.1.1 Περιγραφή των συστατικών τμημάτων ενός γραφήματος

J-GANNO. Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β, Φεβ.1998) Χάρης Γεωργίου

1. Τι είναι η Κινηματική; Ποια κίνηση ονομάζεται ευθύγραμμη;

Η εντολή «επανέλαβε Χ»

Κίνηση ΚΕΦΑΛΑΙΟ 2 Β ΓΥΜΝΑΣΙΟΥ

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή

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

ΚΙΝΗΜΑΤΙΚΗ ΥΛΙΚΟΥ ΣΗΜΕΙΟΥ ΣΕ ΜΙΑ ΔΙΑΣΤΑΣΗ

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής

Μοντελοποίηση δεδομένων με UML Χρήση σε πολυμεσικές εφαρμογές

1. Ποια μεγέθη ονομάζονται μονόμετρα και ποια διανυσματικά;

ΕΡΓΑΣΤΗΡΙΟ ΠΟΛΥΜΕΣΩΝ & ΓΡΑΦΙΚΩΝ. Τρισδιάστατοι γεωμετρικοί μετασχηματισμοί

Σχεδίαση και Ανάπτυξη Ιστότοπων

Μαυραντζάς Νικόλαος Εκπαιδευτικός ΠΕ19, MSc

ΜΙΑ ΠΡΟΣΕΓΓΙΣΗ ΤΟΥ ΝΟΜΟΥ ΤΟΥ COULOMB ΜΕ ΔΙΑΔΡΑΣΤΙΚΗ WEB-BASED ΕΦΑΡΜΟΓΗ. Α. Παπαδόπουλος*, Μ. Τσακίρη**, Ε. Χατζηκρανιώτης ***

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access Κεφάλαιο 2 Χειρισμός πινάκων... 27

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

ΕΡΓΑΣΤΗΡΙΑΚΗ ΕΦΑΡΜΟΓΗ 1 ΤO ΡΟΜΠΟΤ INTELLITEK ER-2u

Geogebra. Μακρή Βαρβάρα. Λογισµικό Geogebra

Γραφικά με Η/Υ. 3D Μοντέλα

 = 1 A A = A A. A A + A2 y. A = (A x, A y ) = A x î + A y ĵ. z A. 2 A + A2 z

Διαδίκτυο: δίκτυο διασυνδεμένων δικτύων Ξεκίνησε ως ένα μικρό κλειστό στρατιωτικό δίκτυο, απόρροια του Ψυχρού Πολέμου μεταξύ ΗΠΑ και ΕΣΣΔ.

Ένα διαδικτυακό εργαλείο δημιουργίας παρουσιάσεων

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Atlantis - Νέο user interface

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

Κεφάλαιο 7. ΕΠΑΛ Σύμης Εφαρμογές πληροφορικής Ερωτήσεις επανάληψης

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α

Φυσική για Μηχανικούς

Σενάριο 18: Ραβδογράμματα Πληθυσμού

Σύντομος οδηγός αναφοράς Για Windows Έκδοση 4.0

Κεφάλαιο 2.3: Ρυθμίσεις των Windows

Δυναμικές Ιστοσελίδες Προγραμματισμός στην πλευρά του client

Ενδεικτική πολυ-εργασία 1 - εφαρμογή στην υπολογιστική όραση

Περιεχόμενα Ορισμός και λειτουργία των μηχανών Turing Θεωρία Υπολογισμού Ενότητα 20: Μηχανές Turing: Σύνθεση και Υπολογισμοί Επ. Καθ. Π. Κατσαρός Τμήμ

ΜΕΤΡΩΝΤΑΣ ΤΟΝ ΠΛΑΝΗΤΗ ΓΗ

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

1 Συστήματα Αυτοματισμού Βιβλιοθηκών

Θεωρία μετασχηματισμών

Περιεχόμενο του μαθήματος

Μαθησιακές δραστηριότητες με υπολογιστή

Νέα λειτουργικότητα - Βελτιώσεις. Έκδοση /02/2016. Ημ/νία έκδοσης 10/02/2016 1

Σχετική κίνηση αντικειμένων

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ, ΕΡΕΥΝΑΣ ΚΑΙ ΘΡΗΣΚΕΥΜΑΤΩΝ ΙΝΣΤΙΤΟΥΤΟ ΕΚΠΑΙΔΕΥΤΙΚΗΣ ΠΟΛΙΤΙΚΗΣ. Μαθηματικά. Β μέρος

Ερωτήσεις Απαντήσεις επανάληψης κεφ.9 (Πολυμέσα).

Μαθηματική Εισαγωγή Συναρτήσεις

Οδηγίες για το Geogebra Μωυσιάδης Πολυχρόνης Δόρτσιος Κώστας

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

Κεφάλαιο 1: Κίνηση και γεωμετρικά σχήματα

ΔΕΙΓΜΑ ΠΡΙΝ ΤΙΣ ΔΙΟΡΘΩΣΕΙΣ - ΕΚΔΟΣΕΙΣ ΚΡΙΤΙΚΗ

Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι

Ενότητα 2. Ζωγραφίζοντας με το ΒΥΟΒ

Transcript:

ΕΒΓΔ-ΔΙΠΛ-99-03 ΙΟΥΛΙΟΣ 1999 ΜΟΝΤΕΛΟ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΓΛΩΣΣΑ ΠΕΡΙΓΡΑΦΗΣ ΕΦΑΡΜΟΓΩΝ ΕΙΚΟΝΙΚΗΣ ΠΡΑΓΜΑΤΙΚΟΤΗΤΑΣ ΙΩΣΗΦ ΛΑΖΑΡΙΔΗΣ ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ: ΤΙΜΟΣ ΣΕΛΛΗΣ ΕΡΓΑΣΤΗΡΙΟ ΣΥΣΤΗΜΑΤΩΝ ΒΑΣΕΩΝ ΓΝΩΣΕΩΝ ΚΑΙ ΔΕΔΟΜΕΝΩΝ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΖΩΓΡΑΦΟΥ 157 73, ΑΘΗΝΑ

H παρούσα διπλωματική εργασία πραγματοποιήθηκε κατά τα έτη 1998-1999 υπό την επίβλεψη του καθηγητή κ. Τίμου Σελλή τον οποίον και ευχαριστώ για την ευκαιρία που μου έδωσε να ασχοληθώ με ένα πραγματικά ενδιαφέρον θέμα. Θέλω να απευθύνω ιδιαίτερες ευχαριστίες στο Μιχάλη Βαζιργιάννη με τον οποίο συνεργάστηκα άμεσα στην εκπόνηση της εργασίας. Με βοήθησε και με κατεύθυνε στον προσδιορισμό του ακριβούς αντικειμένου αυτής της έρευνας και την ομαλή διεκπεραίωσή της. i

Περιεχόμενα 1 Eισαγωγή... 1 1.1 Στόχοι της Εργασίας... 1 1.2 Δομή του Κειμένου...2 2 Εικονική Πραγματικότητα στο Διαδίκτυο...3 2.1 Η Γλώσσα VRML97...4 2.1.1 Πώς λειτουργεί η VRML... 4 2.1.2 Τι περιέχει ένα αρχείο VRML...6 2.1.3 Κόμβοι, Πεδία, Γεγονότα...7 2.1.4 Πρωτότυπα (PROTO / EXTERNPROTO)... 8 2.1.5 ROUTE εντολή...10 2.1.6 Γεωμετρικά Σχήματα (Shape Node Geometry Nodes ppearance Nodes)... 10 2.1.7 Κόμβοι Ομαδοποίησης (Grouping Nodes)... 12 2.1.8 Κόμβοι Αισθητήρες (Sensor Nodes)...13 2.1.9 Κόμβοι Παρεμβολής (Interpolator Nodes)... 15 2.1.10 Κόμβοι Σεναρίου (Script Nodes)... 16 2.1.11 Tο External uthoring Interface... 17 2.1.12 Πέρα από τη VRML... 18 2.2 To Μέλλον...20 2.2.1 Java 3D PI... 20 2.2.2 X3D...21 3 Μοντέλο Δεδομένων... 22 3.1 Χώρος... 23 3.2 Χρόνος... 24 3.3 Απλά αντικείμενα... 25 3.3.1 Γεωμετρία απλού αντικειμένου... 25 3.3.2 Διαστάσεις απλού αντικειμένου...26 3.3.3 Εμφάνιση απλού αντικειμένου... 26 3.3.4 Αντικειμενο-κεντρικό σύστημα συντεταγμένων... 26 3.4 Απλές σχέσεις ανάμεσα σε χωρο-χρονικά συστήματα συντεταγμένων...28 3.4.1 Χρονικό μέρος Απλού Μετασχηματισμού...28 3.4.2 Χωρικό μέρος Απλού Μετασχηματισμού...29 3.4.2.1 Απλή Mετατόπιση... 29 3.4.2.2 πλή Περιστροφή... 30 3.4.2.3 Απλή Αλλαγή Κλίμακας...31 3.4.3 Συνολική Μορφή Απλού Μετασχηματισμού... 32 3.5 Η έννοια του Συνδέσμου... 33 3.5.1 Μειονεκτήματα της περιγραφής χωρικών σχέσεων με απλούς μετασχηματισμούς... 33 3.5.2 Τι είναι ο Σύνδεσμος...34 3.5.3 Είδη συνδέσμων Απλοί Σύνδεσμοι... 35 3.5.3.1 Απλοί Σύνδεσμοι της Σφαίρας... 36 3.5.3.2 Απλοί Σύνδεσμοι του Κυλίνδρου... 37 3.5.3.3 Απλοί Σύνδεσμοι του Κώνου... 39 3.5.3.4 Απλοί Σύνδεσμοι του Κουτιού... 41 3.5.4 Σύνθετοι Σύνδεσμοι... 44 3.6 Σχέσεις μεταξύ απλών αντικειμένων με χρήση Συνδέσμων... 46 3.6.1 Χωρικός Γράφος Αντικειμένων...46 3.6.1.1 Γράφος ή Δέντρο;...49 3.7 Εισαγωγή Αντικειμένων στο Χωρικό Γράφο...51 3.7.1 Εισαγωγή με σύνδεση Κόμβου-Ρίζας... 51 3.7.2 Εισαγωγή με Παρεμβολή μέσω Ρίζας... 52 3.7.3 Σύνδεση με οποιονδήποτε Κόμβο του Εισαγόμενου Γράφου...54 3.7.3.1 Αλλαγή Ρίζας Χωρικού Γράφου...56 3.8 Διαγραφή Αντικειμένων... 58 ii

Περιεχόμενα 3.8.1 Διαγραφή Αντικειμένου Φύλλου...58 3.8.2 Διαγραφή Εσωτερικού Αντικειμένου...59 3.9 Κίνηση... 61 3.9.1 Κίνηση Μετασχηματισμού Χωρικών Σχέσεων... 61 3.9.2 Καθορισμός Κίνησης στο διακριτό Χρόνο... 62 3.9.3 Κίνηση με Μεταβολή Συνδέσμου... 63 3.9.4 Kίνηση με Αλλαγή Απλού Μετασχηματισμού...65 3.9.4.1 Μετατόπιση σε ένα Σύστημα Συντεταγμένων...65 3.9.4.2 Περιστροφή σε ένα Σύστημα Συντεταγμένων...66 3.9.4.3 Αλλαγή Κλίμακας σε ένα Σύστημα Συντεταγμένων...67 3.10 Κίνηση με Μεταβολή του Χωρικού Γράφου... 68 3.11 Μετασχηματισμός Αντικειμένων... 70 3.11.1 Μετασχηματισμός Γεωμετρικών Διαστάσεων Απλού Αντικειμένου...70 3.11.2 Μετασχηματισμός Διαστάσεων Συνθέτου Αντικειμένου...72 3.12 Έλεγχος Χωρικών Δράσεων...72 3.13 Σύνθετες Χωρικές Δράσεις...73 3.13.1 Αλληλουχία Χωρικών Δράσεων... 73 3.13.2 Στρατηγική Σύνθεσης Δράσεων... 75 3.13.2.1 Αγνόηση... 75 3.13.2.2 Αντικατάσταση...75 3.13.2.3 Σύνθεση... 76 3.14 Κανόνες Συμπεριφοράς... 76 3.14.1 Γεγονότα... 76 3.15 Συνθήκες...78 4 H Γλώσσα STEDEL... 79 4.1 Απαιτήσεις... 80 4.2 Η Γραμματική και Σημασιολογία της STEDEL...80 4.2.1 Η δομή ενός αρχείου STEDEL...80 4.2.2 Ορισμός Απλού Αντικειμένου...81 4.2.3 Παγκόσμιος Χωρικός Γράφος Αντικειμένων... 83 4.2.4 Γεγονότα Συνθήκες... 87 4.3 Δράσεις... 87 4.4 Κανόνες Συμπεριφοράς... 88 4.5 Ανάπτυξη... 89 4.6 Απεικόνιση σε VRML97... 89 4.6.1 ρχή Εφαρμογής (InitialEvent)... 90 4.6.2 Xρονική Καθυστέρηση (TimeDelayScript)...91 4.6.3 Εκτέλεση Ήχων (SoundScript)...91 4.6.4 Εμφάνιση Αντικειμένου (ShowScript)...92 4.6.5 πόκρυψη Αντικειμένου (HideScript)...92 4.6.6 Μετατόπιση Αντικειμένου (TranslationScript)...93 4.6.7 Nόμος Μετατόπισης (TranslationLaw)...95 4.6.8 Περιστροφή Αντικειμένου (RotationScript)... 96 4.6.9 Νόμος Περιστροφής (RotationLaw)...97 4.6.10 Αλλαγή Κλίμακας Αντικειμένου (ScaleScript)...98 4.6.11 Νόμος Αλλαγής Κλίμακας Αντικειμένου (ScaleLaw)... 98 4.6.12 Αλλαγή Διαστάσεων Γεωμετρίας (GeometryScript)...100 4.6.13 Νόμος Αλλαγής Διάστασης (ResizeLaw)... 101 4.6.14 Αλυσίδα Χωρικών Δράσεων (ctionchain)...102 4.6.15 κολουθία Χωρικών Δράσεων (Sequence)...103 5 Παράδειγμα Λειτουργίας... 106 5.1 Η Λειτουργία του Μεταγλωττιστή... 106 6 Μελλοντικές Επεκτάσεις...108 iii

Περιεχόμενα 6.1 Ολοκλήρωση και Βελτιστοποίηση του Υπάρχοντος Συστήματος... 108 6.2 Εργαλείο Συγγραφής Εφαρμογών Εικονικής Πραγματικότητας με βάση τη γλώσσα STEDEL...109 6.3 Θεωρητική Εργασία...111 7 Βιβλιογραφία...113 iv

1 1 Eισαγωγή To παρόν κείμενο περιγράφει τη διπλωματική εργασία με τίτλο «Μοντέλο Δεδομένων και Γλώσσα Περιγραφής Εφαρμογών Εικονικής Πραγματικότητας» η οποία πραγματοποιήθηκε το διάστημα 1998-1999 από το φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών του Εθνικού Μετσόβιου Πολυτεχνείου. Η εργασία αυτή έγινε στο Εργαστήριο Συστημάτων Βάσεων Γνώσεων και Δεδομένων υπό την επίβλεψη του καθηγητή κ. Τίμου Σελλή και με τη βοήθεια και καθοδήγηση του Μιχάλη Βαζιργιάννη. 1.1 Στόχοι της Εργασίας Η εργασία τοποθετείται στο γενικότερο πεδίο έρευνας σε μοντέλα και γλώσσες για περιγραφή εφαρμογών εικονικής πραγματικότητας. Οι άμεσοι στόχοι της είναι: Η αναζήτηση τρόπων για περιγραφή χωρικών σχέσεων μεταξύ αντικειμένων με έμφαση στη φιλικότητα προς το δημιουργό και την ευχρηστία Η αναζήτηση τρόπων για καθορισμό συμπεριφοράς εφαρμογών εικονικής πραγματικότητας με εύληπτους κανόνες συμπεριφοράς 1

Περιεχόμενα Η πραγματοποίηση ενός ολοκληρωμένου Μοντέλου Δεδομένων για εφαρμογές εικονικής πραγματικότητας που θα χρησιμοποιεί τα στοιχεία που αναφέραμε Η μελέτη της γλώσσας VRML97 και των δυνατοτήτων και ελλείψεων της, παράλληλα προς την ανάπτυξη του Μοντέλου Η υλοποίηση μιας γλώσσας περιγραφής εφαρμογών βασισμένης στο Μοντέλο Δεδομένων και χρησιμοποιούσα τη VRML97 για παρουσίαση των εφαρμογών μέσω ενός μεταγλωττιστή από τη γλώσσα αυτή (STEDEL) στη VRML97. 1.2 Δομή του Κειμένου Το κείμενο αυτής της εργασίας διαιρείται στα ακόλουθα κεφάλαια: Κεφάλαιο 1: Η παρούσα εισαγωγή. Ανάπτυξη των στόχων της εργασίας και της δομής του κειμένου. Κεφάλαιο 2: Επισκόπηση της Εικονικής Πραγματικότητας στο Διαδίκτυο. Μικρός οδηγός της γλώσσας VRML97 και αναφορά στ συστήματα Java3D και X3D. Kεφάλαιο 3: Μοντέλο Δεδομένων. Ανάλυση και παρουσίαση των στοιχείων που συνθέτουν μιαν εφαρμογή Εικονικής Πραγματικότητας: Χώρος, Χρόνος, Απλά Αντικείμενα, Χωρικές Σχέσεις, Γεγονότα, Συνθήκες, Δράσεις. Kεφάλαιο 4: Παρουσίαση της γλώσσας STEDEL. Η πορεία υλοποίησης της γλώσσας: Μεταγλωττιστής και PROTOs της VRML. Κεφάλαιο 5: Παραδείγματα χρήσης της γλώσσας STEDEL. Κεφάλαιο 6: Επίλογος και κριτική ανασκόπηση της εργασίας Kεφάλαιο 7: Βιβλιογραφία που χρησιμοποιήθηκε στην εργασία. 2

2 2 Εικονική Πραγματικότητα στο Διαδίκτυο Η εικονική πραγματικότητα στο Διαδίκτυο είναι άρρηκτα συνδεδεμένη με την ιστορία της γλώσσας VRML (Virtual Reality Modeling Language). Σ αυτό το κεφάλαιο θα αναφερθούμε σε αυτή τη γλώσσα καθώς και σε άλλα συστήματα που έχουν προταθεί για την παρουσίαση 3D περιεχομένου στο Διαδίκτυο, με κύριο το Java 3D PI της Sun Microsystems. Σκοπός του παρόντος κεφαλαίου είναι να εισαγάγει τον αναγνώστη στη φιλοσοφία και τις δυνατότητες των διαθεσίμων συστημάτων. Με βάση αυτά, θα υποστηρίξουμε την ανάγκη δημιουργίας ενός περιγραφικού μοντέλου για εφαρμογές εικονικής πραγματικότητας το οποίο θα βασίζεται στις εξής αρχές: 1. Υψηλού επιπέδου περιγραφή εφαρμογών 2. Αξιοποίηση των υπαρχόντων συστημάτων (VRML) ως χαμηλού επιπέδου μηχανή εκτέλεσης. 3. Ενσωμάτωση του τρισδιάστατου υλικού που έχει ήδη αναπτυχθεί με τα υπάρχοντα συστήματα. 3

Εικονική Πραγματικότητα στο Διαδίκτυο 2.1 Η Γλώσσα VRML97 Θα αναφερθούμε τώρα στη γλώσσα Virtual Reality Modeling Language και στο τρέχον πρότυπο VRML97. Η αναφορά μας δεν είναι πλήρης, αλλά θέλει να περιγράψει αφ ενός τη φιλοσοφία της γλώσσας, να δώσει κάποια παραδείγματα συχνά χρησιμοποιούμενων στοιχείων της, και να καταδείξει κάποια από τα σημεία που η παρούσα εργασία θεωρεί δεκτικά επέκτασης ή βελτίωσης. Για μια πλήρη περιγραφή της γλώσσας, ο αναγνώστης μπορεί να ανατρέξει στο ίδιο το πρότυπο της [VRML97]. Η επεξήγηση των διαφόρων εννοιών είναι αναλυτική, και εύκολα κατανοητή. Το πρότυπο περιλαμβάνει επίσης αρκετά παραδείγματα που είναι χρήσιμα ως αναφορά. Το βιβλίο Building 3D Worlds in Java & VRML [Βuild3D] είναι μια πολύ καλή εισαγωγή στη γλώσσα και προσφέρει στον αναγνώστη μια σταδιακή εμβάθυνση τόσο στην ίδια τη VRML όσο και στις σχετικά με Εικονική Πραγματικότητα εφαρμογές. Η παράθεση των εννοιών είναι σταδιακή, διανθισμένη με πληθώρα παραδειγμάτων και εισάγει το χρήστη με σιγουριά στη χρησιμοποίηση της γλώσσας. Το βιβλίο είναι προσανατολισμένο προς το δημιουργό εικονικών κόσμων αλλά και τον προγραμματιστή και κατορθώνει την ισορροπία ανάμεσα στην ευχρηστία και την τεχνική σαφήνεια. 2.1.1Πώς λειτουργεί η VRML H VRML είναι μια περιγραφική γλώσσα. Ένα αρχείο VRML (που έχει πάντοτε την κατάληξη ".wrl") περιγράφει έναν εικονικό κόσμο με βάση το πρότυπο [VRML97]. Ένας κόσμος της VRML αποτελείται από: Γεωμετρικά Αντικείμενα Αντικείμενα Πολυμέσων (ήχος, εικόνες, video, κλπ.) Κανόνες Συμπεριφοράς των Αντικειμένων Το αρχείο VRML δεν καθορίζει τον τρόπο που θα γίνει η παρουσίαση του εικονικού περιεχομένου αυτού αλλά μόνο το ίδιο το περιεχόμενο. Η παρουσίαση του περιεχομένου γίνεται μέσω του VRML browser, ο οποίος αναλαμβάνει να δημιουργήσει τον εικονικό κόσμο από την περιγραφή στο αρχείο VRML, και να τον παρουσιάσει στο χρήστη. Η λειτουργία του Browser της VRML φαίνεται στο ακόλουθο σχήμα: 4

Εικονική Πραγματικότητα στο Διαδίκτυο H είσοδος του συστήματος είναι η περιγραφή του εικονικού κόσμου στο αρχείο VRML και οι ενέργειες του χρήστη (μέσω των ελεγκτήριων του Browser). Ο Browser διαβάζει το αρχείο και με βάση τους ενσωματωμένους (built-in) κόμβους της γλώσσας και τους κόμβους πρωτότυπα (PROTO κόμβοι) τους οποίους έχει ορίσει ο δημιουργός της εφαρμογής, δημιουργεί μια εσωτερική αναπαράσταση του εικονικού κόσμου που αποτελείται από τα εξής στοιχεία: Ιεραρχία Μετασχηματισμού (Transformation Hierarchy). Δηλώνει τη χωρική σχέση των αντικειμένων της εφαρμογής μεταξύ τους. 5

Εικονική Πραγματικότητα στο Διαδίκτυο Γράφος Αλληλεπίδρασης (Route Graph). Εκφράζει την αλληλεπίδραση των αντικειμένων της εφαρμογής, τόσο μεταξύ τους όσο και με το χρήστη. Δηλώνει την κατεύθυνση των αλληλεπιδράσεων Μηχανή Εκτέλεσης (Execution Engine). Αναλαμβάνει με βάση το Γράφο Αλληλεπίδρασης να προσαρμόζει την Ιεραρχία Μετασχηματισμού και αντίστροφα. Φροντίζει να βρίσκεται η εσωτερική αναπαράσταση του εικονικού κόσμου σε μια ορθή κατάσταση, σύμφωνα με την προδιαγραφή της VRML. H έξοδος του Browser είναι μια οπτικο-ακουστική παρουσίαση (στην οθόνη και τα ηχεία του υπολογιστή) μέσω μιας μηχανής που μετατρέπει την εσωτερική αναπαράσταση του εικονικού κόσμου σε γραφικό / ηχητικό αποτέλεσμα. Στην έξοδο του συστήματος συμμετέχει και ο χρήστης, ο οποίος επιλέγει το τι θέλει να δει όσα υπάρχουν στον εικονικό κόσμο. 2.1.2Τι περιέχει ένα αρχείο VRML Ένα αρχείο VRML αρχίζει με μια επικεφαλίδα της μορφής: "#VRML V2.0 utf8" που ακολουθείται από χαρακτήρα νέας γραμμής. Περιέχει έναν οποιοδήποτε αριθμό από τις ακόλουθες κατηγορίες εντολών: PROTO και EXTERNPROTO εντολές. Αυτές δηλώνουν ένα νέο τύπο κόμβου της VRML που επεκτείνει τις δυνατότητες της. Ο ορισμός του κόμβου αυτού γίνεται στο ίδιο αρχείο (PROTO) ή σε διαφορετικό (EXTERNPROTO). Στη συνέχεια ο δημιουργός μπορεί να χρησιμοποιήσει κόμβους αυτού του νέου τύπου με παρόμοιο τρόπο με τους ενσωματωμένους τύπους κόμβων. Εντολές κόμβων-ρίζα. Ένας κόμβος ρίζα δεν είναι απόγονος κανενός άλλου κόμβου και μπορεί να έχει απόγονους. Εντολές DEF/USE. Με μια εντολή DEF ο χρήστης ξεχωρίζει ονομαστικά έναν κόμβο, συνδέοντας τον με ένα μοναδικό αναγνωριστικό. Στη συνέχεια, με την εντολή USE <Αναγνωριστικό> μπορεί να αναφέρεται σε αυτόν τον κόμβο. Τονίζεται πως η εντολή USE αναφέρεται στο ένα και συγκεκριμένο κόμβο, δε δημιουργεί δηλαδή όπου εμφανίζεται ένα αντίγραφο του κόμβου. Εντολές ROUTE. Αυτές δηλώνουν την κατεύθυνση των γεγονότων (events) της VRML από κόμβο σε κόμβο. Συνδέουν ουσιαστικά τα eventout κάποιον κόμβων (σήματα από κόμβο) με τα eventin άλλων κόμβων. Ένα eventout είναι μια 6

Εικονική Πραγματικότητα στο Διαδίκτυο ειδοποίηση πως κάτι έχει συμβεί. Ένα eventin είναι μια προτροπή στον κόμβο να κάνει κάτι. Μέσω των ROUTE εντολών υλοποιείται η συμπεριφορά της VRML. 2.1.3Κόμβοι, Πεδία, Γεγονότα H VRML χρησιμοποιεί τις έννοιες του κόμβου (node) του πεδίου (field) και του γεγονότος (event). Ένας κόμβος είναι ένα «αντικείμενο» της εφαρμογής. Στο αρχείο VRML είναι οργανωμένοι στο Γράφο Σκηνής (Scene Graph) που εκφράζει τη χωρική τους σχέση. Ένας κόμβος έχει έναν τύπο που είναι το αντίστοιχο της κλάσης του αντικειμενοστραφούς προγραμματισμού. Ο τύπος αυτός μπορεί να είναι ενσωματωμένος της γλώσσας (απαιτείται η υποστήριξη του από το πρότυπο [VRML97]) ή πρωτότυπο που έχει καθοριστεί είτε στο ίδιο το αρχείο ή εξωτερικά. Ένας κόμβος περιλαμβάνει πεδία και δέχεται και εκπέμπει γεγονότα. Τα πεδία είναι παράμετροι που καθορίζουν το συγκεκριμένο αντικείμενο. Μπορεί να είναι δύο ειδών: απλά fields και exposedfields. Η τιμή ενός exposedfield είναι προσβάσιμη από το περιβάλλον του αντικειμένου. Η τιμή του exposedfield xxx μπορεί να αναγνωσθεί ως xxx_changed και να ενημερωθεί ως set_xxx. Τα γεγονότα διαχωρίζονται σε eventin και eventout. To κάθε αντικείμενο αλληλεπιδρά με το περιβάλλον του δεχόμενο eventin και αποστέλλοντας eventout (ή xxx_changed και set_xxx γεγονότα όπως αναφέραμε). Αναφέρουμε ένα παράδειγμα τύπου κόμβου και συγκεκριμένου αντικειμένου αυτού του τύπου: Group { eventin MFNode addchildren eventin MFNode removechildren exposedfield MFNode children [] field SFVec3f bboxcenter 0 0 0 field SFVec3f bboxsize -1-1 -1 DEF MyGroup Group { children [ USE C1 USE C2 ] bboxcenter 0 1 0 Στον ορισμό του τύπου βλέπουμε το όνομα του τύπου τα πεδία και γεγονότα του τύπου Group, ακολοθούμενα από τον τύπο τους, μέσα σε άγκιστρα. Για τα πεδία έχουν καθοριστεί default τιμές, π.χ. για το κέντρο του περιβάλλοντος κουτιού (bboxcenter) έχει καθοριστεί η τιμή 0 0 0. 7

Εικονική Πραγματικότητα στο Διαδίκτυο Δεξιά βλέπουμε τον ορισμό ενός συγκεκριμένου αντικειμένου τύπου Group το οποίο ονομάζουμε MyGroup. Ο δημιουργός καθορίζει μόνο τα πεδία του αντικειμένου που τον επιθυμούν, λ.χ εδώ τα πεδία children και bboxcenter. Tα πεδία που δεν καθορίζονται ρητά λαμβάνουν τις default τιμές που καθορίζει ο ορισμός του τύπου. Άρα το αντικείμενο MyGroup έχει επιπλέον ένα πεδίο bboxsize με αρχική τιμή 1 1 1. Οι τύποι των πεδίων και των γεγονότων είναι οι ακόλουθοι. Το πρόθεμα SF σημαίνει μία τιμή, ενώ το πρόθεμα MF σημαίνει μια λίστα τιμών του τύπου του αντίστοιχου SF πεδίου. To MF πεδίο σημειώνεται μέσα σε αγκύλες. FIELD/EVENT ΠΕΡΙΓΡΑΦΉ ΤΟΥ SF ΤΎΠΟΥ ΠΑΡΆΔΕΙΓΜΑ SFBool Μια boolean τιμή, TRUE ή FLSE started FLSE SFColor Tρεις τιμές του διαστήματος [0,1] που MyColor 0.2 0.4 0 MFColor αντιπροσωπεύουν τις RGB συνιστώσες χρώματος SFFloat Ένας ISO C single precision αριθμός κινητής depth 23.3 MFFloat υποδιαστολής SFImage Μη συμπιεσμένη δισδιάστατη εικόνα fooimage 1 2 1 0xFF 0x00 SFInt32 Ένας 32-bit ακέραιος counter -1235 MFInt32 SFNode MFNode Ένας κόμβος VRML mynode Sphere { radius 0.34 SFRotation MFRotation SFString MFString SFTime MFTime SFVec2f MFVec2f SFVec3f MFVec3f Mια αυθαίρετη περιστροφή περί έναν άξονα που καθορίζεται από ένα διάνυσμα στο χώρο και μια γωνία περιστροφής. Ένα αλφαριθμητικό κωδικοποιημένο σύμφωνα με το UTF-8 σετ χαρακτήρων Ένας ISO C double precision αριθμός κινητής υποδιαστολής που αντιπροσωπεύει το χρονικό διάστημα σε sec από την 1 η Ιανουαρίου 1970, 00:00:00 GMT Δισδιάστατο διάνυσμα, αποτελούμενο από δύο single precision αριθμούς κινητής υποδιαστολής Τρισδιάστατο διάνυσμα, αποτελούμενο από τρεις single precision αριθμούς κινητής υποδιαστολής aroundx 1 0 0 1.3 state "finished" starttime 0.0 twod 1.2 0 translation 3 3 3 2.1.4Πρωτότυπα (PROTO / EXTERNPROTO) H VRML έχει ένα μηχανισμό καθορισμού νέων τύπων κόμβων με τις εντολές PROTO και EXTERNPROTO. Μια εντολή PROTO δημιουργεί ένα νέα τύπο κόμβου και έχει την ακόλουθη σύνταξη: PROTO <name> [ <declaration> ] { <definition> 8

Εικονική Πραγματικότητα στο Διαδίκτυο Στο νέο τύπο δίδεται το όνομα name και η δήλωση των πεδίων και γεγονότων που περιλαμβάνει (declaration). Ο ορισμός του τύπου δίνεται στο definition κομμάτι της εντολής PROTO και αποτελείται από έναν τουλάχιστο κόμβο VRML και μηδέν ή περισσότερες εντολές PROTO/EXTERNPROTO/ROUTE. Η αντιστοίχηση των πεδίων και γεγονότων του ορισμού με τα αντίστοιχα πεδία της δήλωσης γίνεται μέσω της εντολής ΙS: <field/eventname> IS <field/eventname> H εντολή EXTERNPROTO δηλώνει ένα πρωτότυπο το οποίο έχει την ακόλουθη σύνταξη: EXTERNPROTO <name> [ <external declaration> ] URL ή [ URLs ] Έχουμε δηλαδή μόνο δήλωση των πεδίων και γεγονότων του κόμβου και όχι του ορισμού του τύπου. Ο ορισμός αυτός βρίσκεται, υπό μορφή μιας PROTO εντολής, στο αρχείο του URL ή των URLs τα οποία περιλαμβάνει η εντολή EXTERNPROTO. Στο παρακάτω παράδειγμα έχουμε τον ορισμό ενός PROTO και την αντίστοιχη εντολή EXTERNPROTO που πρέπει να υπάρχει σε κάθε αρχείο VRML το οποίο χρησιμοποιεί κόμβους του τύπου που ορίστηκε με το PROTO. Στο δεύτερο αρχείο βλέπουμε και ένα παράδειγμα χρήσης του τύπου με τη δημιουργία ενός αντικειμένου. #VRML V2.0 utf8 #VRML V2.0 utf8 PROTO RedSphere [ field SFFloat radius 1 ] { Shape { geometry Sphere { radius IS radius appearance ppearance { material Material { diffusecolor 1 0 0 EXTERNPROTO RedSphere [ field SFFloat radius ] [ url "RedSphere.wrl" ] Group { children [ RedSphere { Radius 3.3 9

Εικονική Πραγματικότητα στο Διαδίκτυο ] Όνομα Αρχείου: "RedSphere.wrl" Όνομα Αρχείου: "Orb.wrl" 2.1.5ROUTE εντολή Η εντολή ROUTE επιτρέπει την αλληλεπίδραση του χρήστη με τα αντικείμενα της εφαρμογής, και των αντικειμένων της εφαρμογής μεταξύ τους. Μια εντολή ROUTE δηλώνει την κατεύθυνση ενός γεγονότος από το eventout ή exposedfield ενός κόμβου προς το eventin ή exposedfield ενός άλλου κόμβου. Με εντολές ROUTE μπορούμε να έχουμε έναν ολόκληρο γράφο (ROUTE Graph) που παριστάνει τη ροή των γεγονότων ανάμεσα στα αντικείμενα του κόσμου. Έτσι μπορούμε να καθορίσουμε σχετικά πολύπλοκες συμπεριφορές. Η εντολή ROUTE συντάσσεται ως εξής: ROUTE <name>.<field/eventname> TO <name>.<field/eventname> H χρήση της εντολής ROUTE μπορεί να συνδυαστεί με τη χρήση των κόμβων αισθητήρων (Sensor Nodes), των κόμβων παρεμβολής (Interpolation Nodes) και των κόμβων σεναρίου (Script Nodes). Οι κόμβοι αισθητήρων γεννάνε γεγονότα όταν συμβεί κάτι στον κόσμο (ή αν ο χρήστης κάνει μια ενέργεια). Οι κόμβοι παρεμβολής επιτρέπουν τον αυθαίρετο καθορισμό μιας ακολουθίας τιμών που μπορεί να χρησιμοποιηθεί για μεταβολή χρώματος, κίνηση κλπ. Οι κόμβοι σεναρίου είναι η μεγάλη καινοτομία της VRML97 έναντι προηγουμένων συστημάτων Εικονικής Πραγματικότητας και επιτρέπουν τη χρησιμοποίηση της ευελιξίας μιας υψηλού επιπέδου γλώσσας (Java ή JavaScript) για τον προσδιορισμό πραγματικά σύνθετων συμπεριφορών. Θα αναφερθούμε σε μερικούς από αυτούς τους κόμβους αναλυτικότερα παρακάτω. 2.1.6Γεωμετρικά Σχήματα (Shape Node Geometry Nodes ppearance Nodes) O καθορισμός ενός γεωμετρικού αντικειμένου στη VRML γίνεται μέσω του Shape κόμβου o οποίος έχει τον παρακάτω ορισμό: 10

Εικονική Πραγματικότητα στο Διαδίκτυο Shape { field SFNode geometry NULL field SFNode appearance NULL Περιλαμβάνει δηλαδή ένα πεδίο κόμβου γεωμετρίας και ένα πεδίο κόμβου εμφάνισης. Ο χρήστης καθορίζει αυτούς τους δύο κόμβους και έτσι καθορίζει πλήρως την εμφάνιση του αντικειμένου. Η VRML παρέχει στην παρούσα έκδοση της μια πληθώρα τύπων γεωμετρίας και εμφάνισης με τους οποίους μπορούν να υλοποιηθούν εκπληκτικά αποτελέσματα. Η απαρίθμηση τους στα πλαίσια του παρόντος δε θα είχε νόημα. Ενδεικτικά θα αναφέρουμε τους πρωτογενείς κόμβους γεωμετρίας (Sphere, Cylinder, Cone, Box) και τους κόμβους ppearance, Material και ImageTexture οι οποίοι υλοποιούν εμφάνιση. Sphere { field SFFloat radius 1 Cone { field SFFloat bottomradius 1 field SFFloat height 2 field SFBool side TRUE field SFBool bottom TRUE Cylinder { field SFBool bottom TRUE field SFFloat height 2 field SFFloat radius 1 field SFBool side TRUE field SFBool top TRUE Box { field SFVec3f size 2 2 2 Κόμβοι Γεωμετρίας της VRML ppearance { exposedfield SFNode material NULL exposedfield SFNode texture NULL exposedfield SFNode texturetransform NULL Material { exposedfield SFFloat ambientintensity 0.2 exposedfield SFColor diffusecolor 0.8 0.8 0.8 exposedfield SFColor emissivecolor 0 0 0 exposedfield SFFloat shininess 0.2 exposedfield SFColor specularcolor 0 0 0 exposedfield SFFloat transparency 0 ImageTexture { exposedfield MFString url [] field SFBool repeats TRUE 11

Εικονική Πραγματικότητα στο Διαδίκτυο field SFBool repeatt TRUE Εμφάνιση στη VRML 2.1.7Κόμβοι Ομαδοποίησης (Grouping Nodes) Οι κόμβοι ομαδοποίησης περιλαμβάνουν ένα πεδίο children το οποίο περιέχει μια σειρά από κόμβους. Ένας κόμβος ομαδοποίησης ορίζει ένα τοπικό σύστημα συντεταγμένων για όλους τους κόμβους που είναι παιδιά του. Αυτό το σύστημα ορίζεται σε σχέση με το σύστημα συντεταγμένων του πατέρα του κόμβου αυτού. Έτσι διαδίδονται οι μετασχηματισμοί από τους κόμβους ρίζα του εικονικού κόσμου (που δεν έχουν πατέρα) προς τα παιδιά αυτών. Υπάρχουν πολλοί κόμβοι ομαδοποίησης που καθορίζονται από το πρότυπο VRML97. Θα αναφέρουμε τρεις από τους πιο σημαντικούς. Ο κόμβος Group δηλώνει μια ομάδα αντικειμένων τα οποία μπορούμε να χειριστούμε στη συνέχεια μέσω του κόμβου αυτού. Ο κόμβος Transform επιπλέον ορίζει ένα νέο σύστημα συντεταγμένων καθορίζοντας μια σχέση ανάμεσα στο σύστημα συντεταγμένων του πατέρα και στο σύστημα συντεταγμένων των παιδιών. Ο κόμβος Inline μας επιτρέπει να παρεμβάλλουμε στην περιγραφή του κόσμου μας κόμβους οι οποίοι βρίσκονται ορισμένοι σε κάποιο άλλο αρχείο. Group { eventin eventin MFNode addchildren MFNode removechildren exposedfield MFNode children [] field SFVec3f bboxcenter 0 0 0 field SFVec3f bboxsize -1-1 1 Transform { eventin MFNode addchildren eventin MFNode removechildren exposedfield SFVec3f center 0 0 0 exposedfield MFNode children [] exposedfield SFRotation rotation 0 0 1 0 exposedfield SFVec3f scale 1 1 1 exposedfield SFRotation scaleorientation 0 0 1 0 exposedfield SFVec3f translation 0 0 0 field SFVec3f bboxcenter 0 0 0 field SFVec3f bboxsize -1-1 1 12

Εικονική Πραγματικότητα στο Διαδίκτυο Inline { exposedfield MFString url [] field SFVec3f bboxcenter 0 0 0 # (-,) field SFVec3f bboxsize -1-1 1 Βλέπουμε πως οι κόμβοι ομαδοποίησης περιλαμβάνουν events addchildren και removechildren μέσω των οποίων μπορούμε να προσθέτουμε και να αφαιρούμε παιδιά από αυτούς. Έτσι μπορούμε να πετύχουμε εμφάνιση, απόκρυψη και μετακίνηση αντικειμένων. Επίσης βλέπουμε πως ο κόμβος Transform περιλαμβάνει μερικά exposedfields (translation, rotation κλπ.) μέσω των οποίων μπορούμε (μεταβάλλοντας τις τιμές τους) να επιτύχουμε κίνηση. 2.1.8Κόμβοι Αισθητήρες (Sensor Nodes) Oι κόμβοι αισθητήρες μας επιτρέπουν να ανιχνεύουμε ενδιαφέροντα συμβάντα που συμβαίνουν στον εικονικό κόσμο, όπως το πέρασμα του χρόνου ή οι ενέργειες του χρήστη. Ένας κόμβος αισθητήρας λειτουργεί εκπέμποντας ένα ή περισσότερα eventout όταν «αισθανθεί» αυτό για το οποίο είναι σχεδιασμένος. Το πρότυπο της VRML μας δίνει μια σειρά από κόμβους αισθητήρες με τους οποίους μπορούμε να ανιχνεύουμε διαφόρων τύπων συμβάντα. Χρησιμοποιώντας τα eventout που γεννούν οι κόμβοι αυτοί ως eventin κόμβων παρεμβολής (Interpolator Nodes) ή κόμβων σεναρίου (Script Nodes) μπορούμε να καθορίσουμε συμπεριφορά που θέλουμε να πυροδοτείται από την ανίχνευση των συμβάντων αυτών. Θα αναφέρουμε ενδεικτικά τρεις πολύ χρήσιμους κόμβους αισθητήρες: TimeSensor, ProximitySensor, TouchSensor. TimeSensor { exposedfield SFTime cycleinterval 1 exposedfield SFBool enabled TRUE exposedfield SFBool loop FLSE exposedfield SFTime starttime 0 exposedfield SFTime stoptime 0 eventout SFTime cycletime eventout SFFloat fraction_changed 13

Εικονική Πραγματικότητα στο Διαδίκτυο eventout SFBool isctive eventout SFTime time ProximitySensor { exposedfield SFVec3f center 0 0 0 exposedfield SFVec3f size 0 0 0 exposedfield SFBool enabled TRUE eventout SFBool isctive eventout SFVec3f position_changed eventout SFRotation orientation_changed eventout SFTime entertime eventout SFTime exittime TouchSensor { exposedfield SFBool enabled TRUE eventout eventout eventout eventout eventout eventout SFVec3f hitnormal_changed SFVec3f hitpoint_changed SFVec2f hittexcoord_changed SFBool isctive SFBool isover SFTime touchtime Με τον κόμβο TimeSensor μπορούμε να ανιχνεύουμε το πέρασμα του χρόνου. Ο κόμβος αυτός γεννάει ένα fraction_changed eventout σε κάθε «τικ» του ρολογιού (ειδικό του browser). Αυτό είναι μια τιμή στο διάστημα [0,1] που δηλώνει σε πιο σημείο του κύκλου χρόνου βρίσκεται ο κόμβος. Επίσης γεννάει ένα cycletime eventout μετά το πέρας κάθε κύκλου χρόνου. Το χρονικό μήκος του κύκλου σε δευτερόλεπτα καθορίζεται από το πεδίο cycleinterval. Ο κύκλος ξεκινάει από το χρόνο starttime και επαναλαμβάνεται αν το πεδίο loop είναι TRUE. Αν ο παρόν χρόνος είναι μεγαλύτερος από το χρόνο stoptime τότε ο κόμβος είναι ανενεργός (δε γεννά eventouts). Ο κόμβος ProximitySensor μας βοηθάει να ανιχνεύουμε τη θέση και οπτικό προσανατολισμό του χρήστη σε σχέση με τα αντικείμενα της εφαρμογής. Ο κόμβος αυτός ορίζει ένα κουτί (πεδία center και size) στο τοπικό σύστημα συντεταγμένων. Μόλις το avatar 1 μπει σε αυτό το κουτί γεννάται ένα entertime eventout. Αντιστοίχως γεννάται ένα exittime eventout μόλις ο χρήστης βγει από το κουτί. Τα position_changed και orientation_changed γεννώνται όταν ο χρήστης βρίσκεται μέσα στο κουτί και αλλάζει θέση ή οπτική κατεύθυνση. 1 vatar: ο εικονικός χρήστης που θεωρείται πως βρίσκεται σε μια θέση του εικονικού κόσμου και με κάποια συγκεκριμένη οπτική κατεύθυνση 14

Εικονική Πραγματικότητα στο Διαδίκτυο Ο κόμβος TouchSensor αντιδρά στις ενέργειες του χρήστη μέσω της συσκευής εισόδου (συνήθως ποντίκι). Αντιδά όταν γίνονται τέτοιες ενέργειες πάνω από γεωμετρικά αντικείμενα τα οποία περιλαμβάνονται στην ομάδα του πατέρα του κόμβου που έχει τον κόμβο αυτό ως παιδί. Γεννά διάφορα ενδιαφέροντα eventouts όπως το touchtime κάθε φορά που ενεργοποιείται η συσκευή εισόδου (κλικ), το isover όποτε ο δείκτης βρίσκεται πάνω από ένα αντικείμενο και το isctive όσο η συσκευή εισόδου είναι ενεργός. 2.1.9Κόμβοι Παρεμβολής (Interpolator Nodes) Οι κόμβοι παρεμβολής μας επιτρέπουν να δημιουργούμε ακολουθίες διακριτών αλλαγών με τις οποίες μπορούμε να πετύχουμε δυναμική συμπεριφορά του εικονικού κόσμου, όπως κίνηση, αλλαγή χρώματος κ.ο.κ. Ένας κόμβος παρεμβολής περιέχει δύο πεδίο, το key και το keyvalue. Το πρώτο είναι τύπου MFFloat (περιέχει δηλαδή μια σειρά από αριθμούς κινητής υποδιαστολής). Το δεύτερο είναι τύπου MF<type> όπου type είναι ο ένας τύπος καθορισμένος για κάθε είδος τέτοιου κόμβου (λ.χ. MFColor για τον ColorInterpolator). Το πεδίο key περιέχει n τιμές, έστω ( t0, t1,, t n 1 ) τέτοιες ώστε ti+1 ti i {0,1,,n-2. To πεδίο keyvalue περιέχει και αυτό n τιμές v, v,, ) που είναι οι τιμές της συνάρτησης f(t) για τις αντίστοιχες τιμές του key: ( 0 1 v n 1 v0, t t0 f ( t) = vn 1, t tn 1 linterp( t, vi, vi+ 1), ti t ti + 1 Η λειτουργία του κόμβου παρεμβολής θα γίνει περισσότερο κατανοητή αν χρησιμοποιήσουμε ένα παράδειγμα. Δίνουμε τους ορισμούς δύο τέτοιων κόμβων: PositionInterpolator { eventin SFFloat set_fraction exposedfield MFFloat key [] exposedfield MFVec3f keyvalue [] eventout SFVec3f value_changed OrientationInterpolator { eventin SFFloat set_fraction exposedfield MFFloat key [] exposedfield MFRotation keyvalue [] eventout SFRotation value_changed 15

Εικονική Πραγματικότητα στο Διαδίκτυο H ενεργοποίηση του κόμβου παρεμβολής γίνεται πάντοτε μέσω του eventin set_fraction το οποίο προέρχεται παραδείγματος από ένα TimeSensor κόμβο. Αυτό έχει ως αποτέλεσμα τον υπολογισμό της συνάρτησης παρεμβολής f(t). Το αποτέλεσμα είναι η εκπομπή ενός eventout value_changed το οποίο μπορεί να χρησιμοποιηθεί στην περίπτωση του PositionInterpolator, λ.χ. για να μεταβάλλει την τιμή του translation πεδίου ενός Transform κόμβου, επιτυγχάνοντας έτσι κίνηση. 2.1.10Κόμβοι Σεναρίου (Script Nodes) Ο κόμβος σεναρίου (Script Node) είναι το πιο ευέλικτο μέσο για τον καθορισμό συμπεριφοράς με τη VRML. Συνδυάζει το μοντέλο γεγονότων της VRML με τη δυνατότητα χρησιμοποίησης μιας ευέλικτης γενικού σκοπού γλώσσας προγραμματισμού. Ένας κόμβος σεναρίου έχει την εξής περιγραφή: Script { exposedfield MFString url [] field SFBool directoutput FLSE field SFBool mustevaluate FLSE # Οποιοσδήποτε αριθμός από τα eventin eventtype eventname field fieldtype fieldname initialvalue eventout eventtype eventname Το πεδίο url καθορίζει το που βρίσκεται ο κώδικας που υλοποιεί τη συμπεριφορά του script. Αυτό μπορεί να δείχνει σε κάποιο αρχείο Java bytecode ή JavaScript ή μπορεί να περιέχει τον ίδιο τον κώδικα. Το Script επίσης περιέχει έναν αριθμό από eventins, eventouts και fields. Δεν επιτρέπεται να περιέχει exposedfields. Για κάθε eventin πρέπει να υπάρχει μια μέθοδος στη υλοποίηση του script η οποία είναι ο εξυπηρετητής του eventin και εκτελείται οπόταν ενεργοποιείται το αντίστοιχο eventin. Επίσης μπορούν να χρησιμοποιηθούν μέθοδοι initialize(), shutdown() και eventsprocessed(). Η πρώτη εκτελείται όταν δημιουργείται το αντικείμενο, η δεύτερη όταν καταστρέφεται (π.χ. λόγω κλεισίματος του browser) και η τρίτη αναλαμβάνει να χειριστεί πολλαπλά evenins τα οποία έχουν την ίδια χρονική σφραγίδα (έχουν φτάσει δηλαδή ταυτόχρονα). Η περιγραφή της χρήσης των γλωσσών Java και JavaScript (ECMScript) για την υλοποίηση συμπεριφοράς κόμβων σεναρίου μπορεί να βρεθεί στο στα παραρτήματα του 16