ΕΓΧΕΙΡΙΔΙΟ  VRML 1.0

 
 

Περιεχόμενα

 

 
 

  Εισαγωγή
 
 

Η γλώσσα δημιουργίας εικονικής πραγματικότητας (VRML) είναι μία γλώσσα για την περιγραφή εικονικών κόσμων που είναι συνδεμένοι με το Internet και διασυνδεόμενοι με το παγκόσμιο Διαδίκτυο. Όλες οι απόψεις για την έκθεση κόσμων εικονικής πραγματικότητας, αλληλεπίδρασης, και δουλείας με το Internet μπορούν να καθοριστούν με την VRML. Είναι στις προθέσεις των σχεδιαστών η VRML να γίνει η επίσημη γλώσσα για αλληλεπιδράσεις εικονικών κόσμων μέσα στο παγκόσμιο Διαδικτυο.

Η πρώτη έκδοση VRML επιτρέπει την δημιουργία εικονικών κόσμων με περιορισμένη αλληλεπίδραση στην συμπεριφορά τους. Αυτοί οι κόσμοι μπορούν να ελέγχουν αντικείμενα που έχουν διασύνδεση με άλλους κόσμους, κείμενα HTML ή άλλους παρόμοιους τύπους που είναι αποτελεσματικοί. Όταν ο χρήστης επιλέγει ένα αντικείμενο με διασύνδεση, ο κατάλληλος θεατής ΜΙΜΕ αρχίζει. Όταν ο χρήστης επιλέγει μία σύνδεση με ένα κείμενο VRML, με ένα σωστά διαμορφωμένο browser ,ένα εικονοσκόπιο VRML αρχίζει. Γι’ αυτό το λόγο τα εικονοσκόπια VRML είναι το τέλειο συνοδευτικό σε αναγνωρισμένους browser για πλοήγηση και απεικόνιση στο δίκτυο. Οι μελλοντικές εκδόσεις VRML θα επιτρέπουν πιο πλούσια συμπεριφορά, συμπεριλαμβανομένης και δυναμικής κίνησης, διανοητικής κλίσης, φυσικής και αλληλεπίδραση πολλών χρηστών σε αληθινό χρόνο.(αυτό το κείμενο καθορίζει τα χαρακτηριστικά και το συντακτικό της έκδοσης 1.0 της VRML)

Αποστολή της VRML
 
 

Η ιστορία της ανάπτυξης του Internet έχει τρία σημεία αναφοράς. Πρώτο, την ανάπτυξη της υποδομής του TCP/IP η οποία επιτρέπει στις πληροφορίες και στα αντικείμενα να μεταδίδονται με ένα έγκυρο και ανεξάρτητο τρόπο. Το Internet παρείχε μια διεπαφή ανάμεσα στις πληροφορίες και στους χρήστες. Αν και αυτή η διεπαφή είναι χρήσιμη, ήταν αρκετά τεχνική χωρίς καμία ξεκάθαρη πληροφορία για το ¨τι πήγε πού¨. Έτσι η πρόσβαση στο Internet περιοριζόταν στην τάξη των ειδικών που μπορούσαν να διατηρούνπροσωπικό χάρτη του χώρου πληροφοριών.

Έπειτα, η δουλεία του Τίμ Μπέρνετ στο CERN, όπου ανάπτυξε το σύστημα υπερμέσων γνωστό ως παγκόσμιος ιστός(WWW), προσθέτοντας άλλη μια διεπαφή στην υπάρχοντα κατασκευή. Αυτή η διεπαφή παρείχε ένα γραφικό περιβάλλον και μια ενιαία μέθοδο πρόσβασης, που μπορούσε να πει στον χρήστη ¨πού να πάει και πώς να φτάσει εκεί¨ από οποιοδήποτε σημείο της πληροφορίας μέσα στο δίκτυο. Η νέα διεπαφή έχει ευρεία διασταλτικότητα (δεν υπάρχει ¨εδώ¨ μέσα στο δίκτυο) και ο τρόπος πλοήγησης που επιτρέπεται μπορεί να είναι είτε με ευθεία αναφορά, είτε έμμεσα με συνδέσμους. Στην πραγματικότητα όμως, πρέπει να κάνουμε κάποια προσπάθεια για να θυμόμαστε κάποιες αρχικές τουλάχιστον διευθύνσεις έτσι και αλλιώς. Έτσι, ενώ το παγκόσμιο δίκτυο παρέχει ένα μηχανισμό ανάκτησης που συμπληρώνει τον υπάρχοντα μηχανισμό αποθήκευσης, αφήνει πολλά πράγματα ανεκπλήρωτα, κυρίως για τον απλό χρήστη .

Τελικά, φθάνουμε στην ¨ αισθητοποίηση ¨ της δουλείας στο Internet, όπου η πληροφορία γίνεται πιο ελκυστική, πιο βιωματική. Αν κάτι παρουσιάζεται μέσω των αισθήσεων, είναι πιθανό να βιώνεται και να παρέχει περισσότερα νοήματα. Η VRML είναι μια προσπάθεια (πόσο πετυχημένη, μόνο ο χρόνος και το αποτέλεσμα θα μας πουν) να τοποθετήσει τους ανθρώπους στο κέντρο του Internet, προσαρμόζοντας το σύμπαν στις δικές μας προσδοκίες. Το πιο σημαντικό στοιχείο της είναι μία διεπαφή που συνδέεται με όλες τις αισθήσεις. Η VRML είναι αυτή η διεπαφή, σχεδιασμένη να είναι μια παγκόσμια γλώσσα περιγραφής για συμμετοχή σε πολλαπλούς εικονικούς κόσμους.

Αυτές οι τρεις φάσεις, της αποθήκευσης, της ανάκτησης και της ¨ αισθητοποίησης ¨ είναι ανάλογες με την ανθρώπινη διαδικασία της συναίσθησης, καθώς αυτή εκφράζεται σε αντικείμενα της σημασιολογίας και της γνωστικής επιστήμης. Γεγονότα που συμβαίνουν και καταγράφονται, συμπεράσματα που τα παίρνουμε από την μνήμη και από ομάδες σχετικών γεγονότων, χάρτες του σύμπαντος που δημιουργούνται. Αυτό που είναι σημαντικό να θυμόμαστε είναι ότι ο χάρτης δεν είναι η μοναδική περιοχή, και ότι πρέπει ν’ αποφύγουμε να παγιδευτούμε σε μια απλή οπτική παρουσίαση του κόσμου. Παρόλο που χρειάζεται να σχεδιάσουμε για ν’ αποφύγουμε τον αποπροσανατολισμό, πρέπει να τοποθετούμε την ερευνά μας σε εμπειρικά μέρη που μπορούμε να υλοποιήσουμε.

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

Λίγη Ιστορία
 
 

Η VRML πρώτη φορά συνελήφθη σαν ιδέα την άνοιξη του 1994 στο πρώτο συνέδριο για τον παγκόσμιο ιστό στη Γενεύη της Ελβετίας. Ο Τίμ Μπέρνετ και ο Λί και Ντέιβ Ράτζετ οργάνωσαν ένα πανεπιστημιακό σεμινάριο για να συζητήσουνε την αλληλεπίδραση της εικονικής πραγματικότητας στο παγκόσμιο δίκτυο. Πολλοί παρευρισκόμενοι φοιτητές περιγράψανε σχέδια που είχαν ήδη δρομολογηθεί για να δημιουργήσουν τρισδιάστατα εργαλεία οπτικοποίησης που να συμβαδίζουν με το δίκτυο. Οι παρευρισκόμενοι συμφώνησαν με την ανάγκη αυτά τα εργαλεία να έχουν μια κοινή γλώσσα, που να καθορίζει τηνπεριγραφή των τρισδιάστατων εικόνων και του WWW . Αυτή η γλώσσα θα έπρεπε να είναι ανάλογη της ΗΤΜL για εικονική πραγματικότητα. Επινοήθηκε ο όρος, τιμή γλώσσας εικονικής πραγματικότητας (Virtual Reality Markup Language), καιη ομάδα αποφάσισε ν’ αρχίσει την λεπτομερή δουλειά μετά το συνέδριο. Η λέξη ¨Markup¨ αργότερα αντικαταστάθηκε με τη λέξη Model για ν’ αντικατοπτρίζει την γραφική φύση της VRML.

Σύντομα μετά το συνέδριο της Γενεύης, δημιουργήθηκε μια mailing list για την ανάπτυξη και τον καθορισμό της πρώτης έκδοσης της VRML. H ανταπόκριση στη λίστα ήταν τεράστια και σε λιγότερο από μια εβδομάδα υπήρχαν πάνω από χίλια μέλη. Μετά την τακτοποίηση της πρώτης αλληλογραφίας, ο μεσολαβητής της λίστας Μάρκ Πίς του Lavirinth Group ανακοίνωσε την πρόθεση του για μια πρώτη έκδοση των προδιαγραφών έτοιμη μέχρι το επόμενο συνέδριο για τον παγκόσμιο ιστό. Υπήρχε μία γενική συμφωνία στην λίστα ότι, εφόσον οι απαιτήσεις για την πρώτη έκδοση δεν θα ήταν τόσο φιλόδοξες και η VRML θα μπορούσε να προσαρμοστεί από μια ήδη υπάρχοντα λύση. Οι απαιτήσεις για την πρώτη έκδοση εκπονήθηκαν γρήγορα και άρχισε μια διερεύνηση για τη τεχνολογία που θα μπορούσε να προσαρμοστεί στις ανάγκες της VRML.

Η έρευνα στην υπάρχουσα τεχνολογία κατέληξε σε αρκετές αξιόλογες

λύσεις. Μετά από αρκετή καθυστέρηση κατέληξαν στον ανοικτό συντάκτη ASCII αρχείων που είχε κατασκευαστεί από την Silicon Graphics. Το σύστημα του συντάκτη αρχείων υποστηρίζει αποκλειστικά περιγραφές τρισδιάστατων εικόνων με πολυγωνικά φωτοσκιασμένα αντικείμενα, φωτισμό, υλικά, ωραίο περιβάλλον και ρεαλιστικά εφέ. Ο πυρήνας της VRML ήταν ένα υποσύνολο του συστήματος συντάκτη αρχείων, με επεκτάσεις που υποστήριζαν δικτυακές υπηρεσίες. O Γκάβιν Μπέλ της Silicon Graphics προσάρμοσε το συντάκτη αρχείων για την VRML. Η Silicon Graphics δήλωσε δημόσια ότι το σύστημα αρχείων είναι διαθέσιμο για χρήση στην ανοικτή αγορά, και πρόσφερε ένα αναλυτή του συστήματος αρχείων διαθέσιμο στο κοινό για αυτοδύναμη ανάπτυξη VRML.
 
 

Προδιαγραφές της έκδοσης 1.0
 
 

Η VRML 1.0 σχεδιάστηκε για να ικανοποιεί τις παρακάτω προδιαγραφές:

Όπως με την HTML τα παραπάνω είναι απόλυτα αναγκαία για μια γλώσσα δικτύου. Θα χρειαστεί μια μικρή επεξήγηση εδώ. Νωρίτερα οι σχεδιαστές είχαν αποφασίσει ότι η VRML δεν θα ήταν μια επέκταση της HTML. Η HTML είναι σχεδιασμένη για κείμενα, όχι γραφικά. Επίσης, η VRML απαιτεί πιο αναπτυγμένο και γρήγορο δίκτυο απ’ ότι η HTML. Είναι αναμενόμενο ότι μια τυπική εικόνα VRML θα συγκροτείται από πολύ περισσότερα εσωτερικά αντικείμενα απ’ ότι ένα τυπικό έγγραφο HTML. Εκτός αυτού, η HTML είναι ήδη αναγνωρισμένη , με πολλές εφαρμογές που στηρίζονται σε αυτή. Με το να παρέμβουμε στην διαδικασία σχεδιασμού της ΗΤΜL με θέματα που αφορούν την VRML, ή ν’ αναγκάσουμε την διαδικασία σχεδιασμού της VRML να έχει συμβατότητα την HTML, θα προσφέρουμε κακές υπηρεσίες και στις δύο γλώσσες. Σαν γλώσσαδικτύου, η VRML θα πετύχει ή θα αποτύχει ανεξάρτητα από την HTML.

Επίσης αποφασίστηκε ότι, εκτός από το σημαντικό θέμα της υπερσυνδέσμων, η πρώτη έκδοση VRML δεν θα υποστηρίζει άλλες συμπεριφορές αλληλεπίδρασης. Αυτή ήταν μια πρακτική απόφαση με σκοπό να απλοποιήσει τον σχεδιασμό και την υλοποίηση. Ο σχεδιασμός μιας γλώσσας για την περιγραφή συμπεριφορών αλληλεπίδρασης είναι μια δύσκολη υπόθεση, ειδικά όταν η γλώσσα χρειάζεται να εκφράσει την συμπεριφορά αντικειμένων που επικοινωνούν σ΄ ένα δίκτυο. Τέτοιες γλώσσες υπάρχουν. Αν είχαμε διαλέξει μια από αυτές, θα είχαμε ρισκάρει να μπούμε σε ένα ¨ πόλεμο γλωσσών ¨. Οι άνθρωποι δεν ενθουσιάζονται με το συντακτικό μιας γλώσσας για την περιγραφή πολυγωνικών αντικειμένων. Οι άνθρωποι όμως ενθουσιάζονται με το συντακτικό πραγματικών γλωσσών για την δημιουργία προγραμμάτων. Οι ιεροί πόλεμοι μπορούν να επιμηκύνουν την διαδικασία σχεδιασμού κατά μήνες ή χρόνια. Συνολικά, η επιχείρηση δικτύωσης μεταξύ αντικειμένων απαιτεί μεσολάβηση υπηρεσιών όπως αυτές που παρέχονται από το CORBA ή το OLE, υπηρεσίες που δεν υπάρχουν ακόμα στο WWW και θα χρειαστεί να τις εφεύρουμε. Τελικά, με το να κρατήσουμε τις συμπεριφορές αυτές έξω από την έκδοση 1.0, διευκολύνουμε πολύ την αρχική μας αποστολή. Αναγνωρίζουμε ότι η υποστήριξη για αυθαίρετη αλληλεπίδραση συμπεριφορών είναι κρίσιμη για μακροχρόνια επιτυχία της VRML. Αυτά θα περιληφθούν στην έκδοση 2.
 
 

Ορισμός Γλώσσας
 
 

Ο ορισμός της γλώσσας χωρίζεται στις ακόλουθες κατηγορίες :

Βασικά στοιχεία της γλώσσας
 
 

Θεωρητικά, τα αντικείμενα μπορούν να περιέχουν οτιδήποτε, τρισδιάστατη γεωμετρία, MIDI πληροφορίες, εικόνες JPEG, οτιδήποτε. Η VRML καθορίζει μια ομάδα αντικειμένων χρήσιμων για τρισδιάστατα γραφικά. Αυτά τα αντικείμενα ονομάζονται κόμβοι. Οι κόμβοι διευθετούνται σε ιεραρχικές δομές που ονομάζονται γραφήματα εικόνων. Τα γραφήματα εικόνων είναι κάτι περισσότερο από μία συλλογή κόμβων. Τα γραφήματα εικόνων καθορίζουν μία σειρά για τους κόμβους. Το γράφημα εικόνων εκφράζει την εξής αντίληψη: οι κόμβοι που είναι νωρίτερα στην εικόνα, μπορούν να επηρεάσουν τους κόμβους που εμφανίζονται αργότερα. Για παράδειγμα, μία περιστροφήή ένας κόμβος υλικού, θα επηρεάσουν τους κόμβους που είναι επόμενοι χρονικά στην εικόνα .

Ένας κόμβος έχει τα παρακάτω χαρακτηριστικά :

Ένας κόμβος μπορεί να είναι ένας κύβος, μία σφαίρα, ένας χάρτης δομών, ένας μετασχηματισμός κ.τ.λ.

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

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

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

Το συντακτικό που έχει επιλεγεί για να εκπροσωπήσει αυτά τα τμήματα πληροφοριών είναι το ακόλουθο :

DEF όνομα αντικειμένου , τύπος αντικειμένου {πεδία , παιδιά}

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

#VRML V1.0 ascii
Separator  {
         DirectionalLight   {
                 direction 0 0 -1 # Light shining from viewer into scene
         }
         PerspectiveCamera  {
                 position -8.6 2.1 5.6
                 orientation -0.1352 -0.9831 -0.1233 1.1417
                 focalDistance 10.84
         }
        Separator  {        # The red sphere
                 Material  {
                         diffuseColor 1 0 0 # Red
        }
        Translation { translation 3 0 1 }
                 Sphere { radius 2.3 }
        }
       Separator { # The blue cube
                 Material {
                       diffuseColor 0 0 1 # Blue
                 }
                Transform {
                       translation -2.4 .2 1
                       rotation 0 1 1 .9
                }
               Cube {}
       }
}

Γενικό συντακτικό
 
 

Για εύκολη αναγνώριση των αρχείων VRML, κάθε αρχείο VRML πρέπει να ξεκινάει με τους εξής χαρακτήρες :

#VRML V1.0 ascii

Οποιοιδήποτε άλλοι χαρακτήρες που γράφονται στην ίδια γραμμή μ’ αυτούς αγνοούνται. Η γραμμή τερματίζεται με την νέα γραμμή ASCII και με τον χαρακτήρα επιστροφής (CRLF).

Ο χαρακτήρας ΄΄#΄΄ αρχίζει ένα σχόλιο. Όλοι οι χαρακτήρες πριν την νέα γραμμή και τον χαρακτήρα επιστροφής αγνοούνται. Η μόνη εξαίρεση σ’ αυτό τον κανόνα είναι τα πεδία χαρακτήρων που περιέχουν τον χαρακτήρα ΄΄#΄΄.

Σημείωση : Τα σχόλια και τα κενά μπορεί να μην σώζονται. Συγκεκριμένα ένας server (υπολογιστής εξυπηρέτησης δικτύου) ενός κειμένου VRML μπορεί ν’ αφαιρεί τα σχόλια και τα άσχετα κενά από ένα αρχείο VRML πριν το μεταβιβάσει. Τα κενά, τα διαστήματα, οι νέες γραμμές και οι χαρακτήρες επιστροφής είναι κενοί χαρακτήρες οπουδήποτε εμφανίζονται έξω από τα πεδία αλφαριθμητικών. Ένας ή περισσότεροι κενοί χαρακτήρες διαχωρίζουν τα συντακτικά σύνολα στ’ αρχεία VRML, όπου είναι απαραίτητο.

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

Σύστημα συντεταγμένων
 
 


 
 

Α. Ενα παγκόσμιο σύστημα συντεταγμένων. Β. Ενα σχήμα πάνω στις συντεταγμένες του συστήματος.


 
 

Η VRML χρησιμοποιεί ένα καρτεσιανό, δεξιόστροφο, τρισδιάστατο σύστημα συντεταγμένων. Γενικά, τα αντικείμενα προβάλλονται πάνω σε μια δυσδιάστατη συσκευή προς την κατεύθυνση του θετικού άξονα Ζ, με τον θετικό άξονα Χ στα δεξιά και τον θετικό άξονα Υ επάνω. Μια κάμερα ή ένας μετασχηματισμός μπορούν να χρησιμοποιηθούν για να μεταβάλλουμε αυτή την ελλιπή προβολή. Η μονάδα μέτρησης που έχει καθοριστεί για τα μήκη και τις αποστάσεις είναι τα μέτρα. Η μονάδα μέτρησης για τις γωνίες είναι τα ακτίνια.
 
 

Πεδία

Υπάρχουν δυο γενικές τάξεις πεδίων : Πεδία που περιέχουν μία μόνο τιμή (οπού η τιμή μπορεί να είναι ένας αριθμός, ένα διάνυσμα ή ακόμα και μία εικόνα), και πεδία που περιέχουν πολλαπλές τιμές. Τα μονότιμα πεδία όλα έχουν ονόματα που αρχίζουν με το ΄΄SF΄΄, ενώ τα πεδία πολλαπλών τιμών έχουν πεδία που αρχίζουνε το ΄΄MF΄΄. Κάθε τύπος πεδίου καθορίζει την διάταξη των τιμών που δίνει.

Τα πεδία πολλαπλών τιμών γράφονται σαν μια σειρά τιμών χωρισμένες με κόμματα και μέσα σε αγκύλες. Αν το πεδίο έχει μηδενικές τιμές τότε γράφονται μόνο οι αγκύλες με κενό. Το τελευταίο μπορεί επιλεκτικά ν’ ακολουθείται με ένα κόμμα. Για παράδειγμα όλα τα παρακάτω είναι σωστά για ένα πεδίο πολλαπλών τιμών που περιέχει την απλή ακέραια τιμή 1 :

1

[1,]

[ 1]
 
 

SFBitMask

Ένα μονότιμο πεδίο που περιέχει μια μάσκα από bit strings. Οι κόμβοι που χρησιμοποιούν αυτή την τάξη πεδίων σχεδιάζουν ονόματα των προγραμμάτων της μνήμης από τα bit strings. H SFBitMask γράφεται σε αρχείο σαν ένα όνομα αρχείου, σε αυτή τη μορφή:

( flag1|flag2|.....)

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

SFBοοl

Ένα πεδίο που περιέχει μια απλή λογική τιμή (αληθής ή ψευδής). Τα SFBools μπορούν να γράφονται σαν 0 που αντιπροσωπεύει την τιμή (ψευδής) και 1 (αληθής).
 
 

SFColor

Ένα μονό πεδίο που περιέχει ένα χρώμα . Τα SFColor γράφονται σε αρχεία σαν μία τριάδα RGB, ή αριθμοί κινητής υποδιαστολής με διάστημα 0.0 έως 1.0.
 
 

SFEnum

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

SFFloat

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

 SFImage

Ένα πεδίο που περιέχει ένα ασύνδετο δυσδιάστατο χρώμα ή μια γραμμοσκιασμένη εικόνα. Τα SFImages γράφονται σε αρχεία σαν τρεις ακέραιοι που αντιπροσωπεύουν το ύψος, το πλάτος και τον αριθμό των συστατικών στην εικόνα, ακολουθούμενη από μια δεκαεξαδική τιμή του ύψους επί το πλάτος που αντιπροσωπεύουν τα εικονοστοιχεία της εικόνας, χωρισμένα με το κενό. Μια εικόνα που περιέχει μόνο ένα συστατικό θα έχει δεκαεξαδικές τιμές ενός byte που θ’ αντιπροσωπεύουν την ένταση της εικόνας. Για παράδειγμα, το ΟxFF θα έχει πλήρη ένταση ενώ το OxOO δεν θα έχει ένταση. Μια εικόνα δύο συστατικών τοποθετεί την ένταση στο πρώτο (υψηλό) byte και την διαφάνεια στο δεύτερο (χαμηλό) byte. Τα εικονοστοιχεία σε μία εικόνα τριών συστατικών έχουν το πρώτο συστατικό στο πρώτο (υψηλό) byte, ακολουθούμενο από τα πράσινα και τα μπλε συστατικά (έτσι ΟxFFOOO είναι κόκκινο). Οι εικόνες τεσσάρων συστατικών τοποθετούν το byte της διαφάνειας μετά το κόκκινο, το πράσινο και το μπλε (έτσι OxOOOOFF80 είναι ημιδιαφανές μπλε). Μια τιμή 1.0 είναι πλήρως διαφανές, ενώ 0.0 είναι πλήρως αδιαφανή.

Σημείωση :κάθε εικονοστοιχείο στην πραγματικότητα διαβάζεται σαν ένας απλός μη προσημασμένος αριθμός, έτσι ένα εικονοστοιχείο τριών συστατικών με τιμή ¨OxOOOOFF¨ μπορεί επίσης να γραφτεί σαν ¨ΟxFF¨ ή ¨255¨ (δεκαδικός). Τα εικονοστοιχεία καθορίζονται από αριστερά προς τα δεξιά και από τον πάτο στην κορυφή. Η πρώτη δεκαεξαδική τιμή είναι το χαμηλότερο αριστερό εικονοστοιχείο της εικόνας, και η τελευταία τιμή είναι το ψηλότερο δεξιά εικονοστοιχείο.

Για παράδειγμα :

1 2 2 OxFF OxOO

είναι ένα εικονοστοιχείο 1 ακολουθούμενο από ένα εικονοστοιχείο 2 σε μία εικόνα υψηλής γραμμοσκίασης, με το εικονοστοιχείο της βάσης άσπρο και το εικονοστοιχείο της κορυφής μαύρο. Και :

2 4 3 OxFFOOOO OxFFOO O O O O OxFFFFFF OxFFFFOO

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

SFLong

Ένα πεδίο που περιέχει ένα μεγάλο ακέραιο 32 bit. Τα SFLong γράφονται σε αρχείο σαν ένας ακέραιος σε δεκαδική, δεκαεξαδίκη (αρχίζοντας με ‘0x’) ή οκταδική (αρχίζοντας με ‘o’) μορφή.
 
 

SFMatrix

Ένα πεδίο που περιέχει μια μήτρα μετασχηματισμού. Τα SFMatrix γράφονται σε αρχείο σε στοίχιση γραμμών σαν 16 αριθμοί κινητής υποδιαστολής χωρισμένοι με κενά. Για παράδειγμα , μια μήτρα που εκφράζει μια μετάφραση 7.3 μονάδων κατά το μήκος του άξονα Χ γράφεται σαν :

1 0 0 0 0 1 0 0 0 0 1 0 7,3 0 0 1
 
 

SFString

Ένα πεδίο που περιέχει ένα ASCII αλφαριθμητικό (ακολουθία από χαρακτήρες) . Τα SFString γράφονται σε αρχεία σαν ακολουθίες ASCII χαρακτήρων μέσα σε διπλά εισαγωγικά (προαιρετικά αν το αλφαριθμητικό δεν περιέχει καθόλου κενά). Οποιοιδήποτε χαρακτήρες (συμπεριλαμβανομένης και της αλλαγής γραμμής) μπορούν να εμφανίζονται μέσα στα εισαγωγικά. Για να συμπεριλάβουμε ένα χαρακτήρα διπλών εισαγωγικών μέσα σε ένα αλφαριθμητικό, πρέπει να προηγηθεί μια κάθετος. Για παράδειγμα :

Testing

¨One, Two, Three¨

¨He said, \¨ Immel did it!\ ¨¨

είναι όλα έγκυρα αλφαριθμητικά.
 
 

SFRotation

Ένα πεδίο που περιέχει μια αυθαίρετη περιστροφή. Τα SFRotation γράφονται σαν τέσσερις τιμές κινητής υποδιαστολής χωρισμένες με κενό. Οι τέσσερις τιμές αντιπροσωπεύουν την περιστροφή ενός άξονα, ακολουθούμενες από την τιμή της δεξιόστροφης περιστροφής πάνω στον άξονα σε ακτίνια. Για παράδειγμα μια περιστροφή 180 μοιρών πάνω στον άξονα Υ είναι:

0 1 0 3,14159265
 
 

SFVec2f

Ένα πεδίο που περιέχει ένα δυσδιάστατο διάνυσμα. Τα SFVec2f γράφονται σε αρχεία σαν ζευγάρι τιμών κινητής υποδιαστολής χωρισμένες με κενά.
 
 

SFVec3f

Ένα πεδίο που περιέχει ένα τρισδιάστατο διάνυσμα. Τα SFVec3f γράφονται σε αρχεία σαν τρεις τιμές κινητής υποδιαστολής χωρισμένες με κενά.
 
 

MFColor

Ένα πεδίο πολλαπλών τιμών το οποίο περιέχει οποιοδήποτε αριθμό RGB χρωμάτων. Τα MFColor γράφονται σε αρχεία σαν μία ή περισσότερες τριάδες RGB αριθμών κινητής υποδιαστολής σε επίσημη επιστημονική γραφή αριθμού. Όταν παρουσιάζεται παραπάνω από μία τιμή, όλες οι τιμές πρέπει να περικλείονται σε αγκύλες και να χωρίζονται με κόμμα. Για παράδειγμα:

[ 1.0 0.0 0.0 , 010, 001 ]

αντιπροσωπεύει τα τρία χρώματα, κόκκινο, πράσινο και μπλε.
 
 

MFLong

Ένα πεδίο πολλαπλών τιμών που περιέχει οποιοδήποτε αριθμό ακεραίων 32 bit. Τα MFLong γράφονται σε αρχεία σαν ένας ή περισσότεροι ακέραιοι σε δεκαδική, δεκαεξαδική ή οκταδική μορφή. Όταν παρουσιάζονται περισσότερες από μία τιμές, όλες οι τιμές πρέπει να κλείνονται σε αγκύλες χωρισμένες με κόμμα. Για παράδειγμα:

[ 17, -0xΕ20, -518820 ]
 
 

MFVec2f

Ένα πεδίο πολλαπλών τιμών που περιέχει οποιοδήποτε αριθμό δισδιάστατων διανυσμάτων. Τα MFVec2fs γράφονται σε αρχεία σαν ένα ή περισσότερα ζευγάρια τιμών κινητής υποδιαστολής χωρισμένα με κενό. Όταν παρουσιάζονται περισσότερες από μία τιμές, όλες οι τιμές κλείνονται με αγκύλες και χωρίζονται με κόμμα. Για παράδειγμα:

[ 0 0, 1.2 3.4, 98.6 -4e1 ]
 
 

MFVec3f

Ένα πεδίο πολλαπλών τιμών που περιέχει οποιοδήποτε αριθμό τρισδιάστατων διανυσμάτων. Τα MFVec3f γράφονται σε αρχεία σαν μία ή περισσότερες τριάδες τιμών κινητής υποδιαστολής χωρισμένες με κενά. Όταν παρουσιάζονται περισσότερες από μία τιμές, όλες οι τιμές κλείνονται σε αγκύλες και χωρίζονται με κόμμα. Για παράδειγμα:

[ 0 0 0, 1.2 3.4 5.6, 98.6 -4e1 212 ]
 
 

Κόμβοι

Η VRML καθορίζει αρκετές διαφορετικές τάξεις κόμβων. Οι περισσότεροι κόμβοι μπορούν να ταξινομηθούν σε μία από τις τρεις κατηγορίες, σχήμα, ιδιότητες και ομάδα. Οι κόμβοι σχήματος καθορίζουν την γεωμετρία μέσα στην εικόνα. Βασικά, είναι οι μόνοι κόμβοι που μπορούν να σχεδιάσουν οτιδήποτε. Οι κόμβοι ιδιοτήτων επηρεάζουν τον τρόπο που σχεδιάζονται τα σχήματα. Οι κόμβοι ομαδοποίησης συγκεντρώνουν τους άλλους κόμβους μαζί, επιτρέποντας στις συλλογές των κόμβων να συμπεριφέρονται σαν ένα ενιαίο αντικείμενο. Μερικοί κόμβοι ομαδοποίησης επίσης ελέγχουν αν σχεδιάζονται ή όχι τα παιδιά τους. Οι κόμβοι μπορούν να περιέχουν μηδέν ή περισσότερα πεδία. Κάθε τύπος κόμβου καθορίζει τον τύπο, το όνομα και την προκαθορισμένη τιμή για κάθε για κάθε πεδίο του. Η προκαθορισμένη τιμή για το πεδίο χρησιμοποιείται όταν η τιμή για το πεδίο δεν καθορίζεται μέσα στο αρχείο VRML. Η σειρά με την οποία διαβάζονται τα πεδία ενός κόμβου δεν έχει σημασία. Για παράδειγμα, ΄΄cube {πλάτος 2 ύψος 4 βάθος 6}΄΄ και το ΄΄cube {ύψος 4 βάθος 6 πλάτος 2 }΄΄ είναι ίδια.

Παρακάτω παρουσιάζονται οι 36 κόμβοι ομαδοποιημένοι κατά τύπο. Η πρώτη ομάδα είναι οι κόμβοι σχήματος. Αυτοί που καθορίζουν την γεωμετρία:

AsciiText, Cone, Cube, Cylinder, IndexedFaceSet, IndexedLineSet, PointSet, Sphere,
 
 

Η δεύτερη ομάδα είναι οι ιδιότητες. Αυτές μπορούν να ομαδοποιηθούν περισσότερο σε ιδιότητες γεωμετρίας και εμφάνισης, μήτρων ή μετασχηματισμού, και κάμερας και φωτισμού:

Coordinate3, FontStyle, Info, LOD,Material, MaterialBinding,Normal, NormalBinding, Texture2,Texture2Transform, TextureCoordinate2, ShapeHints

MatrixTransform, Rotation, Scale,Transform, Translation

OrthographicCamera, PerspectiveCamera

DirectionalLight, PointLight, SpotLight
 
 

Οι τύποι ομαδοποίησης:

Group, Separator,Switch,TransformSeparator, WWWAnchor
 
 

Τελικά, ο κόμβος WWWInline που δεν ανήκει σε καμία κατηγορία.

WWWInline
 
 

AsciiText (κείμενα Αscii)

Αυτός ο κόμβος αντιπροσωπεύει αλφαριθμητικά χαρακτήρων κειμένου από το σύνολο των κωδικοποιημένων χαρακτήρων ASCII. Το πρώτο αλφαριθμητικό εστιάζεται με την γραμμή στοίχισης γραμμάτων στο (0, 0, 0). Όλα τα διαδοχικά αλφαριθμητικά προωθούνται στο Υ από το -(size * spacing). Δείτε το FontStyle για μία περιγραφή του μεγέθους πεδίου (size). To πεδίο στοίχισης καθορίζει την τοποθέτηση του αλφαριθμητικού στη διάσταση X. Το LEFT (η προκαθορισμένη επιλογή) τοποθετεί την αριστερή πλευρά κάθε αλφαριθμητικού στο Χ=0. To κείμενο φωτοσκιάζεται από αριστερά προς δεξιά, από πάνω ως κάτω και έχει την γραμματοσειρά του FontStyle. Το πεδίο πλάτους καθορίζει ένα μέγιστο προτεινόμενο πλάτος περιορισμού για κάθε αλφαριθμητικό. Η προκαθορισμένη επιλογή είναι να χρησιμοποιεί το φυσικό πλάτος για κάθε αλφαριθμητικό. Θέτοντας οποιαδήποτε τιμή ίση με το μηδέν δηλώνουμε ότι θα χρησιμοποιήσουμε το φυσικό πλάτος γι’ αυτό το αλφαριθμητικό.


 
 

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

JUSTIFICATION

          LEFT (ευθυγραμμίζει την αριστερή γωνία του κειμένου στην αρχή)

          CENTER (ευθυγραμμίζει το κέντρο του κειμένου στην αρχή)

          RIGHT (ευθυγραμμίζει την δεξιά γωνία του κειμένου στην αρχή)

FILE FORMAT/DEFAULTS

          AsciiText {

                           αλφαριθμητικό ¨ ¨ # MFString

                           απόσταση 1 # SFFloat

                          στοίχιση LEFT # SFEnum

                          πλάτος 0 # MFFloat

                         }

Cone (κώνος)


 
 
 
 

Αυτός ο κόμβος αντιπροσωπεύει έναν απλό κώνο του οποίου ο κεντρικός άξονας ευθυγραμμίζεται με τον άξονα Υ. Ο κώνος έχει κέντρο στο (0, 0, 0) και έχει διάσταση από το -1 εώς το 1 και στις τρεις διαστάσεις του. Ο κώνος έχει ακτίνα 1 στην βάση του και ύψος 2, με την κορυφή του στο 1 και την βάση του στο -1. Ο κώνος έχει δυο μέρη: τις πλευρές και τον βάση.

 Ο κώνος μετασχηματίζεται με βάση τον ισχύοντα μετασχηματισμό και σχεδιάζεται με τα κατάλληλα υλικά και συστατικά. Αν η σύνδεση των κατάλληλων υλικών γίνεται ανά τμήμα (PER_PART) ή ανά τμήμα που έχει δείκτη (PER_PART_INDEXED), το πρώτο κατάλληλο υλικό χρησιμοποιείται για τις πλευρές, και το δεύτερο για την βάση. Αλλιώς, το πρώτο υλικό χρησιμοποιείται για ολόκληρο τον κώνο. Η δημιουργία ενός κώνου είναι διαφορετική στις πλευρές και την βάση του. Στις πλευρές, η δημιουργία του περιβλήματος, αντίθετα με τους δείκτες του ρολογιού (από πάνω), αρχίζει από την πίσω πλευρά του κώνου. Υπάρχει μια κάθετη γραμμή που κάνει διατομή στην επίπεδη διαφάνεια ΥΖ. Από την βάση, ένας κύκλος αποκόβεται από το ορθογώνιο και εφαρμόζεται στο βασικό κύκλο του κώνου. Η δομή εμφανίζεται από την δεξιά πλευρά όταν η κορυφή του κώνου περιστρέφεται προς την κατεύθυνση του άξονα Ζ.

PARTS ( Τμήματα )

          SIDES ( Οι πλευρές )

          BOTTOM (Η κυκλική βάση )

         ALL (Όλα τα τμήματα )

FILE FORMAT/DEFAULTS

         Cone {

                  Parts ALL # SFBitMask

                  bottomRadius 1 # SFFloat

                  height 2 # SFFloat

                 }
 
 

Coordinate3 (συντεταγμένες )

Αυτός ο κόμβος καθορίζει μια ομάδα τρισδιάστατων συντεταγμένων για να χρησιμοποιηθούν διαδοχικά από τον δείκτη πρόσοψης

(IndexedFaceSet), τον δείκτη γραμμής (IndexedLineSet), ή δείκτη σημείου (PointSet) κόμβου. Αυτός ο κόμβος δεν παράγει ένα ορατό αποτέλεσμα κατά την διάρκεια της εκτέλεσης, απλά αντικαθιστά τις τρέχουσες συντεταγμένες στο στάδιο της διαχείρισης για να χρησιμοποιηθούν από διαδοχικούς κόμβους.

FILE FORMAT/DEFAULTS (δήλωση προγράμματος)

          Coordinate3 {

                              point 0 0 0 # MFVec3f

                               }
 
 

Cube (κύβος)

Αυτός ο κόμβος αντιπροσωπεύει ένα κύβο ευθυγραμμισμένο με τους άξονες συντεταγμένων . Ο κύβος έχει κέντρο στο (0, 0, 0), και καταμετράει δυο μονάδες σε κάθε διάσταση, από το -1 έως το 1. Ο κύβος μετασχηματίζεται από τον ισχύοντα μετασχηματισμό και σχεδιάζεται με τα κατάλληλα υλικά και συστατικά. Αν η σύνδεση των κατάλληλων υλικών είναι ανά τμήμα (PER_PART , ανά τμήμα με δείκτη (PER_PART_INDEXED), αν πρόσοψη (PER_FACE) ή ανά πρόσοψη με δείκτη (PER_FACE_INDEXED), τα υλικά θα περικλείονται στις προσόψεις του δείκτη με αυτή την σειρά : μπροστινό (+Ζ), πίσω (-Ζ), αριστερό (-Χ), δεξιό (+Χ), κορυφή (+Υ) και πάτος (-Υ).


 
 

Οι δομές εφαρμόζονται ατομικά σε κάθε πρόσοψη του κύβου. Ολόκληρη η δομή εμφανίζεται σε κάθε πρόσοψη. Από την μπροστά, πίσω, δεξιά και αριστερή πλευρά του κύβου, η δομή εφαρμόζεται από την δεξιά πλευρά. Από την κορυφή, η δομή εμφανίζεται από την δεξιά πλευρά όταν η κορυφή του κύβου έχει κλίση προς την κάμερα. Στην βάση, η δομή εμφανίζεται από την δεξιά πλευρά όταν η κορυφή του κύβου έχει κλίση προς τον άξονα Ζ.

FILE FORMAT/DEFAULTS (δήλωση προγράμματος)

          Cube {

                   Width (πλάτος) 2 # SFFloat

                   Height (ύψος) 2 # SFFloat

                Depth (βάθος) 2 # SFFloat

                  }
 
 

Cylinder (κύλινδρος)


 
 

Αυτός ο κόμβος αντιπροσωπεύει ένα απλό κύλινδρο με κέντρο γύρω από τον άξονα Υ. Ο κύλινδρος έχει κέντρο στο (0, 0, 0) και καθορισμένη διάσταση από -1 έως 1 και στις τρεις διαστάσεις. Ο κύλινδρος έχει τρία μέρη : τις πλευρές, την κορυφή( Υ=+1 ) και τον πάτο( Υ=-1 ). Μπορείτε να χρησιμοποιήσετε τα πεδία ακτίνας και ύψους για να δημιουργήσετε ένα κύλινδρο με διαφορετικό μέγεθος. Ο κύλινδρος μετασχηματίζεται με τον ισχύοντα μετασχηματισμό και σχεδιάζεται με τα κατάλληλα υλικά και συστατικά.

Αν η σύνδεση των υλικών είναι ανά τμήμα (PER_PART) ή ανά τμήμα δείκτη (PER_PART_INDEXED), το πρώτο υλικό χρησιμοποιείται για τις πλευρές του κυλίνδρου, το δεύτερο χρησιμοποιείται για την κορυφή και το τρίτο χρησιμοποιείται για τον βάση. Αλλιώς, το πρώτο υλικό χρησιμοποιείται για όλο τον κύλινδρο.

Όταν δημιουργείται ένας κύλινδρος, υπάρχει διαφορά στις πλευρές, στην κορυφή και στην βάση. Στις πλευρές, το περίβλημα της δομής αντίθετα με τους δείκτες του ρολογιού (από πάνω), αρχίζει από την πίσω πλευρά του κυλίνδρου. Υπάρχει μια κάθετη γραμμή στην πίσω πλευρά, που κάνει διατομή στο επίπεδο ΥΖ. Από την κορυφή έως την βάση, ένας κύκλος αποκόβεται από την ορθογώνιο και εφαρμόζεται στον κύκλο στην κορυφή ή στον βάση. Η δομή της κορυφής εμφανίζεται από την δεξιά πλευρά όταν η κορυφή του κυλίνδρου έχει κλίση προς τον άξονα +Ζ, και η δομή της βάσης εμφανίζεται από την δεξιά πλευρά όταν η κορυφή του κυλίνδρου έχει κλίση προς τον άξονα -Ζ.

PARTS

         SIDES (Το κυλινδρικό τμήμα)

         TOP (Η κορυφή της κυκλικής πρόσοψης)

         BOTTOM (Η βάση της κυκλικής πρόσοψης)

         ALL (Όλα τα τμήματα)

FILE FORMAT/DEFAULTS (δήλωση προγράμματος)

          Cylinder {

                        parts ALL # SFBitMask

                        radius 1 # SFFloat

                       height 2 # SFFloat

                      }
 
 

DirectionalLight (κατευθυντικός φωτισμός)


 
 

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

FILE FORMAT/DEFAULTS (δήλωση προγράμματος)

          DirectionalLight {

                                   on (άνοιγμα) TRUE # SFBool

                                   intensity (ένταση) 1 # SFFloat

                                   color (χρώμα) 1 1 1 # SFColor

                                   direction (κατεύθυνση) 0 0 0 # SFVec3f

                                   }
 
 

FontStyle (στυλ γραμματοσειράς)


 
 

Αυτός ο κόμβος καθορίζει το στυλ της γραμματοσειράς που χρησιμοποιείται από όλα τα διαδοχικά AsciiText (κείμενα Ascii). Καθορίζονται μόνο τα χαρακτηριστικά της γραμματοσειράς. Εξαρτάται από τον browser η ανάθεση συγκεκριμένων γραμματοσειρών σε διάφορους συνδυασμούς χαρακτηριστικών. Το μέγεθος του πεδίου και το ύψος των αντικειμένων που φωτοσκιάζονται καθορίζει την κάθετη απόσταση των γειτονικών γραμμών του κειμένου.
 
 

FAMILY (οικογένεια)

            SERIF (στυλ serif, όπως TimesRoman)

           SANS (στυλ Sans Serif, όπως τα Helvetica)

            TYPEWRITER (στυλ σταθερού βαθμού, όπως τα Courier)

STYLE

         NONE ( δεν γίνονται μετατροπές στην οικογένεια )

          BOLD (οικογένεια έντονων )

          ITALIC (οικογένεια πλάγιων ή διαγώνιων)
 
 

FILE FORMAT/DEFAULTS (δήλωση προγράμματος )

          FontStyle {

                          size 10 # SFFloat

                          family SERIF # SFEnum

                          STYLE NONE # SFBitMASK

                         }
 
 

Group (ομάδα)

Αυτός ο κόμβος καθορίζει την βασική κατηγορία για όλους τους κόμβους ομάδων. Η ομάδα είναι ένας κόμβος που περιέχει μια διατεταγμένη λίστα από κόμβους παιδιά. Αυτός ο κόμβος είναι απλά ένας μεταφορέας για τους κόμβους παιδιά και δεν μεταβάλλει την δήλωση τους με οποιονδήποτε τρόπο. Κατά τη διάρκεια της διαδικασίας τα δεδομένα για ένα παιδί περνιούνται σε κάθε διαδοχικό παιδί και μετά στους γονείς της ομάδας (η ομάδα δεν προωθεί ή αναπηδά τις δηλώσεις όπως κάνει ο separator).

FILE FORMAT/DEFAULTS (δήλωση προγράμματος)

          Group {

          }

IndexedFaceSet (ομάδα πρόσοψης με δείκτη)
 
 


 
 

Αυτός ο κόμβος παρουσιάζει ένα τρισδιάστατο σχήμα κατασκευασμένο από προσόψεις (πολύγωνα) και κορυφές εγκαταστημένες στις συντεταγμένες που ισχύουν. Η ομάδα πρόσοψης με δείκτη δηλώνει το πεδίο του δείκτη συντεταγμένων για να καθορίσει την πρόσοψη του πολυγώνου. Ένας δείκτης από -1 δηλώνει ότι η κατάλληλη πρόσοψη εισήχθη και ότι αρχίζειη επόμενη. Οι κορυφές των προσόψεων μετασχηματίζονται από την ισχύοντα μετασχηματισμό. Η μεταχείριση των κατάλληλων υλικών και η σύνεση των καθέτων είναι όπως ακολουθεί : οι ανά τμήμα (PER_PART) και ανά πρόσοψη (PER_FACE) συνδέσεις καθορίζουν υλικό ή κάθετο για κάθε πρόσοψη. Η ανά κορυφή (PER_VERTEX) σύνδεση καθορίζει ένα υλικό ή κάθετο για κάθε κορυφή. Οι συνδέσεις του δείκτη αντιστοιχίας είναι οι ίδιες, όπως αυτές που χρησιμοποιούνται στις δηλώσεις του δείκτη υλικών ή του δείκτη καθέτων. Η σύνδεση του προκαθορισμένου υλικού είναι η ίδια παντού. Η σύνδεση των προκαθορισμένων καθέτων είναι ίδια με του δείκτη ανά κορυφή (PER_VERTEX_INDEXED). Αν υπάρχουν ανεπαρκείς δηλώσεις για τις κάθετους, οι κάθετοι των κορυφών θα δημιουργούνται αυτόματα. Οι ασαφείς συντεταγμένες (όπως καθορίζονται στις συντεταγμένες δομών) μπορούν να μεταπηδούν στις κορυφές ενός σχήματος με την χρησιμοποίηση των δηλώσεων του πεδίου των συντεταγμένων των δομών. Όπως μαζί με όλα τα σχήματα που είναι βασισμένα σε κορυφές, αν υπάρχει μια ισχύουσα δομή μα δεν προσδιορίζονται συντεταγμένες της δομής αυτής, μια προκαθορισμένη σχεδίαση συντεταγμένων υπολογίζεται χρησιμοποιώντας το κουτί σχεδίασης του σχήματος.

Η μεγαλύτερη διάσταση του κουτιού σχεδίασης καθορίζει τις συντεταγμένες S, και η επόμενη μεγαλύτερη καθορίζει τις συντεταγμένες Τ. Η τιμή των συντεταγμένων S κυμαίνεται από 0 έως 1,από το ένα άκρο του κουτιού σχεδίασης ως το άλλο. Οι συντεταγμένες Τ κυμαίνονται μεταξύ του 0 και της αναλογίας της δεύτερης μεγαλύτερης διάστασης του κουτιού σχεδίασης με την μεγαλύτερη διάσταση.

Σημείωση : να είστε σίγουροι ότι οι δηλώσεις που περιέχονται στο δείκτη συντεταγμένων, στο δείκτη υλικών, στο δείκτη καθέτων και στο πεδίο του δείκτη των συντεταγμένων των δομών θεμελιώνονται με σεβασμό στις εγκάρσιες δηλώσεις, αλλιώς θα προκύψουν λάθη.

FILE FORMAT/DEFAULTS (δήλωση προγράμματος)

          IndexedFaceSet {

                                    coordIndex 0 # MFLong

                                    materialIndex -1 # MFLong

                                    normalIndex -1 # MFLong

                                    textureCoordIndex -1 # MFLong

                                   }
 
 

IndexedLineSet (δείκτης γραμμών ομάδας)


 
 
 
 

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

Ο δείκτης γραμμών ομάδας χρησιμοποιεί τις δηλώσεις μέσα στο πεδίο του δείκτη συντεταγμένων του για να καθορίσει το πολύγραμμο. Ένας δείκτης από -1 δηλώνει ότι το τρέχων πολύγραμμο τελείωσε και ότι το επόμενο αρχίζει. Οι συντεταγμένες της ομάδας γραμμών μετασχηματίζονται από τον ισχύοντα μετασχηματισμό. Η μεταχείριση του κατάλληλου υλικού και η σύνδεση των καθέτων είναι όπως ακολουθεί : η ανά τμήμα (PER_PART) σύνδεση καθορίζει το υλικό ή την κάθετο για κάθε ευθύγραμμο τμήμα της γραμμής. Η ανά πρόσοψη (PER_FACE) σύνδεση καθορίζει ένα υλικό ή μια κάθετο για κάθεπολύγραμμο. Η ανά κορυφή (PER_VERTEX) καθορίζει ένα υλικό ή μια κάθετο για κάθε κορυφή. Η σύνδεση του δείκτη αντιστοιχίας είναι η ίδια, αλλά χρησιμοποιεί τις δηλώσεις του δείκτη υλικών ή του δείκτη καθέτων. Η σύνδεση του προκαθορισμένου υλικού είναι η ίδια παντού. Η σύνδεση των προκαθορισμένων κάθετων είναι ίση με τον δείκτη ανά κορυφή (PER_VERTEX_INDEXED), αν υπάρχουν ανεπαρκείς κάθετοι στις δηλώσεις, οι γραμμές θα σχεδιαστούν ανόμοια. Επίσης ισχύουν οι ίδιοι κανόνες για την δημιουργία συντεταγμένων δομών όπως στους δείκτες πρόσοψης ομάδων.

FILE FORMAT/DEFAULTS (δήλωση προγράμματος)

         IndexedLineSet {

                                  coordIndex 0 # MFLong

                                  materialIndex -1 # MFLong

                                  normalIndex -1 # MFLong

                                  textureCoordIndex -1 # MFLong

                                 }
 
 

Info (πληροφορία)

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

Info {

       string ¨<Undefine Info ¨ # SFString

      }
 
 

LOD (φόρτωση)

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

Το προκαθορισμένο κεντρικό σημείο του LOD μετασχηματίζεται από τον ισχύοντα μετασχηματισμό μέσα στον παγκόσμιο ιστό και υπολογίζεται η απόσταση από το κέντρο μετασχηματισμού έως το ορατό σημείο του παγκόσμιου ιστού. Αν η απόσταση είναι μικρότερη από την πρώτη τιμή του πίνακα βεληνεκούς, τότε το πρώτο παιδί της ομάδας LOD σχεδιάζεται. Αν είναι μεταξύ της πρώτης και της δεύτερης τιμής του πίνακα βεληνεκούς, το δεύτερο παιδί σχεδιάζεται κ.τ.λ. Αν υπάρχουν Ν τιμές στον πίνακα βεληνεκούς, η ομάδα LOD θα πρέπει να έχει Ν+1 παιδιά. Αναφερόμενοι σε πολύ λίγα παιδιά θα έχει σαν αποτέλεσμα το τελευταίο παιδί να χρησιμοποιείται συνεχώς για τα χαμηλότερα επίπεδα καταγραφών. Αν καθορίζονται πολλά παιδιά, τα επιπλέον παιδιά θ’ αγνοούνται. Κάθε τιμή του πίνακα βεληνεκούς θα πρέπει να είναι μικρότερη από την προηγούμενη τιμή, αλλιώς θα έχουμε λάθος αποτελέσματα.

FILE FORMAT/DEFAULTS (δήλωση προγράμματος)

          LOD {

                   range(ακτίνα) [ ] # MFFloat

                   center(κέντρο) 0 0 0 # SFVec3f

                  }
 
 

Material (υλικό)

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

FILE FORMAT/DEFAULTS (δήλωση προγράμματος)

          Material {

                          ambientColor (χρώμα περιβάλλοντος) 0.2 0.2 0.2 # MFColor

                          diffuseColor (χρώμα διάχυσης) 0.8 0.8 0.8 # MFColor

                          specularColor (χρώμα κατόπτρου) 0 0 0 # MFColor

                          emissiveColor (χρώμα ακτινοβολίας) 0 0 0 # MFColor

                          shininess (φωτεινότητα) 0.2 # MFFloat

                          transparency (διαφάνεια) 0 # MFFloat

                         }
 
 

MaterialBinding (σύνδεση υλικών)

Αυτός ο κόμβος καθορίζει πως τα κατάλληλα υλικά συνδέονται στα σχήματα που ακολουθούν στις εικόνες του γραφήματος. Κάθε κόμβος σχήματος μπορεί να ερμηνεύει τις συνδέσεις διαφορετικά. Το κατάλληλο υλικό πάντα έχει μια βασική τιμή, που καθορίζεται από την πρώτη τιμή όλων των πεδίων υλικών. Εφόσον τα πεδία υλικών μπορούν να έχουν πολλαπλές τιμές, η σύνδεση καθορίζει πως αυτές οι τιμές θα διανεμηθούν πάνω στο σχήμα. Οι συνδέσεις για τις προσόψεις και τις κορυφές είναι σημαντικές μόνο για τα σχήματα που είναι κατασκευασμένα από προσόψεις και κορυφές. Παρόμοια, οι δείκτες σύνδεσης χρησιμοποιούνται μόνο από σχήματα που επιτρέπουν την τοποθέτηση δεικτών. Όταν περιορίζονται οι πολλαπλές τιμές του υλικού, οιτιμές επαναλαμβάνονται, βασισμένες στην περίοδο των συστατικών των υλικών με τις περισσότερες τιμές. Για παράδειγμα, ο ακόλουθος πίνακας δείχνει τις τιμές που χρησιμοποιούνται όταν επαναλαμβάνεται ένα υλικό με δύο χρώματα περιβάλλοντος, τρία χρώματα διάχυσης, και ένα από όλα τα άλλα συστατικά του κατάλληλου υλικού (η περίοδο γι’ αυτό το υλικό είναι 3):

(υλικό) (περιβάλλοντος) (διάχυσης) (άλλα)

Material Ambient color Diffuse color Other

0 0 0 0

1 1 1 0

2 1 2 0

3 (ίδιο με το 0) 0 0 0

           BINDINGS

                    DEFAULT (χρησιμοποιεί προκαθορισμένη σύνδεση)

                    OVERALL (όλο το αντικείμενο έχει το ίδιο υλικό)

                    PER_PART (ένα υλικό για κάθε τμήμα του αντικειμένου)

                    PER_PART_INDEXED (ένα υλικό για κάθε τμήμα με δείκτη)

                    PER_FACE (ένα υλικό για κάθε πρόσοψη του αντικειμένου)

                    PER_FACE_INDEXED (ένα υλικό για κάθε πρόσοψη με δείκτη)

                    PER_VERTEX (ένα υλικό για κάθε κορυφή του αντικειμένου)

                    PER_VERTEX_INDEXED (ένα υλικό για κάθε κορυφή με δείκτη)

FILE FORMAT/DEFAULTS (δήλωση προγράμματος)

          MaterialBinding {

                                   value DEFAULT # SFEnum

                                   }

 MatrixTransform (μήτρα μετασχηματισμού)

Αυτός ο κόμβος καθορίζει ένα τρισδιάστατο γεωμετρικό μετασχηματισμό με μία μήτρα 4x4. Σημειώστε ότι μερικές μήτρες (όπως οι μοναδιαίες) μπορεί να έχουν λάθος αποτελέσματα.

FILE FORMAT/DEFAULTS (δήλωση προγράμματος)

          MatrixTransform {

                                         matrix 1 0 0 0 # SFMatrix

                                         0 1 0 0

                                         0 0 1 0

                                         0 0 0 1

                                        }

Normal (κάθετος)

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

FILE FORMAT/DEFAULTS (δήλωση προγράμματος)

           Normal {

                         vector 0 0 1 # MFVec3f

                        }

NormalBinding (σύνδεση κάθετων)

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

BINDINGS (δεσίματα)

           DEFAULT (χρησιμοποιεί προκαθορισμένη σύνδεση)

           OVERALL (ολόκληρο το αντικείμενο έχει την ίδια κάθετο) PER_PART (μια κάθετο για κάθε τμήμα του αντικειμένου)

           PER_PART_INDEXED (μια κάθετο για κάθε τμήμα με δείκτη)

           PER_FACE (μια κάθετο για κάθε πρόσοψη του αντικειμένου)

          PER_FACE_INDEXED (μια κάθετο για κάθε πρόσοψη με δείκτη)

          PER_VERTEX (μια κάθετο για κάθε κορυφή του αντικειμένου)

          PER_VERTEX_INDEXED (μια κάθετο για κάθε κορυφή με δείκτη)

FILE FORMAT/DEFAULTS (δήλωση προγράμματος)

          NormalBinding {

                                   value DEFAULT # SFEnum

                                  }
 
 

OrthographicCamera (ορθογώνια κάμερα)

Μια ορθογώνια κάμερα καθορίζει μια παράλληλη προβολή από ένα σημείο. Αυτή η κάμερα δεν μικραίνει τα αντικείμενα με την απόσταση, όπως κάνει η κάμερα με το οπτικό γυαλί. Η παρακολούθηση του ήχου από μία ορθογώνια κάμερα είναι ένα ορθογώνιο παραλληλόγραμμο (ένα κουτί). Από πριν, η κάμερα τοποθετείται στο (0, 0, 1) και βλέπει κατά μήκος του αρνητικού άξονα Ζ. Η τοποθέτηση και το πεδίο προσανατολισμού μπορούν να χρησιμοποιηθούν για την αλλαγή αυτών των τιμών. Το πεδίο ύψους καθορίζει το συνολικό ύψος του ήχου.

Μία κάμερα μπορεί να τοποθετηθεί σε ένα κόμβο VRML για να καθορίσει την αρχική θέση του θεατή προς τον κόσμο που εισάγεται. Ο browser της VRML τυπικά τροποποιεί την κάμερα ώστε να επιτρέπει στον χρήστη να κινηθεί μέσα σε ένα εικονικό κόσμο. Οι κάμερες επηρεάζονται από τον μετασχηματισμό που ισχύει, έτσι μπορούμε να καθορίσουμε την θέση μιας κάμερας με το να τοποθετήσουμε τον κόμβο μετασχηματισμού πριν από αυτή στην εικόνα του γραφήματος. Η προκαθορισμένη θέση και ο προσανατολισμός μίας κάμερας είναι στο (0, 0, 1) καθώς κοιτάμε κατά μήκος του αρνητικού άξονα Ζ.
 
 
 
 

FILE FORMAT/DEFAULTS (δήλωση προγράμματος)

          OrthographicCamera {

                                              position (θέση) 0 0 1 # SFVec3f

                                              orientation (προσανατολισμός) 0 0 1 0 # SFRotation

                                              focalDistance (απόσταση εστίασης) 5 # SFFloat

                                              height (ύψος) 2 # SFFloat

                                            }
 
 

PerspectiveCamera (προ κάμερα)

Μια προ κάμερα καθορίζει μια οπτική προβολή από ένα σημείο. Η παρακολούθηση ήχου σε μία προ κάμερα είναι μια κομμένη δεξιά πυραμίδα. Προκαθορισμένα, η κάμερα τοποθετείται στο (0, 0, 1) και κοιτάζει κατά μήκος του αρνητικού άξονα Ζ. Η θέση και το πεδίο προσανατολισμού, μπορούν να χρησιμοποιηθούν για ν’ αλλάξουν αυτές τις τιμές. Το πεδίο της γωνίας του ήχου καθορίζει την συνολική κάθετη γωνία του ήχου.

FILE FORMAT/DEFAULTS (δήλωση προγράμματος)

           PerspectiveCamera {

                                              position (θέση) 0 0 1 # SFVec3f

                                              orientation (προσανατολισμός) 0 0 1 0 # SFRotation

                                              focalDistance (απόσταση εστίασης) 5 # SFFloat

                                              heightAngle (κλίση ύψους) 0.785398 # SFFloat

                                            }

PointLight (σημείο φωτισμού)


 
 
 
 

Αυτό ο κόμβος καθορίζει μια πηγή φωτισμού σε μια σταθερή τρισδιάστατη τοποθεσία. Μια πηγή φωτισμού φωτίζει το ίδιο προς όλες τις κατευθύνσεις. Γι’ αυτό είναι μη κατευθυντική. Ένας κόμβος φωτισμού καθορίζει μια πηγή φωτισμού που μπορεί να επηρεάσει διαδοχικά σχήματα σε μια εικόνα γραφήματος, εξαρτωμένου από το ισχύων στυλ φωτισμού. Οι πηγές φωτισμού επηρεάζονται από τους ισχύοντες μετασχηματισμούς. Μια πηγή φωτισμού κάτω από έναν separator δεν επηρεάζει κανένα αντικείμενο έξω από τον separator.
 
 

FILE FORMAT/DEFAULTS (δήλωση προγράμματος)

          PointLight {

                             on (άνοιγμα) TRUE # SFBool

                            intensity (ένταση) 1 # SFFloat

                            color (χρώμα) 1 1 1 # SFColor

                            location (τοποθέτηση) 0 0 1 # SFVec3f

                         }
 
 

PointSet (σετ σημείων)

Αυτός ο κόμβος αντιπροσωπεύει ένα σετ από σημεία που είναι εγκαταστημένα στις ισχύοντες συντεταγμένες. Το σετ σημείων χρησιμοποιεί τις ισχύουσες συντεταγμένες με την σειρά, αρχίζοντας από τον δείκτη που καθορίζεται από το πεδίο του δείκτη έναρξης. Ο αριθμός των σημείων μέσα στο σετ καθορίζεται από το πεδίο αριθμού σημείων. Μια τιμή -1 γι’ αυτό το πεδίο, δηλώνει ότι όλες οι εναπομείναντες τιμές μέσα στις ισχύουσες συντεταγμένες θα χρησιμοποιηθούν ως σημεία.

Οι συντεταγμένες των σημείων μετασχηματίζονται από τον κατάλληλο μετασχηματισμό. Τα σημεία σχεδιάζονται με την ισχύοντα δομή και υλικά. Η μεταχείριση των κατάλληλων υλικών και η σύνδεση των κάθετων είναι η ακόλουθη : η ανά τμήμα (PER_PART), η ανά πρόσοψη (PER_FACE) και η ανά κορυφή (PER_VERTEX) σύνδεση εφαρμόζει ένα υλικό ή μια κάθετο σε κάθε σημείο. Η σύνδεση του προκαθορισμένου υλικού είναι η ίδια γενικά. Η σύνδεση των προκαθορισμένων κάθετων είναι ίδια με την ανά κορυφή (PER_VERTEX). Ο δείκτης έναρξης χρησιμοποιείται επίσης για υλικά ή κάθετους όταν η σύνδεση δηλώνει ότι πρέπει να χρησιμοποιούνται ανά κορυφή.

FILE FORMAT/DEFAULTS (δήλωση προγράμματος)

          PointSet {

                         startIndex (δείκτης έναρξης) 0 # SFLong

                         numPoints (αριθμός σημείου) -1 # SFLong

                       }
 
 

Rotation (περιστροφή)


 
 

Α. Ενα παγκόσμιο σύστημα συντεταγμένων. Β. Ενα σύστημα συντεταγμένων με περιστροφή 30 μοιρών. Γ. Ενα αχήμα πάνω στις νέες συντεταγμένες.


 
 
 
 

Αυτός ο κόμβος καθορίζει μια τρισδιάστατη περιστροφή σε ένα αυθαίρετο άξονα

μέσω της αρχής συντεταγμένων.

Η περιστροφή συμπεριλαμβάνεται μέσα στους ισχύων μετασχηματισμούς, που εμφανίζονται σε διαδοχικά σχήματα.

FILE FORMAT/DEFAULTS (δήλωση προγράμματος)

          Rotation {

                        rotation 0 0 1 0 # SFRotation

                        }

Scale (κλίμακα)


 
 
 
 
 

Α. Ενα σύστημα κλιμακωμένο κατά το ήμισυ. Β.ενα σχήμα πάνω στις νέες συντεταγμένες


 
 

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

FILE FORMAT/DEFAULTS (δήλωση προγράμματος)

         Scale {

                   scaleFactor 1 1 1 # SFVec3f

                   }
 
 

Separator (συσκευή διαχωρισμού)

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

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

CULLING ENUMS

        ON (πάντα προσπαθεί να επιλέξει τον ορατό ήχο)

        OFF (ποτέ δεν προσπαθεί να επιλέξει τον ορατό ήχο)

        AUTO (η εφαρμογή καθορίζει την συμπεριφορά της επιλογής)

FILE FORMAT/DEFAULTS (δήλωση προγράμματος)

         Separator {

                         renderCulling AUTO # SFEnum

                         }
 
 

ShapeHints (υποδείξεις σχημάτων)

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

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

Ο κόμβος υπόδειξης σχημάτων επηρεάζει επίσης το πώς δημιουργούνται οι προκαθορισμένες κάθετοι. Όταν ένα σετ δεικτών πρόσοψης πρέπει να δημιουργήσει προκαθορισμένες κάθετους, χρησιμοποιεί το πεδίο πτυχής της γωνίας για να καθορίσει ποιες άκρες πρέπει να σκιαγραφηθούν απαλά και ποιες άλλες πρέπει να έχουν αιχμηρές πτυχές. Η γωνία πτυχής είναι η γωνία ανάμεσα στις κάθετες της επιφάνειας και στα γειτονικά πολύγωνα. Για παράδειγμα, μια πτυχή γωνιάς 5 ακτινίων (η προκαθορισμένη τιμή) σημαίνει ότι μία άκρη ανάμεσα στις προσόψεις δυο γειτονικών πολύγωνων θα είναι απαλά φωτοσκιασμένη αν οι κάθετοι των δύο προσόψεων σχηματίζουν μια γωνία που είναι μικρότερη από 5 ακτίνια (περίπου 30 μοίρες).

VERTEX ORDERING ENUMS

             UKNOWN_ORDERING (η τοποθέτηση των κορυφών είναι άγνωστη)

             CLOCKWISE (οι κορυφές των προσόψεων τοποθετούνται σύμφωνα με την φορά του ρολογιού, απ’ έξω)

             COUNTERCLOCKWISE (αντίθετα με τους δείκτες του ρολογιού)

             SHAPE TYPE ENUMS

             UKNOWN_SHAPE_TYPE (τίποτα δεν είναι γνωστό για το σχήμα)

             SOLID (το σχήμα περιέχει ένα ήχο)

FACE TYPE ENUMS

            UKNOWN_FACE_TYPE (τίποτα δεν είναι γνωστό για τις προσόψεις)

            CONVEX (όλες οι προσόψεις είναι κυρτές)

FILE FORMAT/DEFAULTS (δήλωση προγράμματος)

         ShapeHints {

                            vertexOrdering UNKNOWN_ORDERING # SFEnum

                            shapeType UNKNOWN_SHAPE_TYPE # SFEnum

                            faceType CONVEX # SFEnum

                           creaseAngle 0.5 # SFFloat

                          }
 
 

Sphere (σφαίρα)


 
 
 
 

Αυτός ο κόμβος αντιπροσωπεύει μια σφαίρα. Προκαθορισμένα η σφαίρα τοποθετείται στην αρχή των συντεταγμένων και έχει μια ακτίνα 1. Η σφαίρα μετασχηματίζεται από τον κατάλληλο μετασχηματισμό και σχεδιάζεται με την κατάλληλη δομή και τα υλικά. Μια σφαίρα δεν έχει προσόψεις ή τμήματα, επομένως, η σφαίρα αγνοεί την σύνδεση των υλικών και των κάθετων, χρησιμοποιώντας το πρώτο υλικό για ολόκληρη τη σφαίρα και τις δικές της καθέτους. Όταν δημιουργείται μία σφαίρα, η δομή καλύπτει ολόκληρη την επιφάνεια, περιτυλίγοντάς την αντίθετα με τους δείκτες του ρολογιού από το πίσω μέρος της σφαίρας. Η σφαίρα έχει μια διαχωριστική γραμμή των στρωμάτων της στην πίσω πλευρά στο επίπεδο ΧΖ.
 
 

FILE FORMAT/DEFAULTS (δήλωση προγράμματος)

          Sphere {

                      radius (ακτίνα) 1 # SFFloat

                      }
 
 

SpotLight (Σημειακός προβολέας)


 
 

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

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

FILE FORMAT/DEFAULTS (δήλωση προγράμματος)

          SpotLight {

                          on (άνοιγμα) TRUE # SFBool

                          intensity (ένταση) 1 # SFFloat

                          color (χρώμα) 1 1 1 # SFVec3f

                          location (τοποθεσία) 0 0 1 # SFVec3f

                          direction (κατεύθυνση) 0 0 -1 # SFVec3f

                          dropoffRate (ακτίνα πρόσπτωσης) 0 # SFFloat

                          cutoffAngle (ακτίνα γωνίας) 0.785398 # SFFloat

                         }
 
 

Switch (διακόπτης)

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

Το πεδίο αναζήτησης παιδιών καθορίζει τον δείκτη του παιδιού που θα μεταβληθεί, όπου το πρώτο παιδί έχει δείκτη 0.

Μία τιμή -1 σημαίνει ότι κανένα παιδί δεν θα μεταβληθεί. Μια τιμή -3 μεταβάλλει όλα τα παιδιά, κάνοντας τον διακόπτη να συμπεριφέρεται ακριβώς σαν μια κανονική ομάδα.

FILE FORMAT/DEFAULTS (δήλωση προγράμματος)

           Switch {

                       witchChild -1 # SFLong

                       }
 
 

Texture2 (δομή2)


 
 

Αυτός ο κόμβος ιδιότητας καθορίζει ένα χάρτη δομής και παραμέτρους γι’ αυτό τον χάρτη. Αυτός ο χάρτης χρησιμοποιείται για να εφαρμόσει την δομή σε διαδοχικά σχήματα.

Η δομή μπορεί να διαβαστεί από σαν URL από το πεδίο ονόματος αρχείου. Για να σταματήσουμε τη κατασκευή των σχημάτων, τοποθετούμε στο πεδίο ονόματος αρχείου ένα κενό αλφαριθμητικό (¨ ¨).


 
 
 
 

Οι δομές μπορούν επίσης να καθοριστούν εσωτερικά με το να θέσουμε το πεδίο εικόνας να περιέχει την πληροφορία της δομής. Με το να καθορίσουμε μαζί μια URL και μια εσωτερική πληροφορία θα οδηγήσει σε απροσδιόριστη συμπεριφορά.

WRAP ENUM

           REPEAT (επαναλαμβάνει την δομή έξω από την ακτίνα 0-1 των συντεταγμένων της δομής)

           CLAMP (επιβάλλει στις συντεταγμένες να απλώνονται μαζί με ακτίνα 0-1)

 FILE FORMAT/DEFAULTS (δήλωση προγράμματος)

          Texture2 {

                         filename (όνομα αρχείου) ¨ ¨ # SFString

                         image (εικόνα) 0 0 0 # SFImage

                         wrapS (περίβλημα S) REPEAT # SFEnum

                        wrapT (περίβλημα Τ) REPEAT # SFEnum

                        }
 
 

Texture2Transform (δομή2 μετασχηματισμός)

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

FILE FORMAT/DEFAULTS

          Texture2Transform {

                                           translation (μεταγλώττιση) 0 0 # SFVec2f

                                           rotation (περιστροφή) 0 # SFFloat

                                           scaleFactor (κλίμακα) 1 1 # SFVec2f

                                           center (κέντρο) 0 0 # SFVec2f

                                          }
 
 

TextureCoordinate2 (δομή συντεταγμένων2)

Αυτός ο κόμβος καθορίζει ένα σετ δυσδιάστατων συντεταγμένων για να χρησιμοποιηθούν στον χάρτη δομών για τις κορυφές των

σημείων, του δείκτη γραμμών ή του δείκτη πρόσοψης αντικειμένων. Αντικαθιστά τις ισχύοντες συντεταγμένες δομών στη δήλωση των αντανακλάσεων για να χρησιμοποιηθούν από τα σχήματα. Οι συντεταγμένες των δομών κυμαίνονται από 0 έως 1 κατά μήκος των δομών. Η οριζόντια συντεταγμένη, που καλείται S, καθορίζεται πρώτη, ακολουθούμενη από τις κατακόρυφες συντεταγμένες Τ.

FILE FORMAT/DEFAULTS (δήλωση προγράμματος)

          TextureCoordinate2 {

                                             point 0 0 # MFVec2f

                                             }
 
 

Transform (μετασχηματισμός)

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

FILE FORMAT/DEFAULTS

           Transform {

                          translation (μεταγλώττιση) 0 0 0 # SFVec3f

                          rotation (περιστροφή) 0 0 1 # SFRotation

                          scaleFactor (κλίμακα) 1 1 1 # SFVec3f

                          scaleOrientation (προσανατολισμός)0 0 1 # SFRotation

                          center (κέντρο) 0 0 0 # SFVec3f

                          }

ο κόμβος μετασχηματισμού

Transform {

                  translation T1

                   rotation R1

                  scaleFactor S

                 scaleOrientation R2

                 center T2

               }

είναι ισοδύναμο με την ακολουθία

Translation {translation T1}

Translation {translation T2}

Rotation {rotation R1}

Rotation {rotation R2}

Scale {ScaleFactor S}

Rotation {rotation -R2}

Translation {translation -T2}
 
 

TransformSeparator (μετασχηματισμός, διαχωριστής)

Αυτός ο κόμβος ομάδας είναι παρόμοιος με τον κόμβο του separator στο ότι σώζει την δήλωση πριν ανεβάσει εγκάρσια τα παιδιά του και τα’ αποθηκεύει μετέπειτα. Παρόλα αυτά, σώζει μόνο τον ισχύοντα μετασχηματισμό, όλες οι άλλες δηλώσεις παραμένουν όπως έχουν. Αυτός ο κόμβος μπορεί να είναι χρήσιμος για την τοποθέτηση μιας κάμερας , εφόσον οι μετασχηματισμοί στην κάμερα δεν θα επηρεάσουν την υπόλοιπη εικόνα, ακόμα και αν η κάμερα έχει οπτική επαφή με την εικόνα. Παρόμοια, αυτός ο κόμβος μπορεί να χρησιμοποιηθεί για να απομονώνει τους μετασχηματισμούς στις πηγές φωτός ή σε άλλα αντικείμενα.

FILE FORMA/DEFAULTS (δήλωση προγράμματος)

          TransformSeparator {

           }
 
 

Translation (μεταγλώττιση)

Αυτός ο κόμβος καθορίζει ένα μεταγλωττισμό από ένα τρισδιάστατο διάνυσμα.

FILE FORMAT/DEFAULTS

           Translation {

                              translation 0 0 0 # SFVec3f

                              }
 
 

WWWAnchor (άγκυρα δικτύου)
 
 


 
 

Α. Κλικάροντας με το ποντίκι στην πόρτα μεταφέρεστε σε ένα άλλο εικονικό κόσμο

Β. Μεταφερθήκατε σε ένα εικονικό κόσμο με σκαλοπάτια


 
 

 Ο κόμβος άγκυρας δικτύου φορτώνει μια νέα εικόνα μέσα σε ένα VRML browser όταν επιλέγεται ένα από τα παιδιά του. Ακριβώς όπως ένας χρήστης ¨επιλέγει¨ ένα παιδί της άγκυρας δικτύου, σε αυτό είναι ειδικευμένος ο browser της VRML. Τυπικά, με το να κλικάρουμε με το ποντίκι σε ένα από τα παιδιά του θα έχει ως αποτέλεσμα μέσα στη νέα εικόνα την αντικατάσταση της προηγούμενης εικόνας. Μια άγκυρα δικτύου με ένα κενό (¨ ¨) όνομα δεν κάνει τίποτα όταν επιλέγεται ένα από τα παιδιά της. Το όνομα είναι μια αυθαίρετη URL.

Η άγκυρα δικτύου συμπεριφέρεται σαν ένας separator, προωθώντας τις δηλώσεις μεταβλητών πριν μεταβάλλουν τα παιδιά της, και τα αναπηδάει αργότερα. Το πεδίο περιγραφής μέσα σε μια άγκυρα δικτύου επιτρέπει σε ένα φιλικό καθοδηγητή να χρησιμοποιηθεί σαν εναλλακτικός του URL στο πεδίο ονόματος. Ιδανικά, οι browser επιτρέπουν στον χρήστη να διαλέξει την περιγραφή, του URL ή και τα δυο να χρησιμοποιηθούν σαν υποψήφια άγκυρα του δικτύου.

Το πεδίο του χάρτη άγκυρας δικτύου είναι μια αριθμήσιμη τιμή που μπορεί να είναι κενή ή σημείο. Αν είναι σημείο τότε οι συντεταγμένες του σημείου, πάνω στο αντικείμενο που επέλεξε ο χρήστης, θα προστεθούν στο URL μέσα στο πεδίο ονόματος, με την σύνταξη

¨ ? x,y,z¨.

MAP ENUM

         NONE (δεν προσθέτει πληροφορία στην URL)

         POINT (προσθέτει τις συντεταγμένες του αντικειμένου στη URL)

FILE FORMAT/DEFAULTS (δήλωση προγράμματος)

          WWWAchor {

                              name (όνομα) ¨ ¨ # SFString

                              description (περιγραφή) ¨ ¨ # SFString

                              map (χάρτης) NONE # SFEnum

                             }

WWWInline (εσωτερική γραμμή δικτύου)


 
 

Α. Μια τραπεζαρία.[dinette.wrl] Β. Ενα τραπέζι. [table.wrl] Γ. Μια καρέκλα. [chair.wrl]


 
 

Το πεδίο εσωτερικής γραμμής δικτύου διαβάζει τα παιδιά του από παντού στο παγκόσμιο ιστό. Ακριβώς όταν ένα παιδί διαβάζεται δεν διευκρινίζεται. Το διάβασμα των παιδιών μπορεί να καθυστερήσει μέχρι το δίκτυο εσωτερικής γραμμής να εμφανιστεί στην πραγματικότητα. Ένα δίκτυο εσωτερικής γραμμής με ένα κενό όνομα δεν κάνει τίποτα. Το όνομα είναι ένα αυθαίρετο URL. Η επίδραση της αναφοράς σε ένα URL, που δεν ανήκει σε VRML, μέσα σε ένα δίκτυο εσωτερικής γραμμής δεν είναι γνωστή.

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

FILE FORMAT/DEFAULTS (δήλωση προγράμματος)

          WWWInline {

                               name (όνομα) ¨ ¨ # SFString

                               bboxSize (κουτί μεγέθους) 0 0 0 # SFVec3f

                               bboxCenter (κουτί κέντρου) 0 0 0 # SFVec3f

                              }
 
 

Instancing (τεκμηρίωση)

Ένας κόμβος μπορεί να είναι το παιδί σε περισσότερες από μια ομάδες. Αυτό καλείται ¨τεκμηρίωση¨ (όταν χρησιμοποιούμε το ίδιο τεκμήριο για ένα κόμβο πολλές φορές, καλείται ¨σύνδεση ψευδώνυμου¨ ή ¨πολλαπλές αναφορές¨ σε άλλα συστήματα), και πραγματοποιείται με την χρήση της λέξης κλειδί ¨USE¨.

Μαζί με τη λέξη κλειδί DEF καθορίζει ένα κόμβο ονόματος, και δημιουργεί μια απλή τεκμηρίωση αυτού. Η λέξη κλειδί USE δηλώνει ότι οι πιο πρόσφατα καθορισμένες τεκμηριώσεις θα πρέπει να χρησιμοποιηθούν ξανά. Αν αρκετοί κόμβοι έχουν πάρει το ίδιο όνομα, τότε το τελευταίο DEF συναντιέται πιο συχνά. Τα DEF/USE περιορίζονται σε ένα απλό αρχείο. Δεν υπάρχει μηχανισμός για την χρήση (USE) κόμβων που είναι DEF σε άλλα αρχεία.

Ένα όνομα πάει σε ένα αντικείμενο όταν συναντηθεί η DEF, και δεν βγαίνει από το αντικείμενο μέχρι μια άλλη DEF του ίδιου ονόματος ή αρχείου EOF συναντηθεί. Οι κόμβοι δεν μπορούν να μοιραστούν μεταξύ των αρχείων (δεν μπορεί να χρησιμοποιείται ένα κόμβο που είναι DEF μέσα σε ένα αρχείο στο οποίο αναφέρεται το δίκτυο εσωτερικής γραμμής). Για παράδειγμα, η διαχείριση αυτής της εικόνας θα έχει σαν αποτέλεσμα να σχεδιαστούν τρεις σφαίρες. Και οι δυο σφαίρες ονομάζονται ¨Joe¨, η δεύτερη (μικρότερη) σφαίρα σχεδιάζεται δυο φορές.

Separator {

                 DEF Joe Sphere { }

                 Translation {translation 2 0 0 } (μεταγλώττιση)

 Separator {

                  DEF Joe Sphere {radius .2} (ακτίνα)

                   Translation {translation 2 0 0}

                  }

USE Joe # radius .2

                 }
 
 

Extensibility (επεκτασιμότητα)

Οι επεκτάσεις στην VRML υποστηρίζονται από πεδία υποστήριξης που περιγράφονται από μόνα τους. Οι κόμβοι που δεν είναι μέρη της

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

Cube {

         fields [ SFFloat width, SFFloat height, SFFloat depth ] [πεδία]

         width 10 height 4 depth 3 [ πλάτος, ύψος, βάθος ]

        }

Ο καθορισμός των πεδίων για κόμβους που είναι μέρη αναγνωρισμένα από την VRLM δεν είναι λάθος. Οι αναλυτές VRML πρέπει να αγνοούν σιωπηλά τους καθορισμούς πεδίων.
 
 

Is-a relationships (συγγένειες Is-a )

Ένας νέος τύπος κόμβου μπορεί να είναι επίσης μια υπερομάδα ενός υπάρχοντος κόμβου που είναι τμήμα των καθιερωμένων. Σε αυτή την περίπτωση, αν μια υλοποίηση για τον καινούργιο τύπο κόμβου δεν μπορεί να βρεθεί. Ο νέος τύπος κόμβου μπορεί να έχει μια ασφαλή επεξεργασία σαν του υπάρχοντος κόμβου στον οποίο βασίζεται [ με κάποιες απώλειες λειτουργικότητας φυσικά ]. Για να το υποστηρίξουμε αυτό, οι νέοι τύποι κόμβων μπορούν να καθορίσουν ένα πεδίο αλφαριθμητικού MF που καλείται ‘isA’ και περιέχει τα ονόματα των τύπων των οποίων είναι υπερομάδα. Για παράδειγμα , ένας νέος τύπος υλικού που καλείται ΄΄Υλικό επέκτασης΄΄, που προσθέτει δείκτες διάθλασης σαν ιδιότητα υλικών, μπορεί να γραφτεί ως εξής:

ExtendedMaterial {

                              fields    [ MFString isA, MFFloat indexOfRefraction,

                                            MFColor ambientColor, MFColor diffuseColor,

                                           MFColor specularColor, MFColor emissiveColor,

                                           MFFloat shininess, MFFloat transparency ]

                             isA [ ‘Material’ ]

                             indexOfRefraction . 34

                            diffuseColor . 8 . 54 1

                          }

Οι πολλαπλές συγγένειες Is-a μπορούν να καθοριστούν με τη σειρά προτίμησης. Οι εφαρμογές αναμένεται να χρησιμοποιήσουν το πρώτο για το οποίο υπάρχει εφαρμογή.
 
 

An Example (παράδειγμα)

Αυτό είναι ένα πιο μακροσκελές παράδειγμα εικόνας VRML. Περιέχει ένα απλό μοντέλο ενός ίχνους φωτός αποτελούμενο από στοιχειώδη σχήματα. Προσθέτει τρεις τοίχους (φτιαγμένους από πολύγωνα ), και αναφέρεται σε ένα σχήμα που καθορίζεται αλλού ,από τους οποίους οι δυο φωτίζονται από σημειακό προβολέα. Το σχήμα συμπεριφέρεται σαν μια υπερσύνδεση σε κείμενο HTML.
 
 
 
 
 
 


 
 
 
 

# VRML V1.0 ascii

Separator {

        Separator { # Μία απλή γεωμετρία φωτισμού-εξερεύνησης:

                 Translation { translation 0 4 0 }

                 Separator {

                        Material { emissiveColor 0.1 0.3 0.3 }

                        Cube {

                            width 0.1

                            height 0.1

                            depth 4

                      }

                }

               R otation { rotation 0 1 0 1.57079 }

               Separator {

                       Material { emissiveColor 0.3 0.1 0.3 }

                       Cylinder {

                             radius 0.1

                             height .2

                      }

                }

               Rotation { rotation -1 0 0 1.57079 }

               Separator {

                        Material {emissiveColor 0.3 0.3 0.1 }

                        Rotation { rotation 1 0 0 1.57079 }

                        Translation { translation 0 -.2 0 }

                        Cone {

                               height .4

                               bottomRadius .2

                         }

                        Translation { translation 0 .4 0 }

                        Cylinder {

                                      radius 0.02

                                      height .4

                         }

                  }

         }

         SpotLight { # Light from above

                 location 0 4 0

                 direction 0 -1 0

                 intensity 0.9

                 cutOffAngle 0.7

          }

          Separator { # Wall geometry; just three flat polygons

                   Coordinate3 {

                                     point [

                                     -2 0 -2, -2 0 2, 2 0 2, 2 0 -2,

                                     -2 4 -2, -2 4 2, 2 4 2, 2 4 -2]

                     }

                    IndexedFaceSet {

                                  coordIndex [
                                  0, 1, 2, 3, -1,0, 4, 5,
                                  1, -1,0, 3, 7, 4, -1]

                     }

           }

           WWWAnchor { # A hyperlinked cow:

                        name ‘ http: / / www.foo.edu / CowProject / AboutCows.html’

                 Separator {

                      Translation { translation 0 1 0 }

                      WWWInline { # Reference another object

                             name ‘ http: / / www.foo.edu / 3Dobjects / cow. Wrl’

                       }

                  }

           }

 }
 
 

Browser Considerations (Μελέτη Browser)

Αυτή η ενότητα περιγράφει την ονομασία αρχείων και τους κανόνες ΜΙΜΕ που χρησιμοποιούνται για το χτίσιμο VRML browsers και διαμορφώνει τους WWW browsers για να δουλέψουνε μαζί.
 
 

File Extensions (Επεκτάσεις αρχείων)

Η επέκταση αρχείων για αρχεία VRML είναι .wrl.
 
 

MIME

Ο τύπος MIME για αρχεία VRML καθορίζεται ως εξής:

x-world / x-vrml

Ο κύριος τύπος MIME για περιγραφές τρισδιάστατων κόσμων είναι x-world. Ο κυριότερος τύπος MIME για κείμενα VRML είναι x-vrml. Άλλες περιγραφές τρισδιάστατων κόσμων, όπως ο oogl για το γεωμετρικό επίκεντρο της γλώσσας της αντικειμενοστραφής γεωμετρίας, ή iv, για SGI’s ανοικτό εφευρέτη τυποποίησης ASCII, μπορούν να υποστηριχθούν με τη χρήση διαφορετικών δευτερευόντων τύπων MIME.