Virtual Reality Modelling Language (VRML)

(Γλώσσα Περιγραφής Εικονικής Πραγματικότητας)

 

Τι είναι η γλώσσα VRML

 

Η γλώσσα VRML, είναι το standard για τρισδιάστατα γραφικά για το WWW. Ουσιαστικά πρόκειται για τον ορισμό ενός συγκεκριμένου τύπου αρχείου (file format), το οποίο περιέχει μια ASCII περιγραφή τρισδιάστατων σκηνών. Έτσι για παράδειγμα, μπορεί ο σχεδιαστής να δημιουργήσει την περιγραφή ενός δωματίου, ενός κτιρίου, κάποιας εκκλησίας ή της Ακρόπολης. Επιπλέον, μπορεί να ορίσει διάφορα σημεία-συνδέσμους, τα οποία οδηγούν σε κάποιο συγκεκριμένο URL (πιθανώς κάποια άλλη σκηνή ή κάποιο τυπικό έγγραφο WWW).

Βέβαια, πολλοί θα ισχυριστούν ότι το ίδιο αποτέλεσμα (και ίσως καλύτερο) μπορείς να έχει κανείς με μια απλή εικόνα ή ένα σχέδιο. Μπορεί δηλαδή κανείς να έχει σε μια WWW σελίδα μια ωραία εικόνα της Ακρόπολης, διάφορα σημεία της οποίας είναι ενεργά (σύνδεσμοι) και οδηγούν σε άλλες εικόνες ή σχετικό κείμενο. Η μεγάλη διαφορά όμως έγκειται στο γεγονός ότι μια VRML περιγραφή φτάνει (μέσω του Internet) στον browser του χρήστη ως ένα απλό ASCII αρχείο και στη συνέχεια ο browser αναλαμβάνει να κάνει το λεγόμενο rendering, δημιουργεί δηλαδή μια όψη (view) της σκηνής με βάση την ASCII περιγραφή. Αυτό σημαίνει ότι συνήθως χρειάζονται λιγότερα bytes για να περιγραφεί μια σκηνή. Το σημαντικότερο όμως είναι ότι ο browser μπορεί να αναλάβει να δείξει την ίδια σκηνή και από μια διαφορετική οπτική γωνία. Έχει έτσι τη δυνατότητα ο χρήστης, ουσιαστικά να κινηθεί μέσα στη σκηνή!

Η γλώσσα VRML σχεδιάστηκε για ικανοποιεί τις παρακάτω ανάγκες και απαιτήσεις :

 

·        Authorability. Να είναι δυνατό να αναπτυχθούν γεννήτριες εφαρμογών και επεξεργαστές (editors) καθώς και να εισάγονται δεδομένα από άλλα format.

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

·        Composability (Σύνθεση). Η δυνατότητα να χρησιμοποιούνται στοιχεία του VRML σε συνδυασμό έτσι ώστε να είναι ξανά χρησιμοποιήσιμα.

·        Extensibility (Επεκτασιμότητα). Η δυνατότητα να προσθέτουμε νέα στοιχεία.

·        Implementability. Να μπορεί να χρησιμοποιηθεί σε ένα μεγάλο αριθμό συστημάτων.

·        Ικανότητα Multi - user. Να μην αποκλείει την χρήση σε περιβάλλοντα multi - user.

·        Orthogonality. Τα στοιχεία του VRML πρέπει να είναι ανεξάρτητα το ένα του άλλου και εάν υπάρχουν εξαρτήσεις να είναι καλά ορισμένες και δομημένες.

·        Απόδοση. Τα στοιχεία πρέπει να σχεδιάζονται με έμφαση στην απόδοση interactive πάνω σε διάφορες πλατφόρμες υπολογιστών.

·        Scalability. Τα στοιχεία του VRML πρέπει να είναι σχεδιασμένα για απεριόριστα μεγάλες συνθέσεις.

·        Standard practice. Μόνο τα στοιχεία που περιέχουν υπάρχοντα άσκηση, που είναι απαραίτητα για την υποστήριξη υπάρχοντας άσκησης ή αυτά πού υποστηρίζουν προτασσόμενα πρότυπα να προτυποποιούνται.

·        Well - structured (καλά δομημένη). Το στοιχείο πρέπει να έχει μια καλά δομημένη διαπροσωπία και ένα απλής καταστάσεως χωρίς συνθήκες σκοπό. Στοιχεία πολλαπλών σκοπών και παρενέργειες πρέπει να αποφεύγονται.

 

Δημιουργώντας με τη VRML

 

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

Πρώτα από όλα χρειαζόμαστε έναν text editor, που να έχει την δυνατότητα να ‘διαβάζει’ και να ‘γράφει’ ASCII text files. Οι περισσότεροι word processors κάνουν για αυτήν την δουλειά. Μπορούμε επίσης να χρησιμοποιήσουμε έναν απλό text editor που συνήθως συνοδεύει το λειτουργικό σύστημα. Οι κάτοχοι PCς μπορούν να χρησιμοποιήσουν το EDIT ή το NOTEPAD. Για τους χρήστες UNIX μπορεί κάλλιστα να χρησιμοποιηθεί το VI ή το EMACS, και για τους χρήστες MAC το SIMPLETEXT ή το TEACHTEXT.

Το δεύτερο βοήθημα που πρέπει να συνοδεύει το εγχείρημα μας αυτό είναι ένας Web browser, που θα βοηθήσει να δούμε αυτές τις σελίδες-παραδείγματα. Ενώ το τρίτο που θα μας χρησιμεύσει, είναι ένας VRML viewer (εικονοσκόπιο). Μπορούμε να βρούμε τα εικονοσκόπια αυτά, μαζί, ως συμπληρώματα των browsers (όπως π.χ. το WEBFX) υπάρχουν όμως και προγράμματα που μπορούν να χρησιμοποιηθούν μόνα τους ή να λειτουργήσουν με τα διάφορα browsers, όπως το WORLDVIEW.

Υπάρχει και μία άλλη κατηγορία που είναι VRML viewers και πλήρεις Web browsers μαζί, όπως είναι το WEBSPACE. Πάμπολλες διευθύνσεις από τέτοια browsers μπορούν να βρεθούν στο Web, ψάχνοντας με έναν κοινό ανιχνευτή διευθύνσεων στο Web. Με την προϋπόθεση ότι έχουμε όλα τα βοηθήματα αυτά που χρειαζόμαστε μπορούμε να ξεκινήσουμε την ανάπτυξη ‘κόσμων’ (worlds) για το Web. Η γνώση HTML, δεν είναι απαραίτητη προϋπόθεση.

Όσον αφορά το Hardware χρειαζόμαστε έναν υπολογιστή 486 ή μεγαλύτερο με modem 14.4k ή ταχύτερο. Δεν χρειαζόμαστε κάποιο ιδιαίτερο graphics work station, ή ιδικές γνώσεις. Οι γωνίες στην VRML μετρώνται σε rad και όχι σε μοίρες. Αυτό είναι πλέον πρότυπο στην VRML και έγινε για την ευκολία των χρηστών. Το μόνο που πρέπει να θυμόμαστε είναι ότι 180 μοίρες είναι 3.1415 rads. Τα περισσότερα scientific calculators έχουν την δυνατότητα μετατροπής των γωνιών σε μοίρες και αντίστροφα. Οι αριθμοί που αντιπροσωπεύουν ιδιότητες αντικειμένων, όπως π.χ. το χρώμα, που παίρνουν τιμές από το 0 έως και το 255 θα παριστάνονται εδώ από αριθμούς μεταξύ του 0 και του 1.

Αν θέλουμε να απεικονίσουμε, π.χ. ένα χρώμα σε RGB (red, green, blue) που συνήθως χρησιμοποιούμε τρεις αριθμούς από το 0 έως το 255, θα χρησιμοποιήσουμε τρεις αριθμούς από το 0 έως το 1. Το άσπρο σε αυτή την περίπτωση θα απεικονίζεται από την τριάδα των αριθμών 1 1 1 αντί για την τριάδα 255 255 255. Για το μαύρο θα έχουμε 0 0 0, ενώ το γρι θα απεικονίζεται ως.5.5.5, (ίδια ποσότητα από 6τα τρία βασικά χρώματα). Το μπλε θα είναι 0 0 1, ενώ το ανοικτό πράσινο θα είναι 0.5 0. Λίγη εξάσκηση θα βοηθήσει στο να καταφέρουμε να φτιάχνουμε πολύ εύκολα οποίο χρώμα θελήσουμε. Τα αρχεία της VRML ‘σώζονται’ με την extension.wrl. Αν θέλουμε άψογη συνεργασία των αρχείων που φτιάχνουμε, με τα εικονοσκόπια του εμπορίου θα πρέπει να τα αρχεία μας να καταλήγουν με αυτήν την κατάληξη. Η επικεφαλίδα στα αρχεία μας, δηλαδή η πρώτη γραμμή μέσα στο αρχείο, πρέπει να έχει την εξής μορφή :

#VRML V1.0 ascii

 

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

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

Παρακάτω παραθέτουμε μερικά παραδείγματα για την καλύτερη κατανόηση της γλώσσας. Τα παραδείγματα θα προσπαθήσουμε να είναι βαθμιαίας δυσκολίας, αρχίζοντας από πολύ απλά παραδείγματα και φτάνοντας έως κάποια περισσότερο δύσκολα. Χρησιμοποιώντας έναν text editor δημιουργούμε ένα αρχείο με το όνομα first.wrl. Στο αρχείο αυτό θα πρέπει να περιέχει τις παρακάτω πληροφορίες (θα πρέπει να είναι ακριβώς όπως φαίνονται παρακάτω) :

 

Παράδειγμα 1

 

#VRML V1.0 ascii   #Αυτό είναι ένα παράδειγμα σχολίου.

 

Sphere   

{             

radius 5

}

 

Τώρα θα πρέπει να ‘σώσουμε’ το αρχείο, και έπειτα χρησιμοποιώντας το VRML εικονοσκόπιο που έχουμε θα μπορέσουμε να δούμε τι φτιάξαμε. Το εικονοσκόπιο ή ο browser που χρησιμοποιούμε πρέπει να έχει στο FILE menu, την δυνατότητα να ‘ανοίξει’ αρχεία με κατάληξη wrl. Αν όλα έγιναν σωστά τώρα θα μπορέσουμε να δούμε τον κόσμο που φτιάξαμε. Πρόκειται για μία άσπρη σφαίρα στο κενό διάστημα.

Τώρα θα προσπαθήσουμε να εξηγήσουμε το καθετί στο προηγούμενο αρχείο. Η πρώτη γραμμή είναι η επικεφαλίδα, όπως είπαμε και πριν, και είναι ένα υποχρεωτικό μήνυμα προς το εικονοσκόπιο ή τον browser. Η δεύτερη γραμμή είναι η αρχή της περιγραφής της εικονικής σκηνής που δημιουργήσαμε, στην περίπτωσή μας της σφαίρας. Ότι βρίσκεται μέσα στην αγκύλη, μετά την εντολή sphere, αναφέρεται στην εντολή sphere. Η επόμενη εντολή ρυθμίζει το μέγεθος της σφαίρας. Σε αυτήν την περίπτωση, ορίσαμε την ακτίνα ίση με 5 μονάδες, με την εντολή radius. Οπότε έχουμε μια σφαίρα με διάμετρο ίση με 10 μονάδες, (διάμετρος = 2 x ακτίνα). Η τελευταία γραμμή είναι η αγκύλη, είναι κλείσιμο της πρώτης, και αναφέρεται στην σφαίρα.

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

 

Separator

{

Material

{

diffuseColor 0.8.8

}

Sphere node goes here

}

 

Όποτε το αρχείο θα έχει την εξής μορφή :

 

Παράδειγμα 2

 

#VRML V1.0 ascii   # Αυτό είναι ένα παράδειγμα σχολίου.

 

Separator

{

Material

{

diffuseColor 0.8.8

}

Sphere

{

radius 5

}

}

 

Σώζουμε το αρχείο με το όνομα, π.χ., second.wrl και χρησιμοποιούμε το εικονοσκόπιο για να δούμε το καινούργιο σκηνικό που δημιουργήσαμε. Αυτό που πρέπει τώρα να βλέπουμε είναι ακριβώς το ίδιο με το προηγούμενο με μια μικρή διαφορά, η σφαίρα έχει διαφορετικό χρώμα. Με την εντολή Material, μπορούμε να ελέγχουμε την επιφάνεια των διαφόρων αντικειμένων σε ένα σκηνικό. Όμως μονάχα τα αντικείμενα που ακολουθούν αυτήν την εντολή, επηρεάζονται απ’ αυτήν. Αυτό είναι ένας γενικός κανόνας και ισχύει για όλες τις εντολές. Η εντολή material έχει πολλές ιδιότητες. Αυτές είναι : η ambientColor, diffuseColor, specularColor, emissiveColor, shininess, και transparency. Οι πρώτες τέσσερις ιδιότητες (με το συνθετικό color) χρησιμοποιούνται για τον έλεγχο του χρώματος. Το shininess ελέγχει την φωτεινότητα ενώ το η transparency ελέγχει την διαφάνεια των αντικειμένων που ακολουθούν. Μια άλλη εντολή είναι η Separator. Η εντολή separator δημιουργεί ένα "box" που για να ομαδοποιεί αντικείμενα. Αυτό το "box" λέγεται και frame reference. Το frame reference βοηθάει στο να ‘γνωρίζουν οι εντολές’ ποιες εντολές μπορούν να επηρεάσουν. Αν π.χ. δεν βάζαμε την εντολή material και sphere σε ένα separator, η εντολή material δεν θα μπορούσε να ‘ξέρει’ ότι η εκτέλεσή της θα έπρεπε να επηρεάζει την εντολή sphere. Στο παρακάτω παράδειγμα προσθέτουμε επιπλέον και μια καινούργια εντολή, την cube. Προσθέτουμε τις παρακάτω καινούργιες πληροφορίες και σώζουμε το αρχείο ως third.wrl.

 

Cube

{

width 3

height 3

depth 3

}

 

Οπότε το αρχείο θα πρέπει να είναι :

 

Παράδειγμα 3

 

#VRML V1.0 ascii   # Αυτό είναι ένα παράδειγμα σχολίου.

 

Separator

{

Material

{

diffuseColor 0.8.8

}

Sphere

{

radius 5

}

Cube

{

width 3

height 3

depth 3

}

}

 

Χρησιμοποιούμε ξανά ένα εικονοσκόπιο ή browser, και παρατηρούμε ότι δεν φαίνεται το αναμενόμενο αποτέλεσμα της εντολής cube (κύβος). Ο λόγος για τον οποίο ο κύβος φαίνεται να είναι αόρατος είναι ότι αυτός εμπεριέχεται στην σφαίρα. Όταν δημιουργούμε ένα καινούργιο αντικείμενο, αυτό τοποθετείται στην αρχή του σκηνικού. Η αρχή του σκηνικού είναι στην θέση (0, 0, 0) εκεί, δηλαδή, που οι τρεις άξονες τέμνονται. Για να κάνουμε τον κύβο, να φαίνεται, προσθέτουμε μια επιπλέον εντολή. Η εντολή αυτή είναι η Translation. Η εντολή translation μετακινεί αντικείμενα μέσα στο σκηνικό. Γράφουμε τις παρακάτω πληροφορίες στο αρχείο third.wrl μετά την σφαίρα πριν από την εντολή sphere αλλά πριν από την Cube êáé σώζουμε το καινούργιο αρχείο ως forth.wrl.

 

            Translation

{

translation 5 5 5

}

 

 

Συνολικά το αρχείο θα πρέπει να είναι :

 

Παράδειγμα 4

 

#VRML V1.0 ascii   # Αυτό είναι ένα παράδειγμα σχολίου.

 

Separator

{

Material

{

diffuseColor 0.8.8

}

Sphere

{

radius 5

}

Translation

{

translation 5 5 5

}

Cube {

width 3

height 3

depth 0

}

}

 

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

 

Παράδειγμα 5

 

 #VRML V1.0 ascii  # Αυτό είναι ένα παράδειγμα σχολίου.

 

Separator

     {

Material

{

diffuseColor 0.8.8

}

Sphere

{

radius 5

}

Material

{

diffuseColor 0 0 1

}

Translation

{

translation 5 5 5

          }

Separator

{

Cube

{

width 3

height 3

depth 0

}

Translation

{

translation 3 3 3

}

Cone

{

bottomRadius 3

height

}

}

}

 

Μπορούμε να παρατηρήσουμε ότι ο κώνος προστέθηκε στο σκηνικό και ότι η μετατόπιση έγινε σε σχέση με τον κύβο και όχι σε σχέση με την σφαίρα. Ο κώνος κληρονόμησε τα χαρακτηριστικά της material από τον κύβο, γιατί το μπλε του κύβου ήταν το τελευταίο material που ορίστηκε πριν από τον κώνο. Αν θέλουμε να κάνουμε μόνο τον κώνο κόκκινο, πρέπει να προσθέσουμε μια material πριν από την εντολή cone. Αν παρατηρήσουμε όλο το σκηνικό, θα δούμε ότι τα πράγματα φαίνονται εντελώς διασκορπισμένα και ανοργάνωτα. Αυτό έχει ως αποτέλεσμα να είναι δύσκολος ο έλεγχος. Το σκηνικό θα γίνει περισσότερο οργανωμένο προσθέτοντας εντολές separator. Αν τοποθετήσουμε το κάθε αντικείμενο, στην περίπτωσή μας τον κώνο και τον κύβο μέσα σε διαχωριστικά (με την χρήση της separator) θα μπορούμε να έχουμε για το κάθε αντικείμενο, όλες τις εντολές που αναφέρονται σε αυτό η μία κοντά στην άλλη μέσα στο box. Στο παρακάτω μεταφέρουμε το cone "box" έξω από το cube "box". Προσθέτουμε στο fifth.wrl τα απαραίτητα, όπως παρακάτω, και το σώζουμε ως sixth.wrl.

 

Παράδειγμα 6

 

#VRML V1.0 ascii   # Αυτό είναι ένα παράδειγμα σχολίου.

 

Separator

{

Material

{

diffuseColor 0.8.8

}

Sphere

{

radius 5

}

Separator

{

Material 

{

diffuseColor 0 0 1

}

Translation

     {

translation 5 5 5

}

Cube

{

width 3

height 3

depth 3

}

Separator

     {

Translation

{

translation 3 3 0

}

Material

{

diffuseColor 1 0 0

}

Cone

{

bottomRadius 3

height 3

}

}

}

}

 

Παράδειγμα 7

 

Σώζουμε τα παρακάτω ως seventh.wrl

 

#VRML V1.0 ascii

Separator

{

     Material

{

ambientColor 0.2 0.2 0.2

diffuseColor 0.8 0.8 0.8

specularColor 0 0 0

emissiveColor 0 0 0

shininess 0.2

transparency 0

          }    #Material

     AsciiText

{

string "This is a cool demo world!"

spacing   1

justification CENTER

width 0

}    #AsciiText

DEF Cone1 Separator

{

Translation

{

     translation 0 30 0

     }    #Translation

Cone

{

parts     ALL

bottomRadius  15

height        30

}    #Cone

}    #Cone1 Separator

 

DEF Cube1 Separator

{

Translation

{

     translation -45 30 0

     }    #Translation

Cube

{

width     30

height    30

depth     30

}    #Cube

}    #Cube1 Separator

DEF Cylinder1 Separator

{

     Translation

{

     translation 45 30 0

     }    #Translation

Cylinder

{

parts     ALL

radius    15

height    30

}    #Cylinder

}    #Cylinder1 Separator

}    #Separator   

 

Εδώ η Separator περικλείει την Translation και τις Cylinder. Η Cylinder σχεδιάζει έναν κύλινδρο με ύψος των 30 units και διάμετρο 15 units. Οι συντεταγμένες του κέντρου του κυλίνδρου είναι (45,30,0) τα οποία έχουν ορισθεί στην Translation. Παρατηρούμε ότι σχεδιάζουμε όλα τα κομμάτια του κυλίνδρου (ALL parts). Παρατηρώντας την οθόνη ο κύλινδρος εμφανίζεται στα δεξιά του κώνου.

 

 

Παράδειγμα 8

 

Τώρα που είμαστε εξοικειωμένοι με την Separetor και την Translation, μπορούμε να προσθέσουμε μια σφαίρα στο σκηνικό, η οποία τοποθετείται στο (0,75,0). Η ακτίνα της είναι 15.

 

#VRML V1.0 ascii

Separator

{

     Material

{

ambientColor 0.2 0.2 0.2

diffuseColor 0.8 0.8 0.8

specularColor 0 0 0

emissiveColor 0 0 0

shininess 0.2

transparency 0

}    #Material

AsciiText

{

string "This is a cool demo world!"

spacing   1

justification CENTER

width 0

}    #AsciiText

    

DEF Cone1 Separator

{

Translation

{

     translation 0 30 0

     }    #Translation

          Cone

{

     parts     ALL

     bottomRadius  15

     height        30

     }    #Cone

}    #Cone1 Separator

DEF Cube1 Separator

{

Translation

{

translation -45 30 0

}    #Translation

Cube

{

     width     30

height    30

     depth     30

     }    #Cube

          }    #Cube1 Separator

DEF Cylinder1 Separator

{

Translation

{

     translation 45 30 0

     }    #Translation

Cylinder

{

parts     ALL

radius    15

height    30

}    #Cylinder

}    #Cylinder1 Separator

DEF Sphere1 Separator

{

     Translation

{

     translation 0 75 0

     }    #Translation

Sphere

{

radius    15

}    #Sphere

}    #Sphere1 Separator

}    #Separator   

 Αυτό μπορούμε να πούμε ότι είναι ένα καλό παράδειγμα οργανωμένου VRML αρχείου. Το τελικό αποτέλεσμα, από το τελευταίο αρχείο, είναι μια ανοικτού πράσινου χρώματος σφαίρα, έναν μπλε κύβο και έναν κόκκινο κώνο. Στην γλώσσα μας δίνεται η δυνατότητα να ορίσουμε μια οπτική γωνία καθώς και την θέση του για την δέσμη του φωτός που θα προσπίπτει στο σκηνικό. Αν δεν καθοριστεί από εμάς το φως και η οπτική γωνία, το λογισμικό του εικονοσκοπίου ή του browser θα ορίσει από μόνο του "default" φως και "default" camera. Αυτό στην περίπτωση που δεν είμαστε εξοικειωμένοι με την γλώσσα, είναι καλύτερα να το αφήνουμε στο λογισμικό. Ειδάλλως το φως ίσως να σε λάθος θέση ή να έχει λάθος χρώμα. Το ίδιο ισχύει και για την οπτική γωνία. Υπάρχει και άλλος τρόπος για να δημιουργήσει κανείς VRML σκηνικά. Σε πολλά προγράμματα για δημιουργία 3D εικόνων, υπάρχει η δυνατότητα να σώσουμε αυτές τις εικόνες σε VRML format.