Wichtigster Bestandteil von VRML-Szenen ist der sogenannte Knoten (meistens mit großem Anfangsbuchstaben geschrieben) der ähnlich eines Programmiersprachenrecords aus Feldern verschiedenen Typs besteht (meistens klein geschrieben). Diese Felder verweisen entweder auf nicht weiter strukturierte Objektknoten oder andere Gruppenknoten, die wiederum mittels ihrer Felder verzweigen können.
Beispiel 1 zeigt den Aufbau einer Szene, in der eine Kugel mit Radius 1.5 im Ursprung des Weltkoordinatensystems
plaziert wird. Die x-Richtung entspricht der horizontalen Bewegung, y beschreibt die vertikale Richtung und z
wächst auf den Betrachter zu. Der Sphere-Knoten hat dabei als einziges (optionales) Feld den Radius. Diese Kugel
wird referiert über das geometry-Feld des Shape-Knotens, zuständig für die Gestaltung eines Objekts. über das
appearance-Feld wird die Materialbeschaffenheit in Form einer RGB-Farbe und eines Transparenz-Koeffizienten
spezifiziert. Der Shape-Knoten wiederum ist als eins der Kinder im Transform-Knoten eingetragen, der über ein
translation-Feld für die Verschiebung der Kugel sorgt.
#VRML V2.0 utf8 # kugel.wrl # gruene, stark reflektierende Kugel mit Radius 1.5 Transform { # Plaziere translation 0 0 0 # im Ursprung children [ Shape { # eine Gestalt geometry Sphere { # von der Form einer Kugel radius 1.5 # mit Durchmesser 1.5 } appearance Appearance { # in der Erscheinung material Material { # mit Materialbeschaffenheit diffuseColor 0 1 0 # gruene Farbe shininess 0.9 # stark reflektierend } } } ] } }
Neben den Grundbausteinen Sphere (Kugel), Box (Quader), Cone (Kegel) und Cylinder (Zylinder) lassen sich eigene
geometrische Gebilde konstruieren. Ausgehend von einer Liste von 3-D-Punkten im Raum werden jeweils gegen den
Uhrzeigersinn alle Punkte durchlaufen, die ein Face (durch Polygon approximierte Körperfläche) aufspannen. Beispiel
2 zeigt die Definition einer 5-farbigen Pyramide mit quadratischer Grundfläche.
#VRML V2.0 utf8 # pyramide.wrl # selbstdefinierte 5-seitige Pyramide Shape { geometry IndexedFaceSet { coord Coordinate { point [ # beteiligte Punkte 0 3 0 # 0. Pyramidenpunkt (Spitze) 0 0 -2 # 1. Pyramidenpunkt (Norden) -2 0 0 # 2. Pyramidenpunkt (Westen) 0 0 2 # 3. Pyramidenpunkt (Sueden) 2 0 0 # 4. Pyramidenpunkt (Osten ) ] } coordIndex [ # Polygone gegen Uhrzeiger, Ende: -1 4 3 2 1 -1 # 0. Face: Punkte 1 2 3 4 (Grundflaeche) 0 1 2 -1 # 1. Face: Punkte 0 1 2 (Nordwesten) 0 2 3 -1 # 2. Face: Punkte 0 2 3 (Suedwesten) 0 3 4 -1 # 3. Face: Punkte 0 3 4 (Suedosten) 0 4 1 # 4. Face: Punkte 0 4 1 (Nordosten) ] colorPerVertex FALSE color Color { color [ # pro Face eine Farbe benennen 0 1 1 # 0. Face: Cyan 1 0 0 # 1. Face: Rot 1 1 0 # 2. Face: Gelb 0 1 0 # 3. Face: Gruen 0 0 1 # 4. Face: Blau ] } } }